On Oct 25, 2010, at 10:42 AM, Robert Osfield wrote:

> Hi Agnes,
> 
> The osgUtil::DelaunayTriangulator uses a 2D projection for the
> tessellation so is unable to tessellation point clouds whether there
> are overhangs - such as a sphere.  The osgUtil::Tessellator use GLU
> tessellation, which also uses a 2D projection for it's tessellations.
> 
> There aren't any tools in the OSG for tessellating a 3D point cloud,
> so you with will need to find a 3rd party tool to tessellate your
> points, or just work out how to do the tessellation directly yourself.
> For the case of sphere you could probably come up with a technique
> that knows that you are building a sphere and the structure of the
> points to guide the tessellation.
> 
> Robert.

Agnes

There are several software packages that will perform spherical delaunay
here are a few links
http://people.sc.fsu.edu/~jburkardt/m_src/sphere_delaunay/sphere_delaunay.html
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_37.2
http://www.qhull.org/html/qdelaun.htm

Norman

> 
> On Mon, Oct 25, 2010 at 3:15 PM,  <[email protected]> wrote:
>> Hi all,
>> currently I am writing my bachelor's thesis and I am programming in OSG.
>> Consequently, I am a so-called newbie.
>> 
>> Via 2 while-loops, which traverse the parametric representation of a unit
>> sphere around the origin, I receive supporting points. Singular points are
>> added manually.
>> I want to triangulate these supporting points to approximate the surface of
>> a unit sphere.
>> Therefore I pass a DelaunayTriangulator object my pointcloud (ca. 400points)
>> and call its triangulate() method.
>> 
>> However, only the lower hemisphere is always triangulated. I tried to
>> translate the parametric representation, along the positive z-axis so that
>> there are no negative values for the coordinates. Even this does not change
>> the result.
>> I also tried to change the traversal of both for-loops but this did not
>> produce other results ,too.
>> 
>> At division of my pointcloud in two clouds (each ca. 400 points), one for
>> the lower and the other for the upper hemisphere, the triangulation works
>> without any problems.
>> 
>> Does anybody know the reason for my problem, or what am I doing wrong?
>> 
>> My code:
>> ----------------------------------------------------------------------------------------------------------
>> 
>>     geom= new Geometry();
>>     objGeode_ = new Geode();
>>    objGeode_->addDrawable(geom);
>>    objGeode_->setNodeMask(objGeode_->getNodeMask() & (~Isect::Intersection)
>> & (~Isect::Pick));
>>    rootNode->addChild(objGeode_);
>> 
>>    //--------------------- array of
>> vertices---------------------------------
>>    int numVertices = 20;
>>    double firstA = 0.0;
>>    double firstB = 0.0;
>>    double radian = 1.0;
>>    int counterA;
>>    int counterB;
>> 
>>     Vec3Array  *vecTriangArray = new Vec3Array;
>> 
>>      //singular points
>>     vecTriangArray->push_back(Vec3(0.0, 0.0, 1.0));
>>     vecTriangArray->push_back(Vec3(0.0, 0.0, -1.0));
>> 
>>     //Traverse the latitude then along the meridian
>>             counterA = 1;
>>             firstA =(PI / numVertices)*counterA;
>> 
>>             while(firstA < PI){
>>                 counterB = 0;
>>                 firstB = 0.0;
>> 
>>                 while(firstB < 2*PI){
>>                     double x = radian * sin(firstA) * cos(firstB);
>>                     double y = radian * sin(firstA) * sin(firstB);
>>                     double z = radian * cos(firstA);
>>                     vecTriangArray->push_back(Vec3(x, y, z));
>>                     counterB++;
>>                     firstB = (2*PI / numVertices)*counterB;
>>                     }
>>                 counterA ++;
>>                 firstA =(PI / numVertices)*counterA;
>>                 }
>> 
>>             geom -> setVertexArray(vecTriangArray);
>> 
>>     //---------------Delaunay Triangulator-------------
>>     DelaunayTriangulator *trig = new DelaunayTriangulator();
>>     trig -> setInputPointArray(vecTriangArray);
>> 
>>     //triangulate the points an add them to the primitive set
>>     trig->triangulate();
>>     geom->addPrimitiveSet(trig->getTriangles());
>> 
>> ----------------------------------------------------------------------------------------------------------
>> 
>> Thank you,
>> 
>> Agnes
>> 
>> 
>> --
>> Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!
>> Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail
>> _______________________________________________
>> 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

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

Reply via email to