我试图从Reality Composer项目的场景中将Entity
加载到代码中。
我直接接触到自动生成的.reality
文件,因为我不希望它自动放置在它检测到的第一个平面上。我遵循了Taking Control of Scene Anchoring文章中的文档。
示例项目名称为Experience
,其中有两个场景。
1.自动生成的Box,它随新创建的项目自动提供。
1.一个六角形导入的USDZ文件。
我用来将两者作为ModelEntity
加载的代码如下:
let url = Bundle.main.url(forResource: "Experience",
withExtension: "reality")!
.appending(path: "SceneName", directoryHint: .notDirectory)
let modelEntity = try! Entity.loadModel(contentsOf: url)
其中SceneName
是Box
或Hexagon
。
两者都无法加载。
如果我使用下面的代码,它们会成功,但它们被加载为Entity
,而不是ModelEntity
:
let modelEntity = try! Entity.load(contentsOf: url)
是否可以将对象加载为ModelEntity
而不是Entity
?到目前为止,我使用的方法是遍历子层次结构,找到第一个ModelEntity
,并将其模型和物理复制到其父对象上(在我的情况下,这是可行的,因为我在场景中只有一个对象)。
编辑:即使我在Scene中命名对象,然后尝试在Scene中找到的“根”Entity
对象上使用findEntity(named:)
方法获取它们,我仍然会得到Entity
而不是ModelEntity
。
1条答案
按热度按时间irtuqstp1#
Reality Composer的
.rcproject
如果您使用Reality Composer的
Experience.rcproject
文件,请尝试以下技术。实现findEntity(named:)
方法,然后使用typecastas!
操作符从RC场景中抓取所需的模型实体。.reality
文件Apple专有的
.reality
可加快上传速度。使用以下方法将.reality
文件加载到3D场景中。记住每个RealityKit的场景都是实体的层次结构。