On Sun, Nov 25, 2012 at 8:27 AM, Bill Lorensen <span dir="ltr">&lt;<a href="mailto:bill.lorensen@gmail.com" target="_blank">bill.lorensen@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Apparently, if the renderer has a light at the first render, it does<br>
not create a default light.<br></blockquote><div><br></div><div>Strange, that is not the behavior I&#39;d expect.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Move the AddLight after renderWindow-&gt;Render(); and you&#39;ll see the<br>
original light also.</blockquote><div><br></div><div>With the following code, the back side of the plane/sphere are now indeed again visible. However, the red light (the diffuse color) is applied to the sphere (the yellow sphere has some hints of red/orange), but does not seem to be applied to the plane? That is, I would expect a red circle to be visible on the plane (and then the plane would be it&#39;s normal gray outside of this circle).</div>
<div><br></div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkLightCollection.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkProperty.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkRenderer.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkRenderWindow.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkPlaneSource.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkSphereSource.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkPolyDataMapper.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkActor.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkLight.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkLightActor.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkSmartPointer.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000080">#include</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&lt;vtkRenderWindowInteractor.h&gt;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#808000">int</span><span style="color:#c0c0c0"> </span>main()</pre>
<pre style="margin-top:0px;margin-bottom:0px">{</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderer</span>&gt;<span style="color:#c0c0c0"> </span>renderer<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderer</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>lightPosition[<span style="color:#000080">3</span>]<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span>{<span style="color:#000080">0</span>,<span style="color:#c0c0c0"> </span><span style="color:#000080">0</span>,<span style="color:#c0c0c0"> </span><span style="color:#000080">2</span>};</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Create</span><span style="color:#c0c0c0"> </span><span style="color:#008000">a</span><span style="color:#c0c0c0"> </span><span style="color:#008000">light</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>lightFocalPoint[<span style="color:#000080">3</span>]<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span>{<span style="color:#000080">0</span>,<span style="color:#000080">0</span>,<span style="color:#000080">0</span>};</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkLight</span>&gt;<span style="color:#c0c0c0"> </span>light<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkLight</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetLightTypeToSceneLight();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetPosition(lightPosition[<span style="color:#000080">0</span>],<span style="color:#c0c0c0"> </span>lightPosition[<span style="color:#000080">1</span>],<span style="color:#c0c0c0"> </span>lightPosition[<span style="color:#000080">2</span>]);</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetPositional(<span style="color:#808000">true</span>);<span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">required</span><span style="color:#c0c0c0"> </span><span style="color:#008000">for</span><span style="color:#c0c0c0"> </span><span style="color:#008000">vtkLightActor</span><span style="color:#c0c0c0"> </span><span style="color:#008000">below</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetConeAngle(<span style="color:#000080">10</span>);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetFocalPoint(lightFocalPoint[<span style="color:#000080">0</span>],<span style="color:#c0c0c0"> </span>lightFocalPoint[<span style="color:#000080">1</span>],<span style="color:#c0c0c0"> </span>lightFocalPoint[<span style="color:#000080">2</span>]);</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetDiffuseColor(<span style="color:#000080">1</span>,<span style="color:#000080">0</span>,<span style="color:#000080">0</span>);</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetAmbientColor(<span style="color:#000080">0</span>,<span style="color:#000080">1</span>,<span style="color:#000080">0</span>);</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>light-&gt;SetSpecularColor(<span style="color:#000080">0</span>,<span style="color:#000080">0</span>,<span style="color:#000080">1</span>);</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkLightCollection</span>*<span style="color:#c0c0c0"> </span>originalLights<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span>renderer-&gt;GetLights();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">std</span>::cout<span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;Originally</span><span style="color:#c0c0c0"> </span><span style="color:#008000">there</span><span style="color:#c0c0c0"> </span><span style="color:#008000">are</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;</span><span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span>originalLights-&gt;GetNumberOfItems()<span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;</span><span style="color:#c0c0c0"> </span><span style="color:#008000">lights.&quot;</span><span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#800080">std</span>::endl;</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#008000">//</span><span style="color:#c0c0c0">  </span><span style="color:#008000">renderer-&gt;AddLight(light);</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">can&#39;t</span><span style="color:#c0c0c0"> </span><span style="color:#008000">do</span><span style="color:#c0c0c0"> </span><span style="color:#008000">this</span><span style="color:#c0c0c0"> </span><span style="color:#008000">here</span><span style="color:#c0c0c0"> </span><span style="color:#008000">-</span><span style="color:#c0c0c0"> </span><span style="color:#008000">must</span><span style="color:#c0c0c0"> </span><span style="color:#008000">do</span><span style="color:#c0c0c0"> </span><span style="color:#008000">this</span><span style="color:#c0c0c0"> </span><span style="color:#008000">after</span><span style="color:#c0c0c0"> </span><span style="color:#008000">the</span><span style="color:#c0c0c0"> </span><span style="color:#008000">renderWindow-&gt;Render()</span><span style="color:#c0c0c0"> </span><span style="color:#008000">below</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">std</span>::cout<span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;Now</span><span style="color:#c0c0c0"> </span><span style="color:#008000">there</span><span style="color:#c0c0c0"> </span><span style="color:#008000">are</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;</span><span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span>originalLights-&gt;GetNumberOfItems()<span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;</span><span style="color:#c0c0c0"> </span><span style="color:#008000">lights.&quot;</span><span style="color:#c0c0c0"> </span>&lt;&lt;<span style="color:#c0c0c0"> </span><span style="color:#800080">std</span>::endl;</pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Display</span><span style="color:#c0c0c0"> </span><span style="color:#008000">where</span><span style="color:#c0c0c0"> </span><span style="color:#008000">the</span><span style="color:#c0c0c0"> </span><span style="color:#008000">light</span><span style="color:#c0c0c0"> </span><span style="color:#008000">is</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkLightActor</span>&gt;<span style="color:#c0c0c0"> </span>lightActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkLightActor</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightActor-&gt;SetLight(light);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderer-&gt;AddViewProp(lightActor);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Display</span><span style="color:#c0c0c0"> </span><span style="color:#008000">where</span><span style="color:#c0c0c0"> </span><span style="color:#008000">the</span><span style="color:#c0c0c0"> </span><span style="color:#008000">light</span><span style="color:#c0c0c0"> </span><span style="color:#008000">is</span><span style="color:#c0c0c0"> </span><span style="color:#008000">focused</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkSphereSource</span>&gt;<span style="color:#c0c0c0"> </span>lightFocalPointSphere<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkSphereSource</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointSphere-&gt;SetCenter(lightFocalPoint);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointSphere-&gt;SetRadius(<span style="color:#000080">.1</span>);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointSphere-&gt;Update();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPolyDataMapper</span>&gt;<span style="color:#c0c0c0"> </span>lightFocalPointMapper<span style="color:#c0c0c0"> </span>=</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">      </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPolyDataMapper</span>&gt;::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointMapper-&gt;SetInputConnection(lightFocalPointSphere-&gt;GetOutputPort());</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkActor</span>&gt;<span style="color:#c0c0c0"> </span>lightFocalPointActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkActor</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointActor-&gt;SetMapper(lightFocalPointMapper);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>lightFocalPointActor-&gt;GetProperty()-&gt;SetColor(<span style="color:#000080">1.0</span>,<span style="color:#c0c0c0"> </span><span style="color:#000080">1.0</span>,<span style="color:#c0c0c0"> </span><span style="color:#000080">0.0</span>);<span style="color:#c0c0c0"> </span><span style="color:#008000">//(R,G,B)</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderer-&gt;AddViewProp(lightFocalPointActor);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Create</span><span style="color:#c0c0c0"> </span><span style="color:#008000">a</span><span style="color:#c0c0c0"> </span><span style="color:#008000">cube</span><span style="color:#c0c0c0"> </span><span style="color:#008000">for</span><span style="color:#c0c0c0"> </span><span style="color:#008000">the</span><span style="color:#c0c0c0"> </span><span style="color:#008000">light</span><span style="color:#c0c0c0"> </span><span style="color:#008000">to</span><span style="color:#c0c0c0"> </span><span style="color:#008000">shine</span><span style="color:#c0c0c0"> </span><span style="color:#008000">on</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPlaneSource</span>&gt;<span style="color:#c0c0c0"> </span>plane<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPlaneSource</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>plane-&gt;Update();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPolyDataMapper</span>&gt;<span style="color:#c0c0c0"> </span>planeMapper<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkPolyDataMapper</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>planeMapper-&gt;SetInputData(plane-&gt;GetOutput());</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkActor</span>&gt;<span style="color:#c0c0c0"> </span>planeActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkActor</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>planeActor-&gt;SetMapper(planeMapper);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderer-&gt;AddActor(planeActor);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderWindow</span>&gt;<span style="color:#c0c0c0"> </span>renderWindow<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderWindow</span>&gt;::New();</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderWindow-&gt;AddRenderer(renderer);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderWindowInteractor</span>&gt;<span style="color:#c0c0c0"> </span>renderWindowInteractor<span style="color:#c0c0c0"> </span>=</pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">      </span><span style="color:#800080">vtkSmartPointer</span>&lt;<span style="color:#800080">vtkRenderWindowInteractor</span>&gt;::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderWindowInteractor-&gt;SetRenderWindow(renderWindow);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderWindow-&gt;Render();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderer-&gt;AddLight(light);<span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">must</span><span style="color:#c0c0c0"> </span><span style="color:#008000">do</span><span style="color:#c0c0c0"> </span><span style="color:#008000">this</span><span style="color:#c0c0c0"> </span><span style="color:#008000">after</span><span style="color:#c0c0c0"> </span><span style="color:#008000">renderWindow-&gt;Render();</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0">  </span>renderWindowInteractor-&gt;Start();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre>
<pre style="margin-top:0px;margin-bottom:0px">}</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre><div> </div></div>