<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
span.gmail-apple-tab-span
        {mso-style-name:gmail-apple-tab-span;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle24
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1601529714;
        mso-list-type:hybrid;
        mso-list-template-ids:1401193526 67698709 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-number-format:alpha-upper;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Tejas,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Contours are not aligned to each other well – there is a very visible periodic displacement. You need to do something with this serious problem before trying
 to reconstruct the surface. If you are reconstructing the volume from a single sweep then the displacements are probably due to cardiac or respiratory motion, so it’s not a tracking or calibration issue that you could solve by more careful data acquisition.
  I see two main approaches to address this.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><span style="mso-list:Ignore">A.<span style="font:7.0pt "Times New Roman"">     
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Compensate for the displacements. Compute the center-of-gravity of each contour, fit a curve (e.g., polynomial with an order of 2-3) to these center
 points, then translate each contour so that its center is on the curve. You can then apply VTK’s generic-purpose surface reconstruction filters. For a simple tubular shape like a vessel you may simply use vtkDelaunay3D filter to construct a surface and optionally
 smooth it with vtkWindowedSincPolyDataFilter.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><span style="mso-list:Ignore">B.<span style="font:7.0pt "Times New Roman"">     
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Average displacements. Probably the easiest is to do this in the image domain. Reconstruct a volume from the image slices (you can use the open-source
 Plus toolkit for this, <a href="http://www.plustoolkit.org">www.plustoolkit.org</a>). Then, segment the vessel on the 3D volume using standard volumetric image segmentation tools (for example, in Segment Editor module in 3D Slicer,
<a href="http://www.slicer.org">www.slicer.org</a>).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Andras<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext"> vtkusers [mailto:vtkusers-bounces@vtk.org]
<b>On Behalf Of </b>Paul Korir<br>
<b>Sent:</b> January 23, 2017 4:28<br>
<b>To:</b> vtkusers@vtk.org<br>
<b>Subject:</b> Re: [vtkusers] 3D vessel surface reconstruction<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Hi Tejas,<o:p></o:p></p>
<p>You can check out vtkRuledSurfaceFilter for that. Here are some starters:<o:p></o:p></p>
<p><a href="http://www.paraview.org/Wiki/VTK/Examples/Python/PolyData/RuledSurfaceFilter">http://www.paraview.org/Wiki/VTK/Examples/Python/PolyData/RuledSurfaceFilter</a><o:p></o:p></p>
<p>Best,<o:p></o:p></p>
<p>Paul<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 20/01/2017 21:05, Tejas Sudharshan Mathai wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">Hi,  <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I have a 3D vascular free-hand ultrasound volume containing one vessel, and I am trying to reconstruct the surface of the vessel. The 3D volume is constructed from a stack of 2D images/B-scans, and the contour of the vessel in each B-scan
 has been segmented; that is, I have an ellipse representing the contour of the vessel in each B-scan in the volume. I have tried to reconstruct the contour of the vessel by following the VTK example of 'GenerateModelsFromLabels.cxx' (<a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Medical/GenerateModelsFromLabels">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Medical/GenerateModelsFromLabels</a>).
 However, the result is not a smooth surface from one frame to another as I would have hoped for it to be. It is discontinuous and irregular, and the surface doesn't connect the vessel contours between two adjacent frames in the volume if the displacement between
 the ellipses is large. In my approach, I basically used DiscreteMarchingCubes -> WindowedSincPolyDataFilter -> GeometryFilter. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I played around with the passband, smoothingIterations and featureAngle parameters, and I was able to obtain the best following result: <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://snag.gy/yqK3Fd.jpg">https://snag.gy/yqK3Fd.jpg</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://snag.gy/txu6Ur.jpg">https://snag.gy/txu6Ur.jpg</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://snag.gy/ksJfUa.jpg">https://snag.gy/ksJfUa.jpg</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As you can see, it is not a smooth continuous surface with a lot of uninterpolated "holes" between adjacent frames, but it is all right. Can it be made better? I also tried using a 3D Delaunay triangulation, but it only gave me the convex
 hull, which is not the output I expected. I would like to know if there is a better approach towards reconstructing a surface that closely follows the contour of the vessel from one B-scan to the next in a volume? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">A minimal working example is shown below: <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkImageData> vesselVolume =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkImageData>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>int totalImages = 210;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>for (int z = 0; z < totalImages; z++)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>{<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
std::string strFile = "E:/datasets/vasc/rendering/contour/" + std::to_string(z + 1) + ".png";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
cv::Mat im = cv::imread(strFile, CV_LOAD_IMAGE_GRAYSCALE);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
if (z == 0)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
{<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>vesselVolume->SetExtent(0, im.cols, 0, im.rows, 0, totalImages - 1);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>vesselVolume->SetSpacing(1, 1, 1);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>vesselVolume->SetOrigin(0, 0, 0);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>vesselVolume->AllocateScalars(VTK_UNSIGNED_CHAR, 0);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
}<span class="gmail-apple-tab-span">          </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
std::vector<cv::Point2i> locations;   // output, locations of non-zero pixels <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
cv::findNonZero(im, locations);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
for (int nzi = 0; nzi < locations.size(); nzi++)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
{<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>unsigned char* pixel = static_cast<unsigned char*>(vesselVolume->GetScalarPointer(locations[nzi].x, locations[nzi].y, z));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                                   
</span>pixel[0] = 255;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>}<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkDiscreteMarchingCubes> discreteCubes =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkDiscreteMarchingCubes>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>discreteCubes->SetInputData(vesselVolume);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>discreteCubes->GenerateValues(1, 255, 255);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>discreteCubes->ComputeNormalsOn();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkWindowedSincPolyDataFilter> smoother =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkWindowedSincPolyDataFilter>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>unsigned int smoothingIterations = 10;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>double passBand = 2;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>double featureAngle = 360.0;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->SetInputConnection(discreteCubes->GetOutputPort());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->SetNumberOfIterations(smoothingIterations);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->BoundarySmoothingOff();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>//smoother->FeatureEdgeSmoothingOff();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->FeatureEdgeSmoothingOn();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->SetFeatureAngle(featureAngle);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->SetPassBand(passBand);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->NonManifoldSmoothingOn();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->BoundarySmoothingOn();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->NormalizeCoordinatesOn();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>smoother->Update();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkThreshold> selector =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkThreshold>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>selector->SetInputConnection(smoother->GetOutputPort());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>selector->SetInputArrayToProcess(0, 0, 0,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkDataObject::FIELD_ASSOCIATION_CELLS,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkDataSetAttributes::SCALARS);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkMaskFields> scalarsOff =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkMaskFields>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>// Strip the scalars from the output<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>scalarsOff->SetInputConnection(selector->GetOutputPort());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>scalarsOff->CopyAttributeOff(vtkMaskFields::POINT_DATA,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkDataSetAttributes::SCALARS);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>scalarsOff->CopyAttributeOff(vtkMaskFields::CELL_DATA,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkDataSetAttributes::SCALARS);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkGeometryFilter> geometry =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkGeometryFilter>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>geometry->SetInputConnection(scalarsOff->GetOutputPort());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>geometry->Update();<o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkPolyDataMapper> mapper =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkPolyDataMapper>::New();        <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>mapper->SetInputConnection(geometry->GetOutputPort());           
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>mapper->ScalarVisibilityOff();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>mapper->Update();<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkRenderWindow> renderWindow =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkRenderWindow>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkRenderWindowInteractor>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderWindowInteractor->SetRenderWindow(renderWindow);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">        vtkSmartPointer<vtkRenderer> renderer =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkRenderer>::New();<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderWindow->AddRenderer(renderer);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderer->SetBackground(.2, .3, .4);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>vtkSmartPointer<vtkActor> actor =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">                        </span>
vtkSmartPointer<vtkActor>::New();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>actor->SetMapper(mapper);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderer->AddActor(actor);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderer->ResetCamera();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderWindow->Render();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-tab-span">            </span>renderWindowInteractor->Start();<span class="gmail-apple-tab-span">                                                    
</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Tejas<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Powered by <a href="http://www.kitware.com">www.kitware.com</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers">http://markmail.org/search/?q=vtkusers</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Follow this link to subscribe/unsubscribe:<o:p></o:p></pre>
<pre><a href="http://public.kitware.com/mailman/listinfo/vtkusers">http://public.kitware.com/mailman/listinfo/vtkusers</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">-- <br>
<strong>Paul x4422</strong><o:p></o:p></p>
</div>
</div>
</body>
</html>