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 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_cast<vtkCompositeDataSet*>(mapper->GetInputDataObject(0, 0)); >>>>>>>>> if(composite_input_data != NULL) >>>>>>>>> { >>>>>>>>> // get actor's composite mapper >>>>>>>>> composite_mapper = >>>>>>>>> dynamic_cast<vtkCompositePolyDataMapper2*>(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(;;) >>>>>>>>> { >>>>>>>>> vtkSmartPointer<vtkActor> 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_cast<vtkPolyData*>(data_object) != NULL) >>>>>>>>> { >>>>>>>>> // get poly data >>>>>>>>> vtkPolyData* poly_data = >>>>>>>>> dynamic_cast<vtkPolyData*>(data_object); >>>>>>>>> >>>>>>>>> // create new temporary poly data mapper >>>>>>>>> vtkSmartPointer<vtkPolyDataMapper> poly_data_mapper = >>>>>>>>> vtkSmartPointer<vtkPolyDataMapper>::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 = vtkSmartPointer<vtkActor>::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 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 >>>>>>>>> >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> 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 >>> >> > _______________________________________________ > 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