On Sun, Nov 25, 2012 at 8:27 AM, Bill Lorensen <span dir="ltr"><<a href="mailto:bill.lorensen@gmail.com" target="_blank">bill.lorensen@gmail.com</a>></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'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->Render(); and you'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'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"><vtkLightCollection.h></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"><vtkProperty.h></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"><vtkRenderer.h></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"><vtkRenderWindow.h></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"><vtkPlaneSource.h></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"><vtkSphereSource.h></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"><vtkPolyDataMapper.h></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"><vtkActor.h></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"><vtkLight.h></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"><vtkLightActor.h></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"><vtkSmartPointer.h></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"><vtkRenderWindowInteractor.h></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><<span style="color:#800080">vtkRenderer</span>><span style="color:#c0c0c0"> </span>renderer<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkRenderer</span>>::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><<span style="color:#800080">vtkLight</span>><span style="color:#c0c0c0"> </span>light<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkLight</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>light->SetLightTypeToSceneLight();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>light->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->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->SetConeAngle(<span style="color:#000080">10</span>);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>light->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->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->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->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->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><<<span style="color:#c0c0c0"> </span><span style="color:#008000">"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">"</span><span style="color:#c0c0c0"> </span><<<span style="color:#c0c0c0"> </span>originalLights->GetNumberOfItems()<span style="color:#c0c0c0"> </span><<<span style="color:#c0c0c0"> </span><span style="color:#008000">"</span><span style="color:#c0c0c0"> </span><span style="color:#008000">lights."</span><span style="color:#c0c0c0"> </span><<<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->AddLight(light);</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">can'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->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><<<span style="color:#c0c0c0"> </span><span style="color:#008000">"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">"</span><span style="color:#c0c0c0"> </span><<<span style="color:#c0c0c0"> </span>originalLights->GetNumberOfItems()<span style="color:#c0c0c0"> </span><<<span style="color:#c0c0c0"> </span><span style="color:#008000">"</span><span style="color:#c0c0c0"> </span><span style="color:#008000">lights."</span><span style="color:#c0c0c0"> </span><<<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><<span style="color:#800080">vtkLightActor</span>><span style="color:#c0c0c0"> </span>lightActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkLightActor</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightActor->SetLight(light);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>renderer->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><<span style="color:#800080">vtkSphereSource</span>><span style="color:#c0c0c0"> </span>lightFocalPointSphere<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkSphereSource</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointSphere->SetCenter(lightFocalPoint);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointSphere->SetRadius(<span style="color:#000080">.1</span>);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointSphere->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><<span style="color:#800080">vtkPolyDataMapper</span>><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><<span style="color:#800080">vtkPolyDataMapper</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointMapper->SetInputConnection(lightFocalPointSphere->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><<span style="color:#800080">vtkActor</span>><span style="color:#c0c0c0"> </span>lightFocalPointActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkActor</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointActor->SetMapper(lightFocalPointMapper);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>lightFocalPointActor->GetProperty()->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->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><<span style="color:#800080">vtkPlaneSource</span>><span style="color:#c0c0c0"> </span>plane<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkPlaneSource</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>plane->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><<span style="color:#800080">vtkPolyDataMapper</span>><span style="color:#c0c0c0"> </span>planeMapper<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkPolyDataMapper</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>planeMapper->SetInputData(plane->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><<span style="color:#800080">vtkActor</span>><span style="color:#c0c0c0"> </span>planeActor<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkActor</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>planeActor->SetMapper(planeMapper);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>renderer->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><<span style="color:#800080">vtkRenderWindow</span>><span style="color:#c0c0c0"> </span>renderWindow<span style="color:#c0c0c0"> </span>=<span style="color:#c0c0c0"> </span><span style="color:#800080">vtkSmartPointer</span><<span style="color:#800080">vtkRenderWindow</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>renderWindow->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><<span style="color:#800080">vtkRenderWindowInteractor</span>><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><<span style="color:#800080">vtkRenderWindowInteractor</span>>::New();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span>renderWindowInteractor->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->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->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->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->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>