[vtkusers] SetScalarType refactor

Boxer, Aaron Aaron.Boxer at uhn.ca
Thu Apr 4 10:05:45 EDT 2013


Yes, thanks berk. I tried SetInputData, and its working now.

From: Berk Geveci [mailto:berk.geveci at kitware.com]
Sent: Thursday, April 04, 2013 10:04 AM
To: Boxer, Aaron
Cc: Bill Lorensen; vtkusers at vtk.org
Subject: Re: [vtkusers] SetScalarType refactor

I am not very familiar with reslice filters but a quick look at your code tells me that it may be wrong to replace reslice->SetInput() with reslice->SetInformationInput(). Those are not same inputs. Did you try SetInputData() instead? By the way, did you look at the migration guide?

http://www.vtk.org/Wiki/VTK/VTK_6_Migration_Guide

Best,
-berk

On Wed, Apr 3, 2013 at 4:15 PM, Boxer, Aaron <Aaron.Boxer at uhn.ca<mailto:Aaron.Boxer at uhn.ca>> wrote:
Thanks, Bill.

The situation is a bit complicated, because the old code was actually C# code, using the ActiViz wrapper.

Also, unlike the usual examples, I am not reading data in from disk, but passing it  from memory.

I've done some modifications since my first post; below  is what I have come up with so far.

This code crashes on rendering with memory access violation.

One change I made is that I had to remove the UpdateInformation call on the vtkImageData object, because it
no longer exists.

Aaron



       ////////////////////////////////////
    //create VTK volume
    _vtkVolume = vtkImageData::New();

    _vtkVolume->SetDimensions(dim[0],dim[1],dim[2]);
    _vtkVolume->SetOrigin(origin[0],origin[1],origin[2]);
    _vtkVolume->SetSpacing(spacing[0],spacing[1],spacing[2]);

              vtkSmartPointer<vtkShortArray> dataArray = vtkShortArray::New();
              dataArray->SetArray((short *)data, size, 1);
        _vtkVolume->GetPointData()->SetScalars(dataArray);


    // This call is necessary to ensure vtkImageData data's info is correct (e->g-> updates WholeExtent values)
   // _vtkVolume->UpdateInformation();
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////


    //////////////////////////////////////////////
    // create vtk image reslice object
     reslice = vtkImageSlabReslice::New();

       //VtkHelper->RegisterVtkErrorEvents(_reslicer);

   // reslice->SetInput(_vtkVolume);
    reslice->SetInformationInput(_vtkVolume);

       // Must instruct reslicer to output 2D images
       reslice->SetOutputDimensionality(2);

       // Use the volume's padding value for all pixels that are outside the volume
       reslice->SetBackgroundLevel(paddingValue);

       // This ensures VTK obeys the real spacing, results in all VTK slices being isotropic->
       //     Effective spacing is the minimum of these three->
       reslice->SetOutputSpacing(spacing[0],spacing[1],spacing[2]);



From: Bill Lorensen [mailto:bill.lorensen at gmail.com<mailto:bill.lorensen at gmail.com>]
Sent: Wednesday, April 03, 2013 3:56 PM
To: Boxer, Aaron
Cc: vtkusers at vtk.org<mailto:vtkusers at vtk.org>
Subject: Re: [vtkusers] SetScalarType refactor

Aaron,

What did you code look like ijn VTK5.x?
This is how you would typically do things in VTK6:
vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New();
 image->SetDimensions(10, 10, 10);

#if VTK_MAJOR_VERSION <= 5
  image->SetNumberOfScalarComponents(1);
  image->SetScalarTypeToUnsignedChar();
  image->AllocateScalars();
#else
  image->AllocateScalars(VTK_UNSIGNED_CHAR,1);
#endif


On Wed, Apr 3, 2013 at 3:08 PM, Boxer, Aaron <Aaron.Boxer at uhn.ca<mailto:Aaron.Boxer at uhn.ca>> wrote:
Hello,
I am porting some code to the master branch.

I am passing an existing data set into vtk for rendering.

Since my data set could be either unsigned short or simply short,
the code used to call SetScalarType on the vtkImageData object.

I see that this has been removed.

My question:  will the following code work, or do I need to worry about
data types:

   _vtkVolume = vtkImageData::New();

    _vtkVolume->SetDimensions(volume->ArrayDimensions->Width, volume->ArrayDimensions->Height, volume->ArrayDimensions->Depth);
    _vtkVolume->SetOrigin(volume->Origin->X, volume->Origin->Y, volume->Origin->Z);
    _vtkVolume->SetSpacing(volume->VoxelSpacing->X, volume->VoxelSpacing->Y, volume->VoxelSpacing->Z);

    if (!volume->IsSigned())
    {
            vtkSmartPointer<vtkUnsignedShortArray> dataArray = vtkUnsignedShortArray::New();
            dataArray->SetArray(volume->PinnedAddress, volume->VolumeDataUInt16->Length, 1);
             _vtkVolume->GetPointData()->SetScalars(dataArray);
    }
    else
    {
            vtkSmartPointer<vtkShortArray> dataArray = vtkShortArray::New();
            dataArray->SetArray(volume->PinnedAddress, volume->VolumeDataInt16->Length, 1);
           _vtkVolume->GetPointData()->SetScalars(dataArray);
    }

    // This call is necessary to ensure vtkImageData data's info is correct (e->g-> updates WholeExtent values)
    _vtkVolume->UpdateInformation();




Thanks!

Aaron


This e-mail may contain confidential and/or privileged information for the sole use of the intended recipient.
Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited.
If you have received this e-mail in error, please contact the sender and delete all copies.
Opinions, conclusions or other information contained in this e-mail may not be that of the organization.

_______________________________________________
Powered by www.kitware.com<http://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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers



--
Unpaid intern in BillsBasement at noware dot com

This e-mail may contain confidential and/or privileged information for the sole use of the intended recipient.
Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited.
If you have received this e-mail in error, please contact the sender and delete all copies.
Opinions, conclusions or other information contained in this e-mail may not be that of the organization.

_______________________________________________
Powered by www.kitware.com<http://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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers


This e-mail may contain confidential and/or privileged information for the sole use of the intended recipient. 
Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. 
If you have received this e-mail in error, please contact the sender and delete all copies. 
Opinions, conclusions or other information contained in this e-mail may not be that of the organization.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130404/4a544905/attachment.htm>


More information about the vtkusers mailing list