为什么要对非绑定模型使用节点结构?

问题描述 投票:0回答:1

我已经在Vulkan工作了几个星期。我对模型的数据结构有疑问:我正在使用Assimp加载fbx和dae文件。然后,加载的模型通常包含几个节点(RootNode及其子节点)。我应该在非绑定模型上保留此结构吗?还是可以通过与节点的偏移矩阵相乘(然后在程序中删除节点结构)在第一次加载时将所有网格(或更确切地说,它们的顶点)转换为世界空间?因为我从未见过有人在加载后对节点(及其网格)进行变形(如果未装配模型)。还是有其他原因使我保持这种结构?

data-structures graphics mesh vulkan
1个回答
0
投票

Assimp还提供标志aiProcess_PreTransformVertices以展平转换层次结构。当然,您也可以手动进行操作,方法是使用aiNode::mTransformation矩阵,然后按正确的顺序将它们相乘。

这些方法(尤其是带有标志的方法)的潜在问题可能是子网格的材料特性可能会丢失。 Assimp不在乎子网格是否具有不同的材质属性,而只是将它们合并。某些子网格可能会丢失材料属性。这也适用于其他属性,例如子网格名称。如果合并了子网格,则仅保留一个(任意选择?)子网格名称。

即如果要使用子网格的特定属性(名称,材料属性),则需要防止扁平化节点层次。

如果您只关心w.r.t.将它们转换为世界空间:如果您永远不会对对象空间中的节点做任何事情(例如,相对于父节点转换子节点),那么我看不出不对其进行转换的理由进入世界空间。

© www.soinside.com 2019 - 2024. All rights reserved.