OSG读取模型时调整尺寸,朝向,中心点

       在三维场景中加载不同建模工具导出的三维模型时,经常会遇到因为单位不一致或坐标系定义不一致导致的模型尺寸错误或中心点偏移等影响模型正常显示的问题,这种问题最好的解决办法是在原始建模工具里边选择正确的导出参数(单位/坐标系朝向等)重新导出新的正确的模型,从根源上解决问题,但是有时候找不到原始的模型工程文件或者手边没有趁手的建模工具可以用,需要在OSG内进行处理,一般就是创建一级osg::MatrixTransform,将加载的模型放置在该矩阵节点下,通过添加矩阵变换实现模型的调整(大小/朝向/中心点等),通过代码的方式可以很方便的实现这样的调整,然而,有时候我们在运行环境下,可能也不具备修改代码并重新编译的条件,那么此时应该怎么办呢?

       所幸,osgDB模块通过插件的形式帮我们提供了三种基本操作:平移(trans)、旋转(rot)、缩放(scale),我们只需要修改模型路径(当然,你代码里边硬编码的模型路径就无能为力了,建议加载的模型路径通过文件进行配置,这样后期修改替换也比较方便...),在模型原始路径的基础上添加相应的矩阵变换操作即可。

模型变换操作说明
序号 操作 参数 说明
1 平移 .(x, y, z).trans xyz分别控制xyz三个轴的偏移
2 旋转 .(xRot, yRot, zRot).rot 旋转角度单位是度(°)
3 缩放 .(xScale, yScale, zScale).scale 一般来说模型均为均匀缩放,因此三个值一般相等

示例

       假设我们要加载的原始模型路径是:【D://cow.osg】,通过osgViewer查看模型:

       命令行如下:【osgviewer.exe  D://cow.osg

OSG读取模型时调整尺寸,朝向,中心点_第1张图片

       正常加载该模型效果如下图:

OSG读取模型时调整尺寸,朝向,中心点_第2张图片

        在模型路径后边添加变换操作,如将模型沿X轴逆时针旋转90度,

        命令行如下:【osgviewer.exe  D://cow.osg.(90,0,0).rot】,

OSG读取模型时调整尺寸,朝向,中心点_第3张图片

         加载变换后的模型,效果如下图所示:

OSG读取模型时调整尺寸,朝向,中心点_第4张图片

 缩放操作:

          如下图所示:

OSG读取模型时调整尺寸,朝向,中心点_第5张图片

OSG读取模型时调整尺寸,朝向,中心点_第6张图片

 平移操作:

       与以上操作类似,只是后缀改成【.trans】

你可能感兴趣的:(OSG相关,3d)