如何将纹理(图像)添加到 SceneKit 模型,使其均匀覆盖模型(网格)?
How to add texture (image) to SceneKit model so that it covers the model (mesh) uniformly?
刚开始玩弄 SceneKit 和 ARKit。我遇到的一个问题是用图像纹理覆盖 3DModel。正在发生的事情是,在 ARKit 中渲染的 3DModel 部分正确使用了纹理。其他部分不是。
例如,我使用的沙发 3D 模型大致按比例(80 英寸宽 x 36 英寸高 x 36 英寸深)。我将用尺寸为 290 x 290 像素的样本织物图像纹理覆盖网格。
我看到的结果如下:
在我的代码中:
if let matts = child.geometry?.materials {
var matIndex = 0
for mat in matts {
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "fabric-coral")
material.isDoubleSided = true
child.geometry?.replaceMaterial(at: matIndex, with: material)
matIndex += 1
}
}
我的问题是如何获取 UIImage 并让它重复并覆盖网格,而没有它现在正在做的奇怪的方形图案?
在这种情况下,您的 UV 纹理坐标必须扩展到 0.0 - 1.0 范围之外,这很好,但它可以解释您所看到的内容。 SCNMaterialProperty
的默认纹理环绕行为是 CLAMP
,这意味着它采用纹理边缘的像素值并将其用于 'fill in' 模型的其余部分(具有 UV 坐标的部分超出 0.0 - 1.0 范围)。
更改 wrapT
和 wrapS
属性应该可以解决此问题。
. . .
material.diffuse.contents = UIImage(named: "fabric-coral")
material.diffuse.wrapT = SCNWrapMode.repeat
material.diffuse.wrapS = SCNWrapMode.repeat
material.isDoubleSided = true
. . .
SCNWrapMode
documentation 包含一张显示每种模式效果的图表,包括看起来接近您当前观察到的效果的图表。
刚开始玩弄 SceneKit 和 ARKit。我遇到的一个问题是用图像纹理覆盖 3DModel。正在发生的事情是,在 ARKit 中渲染的 3DModel 部分正确使用了纹理。其他部分不是。
例如,我使用的沙发 3D 模型大致按比例(80 英寸宽 x 36 英寸高 x 36 英寸深)。我将用尺寸为 290 x 290 像素的样本织物图像纹理覆盖网格。
我看到的结果如下:
在我的代码中:
if let matts = child.geometry?.materials {
var matIndex = 0
for mat in matts {
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "fabric-coral")
material.isDoubleSided = true
child.geometry?.replaceMaterial(at: matIndex, with: material)
matIndex += 1
}
}
我的问题是如何获取 UIImage 并让它重复并覆盖网格,而没有它现在正在做的奇怪的方形图案?
在这种情况下,您的 UV 纹理坐标必须扩展到 0.0 - 1.0 范围之外,这很好,但它可以解释您所看到的内容。 SCNMaterialProperty
的默认纹理环绕行为是 CLAMP
,这意味着它采用纹理边缘的像素值并将其用于 'fill in' 模型的其余部分(具有 UV 坐标的部分超出 0.0 - 1.0 范围)。
更改 wrapT
和 wrapS
属性应该可以解决此问题。
. . .
material.diffuse.contents = UIImage(named: "fabric-coral")
material.diffuse.wrapT = SCNWrapMode.repeat
material.diffuse.wrapS = SCNWrapMode.repeat
material.isDoubleSided = true
. . .
SCNWrapMode
documentation 包含一张显示每种模式效果的图表,包括看起来接近您当前观察到的效果的图表。