Я смог создать пользовательскую геометрию в SceneKit, но всегда получаю перевернутые/перевернутые текстуры.Текстуры всегда перевернуты и перевернуты с помощью SceneKit Custom Geometry
Я пробовал пример кода других людей для пользовательской геометрии и все еще получал проблему с переворачиванием/перевернутой текстурой. Любая помощь будет принята с благодарностью!
flipped/inverted texture screenshot
// v1 +----+ v0
// | |
// v2 +----+ v3
let positions: [Float] = [
5.0, 5.0, 0.0,
-5.0, 5.0, 0.0,
-5.0, -5.0, 0.0,
5.0, -5.0, 0.0
]
let normals: [Float] = [
0.0, 0.0, 1.0,
0.0, 0.0, 1.0,
0.0, 0.0, 1.0,
0.0, 0.0, 1.0
]
let tcoords: [Float] = [
1.0, 1.0,
0.0, 1.0,
0.0, 0.0,
1.0, 0.0
]
let positionsData = Data(bytes: positions, count: positions.count * 4)
let positionSource = SCNGeometrySource(data: positionsData,
semantic: SCNGeometrySource.Semantic.vertex,
vectorCount: positions.count/3,
usesFloatComponents: true,
componentsPerVector: 3,
bytesPerComponent: 4,
dataOffset: 0,
dataStride: 12)
let normalsData = Data(bytes: normals, count: normals.count * 4)
let normalSource = SCNGeometrySource(data: normalsData,
semantic: SCNGeometrySource.Semantic.normal,
vectorCount: normals.count/3,
usesFloatComponents: true,
componentsPerVector: 3,
bytesPerComponent: 4,
dataOffset: 0,
dataStride: 12)
let tcoordsData = Data(bytes: tcoords, count: tcoords.count * 4)
let tcoordSource = SCNGeometrySource(data: tcoordsData,
semantic: SCNGeometrySource.Semantic.texcoord,
vectorCount: tcoords.count/2,
usesFloatComponents: true,
componentsPerVector: 2,
bytesPerComponent: 4,
dataOffset: 0,
dataStride: 8)
let index: [UInt8] = [0,1,2,0,2,3]
let indexData = Data(bytes: index, count: index.count)
let indexElement = SCNGeometryElement(data: indexData,
primitiveType: SCNGeometryPrimitiveType.triangles,
primitiveCount: index.count/3,
bytesPerIndex: 1)
let geometry = SCNGeometry(sources: [positionSource, normalSource, tcoordSource],
elements: [indexElement])
OMG, я искал в Интернете и пытался понять это самостоятельно более недели. Я всегда был стражником, я обычно не ставил вопросы. Ваше решение отлично работало! Вы спасатель жизни, я собирался назвать это прекращением разработки моего FBX для инструмента импортера SceneKit, но теперь я могу продолжить! – Phi