From alexis.girault at kitware.com Mon Oct 3 11:39:41 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Mon, 3 Oct 2016 11:39:41 -0400 Subject: [Imstk-developers] iMSTK front documentation Message-ID: Hi everyone, First email on the developers list... hurray! I have been working on starting the initial documentation for the git project README. My draft is here @ https://gitlab.kitware.com/iMSTK/iMSTK/merge_requests/95 Feel free to pitch in so we can improve it and add it to the git project. Thank you. Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Mon Oct 3 12:02:04 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Mon, 3 Oct 2016 16:02:04 +0000 Subject: [Imstk-developers] How are Doxygen files generated? Message-ID: Are Doxygen files generated by building iMSTK? Or is there a program you need to run manually? I've used Doxygen in Linux by command-line where you had to do it manually I think. -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Mon Oct 3 17:00:11 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Mon, 3 Oct 2016 21:00:11 +0000 Subject: [Imstk-developers] Minimum System Requirements Message-ID: What are the minimum requirements for iMSTK? GPU VR: generally the GTX 970 is the default minimum requirement. This is recommended for HTC Vive: https://www.vive.com/us/ready/. There are many reasons for this (including needing 90 FPS), but it's not going to go much lower than that. GPU non-VR: that's much tougher. Is there some sort of baseline that's been determined? CPU: it's tough because this application is more multi-threaded than many games, so it would seem that some sort of 4 virtual core CPU might be a good minimum, or something along those lines. Since iMSTK is very modular, it may be the case that the CPU minimum can be even lower. Memory: we can test this. I don't think this will be a huge issue since today everything is loaded with extra RAM, but we can see the average for the simplest simulation and multiply it by some constant. OS: I guess that's already listed on the ReadMe. Really, the best way to test this is to use the minimum hardware and try running on that: http://gamedev.stackexchange.com/questions/437/how-do-i-determine-my-games-minimum-hardware-software-requirements -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Mon Oct 3 17:08:52 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Mon, 3 Oct 2016 17:08:52 -0400 Subject: [Imstk-developers] How are Doxygen files generated? In-Reply-To: References: Message-ID: They are not yet, but I plan to do this as a target being part of the superbuild, like VTK: http://www.vtk.org/Wiki/VTK/BuildingDoxygen Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Mon, Oct 3, 2016 at 12:02 PM, Milef, Nicholas Boris wrote: > Are Doxygen files generated by building iMSTK? Or is there a program you > need to run manually? I've used Doxygen in Linux by command-line where you > had to do it manually I think. > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Mon Oct 3 17:12:53 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Mon, 3 Oct 2016 17:12:53 -0400 Subject: [Imstk-developers] Minimum System Requirements In-Reply-To: References: Message-ID: It's going to be hard to judge this before we do the minimum performance improvements and optimizations. I think we should wait until we start using iMSTK for our applications at which point we can look more into what it can handle. I don't think we need to define the requirements that early. Thoughts? Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Mon, Oct 3, 2016 at 5:00 PM, Milef, Nicholas Boris wrote: > What are the minimum requirements for iMSTK? > > GPU VR: generally the GTX 970 is the default minimum requirement. This is > recommended for HTC Vive: > https://www.vive.com/us/ready/. There are many reasons for this > (including needing 90 FPS), but it's not going to go much lower than that. > > GPU non-VR: that's much tougher. Is there some sort of baseline that's > been determined? > > CPU: it's tough because this application is more multi-threaded than many > games, so it would seem that some sort of 4 virtual core CPU might be a > good minimum, or something along those lines. Since iMSTK is very modular, > it may be the case that the CPU minimum can be even lower. > > Memory: we can test this. I don't think this will be a huge issue since > today everything is loaded with extra RAM, but we can see the average for > the simplest simulation and multiply it by some constant. > > OS: I guess that's already listed on the ReadMe. > > Really, the best way to test this is to use the minimum hardware and try > running on that: > http://gamedev.stackexchange.com/questions/437/how-do-i- > determine-my-games-minimum-hardware-software-requirements > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sreekanth.arikatla at kitware.com Mon Oct 3 20:25:37 2016 From: sreekanth.arikatla at kitware.com (Sreekanth Arikatla) Date: Mon, 3 Oct 2016 20:25:37 -0400 Subject: [Imstk-developers] Minimum System Requirements In-Reply-To: References: Message-ID: Sure, we can only test if we know for sure we are doing the best in terms of algorithmic performance. Even then I think the only thing we can say is the minimum configuration need to run all the examples that come with the code. Beyond that the users are expected to know the requirements based on computational load for the application they intend to build using iMSTK. On Mon, Oct 3, 2016 at 5:12 PM, Alexis Girault wrote: > It's going to be hard to judge this before we do the minimum performance > improvements and optimizations. I think we should wait until we start using > iMSTK for our applications at which point we can look more into what it can > handle. I don't think we need to define the requirements that early. > > Thoughts? > > Alexis Girault > R&D Engineer in Medical Computing > Kitware, Inc. > > http://www.kitware.com > (919) 969-6990 x325 > > On Mon, Oct 3, 2016 at 5:00 PM, Milef, Nicholas Boris > wrote: > >> What are the minimum requirements for iMSTK? >> >> GPU VR: generally the GTX 970 is the default minimum requirement. This is >> recommended for HTC Vive: >> https://www.vive.com/us/ready/. There are many reasons for this >> (including needing 90 FPS), but it's not going to go much lower than that. >> >> GPU non-VR: that's much tougher. Is there some sort of baseline that's >> been determined? >> >> CPU: it's tough because this application is more multi-threaded than many >> games, so it would seem that some sort of 4 virtual core CPU might be a >> good minimum, or something along those lines. Since iMSTK is very modular, >> it may be the case that the CPU minimum can be even lower. >> >> Memory: we can test this. I don't think this will be a huge issue since >> today everything is loaded with extra RAM, but we can see the average for >> the simplest simulation and multiply it by some constant. >> >> OS: I guess that's already listed on the ReadMe. >> >> Really, the best way to test this is to use the minimum hardware and try >> running on that: >> http://gamedev.stackexchange.com/questions/437/how-do-i-dete >> rmine-my-games-minimum-hardware-software-requirements >> >> _______________________________________________ >> Imstk-developers mailing list >> Imstk-developers at imstk.org >> http://public.kitware.com/mailman/listinfo/imstk-developers >> >> > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc. , Carrboro, NC. -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Wed Oct 5 16:41:03 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Wed, 5 Oct 2016 20:41:03 +0000 Subject: [Imstk-developers] What's the difference between device servers and device clients? Message-ID: Right now, there's no server class for HDAPI. What's the difference between device servers and device clients? -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Wed Oct 5 16:56:07 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Wed, 5 Oct 2016 16:56:07 -0400 Subject: [Imstk-developers] What's the difference between device servers and device clients? In-Reply-To: References: Message-ID: The server/client API in iMSTK is based on the VRPN API, you can read more about it here: - https://github.com/vrpn/vrpn/wiki/Writing-Servers - https://github.com/vrpn/vrpn/wiki/Client-side-VRPN-Devices Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Wed, Oct 5, 2016 at 4:41 PM, Milef, Nicholas Boris wrote: > Right now, there's no server class for HDAPI. What's the difference > between device servers and device clients? > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Wed Oct 5 17:02:14 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Wed, 5 Oct 2016 17:02:14 -0400 Subject: [Imstk-developers] What's the difference between device servers and device clients? In-Reply-To: References: Message-ID: *Sorry my email left before I was done.* The server/client API in iMSTK is based on the VRPN API, you can read more > about it here: > - https://github.com/vrpn/vrpn/wiki/Writing-Servers > - https://github.com/vrpn/vrpn/wiki/Client-side-VRPN-Devices The interest of the separated client & server is that is is easy to set up a server on a different machine than your application (client) is. HDAPIDeviceClient is just a wrapper for the HD library which does not have the same infrastructure and does not require you to manually run a server independent from the client, as far as I understand. On Wed, Oct 5, 2016 at 4:56 PM, Alexis Girault wrote: > The server/client API in iMSTK is based on the VRPN API, you can read more > about it here: > - https://github.com/vrpn/vrpn/wiki/Writing-Servers > - https://github.com/vrpn/vrpn/wiki/Client-side-VRPN-Devices > > > On Wed, Oct 5, 2016 at 4:41 PM, Milef, Nicholas Boris > wrote: > >> Right now, there's no server class for HDAPI. What's the difference >> between device servers and device clients? >> >> _______________________________________________ >> Imstk-developers mailing list >> Imstk-developers at imstk.org >> http://public.kitware.com/mailman/listinfo/imstk-developers >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Wed Oct 19 11:48:58 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Wed, 19 Oct 2016 11:48:58 -0400 Subject: [Imstk-developers] Fwd: [New post] Code Style and Automatic Formatting in Tomviz In-Reply-To: <101150012.16178.0@wordpress.com> References: <101150012.16178.0@wordpress.com> Message-ID: Could be interesting for our code style & automatic formatting. Here is there doc on how to do this: https://github.com/OpenChemistry/tomviz/blob/master/STYLE.md ---------- Forwarded message ---------- From: The Kitware Blog Date: Wed, Oct 19, 2016 at 11:40 AM Subject: [New post] Code Style and Automatic Formatting in Tomviz To: alexis.girault at kitware.com Marcus D. Hanwell posted: "The importance of code style should not be underestimated, and we have seen a number of changes in our projects over the last few months. Until recently VTK and ParaView used a style for braces that I have only ever encountered in projects coming from our" New post on *The Kitware Blog* Code Style and Automatic Formatting in Tomviz by Marcus D. Hanwell The importance of code style should not be underestimated, and we have seen a number of changes in our projects over the last few months. Until recently VTK and ParaView used a style for braces that I have only ever encountered in projects coming from our company, with minimal to no support in most editors. Having a consistent coding style is important, but it can also be a pain to describe and takes time to go over in code reviews. I had been tracking clang-format for quite some time now, along with several of its predecessors, but this project seemed different as it built upon the language parser in clang . --- # This configuration requires clang-format 3.8 or higher. BasedOnStyle: Mozilla AlwaysBreakAfterReturnType: None AlwaysBreakAfterDefinitionReturnType: None BreakConstructorInitializersBeforeComma: false ... For Tomviz I based our format file on what CMake used in its recent conversion, with some minor adjustments. I was then able to run it in August on all of our source files, and Chris Harris added an automated hook on our GitHub repository to validate that proposed changes comply with the style file. All pull requests are now run through the checks, with the necessary changes supplied if the test fails. This removes the need to review pull requests for coding style, and ensures our code base has a uniform style. Chris has since extended this to our Python code using flake8 too. Developers can easily apply the style to their changes, I usually run 'clang-format -i path/to/changed.*', there are other ways to use the tool too. Now to weigh in on the great brace placement war - we have chosen our side with CMake and keep them on the same line as the statement, preserving maximum vertical space. The ParaView project just merged their clang-format changes this morning, opting to place them on a new line, with VTK using a custom script that also places them on a new line. Upcoming posts in the series - tabs vs spaces, emacs vs vim, and finally Android vs iPhone (I heard the desktop was dead already, but my typing speed is terrible on a phone and I can't get my development environment up and running on it). Throwing down the gauntlet, but in all seriousness automating these things frees up development time while still fostering style uniformity. The clang-format tool enables us to express our code style in a very succinct fashion that can be applied very easily before committing changes - it also understands and can work with diffs/git very well. Oh, and spoiler alert...spaces, vim, Android ;-) *Marcus D. Hanwell * | October 19, 2016 at 3:40 pm | Categories: All | URL: http://wp.me/p6QpJO-4cW Comment See all comments Unsubscribe to no longer receive posts from The Kitware Blog. Change your email settings at Manage Subscriptions . *Trouble clicking?* Copy and paste this URL into your browser: https://blog.kitware.com/code-style-automatic-formatting-tomviz/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Thu Oct 20 15:45:29 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Thu, 20 Oct 2016 19:45:29 +0000 Subject: [Imstk-developers] Copying Vega data Message-ID: 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: From sreekanth.arikatla at kitware.com Thu Oct 20 15:53:39 2016 From: sreekanth.arikatla at kitware.com (Sreekanth Arikatla) Date: Thu, 20 Oct 2016 15:53:39 -0400 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: Message-ID: Hi Nick, It happens in a separate thread in the sceneManager module. On Thu, Oct 20, 2016 at 3:45 PM, Milef, Nicholas Boris 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 > http://public.kitware.com/mailman/listinfo/imstk-developers > > -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc. , Carrboro, NC. -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Thu Oct 20 16:04:14 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Thu, 20 Oct 2016 20:04:14 +0000 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: , Message-ID: 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] Sent: Thursday, October 20, 2016 3:53 PM To: Milef, Nicholas Boris Cc: imstk-developers at imstk.org 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 > 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 http://public.kitware.com/mailman/listinfo/imstk-developers -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc., Carrboro, NC. -------------- next part -------------- An HTML attachment was scrubbed... URL: From sreekanth.arikatla at kitware.com Thu Oct 20 18:01:20 2016 From: sreekanth.arikatla at kitware.com (Sreekanth Arikatla) Date: Thu, 20 Oct 2016 18:01:20 -0400 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: Message-ID: 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 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] > *Sent:* Thursday, October 20, 2016 3:53 PM > *To:* Milef, Nicholas Boris > *Cc:* imstk-developers at imstk.org > *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 > > 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 >> >> http://public.kitware.com/mailman/listinfo/imstk-developers >> >> >> > > > -- > Sreekanth Arikatla, Ph.D, > Senior R&D Engineer, > Kitware, Inc. > , > Carrboro, NC. > > -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc. , Carrboro, NC. -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Fri Oct 21 11:03:46 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Fri, 21 Oct 2016 11:03:46 -0400 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: Message-ID: Here is how VTK offered to improve mapping volumetric meshes or just data arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures 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/ and detailed on this wiki page: http://www.vtk.org/Wiki/VTK/Tutorials/DataArrays 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 (919) 969-6990 x325 On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla < sreekanth.arikatla at kitware.com> 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 > 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] >> *Sent:* Thursday, October 20, 2016 3:53 PM >> *To:* Milef, Nicholas Boris >> *Cc:* imstk-developers at imstk.org >> *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 > >> > 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 >>> >>> http://public.kitware.com/mailman/listinfo/imstk-developers >>> >>> >>> >> >> >> -- >> Sreekanth Arikatla, Ph.D, >> Senior R&D Engineer, >> Kitware, Inc. >> , >> Carrboro, NC. >> >> > > > -- > Sreekanth Arikatla, Ph.D, > Senior R&D Engineer, > Kitware, Inc. , Carrboro, NC. > > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Mon Oct 24 09:25:04 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Mon, 24 Oct 2016 09:25:04 -0400 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: Message-ID: Nich: a filter that could be used for skinning: http://www.vtk.org/doc/nightly/html/classvtkWeightedTransformFilter.html#details 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 Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Fri, Oct 21, 2016 at 11:03 AM, Alexis Girault wrote: > Here is how VTK offered to improve mapping volumetric meshes or just data > arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures > > 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/ and detailed on this wiki page: > http://www.vtk.org/Wiki/VTK/Tutorials/DataArrays > > 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 > (919) 969-6990 x325 > > On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla < > sreekanth.arikatla at kitware.com> 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 >> 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] >>> *Sent:* Thursday, October 20, 2016 3:53 PM >>> *To:* Milef, Nicholas Boris >>> *Cc:* imstk-developers at imstk.org >>> *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 >> >>> > 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 >>>> >>>> http://public.kitware.com/mailman/listinfo/imstk-developers >>>> >>>> >>>> >>> >>> >>> -- >>> Sreekanth Arikatla, Ph.D, >>> Senior R&D Engineer, >>> Kitware, Inc. >>> , >>> Carrboro, NC. >>> >>> >> >> >> -- >> Sreekanth Arikatla, Ph.D, >> Senior R&D Engineer, >> Kitware, Inc. , Carrboro, NC. >> >> >> _______________________________________________ >> Imstk-developers mailing list >> Imstk-developers at imstk.org >> http://public.kitware.com/mailman/listinfo/imstk-developers >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Mon Oct 24 19:14:30 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Mon, 24 Oct 2016 23:14:30 +0000 Subject: [Imstk-developers] Text Rendering Message-ID: One thing we may want to look into is optimizing text rendering. I think VTK uses FreeType, but that method has historically been slow for high-performance real-time applications because you essentially have to render out each character at a certain resolution (which is bad for 3D text especially since the render size would need to change with distance). Valve published an influential paper here that works well in 2D and 3D: http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf Also, there's some interesting discussion in this answer here: http://stackoverflow.com/questions/5262951/what-is-state-of-the-art-for-text-rendering-in-opengl-as-of-version-4-1 What's interesting is that one approach is to model text essentially as a mesh and use geometry shaders to create planes out of the vertices to map the textures on them. IDK how great that approach is though because geometry shaders don't tolerate generating geometry very well, but it's an option. Otherwise, instancing should work well enough. -------------- next part -------------- An HTML attachment was scrubbed... URL: From andinet.enqu at kitware.com Mon Oct 24 19:18:33 2016 From: andinet.enqu at kitware.com (Andinet Enquobahrie) Date: Mon, 24 Oct 2016 19:18:33 -0400 Subject: [Imstk-developers] Text Rendering In-Reply-To: References: Message-ID: Nick, But, are we doing any text rendering in iMSTK? On Mon, Oct 24, 2016 at 7:14 PM, Milef, Nicholas Boris wrote: > One thing we may want to look into is optimizing text rendering. I think > VTK uses FreeType, but that method has historically been slow for > high-performance real-time applications because you essentially have to > render out each character at a certain resolution (which is bad for 3D text > especially since the render size would need to change with distance). > > Valve published an influential paper here that works well in 2D and 3D: > http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_ > AlphaTestedMagnification.pdf > > Also, there's some interesting discussion in this answer here: > http://stackoverflow.com/questions/5262951/what-is- > state-of-the-art-for-text-rendering-in-opengl-as-of-version-4-1 > > What's interesting is that one approach is to model text essentially as a > mesh and use geometry shaders to create planes out of the vertices to map > the textures on them. IDK how great that approach is though because > geometry shaders don't tolerate generating geometry very well, but it's an > option. Otherwise, instancing should work well enough. > > _______________________________________________ > Imstk-developers mailing list > Imstk-developers at imstk.org > http://public.kitware.com/mailman/listinfo/imstk-developers > > -- Andinet Enquobahrie, Ph.D., MBA Assistant Director of Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x311 <%28919%29%20969-6990%20x311> -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Mon Oct 24 19:22:53 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Mon, 24 Oct 2016 23:22:53 +0000 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: , Message-ID: Sorry, kind of late replying to all this stuff. 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. >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. ________________________________ From: Alexis Girault [alexis.girault at kitware.com] Sent: Monday, October 24, 2016 9:25 AM To: Sreekanth Arikatla Cc: Milef, Nicholas Boris; imstk-developers at imstk.org 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 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 Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Fri, Oct 21, 2016 at 11:03 AM, Alexis Girault > wrote: Here is how VTK offered to improve mapping volumetric meshes or just data arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures 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/ and detailed on this wiki page: http://www.vtk.org/Wiki/VTK/Tutorials/DataArrays 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 (919) 969-6990 x325 On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla > 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 > 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] Sent: Thursday, October 20, 2016 3:53 PM To: Milef, Nicholas Boris Cc: imstk-developers at imstk.org 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 > 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 http://public.kitware.com/mailman/listinfo/imstk-developers -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc., Carrboro, NC. -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc., Carrboro, NC. _______________________________________________ Imstk-developers mailing list Imstk-developers at imstk.org http://public.kitware.com/mailman/listinfo/imstk-developers -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Mon Oct 24 19:33:29 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Mon, 24 Oct 2016 23:33:29 +0000 Subject: [Imstk-developers] Text Rendering In-Reply-To: References: , Message-ID: Anytime we need to display text on screen, we have to do text rendering. This would probably be a smaller bottleneck anyway, but text in 3D environments will be necessary for VR simulations that need text. Do you know whether this would be a commonly used feature for the type of applications that use iMSTK? ________________________________ From: Andinet Enquobahrie [andinet.enqu at kitware.com] Sent: Monday, October 24, 2016 7:18 PM To: Milef, Nicholas Boris Cc: imstk-developers at imstk.org Subject: Re: [Imstk-developers] Text Rendering Nick, But, are we doing any text rendering in iMSTK? On Mon, Oct 24, 2016 at 7:14 PM, Milef, Nicholas Boris > wrote: One thing we may want to look into is optimizing text rendering. I think VTK uses FreeType, but that method has historically been slow for high-performance real-time applications because you essentially have to render out each character at a certain resolution (which is bad for 3D text especially since the render size would need to change with distance). Valve published an influential paper here that works well in 2D and 3D: http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf Also, there's some interesting discussion in this answer here: http://stackoverflow.com/questions/5262951/what-is-state-of-the-art-for-text-rendering-in-opengl-as-of-version-4-1 What's interesting is that one approach is to model text essentially as a mesh and use geometry shaders to create planes out of the vertices to map the textures on them. IDK how great that approach is though because geometry shaders don't tolerate generating geometry very well, but it's an option. Otherwise, instancing should work well enough. _______________________________________________ Imstk-developers mailing list Imstk-developers at imstk.org http://public.kitware.com/mailman/listinfo/imstk-developers -- Andinet Enquobahrie, Ph.D., MBA Assistant Director of Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x311 -------------- next part -------------- An HTML attachment was scrubbed... URL: From andinet.enqu at kitware.com Mon Oct 24 19:36:09 2016 From: andinet.enqu at kitware.com (Andinet Enquobahrie) Date: Mon, 24 Oct 2016 19:36:09 -0400 Subject: [Imstk-developers] Text Rendering In-Reply-To: References: Message-ID: Text rendering probably will not be a major issue for use. I would suggest we focus on the main rending issues that are causing performance slow-down On Mon, Oct 24, 2016 at 7:33 PM, Milef, Nicholas Boris wrote: > Anytime we need to display text on screen, we have to do text rendering. This > would probably be a smaller bottleneck anyway, but text in 3D environments > will be necessary for VR simulations that need text. Do you know whether > this would be a commonly used feature for the type of applications that use > iMSTK? > ------------------------------ > *From:* Andinet Enquobahrie [andinet.enqu at kitware.com] > *Sent:* Monday, October 24, 2016 7:18 PM > *To:* Milef, Nicholas Boris > *Cc:* imstk-developers at imstk.org > *Subject:* Re: [Imstk-developers] Text Rendering > > Nick, > > But, are we doing any text rendering in iMSTK? > > On Mon, Oct 24, 2016 at 7:14 PM, Milef, Nicholas Boris > > wrote: > >> One thing we may want to look into is optimizing text rendering. I think >> VTK uses FreeType, but that method has historically been slow for >> high-performance real-time applications because you essentially have to >> render out each character at a certain resolution (which is bad for 3D text >> especially since the render size would need to change with distance). >> >> Valve published an influential paper here that works well in 2D and 3D: >> http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_ >> AlphaTestedMagnification.pdf >> >> >> Also, there's some interesting discussion in this answer here: >> http://stackoverflow.com/questions/5262951/what-is-state-of- >> the-art-for-text-rendering-in-opengl-as-of-version-4-1 >> >> >> What's interesting is that one approach is to model text essentially as a >> mesh and use geometry shaders to create planes out of the vertices to map >> the textures on them. IDK how great that approach is though because >> geometry shaders don't tolerate generating geometry very well, but it's an >> option. Otherwise, instancing should work well enough. >> >> _______________________________________________ >> Imstk-developers mailing list >> Imstk-developers at imstk.org >> >> http://public.kitware.com/mailman/listinfo/imstk-developers >> >> >> > > > -- > Andinet Enquobahrie, Ph.D., MBA > Assistant Director of Medical Computing > Kitware, Inc. > > http://www.kitware.com > > (919) 969-6990 x311 <%28919%29%20969-6990%20x311> > > > > -- Andinet Enquobahrie, Ph.D., MBA Assistant Director of Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x311 <%28919%29%20969-6990%20x311> -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexis.girault at kitware.com Tue Oct 25 10:15:20 2016 From: alexis.girault at kitware.com (Alexis Girault) Date: Tue, 25 Oct 2016 10:15:20 -0400 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: Message-ID: > > 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] > *Sent:* Monday, October 24, 2016 9:25 AM > *To:* Sreekanth Arikatla > *Cc:* Milef, Nicholas Boris; imstk-developers at imstk.org > > *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 > > 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 > > > Alexis Girault > R&D Engineer in Medical Computing > Kitware, Inc. > > http://www.kitware.com > > (919) 969-6990 x325 > > On Fri, Oct 21, 2016 at 11:03 AM, Alexis Girault < > alexis.girault at kitware.com > > > wrote: > >> Here is how VTK offered to improve mapping volumetric meshes or just data >> arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures >> >> >> 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.c >> om/new-data-array-layouts-in-vtk-7-1/ >> >> and detailed on this wiki page: http://www.vtk.org/Wiki/ >> VTK/Tutorials/DataArrays >> >> >> 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 >> >> (919) 969-6990 x325 >> >> On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla < >> sreekanth.arikatla at kitware.com >> >> > 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 >> >>> > 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 >>>> >>>> ] >>>> *Sent:* Thursday, October 20, 2016 3:53 PM >>>> *To:* Milef, Nicholas Boris >>>> *Cc:* imstk-developers at imstk.org >>>> >>>> *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 >>> >>>> > 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 >>>>> >>>>> http://public.kitware.com/mailman/listinfo/imstk-developers >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Sreekanth Arikatla, Ph.D, >>>> Senior R&D Engineer, >>>> Kitware, Inc. >>>> , >>>> Carrboro, NC. >>>> >>>> >>> >>> >>> -- >>> Sreekanth Arikatla, Ph.D, >>> Senior R&D Engineer, >>> Kitware, Inc. >>> , >>> Carrboro, NC. >>> >>> >>> _______________________________________________ >>> Imstk-developers mailing list >>> Imstk-developers at imstk.org >>> >>> http://public.kitware.com/mailman/listinfo/imstk-developers >>> >>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From milefn at rpi.edu Tue Oct 25 19:04:08 2016 From: milefn at rpi.edu (Milef, Nicholas Boris) Date: Tue, 25 Oct 2016 23:04:08 +0000 Subject: [Imstk-developers] Copying Vega data In-Reply-To: References: , Message-ID: "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] Sent: Monday, October 24, 2016 9:25 AM To: Sreekanth Arikatla Cc: Milef, Nicholas Boris; imstk-developers at imstk.org 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 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 Alexis Girault R&D Engineer in Medical Computing Kitware, Inc. http://www.kitware.com (919) 969-6990 x325 On Fri, Oct 21, 2016 at 11:03 AM, Alexis Girault > wrote: Here is how VTK offered to improve mapping volumetric meshes or just data arrays: http://www.vtk.org/Wiki/VTK/InSituDataStructures 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/ and detailed on this wiki page: http://www.vtk.org/Wiki/VTK/Tutorials/DataArrays 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 (919) 969-6990 x325 On Thu, Oct 20, 2016 at 6:01 PM, Sreekanth Arikatla > 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 > 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] Sent: Thursday, October 20, 2016 3:53 PM To: Milef, Nicholas Boris Cc: imstk-developers at imstk.org 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 > 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 http://public.kitware.com/mailman/listinfo/imstk-developers -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc., Carrboro, NC. -- Sreekanth Arikatla, Ph.D, Senior R&D Engineer, Kitware, Inc., Carrboro, NC. _______________________________________________ Imstk-developers mailing list Imstk-developers at imstk.org http://public.kitware.com/mailman/listinfo/imstk-developers -------------- next part -------------- An HTML attachment was scrubbed... URL: