生成具有折痕支持的MDLMesh?

时间:2016-11-25 02:40:34

标签: swift scenekit metal modelio

我已经能够创建MDLMesh并转换为SCNGeometry以在SceneKit中渲染。但我无法在网格或几何体中获得折痕支撑。

我只是想验证我是否采取了正确的步骤来为我的网格添加折痕支持。

  1. 创建MDLSubmeshTopology
  2. 对于新拓扑对象,将MDLMeshBuffers分配给edgeCreaseIndices,edgeCreases和Int分配给edgeCreaseCount属性。
  3. 使用拓扑对象创建MDLSubmesh。
  4. 我不是在寻找具体的解决方案,只是想知道如何为网格添加折痕支撑。任何有这方面经验的人都会很棒。

2 个答案:

答案 0 :(得分:2)

假设您已将数据准备为四字节整数的边对,并且折痕值为浮点数,则以下情况应该有效。

    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];

答案 1 :(得分:1)

SceneKit有edgeCreasesElementedgeCreasesSource以及vertexCrease语义。

您可以查看SCNGeometry.subdivisionLevel的文档以获取更多信息。