在SCNView上添加3d模型

时间:2015-05-14 07:46:31

标签: 3d scenekit collada

我已经开始使用SceneKit构建一个超级游戏:)并且有一件事我无法决定。

所以...我使用第三方工具创建一个3d模型,然后将其导出到.dae文件中,之后我在SCNView上添加了.dae文件。

例如,假设我需要在SCNView上添加2个3D模型。我看到有两种方法可以在SCNView上添加.dae文件中的3d模型:

1 - 创建一个包含两个模型的.dae文件,然后在SCNView上添加一个场景

2 - 在单独的.dae文件中导出每个3d模型,在SCNView上添加两个.dae文件

我认为两种方式都运行良好,但我想知道是否有最佳实践可以在SCNView上添加.dae文件中的几个3d模型。

2 个答案:

答案 0 :(得分:0)

根据您拥有的型号种类,两者都是不错的选择。

如果您有很多类别的模型,例如角色,环境,道具等,我会分别找一个文件。它不是最优化的方式,但它可以在创建和编辑资源时节省大量时间。

如果您使用2D中的单个Spritesheet,例如道路的一部分,建筑物的集合,过山车轨道;我会创建一个文件并从中查询我需要的节点。

更多的是它对你来说有多么方便,因为加载和准备场景后无关紧要。

答案 1 :(得分:0)

我尝试限制.dae文件的数量,但我仍然使用多个文件。

如果您计划将任何纹理与.dae文件一起导出,可能最好尝试限制.dae文件的数量,以便更简单地维护(和重用)任何用作纹理的图像文件。我会使用.dae文件

我将一个.dae文件用于“静态”世界,当我读到这个时,我会创建一个.flattenedClone()进行优化。

然后我从其他.dae文件中选择动态对象,如: (仅限示例代码)

let importedDae = SCNScene(named: "3d.scnassets/units.dae")!
let warrior = importedDae.rootNode.childNodeWithName(
    "Warrior", recursively: true)!.clone() as! SCNNode
myRealGameScene.rootNode.addChildNode(warrior)

我个人更喜欢创建和控制我自己的SCNScene对象,并使用导入的.dae文件更像库,每个文件对相同类型的对象进行分组。