生成支持折痕的 MDLMesh?
Generating MDLMesh with crease support?
我已经能够创建一个 MDLMesh 并转换为 SCNGeometry 以在 SceneKit 中渲染。但是我无法在我的网格或几何体中获得折痕支持。
我只是想验证我是否采取了正确的步骤来为我的网格添加折痕支持。
- 创建 MDLSubmeshTopology
- 对于新拓扑对象,将 MDLMeshBuffers 分配给 edgeCreaseIndices、edgeCreases 并将 Int 分配给 edgeCreaseCount 属性。
- 使用拓扑对象创建 MDLSubmesh。
我不是在寻找具体的解决方案,只是想知道如何为网格添加折痕支持。任何有这方面经验的人都会很棒。
SceneKit 具有 edgeCreasesElement
and edgeCreasesSource
as well as the 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];
我已经能够创建一个 MDLMesh 并转换为 SCNGeometry 以在 SceneKit 中渲染。但是我无法在我的网格或几何体中获得折痕支持。
我只是想验证我是否采取了正确的步骤来为我的网格添加折痕支持。
- 创建 MDLSubmeshTopology
- 对于新拓扑对象,将 MDLMeshBuffers 分配给 edgeCreaseIndices、edgeCreases 并将 Int 分配给 edgeCreaseCount 属性。
- 使用拓扑对象创建 MDLSubmesh。
我不是在寻找具体的解决方案,只是想知道如何为网格添加折痕支持。任何有这方面经验的人都会很棒。
SceneKit 具有 edgeCreasesElement
and edgeCreasesSource
as well as the 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];