我正在使用SceneKit构建游戏,我无法决定将.dae模型存储在.scnassets文件夹中并加载.dae模型或使用Vertices / Indecies / Normals在运行时以编程方式创建模型。
如果是性能,是否值得使用“顶点/缺点/法线”使用SCNGeometrySource和SCNGeometryElement手动创建SCNGeometry?或者只使用SCNScene加载模型(命名为“Scenes.scnassets / ModelName.scn”)?
答案 0 :(得分:1)
您提到了三种方法:DAE文件,SCN文件和以编程方式生成的几何体。 SCN和DAE不是一回事。 DAE是一种XML格式(compressed, for iOS targets, using Apple's internal scntool)。 SCN是归档的NSObject
。
使用SceneKit场景文档(.SCN文件)可以获得最快的性能。
如果您的模型已经在3D工具中构建,您可以导入DAE文件并使用Xcode的场景编辑器(how to convert .dae to .scn files in SceneKit)将其保存为SCN。您可以使用NSSecureCoding从SCNScene实例以编程方式创建此文件。
如果必须以编程方式生成场景,请使用SCNGeometrySource
(或SCNGeometry
)。但是,如果您可以在应用程序发布之前构建它,则应编写辅助程序来创建场景,然后使用NSSecureCoding进行存档。然后,您将拥有一个可以嵌入最终产品的.SCN文件。
查看Model I / O框架以获取更多文件格式选项(特别是MDLAsset
)。
答案 1 :(得分:1)
我同意Hal,使用SceneKit的原生文件格式最好(.scn)。
我只想与您分享一些关于从Collada文件导入模型的问题或使用顶点/索引/法线以编程方式创建它们的一些见解。
根据我的个人测试,我注意到Collada文件使用唯一顶点导入几何体,而以编程方式导入几何体可以使用共享顶点。
作为一个例子,我使用共享顶点导出了一个模型,该顶点大约是70K顶点。当我使用Collada(唯一顶点)导入相同的模型时,顶点数超过了200K。
祝你的SceneKit游戏好运!