On Sat, Feb 5, 2011 at 2:42 PM, siper style <siperst...@gmail.com> wrote:
> Many thanks.
> But what if I have thousands of geometries?
> Do I still need to name them to be able to find their shape later on?
>
There are other ways. Without more details on whether this may apply, one
idea would be to put all "Sphere" goemetries as children of a single node,
and all the "Cylinder" geometries as children of another separate node.
This way you could determine if a Geometry is a sphere or cylinder by
checking if it's parent node is the sphere group node, the cylinder group
node, or neither.
Example:
NodeRecPtr SphereGroupNode;
void createScene()
{
SphereGroupNode = makeCoredNode<Group>();
//Create all the Spheres
for(UInt32 i(0) ; i<NumSpheres ; ++i)
{
NodeRecPtr NewSphereGeoNode = makeSphere(2,1.0);
SphereGroupNode->addChild(NewSphereGeoNode);
}
//Similarly for Cylinders
//...
//Create other nodes
//...
NodeRecPtr SceneNode = makeCoredNode<Group>();
SceneNode->addChild(SphereGroupNode);
//Add Cylinder group node
//Add all other nodes
}
bool isSphereNode(Node* const NodeToTest)
{
//You may need to change this if you use a more complex hierarchy for
the the descendent sphere nodes
return(NodeToTest != NULL && NodeToTest->getParent() ==
SphereGroupNode);
}
> Zeeper
>
>
> On Sat, Feb 5, 2011 at 5:51 PM, David Kabala <djkab...@gmail.com> wrote:
>
>> Hi Zeeper,
>>
>> There is no way to do this unless you add additional information to your
>> "sphere" and "cylinder" Geometry instances. A Geometry in OpenSG holds
>> generic geometric data(positions, normals, texCoords, etc). It does not
>> know if the underlying geometric data represents a sphere or cylinder.
>> However, you can add attachments to a Geometry that you could use to
>> distinguish between different shapes.
>>
>> As an example using OpenSG 2:
>>
>> #include <OpenSG/OSGSimpleGeometry.h>
>> #include <OpenSG/OSGNameAttachment.h>
>>
>> ...
>> OSG_USING_NAMESPACE
>> ...
>>
>> //Create a Sphere Geoemtry
>> GeometryRecPtr ExampleSphereGeo =
>> makeSphereGeo<http://www.opensg.org/doxygen/namespaceOSG.html#aabcd434346baf44743d93a61c5b889ab>(2,
>> 1.0);
>>
>> //Add a name attachment to the goemetry
>> setName<http://www.opensg.org/doxygen/namespaceOSG.html#afc7762df3d105a1915f08614cb5a41f8>(ExampleSphereGeo,
>> "Sphere_Shape");
>>
>> //Create a Cylinder Geometry
>> GeometryRecPtr ExampleCylinderGeo =
>> makeCylinderGeo<http://www.opensg.org/doxygen/namespaceOSG.html#a6099339ee81a34f95e792c6f976a6577>(2.0,
>> 1.0, 24, true, true, true);
>>
>> //Add a name attachment to the geometry
>> setName<http://www.opensg.org/doxygen/namespaceOSG.html#afc7762df3d105a1915f08614cb5a41f8>
>> (ExampleCylinderGeo,"Cylinder_Shape");
>>
>> ...
>>
>> //At some other location
>> NodeRecPtr SomeNodeToTest = ...;
>>
>>
>> if(SomeNodeToTest->getCore()->getType().isDerivedFrom(Geometry::getClassType()))
>> {
>> Char8* GeoName = getName(SomeNodeToTest->getCore());
>>
>> if(GeoName != NULL)
>> {
>> if(strcmp(GeoName,"Sphere_Shape") == 0)
>> {
>> //Do Sphere stuff
>> }
>> else if(strcmp(GeoName,"Cylinder_Shape") == 0)
>> {
>> //Do Cylinder stuff
>> }
>> }
>> }
>>
>> On Sat, Feb 5, 2011 at 11:33 AM, siper style <siperst...@gmail.com>wrote:
>>
>>> Hello,
>>>
>>> I want to get the shape of a geometry.
>>> I have many geometries, I did
>>> node->getCore->getTypeName() to check if it is a geometry,
>>>
>>
>> You will want to use
>> node->getCore()->getType().isDerivedFrom(Geometry::getClassType()) instead.
>>
>>
>>> Now I am not able to know if the geometry is a sphere or a cylinder.
>>> I only want to do something to the spheres and not the cylinders
>>>
>>> Zeeper
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> The modern datacenter depends on network connectivity to access resources
>>> and provide services. The best practices for maximizing a physical
>>> server's
>>> connectivity to a physical network are well understood - see how these
>>> rules translate into the virtual world?
>>> http://p.sf.net/sfu/oracle-sfdevnlfb
>>> _______________________________________________
>>> Opensg-users mailing list
>>> Opensg-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/opensg-users
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> The modern datacenter depends on network connectivity to access resources
>> and provide services. The best practices for maximizing a physical
>> server's
>> connectivity to a physical network are well understood - see how these
>> rules translate into the virtual world?
>> http://p.sf.net/sfu/oracle-sfdevnlfb
>> _______________________________________________
>> Opensg-users mailing list
>> Opensg-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/opensg-users
>>
>>
>
>
> ------------------------------------------------------------------------------
> The modern datacenter depends on network connectivity to access resources
> and provide services. The best practices for maximizing a physical server's
> connectivity to a physical network are well understood - see how these
> rules translate into the virtual world?
> http://p.sf.net/sfu/oracle-sfdevnlfb
> _______________________________________________
> Opensg-users mailing list
> Opensg-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensg-users
>
>
------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources
and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world?
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users