[Imstk-developers] Copying Vega data

Milef, Nicholas Boris milefn at rpi.edu
Tue Oct 25 19:04:08 EDT 2016


"Well not really: the actor will apply the transforms on the polydata vertices at each frame. If we have an initial transform that we do not want to concatenate every frame, using the filter will allow us to update the input polydata."

What's considered an initial transform? Doesn't the transform for each polydata component always get updated each frame with either solution? I don't remember seeing any chain of transformations, but I could be wrong.
________________________________
From: Alexis Girault [alexis.girault at kitware.com]
Sent: Tuesday, October 25, 2016 10:15 AM
To: Milef, Nicholas Boris
Cc: Sreekanth Arikatla; imstk-developers at imstk.org
Subject: Re: [Imstk-developers] Copying Vega data

We will want to avoid skinning on the CPU as much as possible (we can actually totally replace it with current techniques depending on the overhead). I've already done GPU skinning within VTK for non-physical objects, but there are also ways to get that data back from the GPU so that physical objects can interact with it.

Looking forward to learn more about this. As the rest, please make sure to keep track of this to show why current solutions in VTK would limit us.

>From my understanding, transforming the PolyData vs transforming the Actor is the same thing because when you transform the Actor, you are actually transforming the PolyData. Except for a possible function call or two, this shouldn't help performance that much.

Well not really: the actor will apply the transforms on the polydata vertices at each frame. If we have an initial transform that we do not want to concatenate every frame, using the filter will allow us to update the input polydata.

Also, have you had a look at the no-copy arrays from my previous emails? Those will be a main feature of the VTK 7.1 release.

________________________________
From: Alexis Girault [alexis.girault at kitware.com<redir.aspx?REF=vWg7t4BmO8BE6kxIqgegpCsNYU_BOjiNJ9ZOQvoavvXeDF9n7fzTCAFtYWlsdG86YWxleGlzLmdpcmF1bHRAa2l0d2FyZS5jb20.>]
Sent: Monday, October 24, 2016 9:25 AM
To: Sreekanth Arikatla
Cc: Milef, Nicholas Boris; imstk-developers at imstk.org<redir.aspx?REF=4cNPXXIvL0jH5ZpcsgY6jkDVW7OQb0ZwIy-3sBoqNcHeDF9n7fzTCAFtYWlsdG86aW1zdGstZGV2ZWxvcGVyc0BpbXN0ay5vcmc.>

Subject: Re: [Imstk-developers] Copying Vega data

Nich: a filter that could be used for skinning: http://www.vtk.org/doc/nightly/html/classvtkWeightedTransformFilter.html#details<redir.aspx?REF=NiGZf8vZZzv3Kmg2jdIh5LVqc-E5wT-x3bP-7TXfOY7eDF9n7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9TWotZmZoTHBNbXJxYkIxOXl1VnhpSVVaYVNRWU5uQWVvd2pNcXdSRmZ3UGg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMblowYXk1dmNtY3ZaRzlqTDI1cFoyaDBiSGt2YUhSdGJDOWpiR0Z6YzNaMGExZGxhV2RvZEdWa1ZISmhibk5tYjNKdFJtbHNkR1Z5TG1oMGJXd2paR1YwWVdsc2N3Li4.>
Also, another way to apply transforms in vtk is to apply it to the data structures, and not to the actor: http://www.vtk.org/doc/nightly/html/classvtkTransformPolyDataFilter.html<redir.aspx?REF=Ldjx-MZbHf7XFJr4LOb-MyY8Rxm-_pgJR4bL_cyzN2feDF9n7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9ak1sbm1BTURhaURzR2M2MkhpcTNWSTQ5NTQ0WDg5RmlaZkNaTWN0VU1wcmg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMblowYXk1dmNtY3ZaRzlqTDI1cFoyaDBiSGt2YUhSdGJDOWpiR0Z6YzNaMGExUnlZVzV6Wm05eWJWQnZiSGxFWVhSaFJtbHNkR1Z5TG1oMGJXdy4.>

Alexis Girault
R&D Engineer in Medical Computing
Kitware, Inc.

http://www.kitware.com<redir.aspx?REF=Yma4donf675i5VZidc7xAGw0FuK0SBKfIiuIQ4xZ9zTeDF9n7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9VjB6dEpGZ1RqelQwUk1pdkswaFJBU1VYQUdGYnY2REdOMXBrUlBOZ0xtdmg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMbXRwZEhkaGNtVXVZMjl0THcuLg..>
(919) 969-6990 x325<tel:(919)+969-6990+x325>

On Fri, Oct 21, 2016 at 11:03 AM, Alexis Girault <alexis.girault at kitware.com<redir.aspx?REF=sRIfsIwVB-x7ne_o5tRKVi6rQFVve3n9WJ5tg_4FfVTeDF9n7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9eXRleUMzc0pWa0VPM2Y4MkNvX0VTcHEzUTFma0VYMzJpQWpUZUdvbEp3Zmg5eEtLWV96VENBRnRZV2xzZEc4NllXeGxlR2x6TG1kcGNtRjFiSFJBYTJsMGQyRnlaUzVqYjIwLg..>> wrote:
Here is how VTK offered to improve mapping volumetric meshes or just data arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures<redir.aspx?REF=9PIX1JWFfIsqz9JQ0njKyVDxjNPAfNuR5uVMcsk1U-c_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9VzBRZ1pTdjRMaWw4MnJUZk1NYWxjZjRIUnktSEM3bE5LMjliRV9UWmJ2cmg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMblowYXk1dmNtY3ZWMmxyYVM5V1ZFc3ZTVzVUYVhSMVJHRjBZVk4wY25WamRIVnlaWE0u>

The MappedDataArray (that we tried to use and that Nich got rid of because of huge overhead cost when calling getVoidPointer in the VBO creation) is actually deprecated and will be removed in the future. The next iteration of this functionality which focuses on performance improvements is presented in this article https://blog.kitware.com/new-data-array-layouts-in-vtk-7-1/<redir.aspx?REF=0K3-VLSVkLUDE6FNjdNR107GRTMRTwBfHzA4LGNa-BE_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9bEM3VmhGMXB2NEhRTTJjV0lsMjVkSFoxdkN1QTdQbDd5Y20wUzFRZ2NKbmg5eEtLWV96VENBRm9kSFJ3Y3pvdkwySnNiMmN1YTJsMGQyRnlaUzVqYjIwdmJtVjNMV1JoZEdFdFlYSnlZWGt0YkdGNWIzVjBjeTFwYmkxMmRHc3ROeTB4THcuLg..> and detailed on this wiki page: http://www.vtk.org/Wiki/VTK/Tutorials/DataArrays<redir.aspx?REF=Cg9LnixKjhI0e-6m7Q9qu9_F2prOkvkYktO4is9RcyI_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9b2QtZEpHRmIyNEY4TzNaUFgzVEl4S0hGMVdkbF9KZlBXSnJ5U2tyWGZpemg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMblowYXk1dmNtY3ZWMmxyYVM5V1ZFc3ZWSFYwYjNKcFlXeHpMMFJoZEdGQmNuSmhlWE0u>

If we can improve the renderer and mapper to do what's needed, I believe we'll be able to use this new data array layouts to reduce data structure conversion overhead.

Alexis Girault
R&D Engineer in Medical Computing
Kitware, Inc.

http://www.kitware.com<redir.aspx?REF=A825WjpK0JsiLnAq4uil9omNwrzK3Dc640AhF_I0-lk_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9VjB6dEpGZ1RqelQwUk1pdkswaFJBU1VYQUdGYnY2REdOMXBrUlBOZ0xtdmg5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMbXRwZEhkaGNtVXVZMjl0THcuLg..>
(919) 969-6990 x325<tel:(919)+969-6990+x325>

On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla <sreekanth.arikatla at kitware.com<redir.aspx?REF=7uQ5chR7U6FJ9Ukhsw7zbednT4uUqrEmZP4hLrlTnxY_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9X093cl9ZUVRmWktBV2ZxR2FPT1ladVdvdC04dkc2WFFXWjdCcjVoOWpQRGg5eEtLWV96VENBRnRZV2xzZEc4NmMzSmxaV3RoYm5Sb0xtRnlhV3RoZEd4aFFHdHBkSGRoY21VdVkyOXQ.>> wrote:
Hi Nick,
            Yes, that can be done (I was under the impression that even that operation was slow with vtk but haven't looked into that part myself). The copy could additionally be made conditional since rendering typically runs faster than the physics.

The mesh needs to be updated though (at least in the case where visual and physics are the same) since the physics update of future time steps count on it.

On Thu, Oct 20, 2016 at 4:04 PM, Milef, Nicholas Boris <milefn at rpi.edu<redir.aspx?REF=LeoQR4aSgFdV-H8Cx7kHYV4WAFFV3cQf6YNes50rfW8_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9cDVpZks3SlkwRWVwdzVYRzdzb3FZTG8wZl9kUHA0UnNBVmlubXhrOW5aTGg5eEtLWV96VENBRnRZV2xzZEc4NmJXbHNaV1p1UUhKd2FTNWxaSFUu>> wrote:
In that case, then copying data over shouldn't be a big deal. I thought the copying was occurring on the rendering thread. If we need thread synchronization here, then we can just use a buffered approach.
________________________________
From: Sreekanth Arikatla [sreekanth.arikatla at kitware.com<redir.aspx?REF=7uQ5chR7U6FJ9Ukhsw7zbednT4uUqrEmZP4hLrlTnxY_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9X093cl9ZUVRmWktBV2ZxR2FPT1ladVdvdC04dkc2WFFXWjdCcjVoOWpQRGg5eEtLWV96VENBRnRZV2xzZEc4NmMzSmxaV3RoYm5Sb0xtRnlhV3RoZEd4aFFHdHBkSGRoY21VdVkyOXQ.>]
Sent: Thursday, October 20, 2016 3:53 PM
To: Milef, Nicholas Boris
Cc: imstk-developers at imstk.org<redir.aspx?REF=eC08QHF3SEUze_Wu50FhxGnjbsH4uiOcNZX5SA3rGeg_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9YngyM0VNNDNBdG1RZ1l2Q2JFanBuZlhJY1NfdFFFNXJOR2VJcVl5bWo2emg5eEtLWV96VENBRnRZV2xzZEc4NmFXMXpkR3N0WkdWMlpXeHZjR1Z5YzBCcGJYTjBheTV2Y21jLg..>
Subject: Re: [Imstk-developers] Copying Vega data

Hi Nick,
           It happens in a separate thread in the sceneManager module.

On Thu, Oct 20, 2016 at 3:45 PM, Milef, Nicholas Boris <milefn at rpi.edu<redir.aspx?REF=WAPIvW97zcw_nuWaEuIE6KS_saghvxD8Rodjka_-hWQ_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9b2N4R0I1RmtKdjM1d044eS1sVE0zSVo0UjFfcFhOendFNzhTTWdIUWdaX2g5eEtLWV96VENBRm9kSFJ3T2k4dmNtVmthWEl1WVhOd2VEOVNSVVk5UW5CS1JrUjZlV3hLVlhwdGVVZ3dTVk15YjNWYVVqVTRWbVpUYnpScGFrMTBXVTQwYW1OMU1tTkVTM1JKVmpGRFNsQnVWRU5CUm5SWlYyeHpaRWM0Tm1KWGJITmFWMXAxVVVoS2QyRlROV3hhU0ZVdQ..>> wrote:
Do Vega operations occur on the same thread as the render loop? If not, then it might be best to buffer and copy over the data instead of directly working on the mesh data.

_______________________________________________
Imstk-developers mailing list
Imstk-developers at imstk.org<redir.aspx?REF=Hhr6NrAgDwjPSyGecvi5WL31p1lgvgYA9PWtEZt-P9s_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9cHVfdTlDVVpOSEZDYVhuZ2h6dFBPeFJJSGJNcjBsX1RFUW1WYnNzQVhHamg5eEtLWV96VENBRm9kSFJ3T2k4dmNtVmthWEl1WVhOd2VEOVNSVVk5WW1sbmVEZFZRMkpSYXpsVFRsTndVME5aUkc1cVJtRnJSVFJwZDJKQloxZEVUVWhpTkhGRk5GTndaWFJKVmpGRFNsQnVWRU5CUm5SWlYyeHpaRWM0TmxOWE1YcGtSM04wV2tkV01scFhlSFpqUjFaNVl6QkNjR0pZVGpCaGVUVjJZMjFqTGcuLg..>
http://public.kitware.com/mailman/listinfo/imstk-developers<redir.aspx?REF=Bz0846WnqnvhxaRuFQOV_T1285lilyTjr66G6qKR07E_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9ZkZNc1o3VUd6MkNMeWJTSEwxSjRDR05hRDBzNTNFNTEtc0NPYjhWajFZN2g5eEtLWV96VENBRm9kSFJ3T2k4dmNtVmthWEl1WVhOd2VEOVNSVVk5YWtadlFuRmthMGd4ZUd3MmNHVlFXVmhSTUVaSmNuWm9RVGc1ZG5NNU1ESkpNMlEwYzBKcWJVOVZZWFJKVmpGRFNsQnVWRU5CUm05a1NGSjNUMms0ZG1OSVZtbGlSMnhxVEcxMGNHUklaR2hqYlZWMVdUSTVkRXd5TVdoaFYzaDBXVmMwZG1KSGJIcGtSMngxV20wNGRtRlhNWHBrUjNOMFdrZFdNbHBYZUhaalIxWjVZM2N1TGcuLg..>




--
Sreekanth Arikatla, Ph.D,
Senior R&D Engineer,
Kitware, Inc.<redir.aspx?REF=1mLU4CKAm-atWiJ_y43ImgAjJGqoPIOis-vvBQYypEk_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9dTdpMGJCaHZQS19HQ1ZZVmxVb3ZRZkxhWVFRczJQYkFmQ091YWFCMjB3SGg5eEtLWV96VENBRm9kSFJ3T2k4dmNtVmthWEl1WVhOd2VEOVNSVVk5TTNGNlJtOHpSazVPTkZKa2RFSlZhekJ4VDNNMVNtOWtVRVZCWHkxcWNFdEVPSFJ6VFVkRldXNHlOblJKVmpGRFNsQnVWRU5CUm05a1NGSjNUMms0ZG1RelpETk1iWFJ3WkVoa2FHTnRWWFZaTWpsMA..>, Carrboro, NC.




--
Sreekanth Arikatla, Ph.D,
Senior R&D Engineer,
Kitware, Inc.<redir.aspx?REF=zKIWQu5TE5MeXXqTz0jv6jSUhN6HWVnTiwWZiKh-bE0_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9aVBGT3h1X3hwbjBGM2FqNUNid3lZbXd4cmU0cS05bURfX2VqTEc0Z0pxN2g5eEtLWV96VENBRm9kSFJ3T2k4dmQzZDNMbXRwZEhkaGNtVXVZMjl0>, Carrboro, NC.


_______________________________________________
Imstk-developers mailing list
Imstk-developers at imstk.org<redir.aspx?REF=3nQC4xfr3GijQzL3P5Z1kKe9zRH410te_3V-EpWH88U_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9WG4zcF91bVVYSnVDV3hLSGg1VERTZUNmVDlDcGRHLUVuNU45U096T0phZmg5eEtLWV96VENBRnRZV2xzZEc4NlNXMXpkR3N0WkdWMlpXeHZjR1Z5YzBCcGJYTjBheTV2Y21jLg..>
http://public.kitware.com/mailman/listinfo/imstk-developers<redir.aspx?REF=YBG_6Y28pTe3kQtsyk1KrWF7QUySet_LUMc4mf1Rexk_bmFn7fzTCAFodHRwOi8vcmVkaXIuYXNweD9SRUY9czlWZTBGOEYxV1JBVldiXzR3VWpUcTY5a015dFhIbkhadVRSY21BLXJoN2g5eEtLWV96VENBRm9kSFJ3T2k4dmNIVmliR2xqTG10cGRIZGhjbVV1WTI5dEwyMWhhV3h0WVc0dmJHbHpkR2x1Wm04dmFXMXpkR3N0WkdWMlpXeHZjR1Z5Y3cuLg..>




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/imstk-developers/attachments/20161025/547e8d3c/attachment-0001.html>


More information about the Imstk-developers mailing list