Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Interesting, I wonder how that could have worked with older version of ParaView then. Did that piece of code change recently? Utkarsh On Sun, May 22, 2011 at 2:43 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Just to announce - the problem is solved! It seems the problem was in plugin's sources when setting texture coordinates data. So, if in vtkMyExporter.cpp I remove tex_coord_data-SetNumberOfComponents(1); or set number of components to 2, correct texture will be generated! Thanks everyone on Your help! Best regards, Nenad. On Fri, May 13, 2011 at 11:49 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Does anyone have idea where could be the problem in uploaded sources? Thanks, Nenad. On Tue, May 10, 2011 at 12:13 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Dear Utkarsh, Yes, it works perfectly with ParaView v3.8.* release sources. The reason is in vtkScalarsToColorsPainter class which produces 256x1 texture in ParaView v3.8.*, while in ParaView 3.10.* (and current SVN sources) it produces 256x2 texture. In v3.10.* case, in first row (bottom-up) are texels with colors copied from lookup table, while in second row (or first in top-down view) all texels are (64, 0, 0) - dark red. Best regards, Nenad. On Mon, May 23, 2011 at 3:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Interesting, I wonder how that could have worked with older version of ParaView then. Did that piece of code change recently? Utkarsh On Sun, May 22, 2011 at 2:43 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Just to announce - the problem is solved! It seems the problem was in plugin's sources when setting texture coordinates data. So, if in vtkMyExporter.cpp I remove tex_coord_data-SetNumberOfComponents(1); or set number of components to 2, correct texture will be generated! Thanks everyone on Your help! Best regards, Nenad. On Fri, May 13, 2011 at 11:49 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Does anyone have idea where could be the problem in uploaded sources? Thanks, Nenad. On Tue, May 10, 2011 at 12:13 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Ah interesting. I wasn't aware of that change. Thanks. Utkarsh On Mon, May 23, 2011 at 1:26 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Yes, it works perfectly with ParaView v3.8.* release sources. The reason is in vtkScalarsToColorsPainter class which produces 256x1 texture in ParaView v3.8.*, while in ParaView 3.10.* (and current SVN sources) it produces 256x2 texture. In v3.10.* case, in first row (bottom-up) are texels with colors copied from lookup table, while in second row (or first in top-down view) all texels are (64, 0, 0) - dark red. Best regards, Nenad. On Mon, May 23, 2011 at 3:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Interesting, I wonder how that could have worked with older version of ParaView then. Did that piece of code change recently? Utkarsh On Sun, May 22, 2011 at 2:43 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Just to announce - the problem is solved! It seems the problem was in plugin's sources when setting texture coordinates data. So, if in vtkMyExporter.cpp I remove tex_coord_data-SetNumberOfComponents(1); or set number of components to 2, correct texture will be generated! Thanks everyone on Your help! Best regards, Nenad. On Fri, May 13, 2011 at 11:49 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Does anyone have idea where could be the problem in uploaded sources? Thanks, Nenad. On Tue, May 10, 2011 at 12:13 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Hello everyone, Just to announce - the problem is solved! It seems the problem was in plugin's sources when setting texture coordinates data. So, if in vtkMyExporter.cpp I remove tex_coord_data-SetNumberOfComponents(1); or set number of components to 2, correct texture will be generated! Thanks everyone on Your help! Best regards, Nenad. On Fri, May 13, 2011 at 11:49 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Does anyone have idea where could be the problem in uploaded sources? Thanks, Nenad. On Tue, May 10, 2011 at 12:13 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object,
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Hello everyone, Does anyone have idea where could be the problem in uploaded sources? Thanks, Nenad. On Tue, May 10, 2011 at 12:13 PM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Dear Utkarsh, Thank You very much, but unfortunately, adding manually copying of parameters didn't solve all problems. I updated test plug-in with manually copying, converting scalars to texture, applying texture to actor and showing resulting actor in vtkRenderWindow. You can find updated sources at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. If You load again disk_out_ref.ex2, select H2 and try to export to .my, You'll see in separate vtkRenderWindow same object with applied generated texture which looks very bad. Again, it works fine in v3.8.1. I believe I'm not initializing new actors properly? Do You have some idea how to fix it? Thanks, Nenad. On Mon, May 9, 2011 at 10:02 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor with current component as data, otherwise use entire actor (I do this because I need actor with vtkPolyDataMapper and vtkPolyData data for vtkScalarsToColorsPainter) if(actor_iterator
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
The problem is pretty straight forward. Looks like vtkMapper::ShallowCopy(..) does not copy the state of InterpolateScalarsBeforeMapping. I will commit a fix for that for next release. Until then, you'll have to manually copy ivars that you care about. Utkarsh On Sun, May 8, 2011 at 10:25 AM, Nenad Vujicic nena...@gmail.com wrote: Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor with current component as data, otherwise use entire actor (I do this because I need actor with vtkPolyDataMapper and vtkPolyData data for vtkScalarsToColorsPainter) if(actor_iterator != NULL) { // check if there are no more components if(actor_iterator-IsDoneWithTraversal()) break; // get next component vtkDataObject* data_object = actor_iterator-GetCurrentDataObject(); if(dynamic_castvtkPolyData*(data_object) != NULL) { // get poly data vtkPolyData* poly_data = dynamic_castvtkPolyData*(data_object); // create new temporary poly data mapper vtkSmartPointervtkPolyDataMapper poly_data_mapper = vtkSmartPointervtkPolyDataMapper::New(); // copy mapper's parameters poly_data_mapper-ShallowCopy(composite_mapper); // set mapper's
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Dear Utkarsh, I uploaded test plugin that shows my problem at http://alas.matf.bg.ac.rs/~mr00053/projects/PVTest.zip. After I build and load the plugin from Qt client, I load disk_out_ref.ex2, select H2 for mapping scalars, check Interpolate Scalars on Display tab in Object inspector and go on File-Export (select .my file). I get 6 message boxes which report 0, 0, 0, 0, 0, 1 (instead of 0, 0, 0, 0, 1, 1) as values for vtkMapper::InterpolateScalarsBeforeMapping. So, here is first question: How to create multiple vtkActor objects from vtkCompositePolyDataMapper2's input? I thought that vtkMyExporter.cpp Ln 138-162 should be fine, but uploaded sources shows different. Thanks, Nenad. On Fri, May 6, 2011 at 2:29 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor with current component as data, otherwise use entire actor (I do this because I need actor with vtkPolyDataMapper and vtkPolyData data for vtkScalarsToColorsPainter) if(actor_iterator != NULL) { // check if there are no more components if(actor_iterator-IsDoneWithTraversal()) break; // get next component vtkDataObject* data_object = actor_iterator-GetCurrentDataObject(); if(dynamic_castvtkPolyData*(data_object) != NULL) { // get poly data vtkPolyData* poly_data = dynamic_castvtkPolyData*(data_object); // create new temporary poly data mapper vtkSmartPointervtkPolyDataMapper poly_data_mapper = vtkSmartPointervtkPolyDataMapper::New(); // copy mapper's parameters poly_data_mapper-ShallowCopy(composite_mapper); // set mapper's input poly_data_mapper-SetInput(poly_data); // create new actor actor = vtkSmartPointervtkActor::New(); // copy actor parameters actor-ShallowCopy(ptrActor); // set actor's mapper actor-SetMapper(poly_data_mapper); }
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Nenad, There;s nothing much different about the vtkCompositePolyDataMapper or vtkPolyDataMapper as far as the state of the InterpolateScalarsBeforeMapping flag goes. I cannot see how that variable can return false if it is indeed set to true as you are saying. Can you share the plugin? Utkarsh On Thu, May 5, 2011 at 6:03 PM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor with current component as data, otherwise use entire actor (I do this because I need actor with vtkPolyDataMapper and vtkPolyData data for vtkScalarsToColorsPainter) if(actor_iterator != NULL) { // check if there are no more components if(actor_iterator-IsDoneWithTraversal()) break; // get next component vtkDataObject* data_object = actor_iterator-GetCurrentDataObject(); if(dynamic_castvtkPolyData*(data_object) != NULL) { // get poly data vtkPolyData* poly_data = dynamic_castvtkPolyData*(data_object); // create new temporary poly data mapper vtkSmartPointervtkPolyDataMapper poly_data_mapper = vtkSmartPointervtkPolyDataMapper::New(); // copy mapper's parameters poly_data_mapper-ShallowCopy(composite_mapper); // set mapper's input poly_data_mapper-SetInput(poly_data); // create new actor actor = vtkSmartPointervtkActor::New(); // copy actor parameters actor-ShallowCopy(ptrActor); // set actor's mapper actor-SetMapper(poly_data_mapper); } else { return false; } } else actor = ptrActor; // report some actor's property QMessageBox::about(NULL, , QString::number(ptrActor-GetMapper()-GetInterpolateScalarsBeforeMapping())); // perform transformation from scalars to texture using vtkScalarsToColorsPainter class // extract data from ptrActor (I use previously generated texture instead of colors / scalars) // write to my custom format // if input is not composite, break the loop if(composite_input_data == NULL) break; // set iterator on next item if(actor_iterator != NULL) actor_iterator-GoToNextItem(); }
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Hello everyone, Perhaps I was a bit unclear in my previous messages. Here are more details about the problem and test case. I use ParaView v3.10.1 release sources, Visual Studio 2008 SP1, Python 2.7, OpenMPI 1.4.3 on Vista SP2. I compiled sources with standard options (just turned on BUILD_SHARED_LIBS, MPI and Python). I derived new class from vtkExporter, vtkMyExporter, and in vtkMyExporter::WriteData() I call code specified down. The problem is in QMessage line, which reports always 0, even when this flag is turned on. Same is happening with most of other parameters. I believe that learning how to decompose composite ptrActor into several actors with vtkPolyDataMapper mapper and vtkPolyData data will solve all other problems (which occur when generating texture from scalars). At the moment, I'm interested only in actors which use vtkCompositePolyDataMapper2 mappers. As input I use disk_out_ref.ex2 with selected H2 (or any other channel) for mapping colors. Does anyone have any idea how this can be done? Btw, this worked perfectly under ParaView v.3.8.1 and with RenderWindow created using VTK 5.4.2 (where I create vtkCompositePolyDataMapper2 and populate it manually). Thank You very much for Your help! Best regards, Nenad. 1) Get interactive renderer 'InteractiveRenderer' from vtkMyExporter::RenderWindow 2) For every actor 'ptrActor' (3D actors only) in InteractiveRenderer do: vtkCompositeDataIterator* actor_iterator; vtkCompositePolyDataMapper2* composite_mapper = NULL; // get actor's mapper vtkMapper* mapper = ptrActor-GetMapper(); if(mapper == NULL) return true; // discard // get mapper's input vtkCompositeDataSet* composite_input_data = dynamic_castvtkCompositeDataSet*(mapper-GetInputDataObject(0, 0)); if(composite_input_data != NULL) { // get actor's composite mapper composite_mapper = dynamic_castvtkCompositePolyDataMapper2*(mapper); if(composite_mapper == NULL) return false; // in case input data is composite object, get iterator for traversing actor_iterator = composite_input_data-NewIterator(); // initialize iterator for traversing actor_iterator-InitTraversal(); actor_iterator-GoToFirstItem(); } else actor_iterator = NULL; // export all components of input actor for(;;) { vtkSmartPointervtkActor actor; // if input data is composite object, create actor with current component as data, otherwise use entire actor (I do this because I need actor with vtkPolyDataMapper and vtkPolyData data for vtkScalarsToColorsPainter) if(actor_iterator != NULL) { // check if there are no more components if(actor_iterator-IsDoneWithTraversal()) break; // get next component vtkDataObject* data_object = actor_iterator-GetCurrentDataObject(); if(dynamic_castvtkPolyData*(data_object) != NULL) { // get poly data vtkPolyData* poly_data = dynamic_castvtkPolyData*(data_object); // create new temporary poly data mapper vtkSmartPointervtkPolyDataMapper poly_data_mapper = vtkSmartPointervtkPolyDataMapper::New(); // copy mapper's parameters poly_data_mapper-ShallowCopy(composite_mapper); // set mapper's input poly_data_mapper-SetInput(poly_data); // create new actor actor = vtkSmartPointervtkActor::New(); // copy actor parameters actor-ShallowCopy(ptrActor); // set actor's mapper actor-SetMapper(poly_data_mapper); } else { return false; } } else actor = ptrActor; // report some actor's property QMessageBox::about(NULL, , QString::number(ptrActor-GetMapper()-GetInterpolateScalarsBeforeMapping())); // perform transformation from scalars to texture using vtkScalarsToColorsPainter class // extract data from ptrActor (I use previously generated texture instead of colors / scalars) // write to my custom format // if input is not composite, break the loop if(composite_input_data == NULL) break; // set iterator on next item if(actor_iterator != NULL) actor_iterator-GoToNextItem(); } On Wed, May 4, 2011 at 3:04 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, I am not sure I understand where this code is being put. You say it's an exporter? Meaning it exports to something like a vrml/x3d file? But that doesn't seem right since you say you are using the PolyDataMapper. What is this plugin
[Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Hello everyone, I'm having some problems with porting my ParaView exporter plug-in to v3.10, because ParaView started using vtkCompositeDataSet internally instead of keeping components merged. The problem is in performing transformation of scalars to texture using vtkScalarsToColorsPainter class. Here is approximately my code (questions come after pseudo-code): for every actor in currently active renderer: for every component of composite data object (I retrieve vtkDataObject* with vtkCompositeDataIterator::GetCurrentDataObject() call) // prepare new actor which defines component dynamic cast vtkDataObject* data_object to vtkPolyData* poly_data; create new vtkPolyDataMapper* pdm; pdm-ShallowCopy(composite_mapper); pdm-SetInput(poly_data); allocate new actor and do actor-ShallowCopy(ptrActor) // ptrActor) is selected actor from currently active renderer - line 1 actor-SetMapper(pdm); // perform converting from scalars to texture ConvertScalarsToColors(actor); Routine ConvertScalarsToColors(vtkActor*) is defined in following way: L1 get actor's poly_data and mapper references, L2 create s2c - instance of MyVtkScalarsToColorsPainter (derived from vtkScalarsToColorsPainter for allowing setting its protected attributes), L3 initialize s2c parameters from mapper and poly_data L4 if s2c-CanUseTextureMapForColoring(poly_data) returns true, s2c-PrepareForRendering(), get texture and texture coordinates and sets them to passed actor Q1: First problem is in L3 when setting s2c parameters. Original mapper has turned on InterpolateScalarsBeforeMapping flag, but new one doesn't have it. How to safely copy properties of vtkCompositePolyDataMapper2 to vtkPolyDataMapper or I shouldn't do it? Q2: Even if I override above problem by turning on manually InterpolateScalarsBeforeMapping, I get very bad texture on output. It looks like scalars were not interpolated before mapping, sometimes even more distorted.. The same code works with v3.8 perfectly. I also tried to apply vtkCompositeDataGeometryFilter to composite data object and to apply ConvertScalarsToColors() to result (even without creating new actor), but without success. Strange thing is that when I try this with manually created VTK scene (out of ParaView) it works perfectly and texture looks great! I would appreciate any help! Best regards, Nenad. ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Nenad, I am not sure I understand where this code is being put. You say it's an exporter? Meaning it exports to something like a vrml/x3d file? But that doesn't seem right since you say you are using the PolyDataMapper. What is this plugin trying to achieve? Utkarsh On Wed, May 4, 2011 at 8:31 AM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, I'm having some problems with porting my ParaView exporter plug-in to v3.10, because ParaView started using vtkCompositeDataSet internally instead of keeping components merged. The problem is in performing transformation of scalars to texture using vtkScalarsToColorsPainter class. Here is approximately my code (questions come after pseudo-code): for every actor in currently active renderer: for every component of composite data object (I retrieve vtkDataObject* with vtkCompositeDataIterator::GetCurrentDataObject() call) // prepare new actor which defines component dynamic cast vtkDataObject* data_object to vtkPolyData* poly_data; create new vtkPolyDataMapper* pdm; pdm-ShallowCopy(composite_mapper); pdm-SetInput(poly_data); allocate new actor and do actor-ShallowCopy(ptrActor) // ptrActor) is selected actor from currently active renderer - line 1 actor-SetMapper(pdm); // perform converting from scalars to texture ConvertScalarsToColors(actor); Routine ConvertScalarsToColors(vtkActor*) is defined in following way: L1 get actor's poly_data and mapper references, L2 create s2c - instance of MyVtkScalarsToColorsPainter (derived from vtkScalarsToColorsPainter for allowing setting its protected attributes), L3 initialize s2c parameters from mapper and poly_data L4 if s2c-CanUseTextureMapForColoring(poly_data) returns true, s2c-PrepareForRendering(), get texture and texture coordinates and sets them to passed actor Q1: First problem is in L3 when setting s2c parameters. Original mapper has turned on InterpolateScalarsBeforeMapping flag, but new one doesn't have it. How to safely copy properties of vtkCompositePolyDataMapper2 to vtkPolyDataMapper or I shouldn't do it? Q2: Even if I override above problem by turning on manually InterpolateScalarsBeforeMapping, I get very bad texture on output. It looks like scalars were not interpolated before mapping, sometimes even more distorted.. The same code works with v3.8 perfectly. I also tried to apply vtkCompositeDataGeometryFilter to composite data object and to apply ConvertScalarsToColors() to result (even without creating new actor), but without success. Strange thing is that when I try this with manually created VTK scene (out of ParaView) it works perfectly and texture looks great! I would appreciate any help! Best regards, Nenad. ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
Re: [Paraview] Problems with 'interpolate scalars before mapping' in v3.10
Dear Utkarsh, Thank You very much on Your answer. Yes, my plug-in is exporter, which means I define it in class derived from vtkExporter. It extracts all possible scene information from vtkExporter::RenderWindow object (in both Qt-client and python-client modes) and writes these data to very special format using proprietary software. Because output format is a bit specific, I have to convert scalar values to texture first and then to export the texture, I cannot output interpolated scalars or colors. Like in my pseudo-code, I first take currently active renderer (from vtkExporter::RenderWindow) and collect geometry / topology / other_info from it using my pseudo-code. After this step, I write collected data to my format using other software without problems. However, I have problems with transforming scalars to texture. Btw, I'm sure collected data is fine, because I can preview it using other software.. Also, it works perfect under v3.8.*. Do You have any idea? Thanks, Nenad. On Wed, May 4, 2011 at 3:04 PM, Utkarsh Ayachit utkarsh.ayac...@kitware.com wrote: Nenad, I am not sure I understand where this code is being put. You say it's an exporter? Meaning it exports to something like a vrml/x3d file? But that doesn't seem right since you say you are using the PolyDataMapper. What is this plugin trying to achieve? Utkarsh On Wed, May 4, 2011 at 8:31 AM, Nenad Vujicic nena...@gmail.com wrote: Hello everyone, I'm having some problems with porting my ParaView exporter plug-in to v3.10, because ParaView started using vtkCompositeDataSet internally instead of keeping components merged. The problem is in performing transformation of scalars to texture using vtkScalarsToColorsPainter class. Here is approximately my code (questions come after pseudo-code): for every actor in currently active renderer: for every component of composite data object (I retrieve vtkDataObject* with vtkCompositeDataIterator::GetCurrentDataObject() call) // prepare new actor which defines component dynamic cast vtkDataObject* data_object to vtkPolyData* poly_data; create new vtkPolyDataMapper* pdm; pdm-ShallowCopy(composite_mapper); pdm-SetInput(poly_data); allocate new actor and do actor-ShallowCopy(ptrActor) // ptrActor) is selected actor from currently active renderer - line 1 actor-SetMapper(pdm); // perform converting from scalars to texture ConvertScalarsToColors(actor); Routine ConvertScalarsToColors(vtkActor*) is defined in following way: L1 get actor's poly_data and mapper references, L2 create s2c - instance of MyVtkScalarsToColorsPainter (derived from vtkScalarsToColorsPainter for allowing setting its protected attributes), L3 initialize s2c parameters from mapper and poly_data L4 if s2c-CanUseTextureMapForColoring(poly_data) returns true, s2c-PrepareForRendering(), get texture and texture coordinates and sets them to passed actor Q1: First problem is in L3 when setting s2c parameters. Original mapper has turned on InterpolateScalarsBeforeMapping flag, but new one doesn't have it. How to safely copy properties of vtkCompositePolyDataMapper2 to vtkPolyDataMapper or I shouldn't do it? Q2: Even if I override above problem by turning on manually InterpolateScalarsBeforeMapping, I get very bad texture on output. It looks like scalars were not interpolated before mapping, sometimes even more distorted.. The same code works with v3.8 perfectly. I also tried to apply vtkCompositeDataGeometryFilter to composite data object and to apply ConvertScalarsToColors() to result (even without creating new actor), but without success. Strange thing is that when I try this with manually created VTK scene (out of ParaView) it works perfectly and texture looks great! I would appreciate any help! Best regards, Nenad. ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview