SceneKit & Model I/0 üzerinden .obj 3B modelinde bir .mtl dosyası doku uygulamak çalışıyorum..MTL Dosyası Nasıl Uygulanır .OBJ 3d Model, SceneKit ve Model I/O aracılığıyla
Bunun üzerine bir doku .jpg uygulamaya çalıştığınızda Kodum aşağıda çalışıyor: Ben yüklenmesi gereken Nasıl
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)
}
}
}
: Ben setTextureProperties için aşağıdaki MDMaterial uzantısını kullanıyorum
let url = NSBundle.mainBundle().URLForResource("chair", withExtension: "obj")
let asset = MDLAsset(URL: NSURL(string:url)!)
guard let object = asset.objectAtIndex(0) as? MDLMesh else {
//fatalError("Failed to get mesh from asset.")
return
}
if shouldApplyTexture == true {
var textureFileName = "chair.mtl"
// Create a material from the various textures
let scatteringFunction = MDLScatteringFunction()
let material = MDLMaterial(name: "baseMaterial", scatteringFunction: scatteringFunction)
material.setTextureProperties(textures: [
.BaseColor:textureFileName])
// Apply the texture to every submesh of the asset
for submesh in object.submeshes! {
if let submesh = submesh as? MDLSubmesh {
submesh.material = material
}
}
}
// Wrap the ModelIO object in a SceneKit object
let node = SCNNode(MDLObject: object)
if (scene.rootNode.childNodes.count > 0){
scene.rootNode.enumerateChildNodesUsingBlock { (node, stop) -> Void in
node.removeFromParentNode()
}
}
scene.rootNode.addChildNode(node)
bir .mtl dosyası ve üzerinde dokuya sahip olmak için modelimin üzerine uygulayabilir miyim? SCNMaterial'ın .mtl dosyasından doku verileri aldığını bildirmek için hangi özellikleri belirtmeliyim?
Geç biraz olabilir, ama ben aynı sorunu ben .mtl bilgileri yükleyebilir şeklini karşı karşıyayım
Aynı sorularım var. Sorunu çözdün mü? – HaoDong
Hayır, maalesef değil. Sadece .jpg doku haritalaması ile bir çözüm yollamak zorunda kaldım. –
Sadece .jpg dosyalarıyla nasıl yaptığınıza dair kodu gösterebilir misiniz? – humbleCoder