3D引擎数据结构与glTF(2): Scene Graph

本文详细介绍了Scene Graph在图形学、游戏引擎(Unity3D和Unreal Engine 4)中的应用,并结合glTF标准探讨了其场景图数据结构,包括nodes、scenes和transform等关键要素,帮助理解3D场景的组织和渲染原理。
摘要由CSDN通过智能技术生成

图形学中的 Scene Graph

Scene Graph 中文常翻译为“场景图”,是一种常用的场景对象组织方式。我们把场景中的对象,按照一定的规则(通常是空间关系)组织成一棵树,树上的每个节点代表场景中的一个对象。每个节点都可以有零到多个子节点,但只有一个父节点。 每个节点都包含一个“空间的定义”,通过一个 4x4 的矩阵表示,也可以通过位置、旋转、缩放三个分量来表示,但最终都要转换成4x4的矩阵。

每个节点所定义的空间就叫做“Local Space”,每个节点的空间都是定义在父节点的 Local Space 之中的。在渲染某个节点中的 Mesh 模型的时候,需要计算 Model Matrix,也就是需要把顶点从 Local Space 转换到 World Space 的矩阵,这时候就要使用矩阵乘法来计算:

    nodeA.modelMatrix = nodeA.parent.modelMatrix * nodeA.localMatrix  

请注意这里请求了父节点的 Model Matrix:”nodeA.parent.modelMatrix”,也就是递归的去计算,直到 Scene Graph 的根节点。通常在代码实现中,会把这个 Model Matrix 进行 Cache 。

Scene Graph 的节点层次结构组成的空间关系就像我们高中物理学的相对运动。例如你在一列飞驰的火车上行走,那么你的位置、运动都是在“火车”这个空间中的;而你最终在地球上的运动,要根据当前火车的运动来计算决定。

游戏引擎中的 Scene Grap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值