[Paraview] Export to vtk file needed to get colours!

Cory Quammen cory.quammen at kitware.com
Tue Oct 14 16:28:57 EDT 2014


Bertwim,

Try naming your arrays, e.g.

vtxdata->SetName("Point Scalars");
vxldata->SetName("Cell Scalars");

and see if that makes them appear in the Coloring combo box.

Thanks,
Cory

On Tue, Oct 14, 2014 at 4:23 PM, B.W.H. van Beest <bwvb at xs4all.nl> wrote:

>  Hello All,
>
> I wonder if I stumbled upon a bug, or if I made a thinking error myself.
>
> The issue is: I can get colouring of my Source object only after I write
> it first to a vtk file and then read it back again!
>
> This is what I do:
>
> -) I create a single (rectangular) 3D cell from a (handcrafted) Source
> type,
>      subclassed from vtkUnstructuredGridAlgorithm.
>     This cell has scalar properties assigned to both its vertices as well
> as the cell itself.
>
> -)  After "Apply", the box becomes visible (surface representation)
>      However, there are no colours. The "Coloring" section in the
>      Properties panel does not show the scalar properties. Only
>      "Solid Color" and "cellNormals" appear as combo-options.
>
> -)   After writing the model to a vtk file, and loading the latter, the
>      loaded box does appear in its coloured form, with the scalar
> properties
>      selectable in the "Coloring" combo box.
>
> Why do the colours not show up immediately after I created ("Apply") the
> source object. I naively tried a Modified() on the underlying unstructed
> grid object,
> but that didn't help.
>
> For completeness, I paste the relevant code as well as the vtk file
> (ascii).
>
> Kind Regards,
> Bertwim
>
>
>
> ====================
> int sphBoxSourceC::RequestData( vtkInformation *vtkNotUsed(request),
>                                 vtkInformationVector
> **vtkNotUsed(inputVector),
>                                 vtkInformationVector *outputVector)
> {
>    // Get the info object
>    vtkInformation *outInfo = outputVector->GetInformationObject(0);
>    vtkUnstructuredGrid *umesh = vtkUnstructuredGrid::SafeDownCast(
> outInfo->Get( vtkDataObject::DATA_OBJECT() ) );
>
>    // Pre-allocate some memory
>    umesh->Allocate( 1024 );
>
>    // Scalars for the property values
>    vtkFloatArray* vtxdata = vtkFloatArray::New(); // property defined on a
> vertex.
>    vtkFloatArray* vxldata = vtkFloatArray::New(); // property defined in a
> voxel.
>
>    // Specify points.
>    float r0[] = { 0.0, 0.0, 0.0 };
>    float r1[] = { 1.0, 0.0, 0.0 };
>    float r2[] = { 0.0, 1.0, 0.0 };
>    float r3[] = { 1.0, 1.0, 0.0 };
>    float r4[] = { 0.0, 0.0, 1.0 };
>    float r5[] = { 1.0, 0.0, 1.0 };
>    float r6[] = { 0.0, 1.0, 1.0 };
>    float r7[] = { 1.0, 1.0, 1.0 };
>
>    // Collect the points in a vtk data structures.
>    {
>       vtkSmartPointer<vtkPoints> points =
> vtkSmartPointer<vtkPoints>::New();
>       points->SetDataType( VTK_FLOAT );
>
>       points->InsertNextPoint( r0 );  vtxdata->InsertNextValue( cos(0.1) );
>       points->InsertNextPoint( r1 );  vtxdata->InsertNextValue( cos(0.4) );
>       points->InsertNextPoint( r2 );  vtxdata->InsertNextValue( cos(0.7) );
>       points->InsertNextPoint( r3 );  vtxdata->InsertNextValue( cos(1.0) );
>       points->InsertNextPoint( r4 );  vtxdata->InsertNextValue( cos(1.3) );
>       points->InsertNextPoint( r5 );  vtxdata->InsertNextValue( cos(1.6) );
>       points->InsertNextPoint( r6 );  vtxdata->InsertNextValue( cos(1.9) );
>       points->InsertNextPoint( r7 );  vtxdata->InsertNextValue( cos(2.2) );
>
>       // Transfer points to umesh.
>       umesh->SetPoints( points );
>       umesh->GetPointData()->SetScalars( vtxdata );
>    }
>
>    // Cell Topology
>    vtkIdType vtx[8] = { 0, 1, 3, 2, 4, 5, 7, 6 };
>    umesh->InsertNextCell( VTK_HEXAHEDRON, 8, vtx );
> vxldata->InsertNextValue( 3.14 );
>    umesh->GetCellData()->SetScalars( vxldata );
>
>    // Write data to a file
>    {
>       std::string fileName( "myfile.vtk" );
>       V3D::Utils::WriteUMesh( umesh, "Rectangular block as umesh",
> fileName, VTK_ASCII );
>       cerr << "Created: " << fileName << std::endl;
>    }
>
>    vtxdata->Delete();
>    vxldata->Delete();
>
>    return 1;
> }
>
> =======================
> The file "myfile.vtk", written above read:
> =======================
> # vtk DataFile Version
> 3.0
>
> Rectangular block as
> umesh
>
> ASCII
>
> DATASET
> UNSTRUCTURED_GRID
>
> POINTS 8
> float
>
> 0 0 0 1 0 0 0 1
> 0
>
> 1 1 0 0 0 1 1 0
> 1
>
> 0 1 1 1 1
> 1
>
> CELLS 1
> 9
>
> 8 0 1 3 2 4 5 7
> 6
>
>
>
> CELL_TYPES
> 1
>
> 12
>
>
>
> CELL_DATA
> 1
>
> SCALARS scalars
> float
>
> LOOKUP_TABLE
> default
>
> 3.14
>
> POINT_DATA
> 8
>
> SCALARS scalars
> float
>
> LOOKUP_TABLE
> default
>
> 0.995004 0.921061 0.764842 0.540302 0.267499 -0.0291995 -0.32329
> -0.588501
>
> =======================
>
>
>
>
>
>
>
>
> _______________________________________________
> 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://public.kitware.com/mailman/listinfo/paraview
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20141014/708a129a/attachment-0001.html>


More information about the ParaView mailing list