天天看點

occ[opencascade] 資料結構TopoDS_Shape 轉 assimp 資料結構, assimp導出3D格式檔案

assimp支援很多3D格式檔案的互相轉換,是非常好的一個三方庫,但是occ資料結構轉assimp,目前網上基本沒有,我工作中需要這個功能,絞盡腦汁搞了2周,終于弄出來了,分享一下:

主要是下面幾點:

1. occ 資料結構周遊出,頂點,法向量

2. 三角面片化後,每個三角面片都要有法向量,不然在3D視圖中轉動圖形,不會随着光照出現陰影

3. assimp的資料結構也需要注意,還是比較麻煩的

下面是我寫的一個接口:

//精度
static double st_theLinDeflection = 1e-3;
static double st_theAngDeflection = 0.5;

//内部資料結構定義
struct shape_data
{
    TopoDS_Shape *ptrShape;            /* occ 資料結構 */
    std::string externParam;           /* 圖形額外參數 */
    QString shape_name = "";           /* 圖形名稱如立方體 */
    std::string group = "NA";          /* 圖形所屬組 */
    QColor color;                      /* 圖形的顔色 */    
    std::atomic_bool bDelete {false};  /* 圖形是否被删除 */   
    QString Uuid;                       /* 圖形唯一辨別I
           

繼續閱讀