在从Blender导出到COLLADA / .dae格式以供在SceneKit中使用时包括纹理

我能够通过使用COLLADA / .dae格式导出在Blender中创build的在SceneKit中使用的网格,但是iOS设备上不会显示任何纹理。

此外,在OS X上预览将不会打开从Blender导出的任何COLLADA文件 – 但侧边栏预览显示网格。 出口需要哪些选项才能完成这项工作?

首先创build一个scnassets文件夹(不需要但是有用)

  1. 在桌面上创build一个文件夹,并给它一个扩展名“.scnassets”

  2. 将您的collada(.dae)文件以及您将要使用的任何纹理放在一起。

  3. 将文件夹拖到您的项目中,并像往常一样保存为副本。

  4. 点击你的scnassets文件夹,你会看到一个checkbox(如果不检查的话)转换为“y”轴。

为场景模型分配纹理

  1. 在xcode中点击项目中的collada(.dae)文件。

  2. 你应该看到你的场景,在左边看到相机,灯光,材料等等。 这是你的场景树。

  3. 打开材料标签,然后点击其中一个材料。

  4. 在检查窗口的右侧,点击蓝色的球状图标(材料检查器),查看该材料的漫reflection,镜面reflection等。

  5. 点击漫reflection选项卡,当它打开时,你应该有一个选项的颜色和你的纹理在你的项目。 在3D程序中select您在模型上使用的纹理。 只要你在你的3D程序中正确的UV解开它们,它们应该在你的场景视图中立即应用。

如果我想在加载我的场景后更改我的材料呢? 很高兴你问!

为此,我们必须使用SCNSceneSource类的entryWithIdentifier方法。 我要在这里使用快捷,因为它太棒了! 开始了…

  1. 获取你的场景(.dae)的URL像这样…

    let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae") 
  2. 现在让我们把这个url使用…

     let source = SCNSceneSource(URL: url, options: nil) 
  3. 点击你的.dae,在场景图下是项目列表,其中之一就是你的几何graphics。 它会有一个发球水壶就在它的意思。 我们将在这里使用它的名字。 假设你的几何的名字是Geo。 像这样使用它…

     let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry 
  4. 现在我们有一个来源于一个名为yourGeomerty的SCNNode。 让我们用UIColor创build一个新材质

     let newMaterial = SCNMaterial() newMaterial.diffuse.contents = UIColor.redColor() 
  5. 最后,我们将用新材料切换旧材料,像这样…

     yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial) 

如果你有一个以上的材料,可以使用它和其他索引。 您也可以使用UIImage类来使用其他纹理而不是颜色。

提示如果要添加或删除scnassets文件夹中的某些内容,请导航到您的项目文件夹,而不是xcode。 这花了我一段时间才弄清楚,所以我想救了大家的麻烦。

Collada文件不embedded纹理,它们只有对它们的引用。 在“预览”中打开时,请确保您的纹理可以从collada文件中获得,并确保在构build应用程序时将纹理包含在应用程序包中。

我必须做的3件事才能使它工作。

  1. 确保图像打包在.blend文件中(这是UV编辑器中的一个选项)

  2. 当您导出时,文件不会自动包含uv或素材。 有一个checkbox在DAE中包含UV和材质。 我也错过了这一点。

  3. 这个你只需要,如果你放在操场上。 dae不太适用,但是我可以在开发者工具中使用他们的scntool来导出dae。 这里是我使用的示例命令行。

./scntool –convert〜/ Documents / Art / BlenderArt / tableandappleUV.dae –format c3d –output〜/ Documents / Table5.dae

注意c3d格式。 用这个,你的操场现在也可以认出这个dae。 (另一个注意事项:如果你想在操场上使用dae,你需要放入游乐场的资源文件夹)

Interesting Posts