如何为从 .dae 文件导入的对象生成 ID,在下一次加载时将是相同的?

Posted

技术标签:

【中文标题】如何为从 .dae 文件导入的对象生成 ID,在下一次加载时将是相同的?【英文标题】:How do I generate IDs for objects imported from a .dae-file that will be the same the next load? 【发布时间】:2017-12-05 23:22:42 【问题描述】:

我正在围绕 THREE.js 构建一个 CMS,我需要通过一些在下次加载文件时不会更改的属性来跟踪对象。我正在使用从 Sketchup 格式 .skp 导出的 DAE 文件。似乎在每次加载时都会生成属性“id”和“uuid”。有时“名称”属性的格式为“group_41”或“instance_58”,但它通常是空的,这使得它不可靠。

如果有人有其他解决方案,我不会锁定使用 .DAE,但它非常受欢迎,因为从 Sketchup 导出比通过 Blender 创建 JSON 格式更容易(根据我的经验,这也需要很多调整和设置以正常工作)。

有没有人有这方面的经验,或者在 Sketchup 或其他第三方插件/软件中创建持久 ID 的解决方法?

【问题讨论】:

【参考方案1】:

看起来我找到了一个简单的解决方案:将面/“边”组合在一起,这样它们就得到了“group_nn”-name 格式。从那里您可以选择要使用的该组的子网格。请注意,各个面孔没有任何名称,但我们仍然可以通过它们的父级找到它们。要在 SketchUp 中分组,这对我有用:

【讨论】:

【参考方案2】:

在 SketchUp 2017 中,Entities 有一个 persistent_id,它不会在会话之间的 SketchUp 模型中发生变化。

您可以编写一个 SketchUp Ruby 脚本将所有组重命名为它们的 persistent_id,然后您可以从 SketchUp 模型跟踪实体到导出文件。

http://ruby.sketchup.com/Sketchup/Entity.html#persistent_id-instance_method

【讨论】:

谢谢,我去看看!

以上是关于如何为从 .dae 文件导入的对象生成 ID,在下一次加载时将是相同的?的主要内容,如果未能解决你的问题,请参考以下文章

如何将复杂的 .dae 模型导入到 SceneKit?

Firebase:如何为键生成唯一的数字 ID?

如何为open id connect生成一个众所周知的配置文件?

从 Collada (.dae) 文件(在 Maya 中创建)导入的 SceneKit 键控混合形状动画未播放

如何为数组中的嵌套数组中的多个对象生成连续索引

我应该如何为测试数据生成具有唯一 id3 数据的 mp3 文件?