Graphics glTF:我们如何存储基本几何图元?

Graphics glTF:我们如何存储基本几何图元?,graphics,3d,gltf,Graphics,3d,Gltf,我是glTF的新手,我会有一个非常基本的问题,也许很幼稚。对不起,谢谢你的理解和帮助 我们有一个C++应用程序,在这里处理几何基本实体,如框、锥、柱等。 用于可视化我们当前使用的几何图元,这些图元具有相应的几何图形:长方体、圆锥体等 我们现在也想添加一个glTF导出器,我已经开始探索glTF规范。 我必须说,在官方文档和网络上,我找不到glTF对基本几何图形的任何支持 因此,我的问题是: glTF没有盒子或圆锥体的概念,这是真的吗?还是我错过了一些明显的东西 如果1)的答案为“否”,是否有针对

我是glTF的新手,我会有一个非常基本的问题,也许很幼稚。对不起,谢谢你的理解和帮助

我们有一个C++应用程序,在这里处理几何基本实体,如框、锥、柱等。

用于可视化我们当前使用的几何图元,这些图元具有相应的几何图形:长方体、圆锥体等

我们现在也想添加一个glTF导出器,我已经开始探索glTF规范。 我必须说,在官方文档和网络上,我找不到glTF对基本几何图形的任何支持

因此,我的问题是:

  • glTF没有盒子或圆锥体的概念,这是真的吗?还是我错过了一些明显的东西

  • 如果1)的答案为“否”,是否有针对基本形状的测试/支持/建议实施?我只找到了一些“示例”形状;但我找不到任何基本形状的实现集合。再说一遍,我错过什么了吗

  • 关于如何在glTF中实现基本几何图形,是否有任何最佳实践或文档


  • 简而言之,您是正确的,glTF目前不直接将基本几何形状存储为长方体、圆锥体、圆柱体等。该格式旨在作为运行时交付格式,而不是资产交换格式

    因此,glTF内的内部数据结构被设计为模拟通常使用图形API(如OpenGL、WebGL等)输入GPU的原始数据。glTF数据的整个块通常可以从磁盘或网络中提取出来,并直接交给图形API进行渲染,只需最少的预处理

    这意味着您的所有基本形状必须按照GPU期望的方式到达:三角化。即使是一个简单的长方体也由12个三角形组成,由于边不共享法向量,法向量“顶点属性”不同,因此长方体不同边的三角形不共享顶点(同样,因为GPU不接受将其作为原始输入)。这样做的好处是WebGL客户端在收到glTF时不必费劲思考该做什么,它只需开始将数据填充到图形管道中,就可以让事情进展起来

    对于更广泛的概述,一直流行的图表被广泛认为是一个很好的起点,而


    非常感谢您的回答,@emackey!glTF不存储形状/资产是有道理的。但是,我是否正确理解,基本形状的glTF表示没有库或集合?我的意思是,在“示例模型”回购协议中,我可以找到一个盒子实现,但没有其他基本形状。这是故意的还是还没有人把它们集中在一个地方?所以每个人都“重新发明”了基本形状的实现?(真正的问题,没有双关语)。再次非常感谢你的帮助!!目前最好的方法是运行并使用它的。按“x”删除默认立方体,然后在菜单中选择“添加->网格->(形状)”。使用编辑->首选项->加载项获取更多形状,搜索“添加网格:额外对象”,并使用复选框启用它。添加->网格菜单将有更多的形状。啊!非常好的建议!!这样,我想我可以把所有的“标准”基本形状/网格变成适当的GLTF格式,然后我可以在我的C++输出工具中使用这些定义。再次感谢您的帮助!!:)