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

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设置给代理节点的文件名就是准备加载的各个子节点。这些子节点不会立即呗解析和加入场景,而是在场景运行过程中逐步载入。

原文地址:https://www.cnblogs.com/hanmolabi/p/7208630.html