Hi Robert
 
I am probably much more confused than you are at this point!  I am working on a 
simulation where it was required to incorporate BRLCAD models.  BRLCAD are CSG 
models, though there are some tools to convert these models to polygonized 
formats (ie. STL), these tools generally produce errors on the more complex 
geometries.  So by including these models into OpenSceneGraph I am mixing 
apples with oranges!  What I have done so far:
 
1) Incorporated the BRLCAD pre-build libs and dll's in an OpenSceneGraph app.  
The BRLCAD is old "C" code that you can not even think about running the .h 
files through the C++ compiler.  Just use void * pointers and move on.
 
2) Load a BRLCAD model, and generate a "point cloud" to display in 
OpenSceneGraph.  The points are all determined using the native BRLCAD ray 
tracer.  The "point cloud" is just to show the model and move around in the 
scene with a decent frame rate.  Because the next step just kills the frame 
rate.
 
3)  Once I get the model into the position I want,  I toggle into a BRLCAD ray 
trace mode, where prior to the swapbuffers:
 
- Grab the frame buffer with a glReadPixels call.
- Generate a ray from each pixel location using the SceneView projection matrix.
- Using the BRLCAD ray tracer determine where/if the ray hit and come up with a 
rgb value for the model (simple diffuse lighting model).
- Intersect the OSG scene with the same ray. If there are no intersections 
before the BRLCAD intersection, replace the pixel values with BRLCAD derived 
rgb values.
- Overwrite the frame buffer with a glDrawPixels.
- Drink lots of coffee, waiting for the scene to render.
 
 
This works, in that the BRLCAD model is displayed as a "lit" model in the 
OpensceneGraph scene.  Close up views occasionally show some subpixel? error.  
I was looking for a "better" method than above.  I do realize that I am out in 
the wilderness with this one!
 
Thanks
 
 
 

________________________________

From: [EMAIL PROTECTED] on behalf of Robert Osfield
Sent: Mon 6/16/2008 5:34 AM
To: OpenSceneGraph Users
Subject: Re: [osg-users] Ray Tracing a BRLCAD model in Openscenegraph



Hi Steven,

I'm confused by what you are actually need to do on the OSG side.  You
talk about ray tracing on the OSG side, point clouds, and then talk
about glReadPixels/glDrawPixels, to me they seem un-related so
obviously I'm missing something key to what you are trying to do.
Could you explain for a high level what steps you are taking to create
the scene graph, what operations you need to do on it on the CPU/GPU
and how you need to present/get the results.

Robert.

On Tue, Jun 10, 2008 at 12:36 PM, Watkins, Steven M CIV NSWCDD, G24
<[EMAIL PROTECTED]> wrote:
> Hi All
>
> I have implemented BRLCAD, which is a CSG based ray tracing api, into an
> Openscenegraph application.  I am currently displaying BRLCAD models in the
> Openscenegraph world by generating a "point cloud" using the native BRLCAD
> ray tracer and rendering that as Osg point geometry.
>
> I would like to display these BRLCAD models by ray trace in Openscenegraph
> (yes, it will be slow!).  I have done some searches through the archives and
> have not found a lot of info.  It appears that I am going to have to use
> glReadPixels and glWritePixels prior to the swapbuffers (I am not using
> osgViewer yet).  Does anyone know of a better method to render via ray trace
> in Openscenegraph?
>
> Thanks
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


<<winmail.dat>>

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to