osg怎么获取Geometry的点
时间: 2023-07-23 17:03:48 浏览: 90
osg节点拾取
5星 · 资源好评率100%
在 OpenSceneGraph 中,可以通过osg::Geometry类的getVertexArray()函数获取Geometry的点。该函数返回一个osg::Vec3Array类型的指针,其中存储了Geometry的所有点坐标。例如,下面的代码展示了如何获取Geometry的点坐标:
```
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
// 添加顶点数据
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;
vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
geometry->setVertexArray(vertices);
// 获取顶点数据
osg::Vec3Array* vertexArray = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray());
if (vertexArray)
{
// 遍历顶点数据
for (unsigned int i = 0; i < vertexArray->size(); ++i)
{
osg::Vec3 vertex = vertexArray->at(i);
std::cout << "vertex[" << i << "]: (" << vertex.x() << ", " << vertex.y() << ", " << vertex.z() << ")" << std::endl;
}
}
```
在上面的代码中,创建了一个Geometry对象,并添加了三个点坐标。然后通过getVertexArray()函数获取Geometry的点坐标,遍历输出每个点的坐标信息。
阅读全文