gpt4 book ai didi

scenekit - 我有从 SCNScene 创建的 MDLAsset。如何提取 MDLMesh、MDLCamera 和 MDLLights?

转载 作者:行者123 更新时间:2023-12-02 22:05:36 25 4
gpt4 key购买 nike

我正在努力尝试遍历通过加载 SCNScene 文件 (.scn) 创建的 MDLAsset 实例。

我想识别并提取 MDLMesh 以及摄像头和灯光。我认为没有直接的方法可以做到这一点。

例如,我在 MDLAsset 上看到此实例方法:

func childObjects(of objectClass: Swift.AnyClass) -> [MDLObject]

这是我用的吗?

我在 SceneKit 建模器中仔细标记了一些东西。我可以不提及那些理想的吗?当然,我可以访问一本 id/标签字典。我在这里缺少什么?

更新0

由于完全缺乏 Apple 文档,我不得不求助于 Xcode 调试器中的场景图。叹息...

enter image description here

一些事情。我看到 MDLMeshMDLSubmesh 这就是我所追求的。通过什么遍历方式来获取呢?灯光和相机也是如此。

我还需要知道顶点描述符的布局,以便我可以与我的着色器同步。我可以在解析的 SCNScene 上强制执行特定的顶点布局吗?

最佳答案

MDLObject 有一个名称(因为它符合MDLNamed 协议(protocol)),还有一个路径 ,这是其祖先名称的斜杠分隔串联,但不幸的是,这些不包含其 SceneKit 对应项的名称。

如果您知道需要迭代 Assets 的整个层次结构,那么您最好自己显式递归它(首先迭代 Assets 的顶级对象,然后递归枚举它们的子对象),因为重复使用 childObjects(of:) 将最终在整个层次结构上进行内部迭代以收集指定类型的所有对象。

请注意,即使 MDLAssetMDLObjectContainerComponent 符合 NSFastEnumeration,在 Swift 中枚举它们可能会有点痛苦,您可能想要手动扩展它们以符合Sequence,使您的工作更轻松。

关于scenekit - 我有从 SCNScene 创建的 MDLAsset。如何提取 MDLMesh、MDLCamera 和 MDLLights?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40430669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com