osg.Projection
是 OpenSceneGraph 中的一个节点类,用于生成投影矩阵。投影矩阵用于将物体坐标系下的坐标变换到剪裁空间(Clip Space),然后进行透视修正(Perspective Division),最后变换到屏幕坐标系。
osg::Object
→ osg::Node
→ osg::Group
→ osg::Transform
→ osg::Projection
Projection()
Projection(const osg::Projection&, const osg::CopyOp&)
osg.Projection
可以接受以下参数:
left
, right
, bottom
, top
: 设置正射投影(Orthographic Projection)的四个平面位置。near
, far
: 设置透视投影(Perspective Projection)的近、远截面距离。fovy
: 设置透视投影的视角,单位为度。以下示例代码展示了如何使用 osg.Projection
。
osg::ref_ptr<osg::Projection> proj = new osg::Projection;
// 创建透视投影矩阵,视角为 60 度
proj->setMatrix(osg::Matrix::perspective(60.0f, 1.0f, 0.1f, 1000.0f));
// 创建节点组并将投影矩阵节点加入
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(proj);
// 添加需要进行投影变换的图形节点
root->addChild(modelNode);
// 创建视图并添加场景图节点
osgViewer::Viewer viewer;
viewer.setSceneData(root);
// 运行视图窗口
viewer.run();