Hi Utkarsh,

thanks a lot for your help!
I have followed your advice about ext and setting dim, extent, spacing
and point data and now it works perfectly fine.

Thank you

radek

On 12/17/2013 05:20 PM, Utkarsh Ayachit wrote:
Radek,

For volume rendering image datasets, ParaView only supports point
data. The "ImageScalars" array that you have as PointData doesn't seem
to be valid since it doesn't have any tuples (Number of Tuples : 0).
Number of point tuples must be exactly equal to : (dimx*dimy*dimz).
There are several problems with your code:

+ In RequestInformation, ext is incorrect. It should be (0,
header_size[0]-1, 0, header_size[1]-1, 0, header_size[2]-1)
+ In RequestData, same extent problem. You don't need to do
AllocateScalars() since you're setting the scalars array explicitly.
I'd set the dims, extent, spacing and then set the "array" as
PointData. It cannot be set as cell-data as well since for that it
would need to be of the size (dimx-1)*(dimy-1)*(dimz-1).

Look at existing ImageData producers to see how they do this e.g.
vtkRTAnalyticSource

Utkarsh

On Tue, Dec 17, 2013 at 5:48 AM, Radek Lonka <[email protected]> wrote:
Hi,

I am new here and to paraview. I have been trying to create reader plugin
for some data but even it works on my simple qt based application together
with vtk it does not work in paraview. It loads the data, I can see the
Information with cell data and point data correctly but it deros not
visualize anything and when I use either Volume or slices it says: Cannot
volume render since no point (or cell) data available.

Could you please help me what am I doing wrong? Here is my code:

#include "MyReader.h"

#include "vtkObjectFactory.h"
#include "vtkStreamingDemandDrivenPipeline.h"
#include "vtkInformationVector.h"
#include "vtkInformation.h"
#include "vtkDataObject.h"
#include "vtkSmartPointer.h"
#include <vtkVector.h>
#include <vtkFloatArray.h>
#include <vtkImageFlip.h>
#include <vtkVector.h>
#include <vtkImageData.h>
#include <vtkPointData.h>
#include <vtkCellData.h>

#include <iostream>


vtkStandardNewMacro(MyReader);

MyReader::EMyReader()
{
   this->FileName = NULL;
   this->SetNumberOfInputPorts(0);
   this->SetNumberOfOutputPorts(1);
}

int MyReader::RequestInformation (
    vtkInformation*,
    vtkInformationVector**,
    vtkInformationVector* outputVector)
{

    vtkInformation* outInfo =
       outputVector->GetInformationObject(0);

    // Here is where you would read the data from the file.
     // Make sure we have a file to read.
     if(!this->FileName)
     {
         vtkErrorMacro("A FileName must be specified.");
         return 0;
     }
     ifstream fin(this->FileName, ios::in | ios::binary);
     if( !fin.is_open() )
     {
         vtkErrorMacro("Error opening file " << this->FileName);
         return 0;
     }

  //   vtkVector<float, 3> header_origin;
  //   vtkVector<float, 3> header_delta;
  //   vtkVector<int, 3> header_size;

     fin.read( (char *)(&header_origin[0]), sizeof(header_origin[0]) );
     fin.read( (char *)(&header_origin[1]), sizeof(header_origin[1]) );
     fin.read( (char *)(&header_origin[2]), sizeof(header_origin[2]) );
     fin.read( (char *)(&header_delta[0]), sizeof(header_delta[0]) );
     fin.read( (char *)(&header_delta[1]), sizeof(header_delta[1]) );
     fin.read( (char *)(&header_delta[2]), sizeof(header_delta[2]) );
     fin.read( (char *)(&header_size[0]), sizeof(header_size[0]) );
     fin.read( (char *)(&header_size[1]), sizeof(header_size[1]) );
     fin.read( (char *)(&header_size[2]), sizeof(header_size[2]) );

     int nx = header_size[0];
     int ny = header_size[1];
     int nz = header_size[2];
     float* data_array = new float[nx*ny*nz];
     fin.seekg(0);
     fin.seekg(36);
  //   fin.read((char *) data_array, nx*ny*nz*sizeof(float));
     fin.close();

     for (int i = 0; i < nx*ny*nz; i++)
         data_array[i] = i * 0.1;

     array = vtkFloatArray::New();
     array->SetArray(data_array, nx*ny*nz, 1);
     array->SetName("Conductivity");

     int ext[6] = {0, 0, 0, header_size[0], header_size[1], header_size[2]};
     double spacing[3] = {header_delta[0], header_delta[1], header_delta[2]};
     double origin[3] = {header_origin[0], header_origin[1], header_origin[2]};

     outInfo->Set(
                 vtkStreamingDemandDrivenPipeline::
                 WHOLE_EXTENT(),
                 ext, 6);
     outInfo->Set(vtkDataObject::SPACING(),
                  spacing, 3);
     outInfo->Set(vtkDataObject::ORIGIN(), origin, 3);
     vtkDataObject::SetPointDataActiveScalarInfo(
                 outInfo, VTK_FLOAT, 1);
    return 1;

}

int MyReader::RequestData(
   vtkInformation *vtkNotUsed(request),
   vtkInformationVector **vtkNotUsed(inputVector),
   vtkInformationVector *outputVector)
{
     vtkInformation* outInfo =
        outputVector->GetInformationObject(0);
     // get the ouptut
     vtkImageData *output = vtkImageData::SafeDownCast(
         outInfo->Get(vtkDataObject::DATA_OBJECT()));

     output->GetCellData()->SetScalars(array);
     output->GetPointData()->SetScalars(array);
     output->SetNumberOfScalarComponents(1, outInfo);
     output->SetScalarType(VTK_FLOAT, outInfo);
     output->AllocateScalars(VTK_FLOAT, 1);
     int ext[6] = {0, 0, 0, header_size[0], header_size[1], header_size[2]};
     output->SetExtent(ext);
     output->SetDimensions(header_size[0], header_size[1], header_size[2]);
     output->SetOrigin(header_origin[0], header_origin[1], header_origin[2]);
     output->SetSpacing(header_delta[0], header_delta[1], header_delta[2] *4.0);

     output->Print(std::cout);

     return 1;
}

void MyReader::PrintSelf(ostream& os, vtkIndent indent)
{
   this->Superclass::PrintSelf(os,indent);

   os << indent << "File Name: "
       << (this->FileName ? this->FileName : "(none)") << "\n";
}


also the ouptut of ouptut->Print is:
vtkImageData (0x39d8310)
   Debug: Off
   Modified Time: 83874
   Reference Count: 1
   Registered Events: (none)
   Information: 0x39d1ac0
   Data Released: False
   Global Release Data: Off
   UpdateTime: 0
   Field Data:
     Debug: Off
     Modified Time: 83836
     Reference Count: 1
     Registered Events: (none)
     Number Of Arrays: 0
     Number Of Components: 0
     Number Of Tuples: 0
   Number Of Points: 9594507
   Number Of Cells: 9434880
   Cell Data:
     Debug: Off
     Modified Time: 83853
     Reference Count: 1
     Registered Events: (none)
     Number Of Arrays: 1
     Array 0 name = Conductivity
     Number Of Components: 1
     Number Of Tuples: 9594507
     Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
     Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
     Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
     Scalars:
       Debug: Off
       Modified Time: 79025
       Reference Count: 2
       Registered Events: (none)
       Name: Conductivity
       Data type: float
       Size: 9594507
       MaxId: 9594506
       NumberOfComponents: 1
       Information: 0
       Name: Conductivity
       Number Of Components: 1
       Number Of Tuples: 9594507
       Size: 9594507
       MaxId: 9594506
       LookupTable: (none)
       Array: 0x7f29adab3010
     Vectors: (none)
     Normals: (none)
     TCoords: (none)
     Tensors: (none)
     GlobalIds: (none)
     PedigreeIds: (none)
     EdgeFlag: (none)
   Point Data:
     Debug: Off
     Modified Time: 83860
     Reference Count: 1
     Registered Events: (none)
     Number Of Arrays: 1
     Array 0 name = ImageScalars
     Number Of Components: 1
     Number Of Tuples: 0
     Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
     Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
     Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
     Scalars:
       Debug: Off
       Modified Time: 83858
       Reference Count: 1
       Registered Events: (none)
       Name: ImageScalars
       Data type: float
       Size: 0
       MaxId: -1
       NumberOfComponents: 1
       Information: 0
       Name: ImageScalars
       Number Of Components: 1
       Number Of Tuples: 0
       Size: 0
       MaxId: -1
       LookupTable: (none)
       Array: (null)
     Vectors: (none)
     Normals: (none)
     TCoords: (none)
     Tensors: (none)
     GlobalIds: (none)
     PedigreeIds: (none)
     EdgeFlag: (none)
   Bounds:
     Xmin,Xmax: (699975, 771975)
     Ymin,Ymax: (8.53492e+06, 8.56222e+06)
     Zmin,Zmax: (0, 25920)
   Compute Time: 83875
   Spacing: (150, 150, 240)
   Origin: (699975, 8.53492e+06, 0)
   Dimensions: (481, 183, 109)
   Increments: (0, 0, 0)
   Extent: (0, 480, 0, 182, 0, 108)


Anyone could help me?


_______________________________________________
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

Reply via email to