Voila mon souci.
Dans un projet OpenSG que je developpe je cherche a appliquer un plan clipping a un objet que je deplace dans l'espace 3D.
J'arrive bien a appliquer ce clipping a un objet simple comme une balle mais pas a un objet composé.
GeometryPtr ball_geo = makeSphereGeo(3, 2);
// Create the node that will hold our geometry
NodePtr ball = Node::create();
beginEditCP(ball, Node::CoreFieldMask);
ball->setCore(ball_geo);
endEditCP(ball, Node::CoreFieldMask);
voici un exemple fonctionnant sur la balle. J'en recupere le noeud Core etc.
Quand j'applique ce meme code sur un objet composé de plusieurs noeuds j'ai une erreur de segmentation. Si quelqu'un peut m'expliquer pourquoi ce serait sympa.
GeometryPtr coreGeo = GeometryPtr::dcast(ball->getCore());
//Renders the "right" side part of the ball
SimpleMaterialPtr pass1 = SimpleMaterial::create();
ClipPlaneChunkPtr xClip = ClipPlaneChunk::create();
beginEditCP(xClip);{
xClip->setEquation(Vec4f(1,0,0,0));
xClip->setEnable(true);
xClip->setBeacon(ball);
};endEditCP(xClip);
beginEditCP(pass1);{
pass1->setDiffuse(Color3f(1.0, 1.0, 1.0));
pass1->setAmbient(Color3f(0.1, 0.1, 0.1));
pass1->addChunk(xClip);
};endEditCP(pass1);
beginEditCP(coreGeo);{
coreGeo->setMaterial(pass1);
};endEditCP(coreGeo);