首页 > 代码库 > 三维渲染引擎设计与实践(三)
三维渲染引擎设计与实践(三)
4.3.2 空间变换节点
世界坐标系是系统的绝对坐标系,在没有建立用户坐标系之前,所有的坐标都是以该坐标的原点来确定各自的位置的。
OSG中的坐标系是X正向向右,Y轴正向向里,Z轴正向向上
OpenGL的坐标系是X正向向右,Y轴正向向上,Z轴正向向外
Transform公有继承Group类,AutoTransform公有继承Transform
SRT 比例 scale 旋转rotate 平移transfom
4.3.3开关节点Switch
作用是:在场景运行的某一时刻,它的某些子节点被隐藏和忽略,而另一些节点显示并执行相应功能。
节点树的遍历方法:当需要遍历一个Group组节点的所有子节点时,通过调用Node::traverse函数,执行子节点的accept函数加载访问器,并进而使用NodeVisitor::traverse函数继续推进,执行子节点的ascend函数或者traverse函数。
void Node::accept(NodeVistor& nv)
{ nv.apply(*this) ; }
判断某个子节点对应的开关值,当开关为false时,不执行accept函数,因此不被遍历。
4.3.4 范例 使用开关节点 P92
http://blog.csdn.net/u011310341/article/details/51226804
4.3.5 细节层次节点(LOD) LayerOfDetail
实现方法是:在不影响渲染外观的前提下,根据场景对象与观察者的距离,从多个预置方案中选择一种更为简单的方式来表达要渲染的物体,减轻系统绘制场景的负担。
LOD的各个子节点有相同的中心坐标,以保证它们表达的是同一个物体的细节层次。
4.3.6 范例 使用LOD节点
4.3.7 范例 节点代理 ProxyNode
代理节点是一种用于动态加载其他模型节点的节点类型,使用setFileName设置给代理节点的文件名就是准备加载的各个子节点。这些子节点不会立即呗解析和加入场景,而是在场景运行过程中逐步载入。
三维渲染引擎设计与实践(三)