osg.TriangleMesh
osg.TriangleMesh
是 OpenSceneGraph
中的一个类,表示一个三角形网格的几何图形。
osg::Object
:对象基类
osg::Drawable
:可绘制对象基类
osg::Geometry
:几何图形
osg::TriangleMesh
:三角形网格TriangleMesh()
创建一个空的三角形网格几何体。osg.TriangleMesh
中常用的成员函数如下:
void addPrimitiveSet(osg::PrimitiveSet* ps)
向三角形网格几何体中添加基本图元(primitive set),比如三角形、线段等。参数 ps
为基本图元的指针。
osg::Vec3Array* getVertexArray()
获取三角形网格几何体中的顶点数组。
返回值为 osg::Vec3Array
指针,表示由 osg::Vec3
组成的数组。
osg::Vec3Array* getNormalArray()
获取三角形网格几何体中的法线数组。
返回值为 osg::Vec3Array
指针,表示由 osg::Vec3
组成的数组。
osg::Vec4Array* getColorArray()
获取三角形网格几何体中的颜色数组。
返回值为 osg::Vec4Array
指针,表示由 osg::Vec4
组成的数组。
osg::TriangleMesh* triangleMesh = new osg::TriangleMesh;
// 设置顶点数组
osg::Vec3Array* vertices = new osg::Vec3Array;
vertices->push_back(osg::Vec3( 0.0, 0.0, 0.0 ));
vertices->push_back(osg::Vec3( 1.0, 0.0, 0.0 ));
vertices->push_back(osg::Vec3( 1.0, 0.0, 1.0 ));
vertices->push_back(osg::Vec3( 0.0, 0.0, 1.0 ));
triangleMesh->setVertexArray(vertices);
// 设置基本图元(这里是一个由四个三角形组成的矩形)
osg::DrawElementsUInt* tris1 = new osg::DrawElementsUInt(GL_TRIANGLES, 3);
tris1->push_back(0); tris1->push_back(1); tris1->push_back(2);
osg::DrawElementsUInt* tris2 = new osg::DrawElementsUInt(GL_TRIANGLES, 3);
tris2->push_back(0); tris2->push_back(2); tris2->push_back(3);
osg::DrawElementsUInt* tris3 = new osg::DrawElementsUInt(GL_TRIANGLES, 3);
tris3->push_back(1); tris3->push_back(0); tris3->push_back(3);
osg::DrawElementsUInt* tris4 = new osg::DrawElementsUInt(GL_TRIANGLES, 3);
tris4->push_back(1); tris4->push_back(3); tris4->push_back(2);
triangleMesh->addPrimitiveSet(tris1);
triangleMesh->addPrimitiveSet(tris2);
triangleMesh->addPrimitiveSet(tris3);
triangleMesh->addPrimitiveSet(tris4);