作爲一個哈克解決方案,我已經改變了立方體的形狀稍微不立方米,而更像
使邊緣消失(假設相機在裏面)。紋理被裁剪了一點,但是這不太明顯。
我用來定義3×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)
我會離開,在那裏,但希望有人會有一個真正的答案!