gpt4 book ai didi

ios - 如何将纹理(图像)添加到 SceneKit 模型,使其均匀覆盖模型(网格)?

转载 作者:搜寻专家 更新时间:2023-10-31 22:25:58 25 4
gpt4 key购买 nike

刚开始玩弄 SceneKit 和 ARKit。我遇到的一个问题是用图像纹理覆盖 3DModel。正在发生的事情是,在 ARKit 中渲染的 3DModel 部分正确使用了纹理。其他部分不是。

例如,我使用的沙发 3D 模型大致按比例(80 英寸宽 x 36 英寸高 x 36 英寸深)。我将用尺寸为 290 x 290 像素的样本织物图像纹理覆盖网格。

我看到的结果如下:

enter image description here

在我的代码中:

        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,这意味着它采用纹理边缘的像素值并使用它来“填充”模型的其余部分(UV 坐标在 0.0 - 1.0 范围之外的部分)。

更改 wrapTwrapS 属性应该可以解决这个问题。

. . .
material.diffuse.contents = UIImage(named: "fabric-coral")
material.diffuse.wrapT = SCNWrapMode.repeat
material.diffuse.wrapS = SCNWrapMode.repeat
material.isDoubleSided = true
. . .

SCNWrapMode documentation包括一个显示每种模式效果的图,包括看起来接近您当前观察到的效果的图。

关于ios - 如何将纹理(图像)添加到 SceneKit 模型,使其均匀覆盖模型(网格)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com