参考OSG自带的osgautotransform示例
效果:实现不管视点拉远和拉近,模型始终按模型的像素大小显示。
通过osg::AtuoTransform类实现,代码如下:
osg::AutoTransform* addFixedPixelNode(osg::Node *node){
osg::AutoTransform *at = new osg::AtuoTransform;
at->addChild(node);
at->setAutoRotateMode(osg::AutoTransform::ROTATE_TO_SCREEN);
at->setAutoScaleToScreen(true);
return at;
}
osg::AutoTransform类的两个方法介绍:
setMinimumScale方法,默认值是0.0,如果是0.0时源码中不处理最小缩放;非0.0时,按实际设置的值自动缩放;
setMaximumScale方法,默认值是DBL_MAX,如果是DBL_MAX时源码中不处理最大缩放;非DBL_MAX时,按实际设置的值自动缩放。

该文章介绍了如何利用osg::AutoTransform类来实现无论视点如何变化,模型都能保持其在屏幕上的像素大小不变。通过设置AutoTransform的rotateToScreen和scaleToScreen属性,以及调整minimumScale和maximumScale,可以控制模型的自动旋转和缩放行为,确保在任何距离下都保持一致的视觉效果。
412

被折叠的 条评论
为什么被折叠?



