On Sat, Apr 25, 2009 at 2:53 PM, pat marion <[email protected]> wrote:
> Hi David, > > Good question. I've worked with obj files before, but never in vtk. > After a quick read of vtkOBJExporter, I think I can answer your > question. I encourage you to take a look at the source code for > vtkOBJExporter.cxx, it's actually quite readable. Here is what it > does: > > > The exporter takes a renderer, gets the actors from the renderer, and > loops for each actor. For each actor, it calls > vtkOBJExporter::WriteAnActor. This method gets the material > properties from the actor and writes them to the .mtl file. Then it > gets the actor's dataset. If the dataset is not polydata, it converts > it to polydata by pushing it through the vtkGeometryFilter. Then it > writes the polydata's geometry to the .obj file. > > > If you have some time and you want to improve this file, it might be > helpful if you pulled some of the code from > vtkOBJExporter::WriteAnActor and put it into a new subroutine named > something like vtkOBJExporter::WriteAPolyData. Then you could use > this method to write a .obj file from a polydata if you are not > interested in having an accompanying.mtl file. > > > Pat > Pat, I did exactly what you said and now have a function: void WriteAPolyData(vtkSmartPointer<vtkPolyData> pd, std::string &OutputFilename) that seems to work! At first I tried to put it in the public section of vtkOBJExporter.h/.cxx and recompile Paraview/VTK, but it tells me there is a compiler parsing error (there is nothing wrong with the syntax because it compiles fine "outside" of VTK). In vtkOBJExporter.h, I added #include "vtkSmartPointer.h" #include "vtkPolyData.h" #include <string> And under: void PrintSelf(ostream& os, vtkIndent indent); I added: void WriteAPolyData(vtkSmartPointer<vtkPolyData> pd, std::string &OutputFilename); I put the function definition in vtkOBJExporter.cxx. After fighting that for a while (with no resolution) I moved the declaration outside the class (to the very bottom of vtkOBJExporter.h (as the function doesn't actually rely on anything in the class anyway) and it compiled fine. Can I commit this function? I feel like it would probably be useful for many users. (I don't have write access). As a side note : I have QT4.5 and cmake (with the latest cvs paraview/vtk) wouldn't let me proceed installing vtk because the qt version was too high. I commented out that check in the CMakeLists.txt file and it seemed to work just fine... is there a reason that check is still there? Maybe it should be decreased to a warning instead of a show-stopping error? Thanks, Dave
_______________________________________________ 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
