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

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

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

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

示例

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

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

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

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

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

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

 缩放操作:

          如下图所示:

 平移操作:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值