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