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

时间:2014-07-30 08:10:58

标签: ios blender collada scenekit

我可以使用COLLADA / .dae格式导出在Blender中创建的网格,以便在SceneKit中使用 - 但iOS设备上不会显示任何纹理。

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

3 个答案:

答案 0 :(得分:24)

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

  1. 在桌面上创建一个文件夹,并为其添加" .scnassets"

  2. 的扩展名
  3. 将您的collada(.dae)文件与您将在其中使用的任何纹理放在一起。

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

  5. 点击你的scnassets文件夹,你会看到一个复选框(如果没有检查)转换为" y"向上轴。

  6. 为场景模型指定纹理

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

    2. 您应该看到您的场景,左侧是相机,灯光,材料等的列表。这是你的场景树。

    3. 打开材料标签,然后单击您的某个材料。

    4. 在检查窗口的右侧,单击蓝色球形图标(材料检查器)以查看该材质的漫反射,镜面反射等。

    5. 单击漫反射选项卡,当它打开时,您应该在项目中选择颜色和纹理。在3d程序中选择模型上使用的纹理。只要您在3D程序中正确地展开UV,它们就应该立即应用于场景视图中。

    6. 如果我想在加载场景后更改素材怎么办?很高兴你问过!

      要做到这一点,我们必须使用SCNSceneSource类的entryWithIdentifier方法。我将在这里使用swift因为它太棒了!我们走了......

      1. 获取场景的网址(.dae)......

        let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
        
      2. 现在让我们使用该网址...

        let source = SCNSceneSource(URL: url, options: nil)
        
      3. 单击您的.dae,在“场景图”下,列出项目,其中一项是几何体。它的右边会有一个发球水壶,表示如此。我们将在这里使用它的名字。假设您的几何图形名称为Geo。像这样使用它......

        let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
        
      4. 现在我们有一个源代码连接到名为yourGeomerty的SCNNode。让我们创建一个像UIColor一样的新材料...

        let newMaterial = SCNMaterial()
        newMaterial.diffuse.contents = UIColor.redColor()
        
      5. 最后,我们将使用newMaterial切换旧材料,如此......

        yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
        
      6. 如果您有多种材料,请使用它和其他索引。您还可以使用UIImage类来使用其他纹理而不是颜色。

        提示 如果要添加或删除scnassets文件夹中的某些内容,请导航到项目文件夹以执行此操作而不是xcode。我花了一段时间才弄清楚这么想我会救每个人的麻烦。

答案 1 :(得分:4)

Collada文件不嵌入纹理,它们只引用它们。当您在预览中打开它时,请确保您的纹理可以从collada文件中访问,并确保在构建应用程序时在应用程序包中包含纹理。

答案 2 :(得分:4)

我必须做的三件事才能让它发挥作用。

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

  2. 导出时,文件不会自动包含uv或材料。有一个复选框,可以在DAE中包含UV和材质。在做这件事时我也错过了。

  3. 如果你放在游乐场,你只需要这个。该dae并不适用,但我能够在开发人员工具中使用他们的scntool来导出dae。这是我使用的示例命令行。

  4. ./ scntool --convert~ / Documents / Art / BlenderArt / tableandappleUV.dae --format c3d --output~ / Documents / Table5.dae

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