[vtkusers] Creating Volume-Rendering compatible data

vidyadhar vidyadhar at lucidindia.net
Fri Feb 25 23:12:52 EST 2005


Hi,
How about using vtkImageCast filter
----- Original Message -----
From: "Randall Hand" <randall.hand at gmail.com>
To: <vtkusers at vtk.org>
Sent: Friday, February 25, 2005 10:03 PM
Subject: [vtkusers] Creating Volume-Rendering compatible data


> I'm using the following code to "pad" the data the way I want for
rendering:
>
> It takes my Scalar+Vector dataset and adds a field that's a
> 2-component Scalar (Original Scalar + Vector Magnitude), both scaled
> between 0 & 255.  I want to map Opacity to the first component, &
> color through a lookup table to the 2nd component.
>
> But when it's done, I still can't hand it off to the RayCast mapper
because
>    1) It's not an "ImageData"
>    2) It's not "unsigned char's", it's "floats"
>
> How can I get from what I have to something that's RayCastMapper
compatible?
>
>
> *snip*
>     vtkDataSetReader *model = vtkDataSetReader::New();
>     model->SetFileName(filename);
>     model->Update();
>     char function[128];
>     vtkArrayCalculator *addMag = vtkArrayCalculator::New();
>     addMag->SetInput(model->GetOutput());
>     addMag->AddVectorArrayName("Velocity", 0);
>
model->GetOutput()->GetPointData()->GetArray("Velocity")->GetRange(range,
> -1);
>     sprintf(function, "mag(Velocity) * %f", 255.0 / (range[1] -
range[0]));
>     addMag->SetFunction(function);
>     addMag->SetResultArrayName("Magnitude");
>     addMag->Update();
>     printf("**************************************************\n");
>     PrintStatistics(addMag);
>     PrintStatistics(addMag->GetOutput());/*}}}*/
>
>     // Scale Fraction field {{{
>     vtkArrayCalculator *scaled = vtkArrayCalculator::New();
>     scaled->SetInput(addMag->GetOutput());
>     scaled->AddScalarArrayName("Fraction", 0);
>     scaled->SetFunction("Fraction * 255.0");
>     scaled->SetResultArrayName("ScaledFraction");
>     scaled->Update();
>     printf("**************************************************\n");
>     PrintStatistics(scaled);
>     PrintStatistics(scaled->GetOutput());/*}}}*/
>
>     vtkMergeFields *doubleScalar =
>                 vtkMergeFields::New();
>     doubleScalar->SetInput(scaled->GetOutput());
>     doubleScalar->SetOutputField("Combined", vtkMergeFields::POINT_DATA);
>     doubleScalar->SetNumberOfComponents(2);
>     doubleScalar->Merge(0, "Magnitude", 0);
>     doubleScalar->Merge(1, "ScaledFraction", 0);
>     doubleScalar->Update();
>     PrintStatistics(doubleScalar);
>     PrintStatistics(doubleScalar->GetOutput());
> *snip*
> --
> Randall Hand
> http://www.yeraze.com
>
>




More information about the vtkusers mailing list