I've just committed a change to vtkOpenGLRenderWindow which appears to fix it. The change is to return default values if the window isn't mapped like getColorDepth does.<br><br>cheers<br>Dave DeMarle<br><br><div><span class="gmail_quote">
On 3/22/07, <b class="gmail_sendername">David E DeMarle</b> <<a href="mailto:dave.demarle@kitware.com">dave.demarle@kitware.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hmmm, the program looks ok to me, with the exception of two calls to a "render" instead of "ofsrender".<br>I will try cell selection with offscreen rendering on windows and see if I can reproduce the problem.
<br><br>cheers<br>Dave DeMarle<br><br><br><div><div><span class="e" id="q_1117ab08c5aaa456_1"><span class="gmail_quote">On 3/20/07, <b class="gmail_sendername">Lim, Theodore</b> <<a href="mailto:T.Lim@hw.ac.uk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
T.Lim@hw.ac.uk</a>> wrote:</span></span></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div><span class="e" id="q_1117ab08c5aaa456_3">
<div dir="ltr">
<div dir="ltr"><font color="#000000" face="Arial" size="2"></font>Hi,</div>
<div dir="ltr"> </div>
<div dir="ltr">Not sure how to put this but here goes...</div>
<div dir="ltr"> </div>
<div dir="ltr">I'm trying to get get visible cell data for a series of camera
positions and would like to do this using the Win32 offscreen rendering
capabilities.</div>
<div dir="ltr"> </div>
<div dir="ltr">However, i discovered that the offscreen render window color buffer
size returns all 0 values. This seems to be the reason why the visible cell
selector fails. Is there a way to set (or force) values into it?</div>
<div dir="ltr"> </div>
<div dir="ltr">Or rather, can the new class vtkVisibilityCellSelector be used in
Offscreen rendering mode? And if so, how can this be achieved. I've attached the
code which i'm testing below.</div>
<div dir="ltr"> </div>
<div dir="ltr">One note: i compiled with cmake option VTK_USE_OFFSCREEN set to
'Off' as this caused the vtkMFC examples (i.e. vtkDLG, vtkSDI, vtkMDI) to
crash. It also caused the same response to my own VTK-MFC app. Not sure if this
has anything to do with it not being able to use Offscreen. In the test code
below, i use the vtkWindowToImageFilter to grab a snapshot of the offscreen
render window and the results was as expected.</div>
<div dir="ltr"> </div>
<div dir="ltr">Any help would be greatly appreciated.</div>
<div dir="ltr"> </div>
<div dir="ltr">Many thanks, Theo.</div>
<div dir="ltr"> </div>
<div dir="ltr">/**************************************************************************************************/</div>
<div dir="ltr">int main()<br>{<br> //Load
model<br> vtkSmartPointer<vtkSTLReader> reader =
vtkSmartPointer<vtkSTLReader>::New();<br> reader->SetFileName("C:/Model/Data/MillCut.stl");</div>
<div dir="ltr"> vtkSmartPointer<vtkPolyDataMapper> map1 =
vtkSmartPointer<vtkPolyDataMapper>::New(); <br> map1->SetInput(reader->GetOutput());</div>
<div dir="ltr"><br> // set up offscreen
renderer<br> vtkSmartPointer<vtkRenderer> ofsrenderer =
vtkSmartPointer<vtkRenderer>::New();<br> ofsrenderer->SetBackground(0.0,0.0,0.0);
<br> vtkSmartPointer<vtkRenderWindow> ofsrenWin =
vtkSmartPointer<vtkRenderWindow>::New();<br> ofsrenWin->AddRenderer(ofsrenderer);<br> ofsrenWin->SetSize(800,800);<br> ofsrenWin->SetOffScreenRendering(1);</div>
<div dir="ltr"> // set
interactor<br> vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();<br> iren->SetRenderWindow(ofsrenWin);
</div>
<div dir="ltr"><br> //set up the
view<br> renderer->GetActiveCamera()->SetViewUp(0, 1,
0);<br> renderer->SetBackground(0.0,0.0,0.0);
<br> <br> <br> // set
actor<br> vtkSmartPointer<vtkActor> act1 =
vtkSmartPointer<vtkActor>::New();<br> act1->SetMapper(map1);</div>
<div dir="ltr"> // add actor to renderer<br> double diagonal =
act1->GetLength();<br> double *center =
act1->GetCenter(); <br> ofsrenderer->AddActor(act1);<br> ofsrenderer->GetActiveCamera()->SetFocalPoint(center);<br> ofsrenderer->GetActiveCamera()->SetPosition(20,
-20, -27);<br> ofsrenderer->ResetCamera();</div>
<div dir="ltr"><br> ofsrenWin->Render();</div>
<div dir="ltr"> //-----------------------------------------------<br> //
check offscreen render window...<br> int
rgba[4];<br> ofsrenWin->GetColorBufferSizes(rgba);</div>
<div dir="ltr"> vtkSmartPointer<vtkWindowToImageFilter> wif =
vtkSmartPointer<vtkWindowToImageFilter>::New();//<br> wif->SetInput(ofsrenWin);<br> wif->Update(); </div>
<div dir="ltr"> vtkSmartPointer<vtkJPEGWriter> jpgw =
vtkSmartPointer<vtkJPEGWriter>::New();<br> jpgw->SetInput(wif->GetOutput());<br> jpgw->SetQuality(100);<br> jpgw->SetFileName("D:/Projects/VTK/testoffscreen.jpg");<br> jpgw->Write();</div>
<div dir="ltr"> //-----------------------------------------------</div>
<div dir="ltr"><br> // get visible
cells<br> vtkSmartPointer<vtkVisibleCellSelector> sel1 =
vtkSmartPointer<vtkVisibleCellSelector>::New();<br> sel1->SetRenderer(ofsrenderer);</div>
<div dir="ltr"> // grab everything in
the render window viewport<br> int *size =
ofsrenderer->GetRenderWindow()->GetSize();<br> sel1->SetRenderPasses(0,1,0,1,1);<br> sel1->SetArea(size[0],size[1],size[2],size[3]);<br> sel1->Select();<br> vtkSmartPointer<vtkSelection>
res1 =
vtkSmartPointer<vtkSelection>::New();<br> sel1->GetSelectedIds(res1);</div>
<div dir="ltr"> vtkSmartPointer<vtkSelection> cellids =
res1->GetChild(0);<br> vtkSmartPointer<vtkExtractSelectedPolyDataIds>
extr =
vtkSmartPointer<vtkExtractSelectedPolyDataIds>::New();<br>
if (cellids)<br>
{<br> extr->SetInput(1,
act1->GetMapper()->GetInput());<br>
extr->SetInput(0,
cellids);<br>
extr->Update();<br>
sMap->SetInput(extr->GetOutput());<br>
}<br>
else<br>
{<br> cerr << "Empty
color buffer selection -" <<
endl;<br> cerr <<
"Check display color depth. Must be at least 24 bit." <<
endl;<br>
sMap->SetInput(emptyPD);<br>
}</div>
<div dir="ltr"> ////////////////////////////////////////////////////////////</div>
<div dir="ltr"> ofsrenWin->Render();</div>
<div dir="ltr"><br> // Set the user method (bound to key
'u')<br> iren->Initialize();<br> iren->Start();</div>
<div dir="ltr"><br> return 0;<br>}</div>
<div dir="ltr"> </div>
<div dir="ltr"> </div></div></span></div>
</div>
<br>_______________________________________________<br>This is the private VTK discussion list.<br>Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.vtk.org/Wiki/VTK_FAQ</a><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.vtk.org/mailman/listinfo/vtkusers
</a><br><br></blockquote></div><br>
</blockquote></div><br>