osg中模型零点的调整方法

osg中加载一个模型,模型自身的零点已经在3DMAX或者MAYA中设置好了,在模型自身,也有可能不在自身(距离一定位置的一个点),一般加载一个地形,零点基本都在模型的左下角,加入到osg场景中,也就是这个点将和场景的零点重合,注意:OSG是左手坐标系(向右是X正方向,屏幕向里是Y正方向,向上是Z正方向)。

但是,如果是OSG自绘的模型呢,它的零点在什么地方,比如:

osg::ShapeDrawable(new osg::Cone(osg::Vec3(nPos), radius, height), hints);

绘制一个圆锥体,它的零点其实就在模型的重心的位置(有的人可能会以为在那个尖尖上,或者在下面底座圆盘的中心)。

好了,现在知道了零点在模型的重心的位置,也就是底部向上1/4的地方。

现在问题来了:“旋转”
模型会绕着自身的零点旋转,因此你会看到这个圆锥体在手舞足蹈的旋转,就像一个人在活动腰部一样,但是如果我们想让他围绕顶尖旋转,要怎么实现呢?

1.在场景中无论你怎么调整位置,都是不可能实现的,因为模型和自身的零点是一个整体
2.其实也很简单,就是在创建Cone的时候的第一个参数const osg::Vec3& center,这个参数其实就相当于是在设置模型的零点,只不过是通过另一种方式。你可以想象是按住模型的零点不懂,然后去移动模型,比如沿X轴正向移动距离10,最后模型的零点就在原来1/4的地方向负方向移动10的地方,其实是相对设置零点。
以上就是它设置零点的方法,没有贴代码,因为比较简单,大家可以试试就清楚了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值