Begrenzungsrahmen in OSG
- osg::Node bietet eine Schnittstelle zum Abrufen der Begrenzungskugel, inline const BoundingSphere& getBound() const , stellt jedoch keine Schnittstelle zum Abrufen der BoundingBox bereit.
- osg::Drawable und osg::Geode stellen Schnittstellen zum Abrufen von BoundingBox bereit.
brauchen
Bei einem osg::Node müssen Sie die BoundingBox abrufen
Lösungen und Pläne
Wenn Sie wissen, dass osg::Node ein osg::Geode oder osg::Drawable ist, können Sie es in den angegebenen Typ konvertieren, um es zu erhalten. (Hinweis: Wenn der Nachkommenknoten von osg::Node ein osg::Geode ist und Sie versuchen, zu osg::Geode zu wechseln und dann dessen osg::BoundingBox herauszunehmen, wird er als Begrenzungsrahmen von betrachtet osg::Node, was falsch ist. , da die osg::BoundingBox zu diesem Zeitpunkt der Begrenzungsrahmen im lokalen Koordinatensystem von osg::Geode ist.)
osg stellt einen Besucher osg::ComputeBoundsVisitor bereit, der die BoundingBox von osg::Node wie folgt finden kann:
osg::ComputeBoundsVisitor cbVisitor;
pOsgNode->accept(cbVisitor);
const osg::BoundingBox& mBBox = cbVisitor.getBoundingBox();