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

Posted

技术标签:

【中文标题】为 3D 模型的某些部分添加纹理【英文标题】:Add texture to some part of 3D model 【发布时间】:2020-01-29 21:29:52 【问题描述】:

我在实现 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】:

如果模型的每个部分都是一个单独的 3D 对象,您可以在 Xcode 中轻松更改它的纹理。但如果你有一个单模型(所谓的one-piece 模型),你只能通过UV-mapping 更改它的确定部分的纹理(你可以在 3dsMax、Maya、Cinema4D、Blender 等中进行)。

以下是 UV 映射纹理的外观:

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

【讨论】:

以上是关于为 3D 模型的某些部分添加纹理的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D纹理贴图 ( 纹理 Texture 简介 | 为 3D 模型设置纹理贴图 )

Threejs collada 3D模型在某些角度无法正确渲染

带纹理3D网格的深度生成模型Gen-AI

添加3D模型时,纹理映射消失

部分网格在某些角度 Unity3D 变得不可见

将纹理 3d 模型和纹理从搅拌机导出到 xna 4.0