当我在React Web应用程序中的3D查看器中单击网格时,我试图获取特定的Gltf数据,例如网格名称(写在.gltf文件中)。对于查看器,我正在使用xeolabs中的Xeogl,它可以在html-canvas元素中显示gltf文件。但是,我只能从接口中提取的数据是来自Xeogl参数的数据(例如,场景,材质,子项等,请参见图2)。
我似乎无法获得在.gltf文件本身内部找到的任何元数据。
有人知道单击网格时gltf数据如何集成到Xeogl模型中,或者如何从.gltf文件中找到相应的gltf数据吗?预先感谢!
图1: 点击事件
图2: 我们从具有xeogl数据的事件中获得的结果(左),从.gltf文件中获得的结果(右)
[您需要在加载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对象的一部分,因此我以后可以访问它。