osglight例子

本文通过osglight例子深入探讨了osg中的矩阵变换,包括MatrixTransform和PositionAttitudeTransform的差异,以及如何进行平移和旋转。同时,介绍了光源在osg中的实现,包括LightSource和Light的属性,并展示了如何创建光源动画。最后提到了剔除细节裁剪的设置,以确保场景完整显示。
摘要由CSDN通过智能技术生成
先列上两个链接介绍osg中的矩阵变换。
http://www.cnblogs.com/indif/archive/2011/05/13/2045106.html
http://www.cppblog.com/acmiyou/archive/2009/08/24/94292.html
opengl中矩阵是列主序,osg中是行主序。
个人觉得这样从应用上去考虑原因,opengl是最低层低级的软件和硬件的接口,考虑的是高效性
能,osg是高级三维引擎,考虑的是应用和便于理解。opengl中的矩阵使一个16大小的一维数组
,因此在进行矩阵运算的时候只需要指针++就可以到下一个。
而实际的应用中,我们一般理解点是行主序的三个数,
 osg当中:  newpos  =oldpos * T *R    //先执行平移 后执行旋转    (全局坐标系)
因此执行以上的变换,先平移后旋转,很容易理解。
在来说一下MatrixTransform 和PositionAttitudeTransform,一个是矩阵变换一个是位置姿态
,MatrixTransform 是按着矩阵相乘的顺序做变换,而PositionAttitudeTransform是按着SRT的
顺序变换,所以对于PositionAttitudeTransform无论是先设置位置旋转缩放还是后设置结果都
一样。我们从源代码中看个究竟。
对于MatrixTransform 
bool MatrixTransform::computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor*) const
{
  
  if (_referenceFrame==RELATIV
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值