Robert Osfield 30a06a033e From Peter Hrenka, (note from Robert Osfield, renamed GenericPrimitiveFunctor mention below to TemplatePrimitiveFunctor).
"Since we desperately needed a means for picking Lines
and Points I implemented (hopefully!) proper geometrical tests
for the PolytopeIntersector.

First of all I implemented a new "GenericPrimiteFunctor"
which is basically an extended copy TriangleFunctor which also
handles Points, Lines and Quads through suitable overloads of
operator(). I would have liked to call it "PrimitiveFunctor"
but that name was already used...
I used a template method to remove redundancy in the
drawElements method overloads. If you know of platforms where
this will not work I can change it to the style used
in TriangleFunctor.

In PolytopeIntersector.cpp I implemented a
"PolytopePrimitiveIntersector" which provides the needed
overloads for Points, Lines, Triangles and Quads to
the GenericPrimitiveFunctor. This is then used in the
intersect method of PolytopeIntersector.

Implementation summary:
- Points: Check distance to all planes
- Lines: Check distance of both ends against each plane.
  If both are outside -> line is out
  If both are in -> continue checking
  One is in, one is out -> compute intersection point (candidate)
  Then check all candidates against all other polytope
  planes. The remaining candidates are the proper
  intersection points of the line with the polytope.
- Triangles: Perform Line-Checks for all edges of the
  triangle as above. If there is an proper intersection
  -> done.
  In the case where there are more than 2 polytope
  plane to check against we have to check for the case
  where the triangle encloses the polytope.
  In that case the intersection lines of the polytope
  planes are computed and checked against the triangle.
- Quads: handled as two triangles.

This is implementation is certainly not the fastest.
There are certainly ways and strategies to improve it.


I also enabled the code for PolytopeIntersector
in osgkeyboardmouse and added keybindings to
switch the type of intersector ('p') and the picking
coordinate system ('c') on the fly. Since the
PolytopeIntersector does not have a canonical
ordering for its intersections (as opposed to
the LineSegementIntersector) I chaged the
implementation to toggle all hit geometries.


I tested the functionality with osgkeyboardmouse
and several models and it seems to work for
polygonal models. Special nodes such as billboards
do not work.


The next thing on my todo-list is to implement
a an improved Intersection-Structure for the
PolytopeIntersector. We need to know
which primitives where hit (and where).

"
2007-05-23 11:05:59 +00:00
2007-05-23 10:57:46 +00:00
2007-05-21 09:18:23 +00:00
2007-05-02 19:57:05 +00:00
2007-05-21 12:34:03 +00:00
2007-01-11 15:48:44 +00:00

Welcome to the OpenSceneGraph (OSG).

For up to date information on the project, how to indepth details on how to 
compile and run libraries and examples, and see the documentation on the 
OpenSceneGraph website.

    http://www.openscenegraph.org
  
For the impatient, read the simplified build notes below.

Robert Osfield.
Project Lead.
21st May 2007.

--

Notes for 1.9.5 release
=======================

OpenThreads/include and src directories has now been merged directly into 
the OpenSceneGraph distribution, this means that you don't need to download,
compile or install it, and will be able to remove the external OpenThreads
from your system.

--

How to build the OpenSceneGraph
===============================

The OpenSceneGraph use the CMake build system to generate platform specific
build environment.  CMake reads the CMakeLists.txt files that you'll find 
throughout the OpenSceneGraph directories, check for installed dependnecies
and then generate the appropriate build system.

If you don't already have CMake installed on your system you can grab it
from http://www.cmake.org, version 2.4.6 or later.

Under unices (i.e. Linux, IRIX, Solaris, Free-BSD, HP-Ux, AIX, OSX) use the
cmake or ccmake commandline utils:
 
  cd OpenSceneGraph
  ccmake .
  make
  sudo make install
  
Under Windows use the GUI tool CMakeSetup to build your VisualStudio files. 
The following page on our wiki dedicated to the CMake build should help
guide you through the process:

   http://www.openscenegraph.com/index.php?page=Build.CMake

For further details on compiliation, installation and platform specific information
read "Getting Started" at http://www.openscenegraph.org, under 
"Documentation".


Description
No description provided
Readme 76 MiB
Languages
C++ 89.7%
C 5.1%
CMake 2.3%
HTML 1.6%
Objective-C++ 0.9%
Other 0.2%