Генерация MDLMesh с поддержкой складок?
Мне удалось создать MDLMesh и преобразовать в SCNGeometry для рендеринга в SceneKit. Но я не смог получить поддержку складки в своих сетках или геометрии.
Я просто хотел убедиться, что я делаю правильные шаги, чтобы добавить поддержку складок для моей сетки.
- Создать MDLSubmeshTopology
- Для нового объекта топологии назначьте MDLMeshBuffers для свойств edgeCreaseIndices, edgeCreases и Int для свойств edgeCreaseCount.
- Создайте MDLSubmesh с объектом топологии.
Я не ищу конкретные решения, просто общее представление о том, как можно было бы добавить поддержку складки в сетку. Любой, кто имеет опыт в этом, был бы великолепен.
2 ответа
SceneKit имеет edgeCreasesElement
а также edgeCreasesSource
так же хорошо как vertexCrease
семантический.
Вы можете взглянуть на документацию для SCNGeometry.subdivisionLevel
для дополнительной информации.
Следующее должно работать, предполагая, что вы подготовили данные в виде пар ребер из четырехбайтовых целых чисел, а значения сгиба в виде чисел с плавающей запятой.
geometry.edgeCreasesSource = [SCNGeometrySource geometrySourceWithData:ecsData
semantic:SCNGeometrySourceSemanticEdgeCrease
vectorCount:creaseCount
floatComponents:YES
componentsPerVector:1
bytesPerComponent:4
dataOffset:0
dataStride:sizeof(float)];
geometry.edgeCreasesElement = [SCNGeometryElement geometryElementWithData:eceData
primitiveType:SCNGeometryPrimitiveTypeLine
primitiveCount:creaseCount
bytesPerIndex:4];