为 3D 模型的某些部分添加纹理
Add texture to some part of 3D model
我在实施 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)
如果模型的每个部分都是一个单独的 3D 对象,您可以在 Xcode 中轻松地为其更改纹理。但是如果你有一个单模型(所谓的 one-piece
模型),你只能通过 UV-mapping 改变它的确定部分的纹理(你可以在 3dsMax,Maya,Cinema4D,Blender等)。
以下是 UV 贴图纹理的样子:
考虑一下,Xcode 的 Scene graph
编辑器根本不适合 UV 贴图。在 Xcode 中,您只能应用预制的 UV 贴图纹理。
我在实施 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)
如果模型的每个部分都是一个单独的 3D 对象,您可以在 Xcode 中轻松地为其更改纹理。但是如果你有一个单模型(所谓的 one-piece
模型),你只能通过 UV-mapping 改变它的确定部分的纹理(你可以在 3dsMax,Maya,Cinema4D,Blender等)。
以下是 UV 贴图纹理的样子:
考虑一下,Xcode 的 Scene graph
编辑器根本不适合 UV 贴图。在 Xcode 中,您只能应用预制的 UV 贴图纹理。