基于ODA做三维模型的生成与显示
模型可选:OdDb3dSolid、OdDbSubDMesh、Body,其中OdDb3dSolid、OdDbSubDMesh依赖Kernel库,Body依赖FacetModeler库。显示库可以用Drawing或Visualize。
模型 | 显示效果 | 生成速度 | 显示速度 | 布尔运算 | 体积计算 | 其它 |
---|---|---|---|---|---|---|
OdDbSubDMesh | 显示面内部的线 | 较快 | 较快 | 不支持 | 不支持 | |
OdDb3dSolid | 显示实体 | 慢 | 较慢 | 支持 | 支持 | 布尔运算及体积计算依赖C3D或Spatial |
FacetModeler:Body | 显示实体 | 较快 | 较快 | 支持 | 支持 | 支持布尔运算和实体体积计算 |
模型显示使用Drawing与Visualize对比,Drawing相比Visualize,内存占用大很多,显示时间慢很多。具体测试数据未记录,Debug下大概是上万个立方体内存占到1G多,显示时间近1分钟。ODA版本为22.12。
模型 | 数量 | 测试环境 | 生成用时 | 显示用时 |
---|---|---|---|---|
OdDb3dSolid | 25000个长方体 | Debug | 7分左右 | 2分左右(Drawing显示) |
FacetModeler:Body | 25000个长方体 | Debug | 1分半左右 | 2.8秒(Visualize显示) |
通过对比,Body模型相较于3dSolid模型,生成时间大约为四分之一,显示时间大约为四十分之一。
模型 | 数量 | 测试环境 | 生成用时 | 显示用时 |
---|---|---|---|---|
OdDb3dSolid | 5000个 | Release | 30分钟 | 近2分钟(Drawing显示) |
FacetModeler:Body | 5000个 | Release | 1分15秒 | 3.8秒(Visualize显示) |
布尔运算为两个长方体扣减(弧形角的箱),Body的布尔运算运行时间大概是3dSolid的二十五分之一。
模型和库使用经验
各类模型生成接口,拉伸、扫掠、放样等接口的支持度不同。C3D可以从它的官网下载3个月试用版,拉伸接口不稳定,布尔运算也不稳定,相比之下Spatial更适合生成3dSolid。
Body放样接口只支持顶点一一对应的两个面,不支持两个不同多边形面(显示时面有镂空)。Body的布尔运算有BUG,遇到过两个实体共面因精度问题扣减失败,新版本好像已修复。拉伸接口不太方便,要自己实现有弧的多段线路径。