将纹理添加到3D模型的某些部分

时间:2019-09-30 14:52:03

标签: ios swift scenekit augmented-reality arkit

我在实现ARKit / SceneKit时遇到一个问题。我只想向3D模型的某些部分添加纹理(例如,汽车的3D模型,我想在其中更改车轮和镜子的纹理)。

let dragonScene = SCNScene(named: "art.scnassets/Dragon_Baked_Actions_fbx_6.dae")!
let position = anchor.transform

for childNode in dragonScene.rootNode.childNodes {
    self.dragonNode.addChildNode(childNode)
}

let scale:Float = 0.01
self.dragonNode.scale = SCNVector3(x: scale, y: scale, z: scale)
self.dragonNode.position = SCNVector3(x: position.columns.3.x, y: position.columns.3.y, z: position.columns.3.z)

self.sceneView.scene.rootNode.addChildNode(self.dragonNode)

let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "Fire_A_2.png")
material.isDoubleSided = true
material.diffuse.wrapT = SCNWrapMode.repeat
material.diffuse.wrapS = SCNWrapMode.repeat
material.isDoubleSided = true
self.dragonNode.childNodes.first?.geometry!.replaceMaterial(at: 0, with: material)

1 个答案:

答案 0 :(得分:0)

如果模型的每个部分都是单独的3D对象,则可以在Xcode中轻松更改其纹理。但是,如果您具有单模型(即所谓的one-piece模型),则只能通过UV贴图更改其特定部分的纹理(可以在3dsMax,Maya,Cinema4D,Blender等中完成此操作) )。

以下是UV贴图的外观:

enter image description here

enter image description here

考虑一下,Xcode的Scene graph编辑器根本不适合UV贴图。在Xcode中,您只能应用预制的UV贴图纹理。