Thanks David. I fixed my problem by adding two actors to the same renderer as per the example. (I was adding two renderers  before) Thanks again.<br><br><div class="gmail_quote">On Wed, Feb 8, 2012 at 6:01 PM, David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria@gmail.com">daviddoria@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Feb 8, 2012 at 5:21 AM, Gishara Indeewarie &lt;<a href="mailto:gish.777@gmail.com">gish.777@gmail.com</a>&gt; wrote:<br>

&gt; Hi all,<br>
&gt;<br>
&gt; I want to add two surfaces in to a same window. But when I add the second<br>
&gt; surface the first surface can&#39;t be seen. It worked well when I viewed only<br>
&gt; the points without creating the surfaces.<br>
&gt; I have managed to show the two surfaces but in different viewports, but I<br>
&gt; want to show it in the same where the user can view the relevant positions<br>
&gt; of the surfaces.<br>
&gt; The code I have done so far is given below.<br>
&gt;<br>
&gt; vtkPoints *points = newPts;//ReadCFDData2();<br>
&gt;  vtkPoints *suction_points = newPtsSuction;<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkPolyData&gt; polydata =<br>
&gt; vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
&gt;   polydata-&gt;SetPoints(points);<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkPolyData&gt; suction_polydata =<br>
&gt; vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
&gt;   suction_polydata-&gt;SetPoints(suction_points);<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkDoubleArray&gt; weights =<br>
&gt; vtkSmartPointer&lt;vtkDoubleArray&gt;::New();<br>
&gt;   weights-&gt;SetNumberOfValues(PoValues.GetSize());<br>
&gt;   for(int i=0; i&lt; PoValues.GetSize();i++){<br>
&gt;   weights-&gt;SetValue(i, PoValues[i]);<br>
&gt;   }<br>
&gt;<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkDoubleArray&gt; suction_weights =<br>
&gt; vtkSmartPointer&lt;vtkDoubleArray&gt;::New();<br>
&gt;   suction_weights-&gt;SetNumberOfValues(PoValuesSuction.GetSize());<br>
&gt;   for(int i=0; i&lt; PoValuesSuction.GetSize();i++){<br>
&gt;   suction_weights-&gt;SetValue(i, PoValuesSuction[i]);<br>
&gt;   }<br>
&gt;<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkVertexGlyphFilter&gt; glyphFilter =<br>
&gt; vtkSmartPointer&lt;vtkVertexGlyphFilter&gt;::New();<br>
&gt;   glyphFilter-&gt;SetInputConnection(polydata-&gt;GetProducerPort());<br>
&gt;   glyphFilter-&gt;Update();<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkVertexGlyphFilter&gt; suction_glyphFilter =<br>
&gt; vtkSmartPointer&lt;vtkVertexGlyphFilter&gt;::New();<br>
&gt;<br>
&gt; suction_glyphFilter-&gt;SetInputConnection(suction_polydata-&gt;GetProducerPort());<br>
&gt;   suction_glyphFilter-&gt;Update();<br>
&gt;<br>
&gt;   // Create a plane<br>
&gt;  // vtkSmartPointer&lt;vtkPlane&gt; plane = vtkSmartPointer&lt;vtkPlane&gt;::New();<br>
&gt;   //plane-&gt;SetOrigin(polydata-&gt;GetCenter());<br>
&gt;   //plane-&gt;SetNormal(1,1,1);<br>
&gt;<br>
&gt;<br>
&gt;   // Construct the surface and create isosurface.<br>
&gt;   vtkSmartPointer&lt;vtkSurfaceReconstructionFilter&gt; surf =<br>
&gt; vtkSmartPointer&lt;vtkSurfaceReconstructionFilter&gt;::New();<br>
&gt;<br>
&gt;   surf-&gt;SetInput(polydata);<br>
&gt;  //<br>
&gt;   vtkSmartPointer&lt;vtkContourFilter&gt; cf =<br>
&gt;  vtkSmartPointer&lt;vtkContourFilter&gt;::New();<br>
&gt;   cf-&gt;SetInputConnection(surf-&gt;GetOutputPort());<br>
&gt;   cf-&gt;Update();<br>
&gt;<br>
&gt;   // Construct the suction blade surface and create isosurface.<br>
&gt;   vtkSmartPointer&lt;vtkSurfaceReconstructionFilter&gt; suction_surf =<br>
&gt; vtkSmartPointer&lt;vtkSurfaceReconstructionFilter&gt;::New();<br>
&gt;<br>
&gt;   suction_surf-&gt;SetInput(suction_polydata);<br>
&gt;  //<br>
&gt;   vtkSmartPointer&lt;vtkContourFilter&gt; suction_cf =<br>
&gt;  vtkSmartPointer&lt;vtkContourFilter&gt;::New();<br>
&gt;   suction_cf-&gt;SetInputConnection(suction_surf-&gt;GetOutputPort());<br>
&gt;   suction_cf-&gt;Update();<br>
&gt;<br>
&gt;  vtkPolyData* outputPolyData = cf-&gt;GetOutput();<br>
&gt;  vtkPolyData* suction_outputPolyData = suction_cf-&gt;GetOutput();<br>
&gt;<br>
&gt;   //double bounds[6];<br>
&gt;   //outputPolyData-&gt;GetBounds(bounds);<br>
&gt;<br>
&gt;   // Find min and max z<br>
&gt;  // double minz = bounds[4];<br>
&gt;  // double maxz = bounds[5];<br>
&gt;<br>
&gt;<br>
&gt;   // Create the color map<br>
&gt;   vtkSmartPointer&lt;vtkLookupTable&gt; colorLookupTable =<br>
&gt; vtkSmartPointer&lt;vtkLookupTable&gt;::New();<br>
&gt; colorLookupTable-&gt;SetHueRange(0.667,0.0);<br>
&gt; colorLookupTable-&gt;SetNumberOfColors(16);<br>
&gt;<br>
&gt;  // colorLookupTable-&gt;SetTableRange(minz, maxz);<br>
&gt;<br>
&gt;   colorLookupTable-&gt;Build();<br>
&gt;<br>
&gt;   // Create the color map<br>
&gt;   vtkSmartPointer&lt;vtkLookupTable&gt; colorLookupTable_s =<br>
&gt; vtkSmartPointer&lt;vtkLookupTable&gt;::New();<br>
&gt; colorLookupTable_s-&gt;SetHueRange(0.667,0.0);<br>
&gt; colorLookupTable_s-&gt;SetNumberOfColors(16);<br>
&gt;<br>
&gt;  // colorLookupTable-&gt;SetTableRange(minz, maxz);<br>
&gt;<br>
&gt;   colorLookupTable_s-&gt;Build();<br>
&gt;<br>
&gt;   // Generate the colors for each point based on the color map<br>
&gt; /*  vtkSmartPointer&lt;vtkUnsignedCharArray&gt; colors =<br>
&gt;     vtkSmartPointer&lt;vtkUnsignedCharArray&gt;::New();<br>
&gt;   colors-&gt;SetNumberOfComponents(3);<br>
&gt;   colors-&gt;SetName(&quot;Colors&quot;);<br>
&gt;   for(int i = 0; i &lt; outputPolyData-&gt;GetNumberOfPoints(); i++)<br>
&gt;     {<br>
&gt;     double p[3];<br>
&gt;     outputPolyData-&gt;GetPoint(i,p);<br>
&gt;<br>
&gt;     double dcolor[3];<br>
&gt;     colorLookupTable-&gt;GetColor(PoValues[i], dcolor);<br>
&gt;     unsigned char color[3];<br>
&gt;     for(unsigned int j = 0; j &lt; 3; j++)<br>
&gt;       {<br>
&gt;       color[j] = static_cast&lt;unsigned char&gt;(255.0 * dcolor[j]);<br>
&gt;       }<br>
&gt;<br>
&gt;     colors-&gt;InsertNextTupleValue(color);<br>
&gt;     }<br>
&gt;<br>
&gt;   outputPolyData-&gt;GetPointData()-&gt;SetScalars(colors);*/<br>
&gt;  // double min = minimumValue(PoValues);<br>
&gt;      int length = PoValues.GetSize();// establish size of array<br>
&gt;      double max = PoValues[0];       // start with max = first element<br>
&gt;<br>
&gt;      for(int i = 1; i&lt;length; i++)<br>
&gt;      {<br>
&gt;           if(PoValues[i] &gt; max)<br>
&gt;                 max = PoValues[i];<br>
&gt;      }<br>
&gt;<br>
&gt; double min = PoValues[0];<br>
&gt;<br>
&gt; for(int i = 1; i&lt;length; i++)<br>
&gt;      {<br>
&gt;           if(PoValues[i] &lt; min)<br>
&gt;                 min = PoValues[i];<br>
&gt;      }<br>
&gt;<br>
&gt;<br>
&gt;   colorLookupTable-&gt;SetTableRange( min,max);<br>
&gt;   outputPolyData-&gt;GetPointData()-&gt;SetScalars(weights);<br>
&gt;<br>
&gt;   int length_s = PoValuesSuction.GetSize();// establish size of array<br>
&gt;      double max_s = PoValuesSuction[0];       // start with max = first<br>
&gt; element<br>
&gt;<br>
&gt;      for(int i = 1; i&lt;length_s; i++)<br>
&gt;      {<br>
&gt;           if(PoValuesSuction[i] &gt; max_s)<br>
&gt;                 max_s = PoValuesSuction[i];<br>
&gt;      }<br>
&gt;<br>
&gt; double min_s = PoValuesSuction[0];<br>
&gt;<br>
&gt; for(int i = 1; i&lt;length_s; i++)<br>
&gt;      {<br>
&gt;           if(PoValuesSuction[i] &lt; min_s)<br>
&gt;                 min_s = PoValuesSuction[i];<br>
&gt;      }<br>
&gt;<br>
&gt;<br>
&gt;   colorLookupTable_s-&gt;SetTableRange( min_s,max_s);<br>
&gt;   suction_outputPolyData-&gt;GetPointData()-&gt;SetScalars(suction_weights);<br>
&gt;<br>
&gt;   // Create a mapper and actor<br>
&gt;   vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper =<br>
&gt; vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
&gt;<br>
&gt; mapper-&gt;SetInputConnection(/*reverse-&gt;GetOutputPort()*/cf-&gt;GetOutputPort());<br>
&gt;  mapper-&gt;ScalarVisibilityOn();<br>
&gt;   mapper-&gt;SetColorModeToMapScalars();<br>
&gt;   mapper-&gt;SetLookupTable(colorLookupTable);<br>
&gt;   mapper-&gt;SetScalarMaterialModeToDefault();<br>
&gt;  mapper-&gt;SetScalarRange(min,max);<br>
&gt;   vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&gt;    //actor-&gt;GetProperty()-&gt;SetColor(1.0, 0.8941, 0.7686); // bisque<br>
&gt;   actor-&gt;SetMapper(mapper);<br>
&gt;<br>
&gt;<br>
&gt;   // Create a mapper and actor for suction blade<br>
&gt;   vtkSmartPointer&lt;vtkPolyDataMapper&gt; suction_mapper =<br>
&gt; vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
&gt;<br>
&gt; suction_mapper-&gt;SetInputConnection(/*reverse-&gt;GetOutputPort()*/suction_cf-&gt;GetOutputPort());<br>
&gt;  suction_mapper-&gt;ScalarVisibilityOn();<br>
&gt;   suction_mapper-&gt;SetColorModeToMapScalars();<br>
&gt;   suction_mapper-&gt;SetLookupTable(colorLookupTable_s);<br>
&gt;   suction_mapper-&gt;SetScalarMaterialModeToDefault();<br>
&gt;  suction_mapper-&gt;SetScalarRange(min_s,max_s);<br>
&gt;   vtkSmartPointer&lt;vtkActor&gt; suction_actor =<br>
&gt; vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&gt;  //  actor-&gt;GetProperty()-&gt;SetColor(1.0, 0.8941, 0.7686); // bisque<br>
&gt;   suction_actor-&gt;SetMapper(suction_mapper);<br>
&gt;<br>
&gt;   //Create a renderer, render window, and interactor<br>
&gt;   vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
&gt; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&gt;   renderer-&gt;SetViewport( 0., 0., 0.5, 1. );<br>
&gt;   renderer-&gt;SetBackground( 0.2, 0.2, 0.8 );<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkRenderer&gt; suction_renderer =<br>
&gt; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&gt;   suction_renderer-&gt;SetViewport( 0.5, 0., 1., 1. );<br>
&gt;   suction_renderer-&gt;SetBackground( 0.8, 0.2, 0.2 );<br>
&gt;<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
&gt;   renderWindow-&gt;AddRenderer(renderer);<br>
&gt;   renderWindow-&gt;AddRenderer(suction_renderer);<br>
&gt;   vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; renderWindowInteractor =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&gt;   renderWindowInteractor-&gt;SetRenderWindow(renderWindow);<br>
&gt;<br>
&gt;  // vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; interactor =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&gt;   //interactor-&gt;SetRenderWindow( renderWindow );<br>
&gt;   //Add the actor to the scene<br>
&gt;   renderer-&gt;AddViewProp(actor);<br>
&gt;   suction_renderer-&gt;AddViewProp(suction_actor);<br>
&gt;  // renderer-&gt;SetBackground(.1, .6, .3); // Background color green<br>
&gt;<br>
&gt;   //Render and interact<br>
&gt;   renderWindow-&gt;Render();<br>
&gt;   renderWindowInteractor-&gt;Start();<br>
&gt;<br>
&gt; Please give me your ideas.<br>
&gt; Thanks.<br>
&gt; --<br>
&gt; Gish<br>
<br>
</div></div>Please create an as-simple-as-possible example of what you are trying to do.<br>
<br>
>From your actual question, it sounds like you just want to add two<br>
objects to a scene. You seem to be doing it correctly at a glance, but<br>
convince yourself using a short, compilable example like this:<br>
<br>
<a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/MoveActor" target="_blank">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/MoveActor</a><br>
<br>
I would start from something like that and gradually add back in the<br>
rest of your code (i.e. the surface creation, coloring, etc) and see<br>
when you don&#39;t get what you&#39;d expect. Then you can ask a succinct<br>
question and hopefully we can help.<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div></div><font color="#666666">Gish</font><br>