В качестве хакерского решения я изменил геометрию куба, чтобы он был немного не кубическим и больше напоминал ![введите описание изображения здесь](https://i.stack.imgur.com/W4Klq.jpg)
Чтобы края исчезли (при условии, что камера внутри). В результате текстура немного обрезается, но это гораздо менее заметно.
Я обычно определял положение вершин 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)
Я оставлю это там, но, надеюсь, у кого-то будет реальный ответ!
person
Guig
schedule
15.08.2016