【问题标题】:SceneKit - Remove stitching line in edges bordersSceneKit - 删除边缘边框中的缝合线
【发布时间】:2016-12-22 01:29:55
【问题描述】:

我正在立方体上显示纹理(请参阅SceneKit - Map cube texture to box) 现在一切正常,但结果显示我在此处勾勒的一些立方体面之间有一条浅色缝合线(您在立方体内):

知道如何摆脱它吗?输入纹理看起来像

所以输入中有一些不连续性。我正在使用一个自定义的 SceneKit 几何图形,该几何图形除了将此纹理映射到一个立方体之外没有更多的作用。您可以找到上面提到的相关代码:https://stackoverflow.com/a/38961244/2054629

【问题讨论】:

    标签: ios opengl-es 3d scenekit image-stitching


    【解决方案1】:

    作为一个 hacky 解决方案,我将立方体的几何形状更改为稍微不是立方体,更像

    这样边缘就会消失(假设相机在里面)。结果,纹理被裁剪了一点,但这不太明显。

    我曾经将 3 x 8 个顶点的位置定义为:

    let _positions = [
      SCNVector3(x:-halfSide, y:-halfSide, z:  halfSide),
      SCNVector3(x: halfSide, y:-halfSide, z:  halfSide),
      SCNVector3(x:-halfSide, y:-halfSide, z: -halfSide),
      SCNVector3(x: halfSide, y:-halfSide, z: -halfSide),
      SCNVector3(x:-halfSide, y: halfSide, z:  halfSide),
      SCNVector3(x: halfSide, y: halfSide, z:  halfSide),
      SCNVector3(x:-halfSide, y: halfSide, z: -halfSide),
      SCNVector3(x: halfSide, y: halfSide, z: -halfSide),
    ]
    let positions = _positions + _positions + _positions
    

    现在我将最后一行替换为:

    let X = 0
    let Y = 8
    let Z = 16
    func killEdgeStitching(positions: [SCNVector3], axis: Int) -> [SCNVector3] {
      var res = [SCNVector3]()
      let delta = Float(0.99)
      for pos in positions {
          var newPosition = SCNVector3(x: pos.x, y: pos.y, z: pos.z)
          switch axis {
          case X:
              newPosition.x *= delta
          case Y:
              newPosition.y *= delta
          default:
              newPosition.z *= delta
          }
          res.append(newPosition)
      }
      return res
    }
    let positions = killEdgeStitching(positions: _positions, axis: X) +
      killEdgeStitching(positions: _positions, axis: Y) +
      killEdgeStitching(positions: _positions, axis: Z)
    

    我会把它留在那里,但希望有人能给出真正的答案!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多