osgSim.DOFTransform可以模拟模型的运动模糊。DOF指的是Deep of Field(景深)和Motion Blur(动态模糊)。
osgSim.DOFTransform节点允许应用Motion Blur(运动模糊)和Deep of Field(景深)效果到场景中的模型。
#include <osgSim/DOFTransform>
osg::ref_ptr<osgSim::DOFTransform> dofTransform = new osgSim::DOFTransform();
dofTransform->setPivotPoint(osg::Vec3d(0.0f, 0.0f, 0.0f));
dofTransform->setRadius(1.0f);
dofTransform->setFocusDistance(10.0f);
dofTransform->addChild(model);
一个模型通常会被分解为许多三角形,因此一个模型的渲染需要涉及到很多小的三角形。在运动的场景中,这些三角形的位置也是随时间而不断变化的。例如,当一辆车在路上行驶时,它的轮子是转动的,车的身体也是随之而移动的。如果你想对这个场景进行动态模糊处理,目标就是要让整个车身都变得模糊,而轮子是不模糊的。这就需要对每一个三角形做不同的处理。
osgSim.DOFTransform节点同时支持Deep of Field(景深)和Motion Blur(运动模糊)效果。在景深的情况下,与场景物体离相机更远的物体将更加模糊,近处物体的清晰度更高。这就是所谓的"焦距"。在动态模糊的情况下,物体的移动方向将变得模糊。
osgSim.DOFTransform节点的构造函数如下:
DOFTransform();
需要注意的是,使用osgSim.DOFTransform节点需要设置如下属性:
dofTransform->setPivotPoint(osg::Vec3d(0.0f, 0.0f, 0.0f));
dofTransform->setRadius(1.0f);
dofTransform->setFocusDistance(10.0f);
dofTransform->addChild(model);
具体含义如下: