<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Pat,<div><br></div><div>thanks a lot for your email and clarification. I agree, for large datasets it makes sense not to block the rendering thread. </div><div><br></div><div>In our app, we decided to do pipeline processing in the rendering thread (VTK with Java does the same) mostly for the sake of simplicity: Avoid the problems associated with concurrent access to data. And since our models are rather small (10k - 20k polygons typically) we get a sufficient framerate during user interactions (like moving a part of the model) when processing data synchronously. </div><div><br></div><div><div>One possible advantage of a multi-threaded approach could be the possibility to coalesce multiple interactive modifications, but I am not really clear about that yet.</div></div><div><br></div><div>In order to integrate VES and VTK, we wrote some bridging classes which are in a small project of its own. It works fine except for a problem with boundsDirty in our vesMapper subclass. Please let me know if we can contribute something.</div><div><br></div><div>Best,</div><div><br></div><div>Matthias</div><div><br></div><div><br></div><div><br></div><div><br></div><div><div><blockquote type="cite"><div dir="ltr"><div><div>I just wanted to point out one consideration... many VES based mobile apps use multiple threads, and it can be important to separate data processing from the rendering thread. In that case, it might be better to explicitly update & convert data arrays instead of doing so automatically at render time. That way, you don't have the rendering thread accessing data objects at the same time as data processing tasks, and you can ensure the render thread will never block while waiting for a data update.<br>
<br></div><div>KiwiViewer for iOS does rendering on the main UI thread, and all data processing is done on separate threads via grand central dispatch. On Android, rendering is performed on a dedicated thread, and data processing is performed using AsyncTask objects. The data processing tasks convert the vtkPolyData to vesGeometryData, then the rendering thread swaps in the newest vesGeometryData.<br>
</div><div><br></div>Of course, every app is different, so for some apps there might be no issues at all with accessing VTK data objects at render timer. I agree, it is convenient to have the ability to automatically update the ves data from the vtkPolyData, it would be a nice feature to have in VES or Kiwi, with the ability to switch it off. I think, with the current library organization, the feature would have to exist in the kiwi library, since libves has no dependency on VTK.<br>
<br></div>Pat<br></div>
</blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">---<br>Vertr.-Prof. Dr.-Ing. Matthias Baitsch<br><br></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Universität Kassel <br>FB 14 – FG Baustatik</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Raum 2512<br>Mönchebergstr. 7<br>D-34125 Kassel</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br>Tel: +49 561 804 3475<br><br><br><br></div></span></div></span></div></span></div></span>
</div>
<br></div></body></html>