码迷,mamicode.com
首页 > 其他好文 > 详细

三维渲染引擎设计与实践(二)

时间:2017-07-19 01:14:51      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:全局   pen   面向   旋转   pre   mode   osg   控件   空间变换   

4.3重要节点的功能实现

4.3.1空间变换节点

OpenGL中变换矩阵堆栈(Matrix Stacks) 

opengl中对象的控件变换是通过对模型视点(model-view)矩阵堆栈的操作完成的:从初始的全局世界坐标系开始,每当我们在某个空间坐标系下绘制完成一个物体以后,即记录当前的位置、姿态等变换信息(入栈),然后在变换后的坐标系下开始新的绘制,完成后返回到原先的变换位置(出栈),最终返回到最先的全局坐标系中。

方法一 直接设置空间变换矩阵的值;方法二  直接设置变换的平移、旋转和缩放值

SRT(scale、rotate、translate)

osg::Matrix mat = osg::Matrixd::scale(osg::Vec3(sx,sy,sz))

                          * osg::Matrixd::rotate(osg::Quat(angle,axis))

                          * osg::Matrixd::translate(osg::Vec3d(tx,ty,tz));

其中axis为Vec3类型,其他参数为float类型

preMult左乘变换矩阵,postMult右乘变换矩阵

DOFTransfor自由度节点 、AutoTransform自动计算变换并使子节点总是面向屏幕、Bone辅助生成人体骨骼的节点结构

4.3.2 范例 使用空间变换节点 P89

三维渲染引擎设计与实践(二)

标签:全局   pen   面向   旋转   pre   mode   osg   控件   空间变换   

原文地址:http://www.cnblogs.com/hanmolabi/p/7203552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!