如何从xeogl场景获取Gltf数据?

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

当我在React Web应用程序中的3D查看器中单击网格时,我试图获取特定的Gltf数据,例如网格名称(写在.gltf文件中)。对于查看器,我正在使用xeolabs中的Xeogl,它可以在html-canvas元素中显示gltf文件。但是,我只能从接口中提取的数据是来自Xeogl参数的数据(例如,场景,材质,子项等,请参见图2)。

我似乎无法获得在.gltf文件本身内部找到的任何元数据。

有人知道单击网格时gltf数据如何集成到Xeogl模型中,或者如何从.gltf文件中找到相应的gltf数据吗?预先感谢!

图1: 点击事件

The click event

图2: 我们从具有xeogl数据的事件中获得的结果(左),从.gltf文件中获得的结果(右)

enter image description here

reactjs viewer gltf
1个回答
0
投票

[您需要在加载gltf模型期间定义handleNode回调。请参阅:http://xeogl.org/docs/classes/GLTFModel.html,然后寻找handleNode功能。

在该回调中,您可以定义actions.createObject对象。您在那里定义的任何参数都将合并到xeogl的最终网格对象中,然后您可以稍后使用默认的xeogl工具访问该参数。

例如,加载gltf模型时,我有以下代码:

handleNode: (function () {
                let objectCount = 0
                return function (nodeInfo, actions) {
                  if (nodeInfo.mesh !== undefined) {
                    // Node has a mesh
                    actions.createObject = {
                      id: model.commit.hash + '.' + objectCount++,
                      guid: nodeInfo.name,
                      entityType: 'ifc'
                    }
                  }
                  return true
                }
              })()

查看entityType属性。我用一个固定值填充它,但是它也可以是来自gltf节点的动态信息。它成为xeogl对象的一部分,因此我以后可以访问它。

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