如何通过SceneKit&amp ;;在.OBJ 3d模型上应用.MTL文件型号I / O.

时间:2016-12-09 10:00:20

标签: ios swift 3d scenekit modelio

我试图通过SceneKit&amp ;;在.obj 3d模型上应用.mtl文件纹理。型号I / 0。

当我尝试在其上应用纹理的.jpg时,我的代码工作正常:

extension MDLMaterial {
func setTextureProperties([MDLMaterialSemantic:String]) -> Void {

    for (key,value) in textures {
        var finalURL = NSBundle.mainBundle().URLForResource(value, withExtension: "")
       guard let url = finalURL else {
           // fatalError("Failed to find URL for resource \(value).")
            return
        }

        let property = MDLMaterialProperty(name:fileName!, semantic: key, URL: url)
        self.setProperty(property)
    }
  }
}

我正在为setTextureProperties使用以下MDMaterial扩展:

{{1}}

我应该如何加载.mtl文件并将其应用到我的模型上以使其具有纹理? 我应该声明SCNMaterial的哪些属性用于从.mtl文件中获取纹理数据?

1 个答案:

答案 0 :(得分:0)

可能有点晚了,但我面临同样的问题,我可以加载.mtl信息的方式是通过和场景创建对象,例如,我正在加载{{3} }

let scene = SCNScene(named: "rose.obj")

确保.mtl和jpg包含纹理包。

this model