[返回博客](/cn/blog) # 创建渐进式网格的新方法

Egor Slupko 十一月 19, 2020 [\#getting started](/cn/blog/tag/getting-started) [\#Visualize](/cn/blog/tag/visualize) [\#level of details](/cn/blog/tag/level-details)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

在 ODA SDK 21.3 版本之前，使用 OdGiProgressiveMeshGenerator 时需要从壳数据创建渐进式网格，并且在传输初始数据后需要检查生成器的状态。如果状态不正常，则无法构建渐进式网格，或者它可能丢失了数据。因此，您必须决定是生成渐进式网格还是将原始壳数据保留在某个位置。

从 21.3 版本开始，新的 OdGiProgressiveMeshEx 类封装了 OdGiProgressiveMeshGenerator 和 OdGiProgressiveMesh。如果渐进式网格生成被取消或由于数据非流形性而未生成网格，此类别还会保留初始壳数据。

OdGiProgressiveMeshEx 类通过相同的 API 提供对渐进式网格数据和初始数据的访问。

#### 创建渐进式网格

要创建渐进式网格，请创建 OdGiProgressiveMeshEx 的实例，用初始数据填充它，然后调用 buildProgressiveMesh 方法：

```
OdGiProgressiveMeshExPtr pPM = OdGiProgressiveMeshEx::createObject();
pPM->setupInitialShell( pts.size(), pts.asArrayPtr(), faces.size(), faces.asArrayPtr() );
pPM->options().setMinVertices( nMinPoints );
pPM->options().setMinFaces( nMinFaces );
pPM->buildProgressiveMesh();
```

您可以使用 OdGiProgressiveMeshEx::options() 方法访问 OdGiProgressiveMeshGeneratorOptions。

使用 OdGiProgressiveMeshEx::buildProgressiveMesh() 方法指定顶点、面和边数据。

OdGiProgressiveMeshEx::setGenerationAbortFlags() 方法允许您指定一组 OdGiProgressiveMeshGenerator::Status 标志，如果它们出现，则中止渐进式网格生成。

如果成功生成渐进式网格，OdGiProgressiveMeshEx::isProgressiveMeshGenerated() 方法将返回 true。如果此方法返回 false，OdGiProgressiveMeshEx 将使用初始数据，并且所有渐进式网格特定的调用（setLOD() 等）都将被忽略。

如果生成了网格，可以通过 OdGiProgressiveMeshEx::progressiveMesh() 调用获取它。

#### VisualizeSDK

从 Visualize SDK 21.3 版本开始，OdTvProgressiveMeshData 类封装了 OdGiProgressiveMeshEx 而不是 OdGiProgressiveMesh。因此，即使未生成网格，它仍然保留初始数据并且可以渲染。

OdTvProgressiveMeshData 类有一个新的 isProgressiveMeshGenerated() 方法，如果成功生成网格，该方法将返回 true。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
