|
楼主 |
发表于 2011-4-8 10:02:15
|
显示全部楼层
谢谢Array老师!我还只是学习阶段,还没有那个水平啊。呵呵,如果有需要,那是我的荣幸。呵呵。我想了个笨一点的办法:gm为取出来的被碰撞节点的Geometry,通过osg::Vec3Array* vec3array=dynamic_cast<osg::Vec3Array*>(gm->getVertexArray())可以得到所有的节点,通过osg::Geometry:rimitiveSetList primitiveSetList=gm->getPrimitiveSetList()可以得到基本图元绘制方法的列表,每一个绘制方法都能得到绘制类型( PrimitiveType, DrawArraysPrimitiveType, DrawArrayLengthsPrimitiveType, DrawElementsUBytePrimitiveType, DrawElementsUShortPrimitiveType, DrawElementsUIntPrimitiveType )和绘制模式( POINTS = GL_POINTS, LINES = GL_LINES, LINE_STRIP = GL_LINE_STRIP, LINE_LOOP = GL_LINE_LOOP, TRIANGLES = GL_TRIANGLES, TRIANGLE_STRIP = GL_TRIANGLE_STRIP, TRIANGLE_FAN = GL_TRIANGLE_FAN, QUADS = GL_QUADS, QUAD_STRIP = GL_QUAD_STRIP, POLYGON = GL_POLYGON, LINES_ADJACENCY = GL_LINES_ADJACENCY_EXT, LINE_STRIP_ADJACENCY = GL_LINE_STRIP_ADJACENCY_EXT, TRIANGLES_ADJACENCY = GL_TRIANGLES_ADJACENCY_EXT, TRIANGLE_STRIP_ADJACENCY = GL_TRIANGLE_STRIP_ADJACENCY_EXT ),并且可以得到每一个绘制图元的从哪一点开始绘制,哪一点终止或者绘制的图元个数,都可以取得到。这样应该可以把那取出来的一堆顶点信息分割开来,然后再通过多面体求教器提供的碰撞时的图元索引primitiveIndex,应该可以得到该图元(面)的所有信息才对。也不知道可否 |
|