은 내가 다음 코드를 사용하여 사용자 정의 SCNGeometry을 만든 거라고 :scenekit, ios에서 사용자 정의 지오메트리에 일반 맵 텍스처를 적용하는 방법?
let data = NSData(bytes: position, length: MemoryLayout<float3>.size * self.objectMesh.pointCount)
let vertexSource = SCNGeometrySource(data: data as Data,
semantic: .vertex,
vectorCount: self.objectMesh.pointCount,
usesFloatComponents: true,
componentsPerVector: 3,
bytesPerComponent: MemoryLayout<Float32>.size,
dataOffset: 0,
dataStride: MemoryLayout<float3>.size)
let data2 = NSData(bytes: uvs, length: MemoryLayout<float2>.size * self.objectMesh.pointCount)
let tSource = SCNGeometrySource(data: data2 as Data,
semantic: .texcoord,
vectorCount: self.objectMesh.pointCount,
usesFloatComponents: true,
componentsPerVector: 2,
bytesPerComponent: MemoryLayout<Float32>.size,
dataOffset: 0,
dataStride: MemoryLayout<float2>.stride)
let indexData = NSData(bytes: faces, length: MemoryLayout<Int32>.size * self.objectMesh.faceCount)
let element = SCNGeometryElement(
data: indexData as Data,
primitiveType: .triangles,
primitiveCount: self.objectMesh.faceCount/3,
bytesPerIndex: MemoryLayout<Int32>.size)
let Geometry = SCNGeometry(sources: [vertexSource, tSource], elements: [element])
Geometry.firstMaterial?.diffuse.contents = self.MainTexture
Geometry.firstMaterial?.normal.contents = self.NormalTexture
지금 문제가 : 텍스처가 표시되지만 일반 텍스처 맵은 지오메트리에 적용되지 않습니다. 버텍스마다 법선을 사용하지 않을 것입니다. 이 텍스쳐와 normaltexture는 예를 들어 SCNPlane geometry에 적용될 때 작동합니다. 하지만 이제는 내 사용자 정의 지오메트리에 일반 맵 텍스처를 사용하는 방법을 사용하지 않습니다.