[vtkusers] get visible surface

Lodron, Gerald Gerald.Lodron at joanneum.at
Thu Aug 23 08:09:50 EDT 2012


Thats funny, i copied my stuff from that example....

I only have the problem that it only works on large rendererwindows like in my case on 1240 x 960. On 640 x 480 it does not work (result is completely empty then). So if you add

renderWindow->SetSize(1240,960);

before 

renderWindowInteractor->Start();

the "broken" example should work (and of course disabling antialiasing and having a monitor with such a resolution). Another thing I did is that I use the

extractSelection->PreserveTopologyOn();

switch, but I think it also work without that line. The rest of my code is completely identical to your link... 

And I tested plugging out the monitor cable before starting my application (in this case without the key press stuff), then it crashes. I am thinking to produce a DUMMY monitor cable to solve the issue in my final system... (if the offline rendering switch will not work, not tested yet)







-----Ursprüngliche Nachricht-----
Von: David Doria [mailto:daviddoria at gmail.com] 
Gesendet: Donnerstag, 23. August 2012 13:35
An: Lodron, Gerald
Betreff: Re: [vtkusers] get visible surface

Are you using the HardwareSelector successfully? It would be really great if you could fix this example:

http://www.vtk.org/Wiki/VTK/Examples/Cxx/Broken/Filtering/ExtractVisibleCells

Thanks,

David


On Thu, Aug 23, 2012 at 1:59 AM, Lodron, Gerald <Gerald.Lodron at joanneum.at> wrote:
> Ok, if you will be sometimes in Austria/Graz call me you will get a 
> beer for that hint with aliasing^^ It really solved the issue with the noisy structures... thanks a lot I would never ever find that on my own.
>
> -----Ursprüngliche Nachricht-----
> Von: David E DeMarle [mailto:dave.demarle at kitware.com]
> Gesendet: Mittwoch, 22. August 2012 16:40
> An: Lodron, Gerald
> Cc: David Doria <daviddoria at gmail.com> (daviddoria at gmail.com)
> Betreff: Re: [vtkusers] get visible surface
>
> I'm still thinking antialiasing. Check your graphics driver controls to see if it is forced on. The vtk code tries to turn it off but the control settings can override that.
>
> Also, run the vtk test and see if that passes or fails.
>
> On Wed, Aug 22, 2012 at 10:31 AM, Lodron, Gerald <Gerald.Lodron at joanneum.at> wrote:
>>
>> Here the screenshot (without mailing list CC), hope it helps
>>
>> -----Ursprüngliche Nachricht-----
>> Von: David E DeMarle [mailto:dave.demarle at kitware.com]
>> Gesendet: Mittwoch, 22. August 2012 16:19
>> An: Lodron, Gerald
>> Cc: David Doria; (vtkusers at vtk.org)
>> Betreff: Re: [vtkusers] get visible surface
>>
>> On Wed, Aug 22, 2012 at 1:57 AM, Lodron, Gerald <Gerald.Lodron at joanneum.at> wrote:
>>> Ok, thanks, i tested the vtkHardwareSelector in combination with the vtkExtractSelection Filter and have some questions:
>>>
>>> -> In general it works well but always some "noisy" polygons outside 
>>> -> the visible region remain, is there a way to remove them also? (I 
>>> -> can give code examples/screenshots if necessary, data set is very 
>>> -> huge to send but is possible if required)
>>
>> A screenshot might make the cause apparent.
>>
>> Any display settings that change the color of pixels (shading, antialiasing, color depth) make it impossible to get an ID corresponding to the color of the pixel and screw up pixel based selection. Antialiasing is my guess as to what is wrong in your program.
>>
>>> -> The problem is that I will not have a monitor on my later device, so an offscreen like the mentioned osmesa is essential. Is this the  VTK_USE_OFFSCREENT flag in cmake? Are there any known troubles in that mode or does it work well (I use it on windows)?
>>>
>>
>> That specific flag tells VTK to always choose offscreen rendering classes. On windows, they typically go through the windows provided GL instead of OSMesa. You may have to coerce windows into working in a headless environment. I've done it before with microsoft's HPC server cluster solution but I don't recall the specifics of how to set that up or know how to do it without HPC server.
>>
>>> Some details about my application:
>>>
>>> A human walks with a special camera which makes depth images and records many frames of an object. From these depth images we generate a very huge image with propabilities of being  a surface (this is currently implemented and works). From this image we generate a vtkPolyData using the marching cubes (currently vtkMarchingCubes, but we will go to vtkSliceCubes because it can stream the input, later images will have a size of 10 000 x 10 000 x 10 000 which is about 4 Terrabyte, I do not have such a RAM so a streaming would be nice). The problem is that marching cubes always generates two surfaces of this floating PDF image, to remove the hidden one I want to use the camera position(s) with the hidden surface detection like the vtkHardwareSelector... So for every camera position I will call the HardwareSelector and will make a logical OR operation on the vtkInsidedness result of the vtkHardwareSelector... And I am afraid that the noisy remaining backtriangles of vtkHardwareSelector will accumulate...
>>>
>>> Maybe someone has some hints for me...
>>>
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: David E DeMarle [mailto:dave.demarle at kitware.com]
>>> Gesendet: Dienstag, 21. August 2012 20:19
>>> An: David Doria
>>> Cc: Lodron, Gerald; (vtkusers at vtk.org)
>>> Betreff: Re: [vtkusers] get visible surface
>>>
>>> Use this test as a start:
>>> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Rendering/OpenGL/Testing/Cx
>>> x
>>> /
>>> TestAreaSelections.cxx
>>>
>>> David E DeMarle
>>> Kitware, Inc.
>>> R&D Engineer
>>> 21 Corporate Drive
>>> Clifton Park, NY 12065-8662
>>> Phone: 518-881-4909
>>>
>>>
>>> On Tue, Aug 21, 2012 at 2:13 PM, David Doria <daviddoria at gmail.com> wrote:
>>>> On Tue, Aug 21, 2012 at 1:47 PM, David E DeMarle 
>>>> <dave.demarle at kitware.com>
>>>> wrote:
>>>>>
>>>>> Use vtkHardwareSelector, it is a more recent implementation of 
>>>>> visible surface selection. It will give you cells if you ask it to 
>>>>> for instance. See:
>>>>> http://www.vtk.org/doc/nightly/html/classvtkHardwareSelector.html
>>>>>
>>>>> I think the only thing that can be done about not needing a 
>>>>> monitor is to use an offscreen rendering context (osmesa for example).
>>>>> Screen space operations like visible surface selection get too 
>>>>> much from the infrastructure that VTK's display pipeline (and 
>>>>> openGL
>>>>> underneath) provide to make removing them practical.
>>>>
>>>>
>>>> If you figure out how to get it to work and could fix this example:
>>>> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Broken/Filtering/ExtractVi
>>>> s
>>>> i
>>>> b
>>>> leCells
>>>>
>>>> that would be great!
>>>>
>>>> David
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at 
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>



More information about the vtkusers mailing list