Posted on 2019-08-06 11:07
eryar 閱讀(1904)
評論(0) 編輯 收藏 引用 所屬分類:
2.OpenCASCADE
OpenCASCADE動畫功能
eryar@163.com
1.Introduction
OpenCASCADE提供了類AIS_Animation等來實現簡單的動畫功能。

從其類圖可以看出,動畫功能有兩種:一種是相機的動畫AnimationCamera,一種是模型的動畫AnimationObject。因為OpenCASCADE不像OpenSceneGraph那樣是專門做仿真動畫的,內置多線程,OpenCASCADE中的動畫可以理解為一個while(true) {update();},即在動畫時間內對相機或模型的起始位置和終止位置進行插值并更新來實現動畫。對于簡單的動畫效果,這種方式是夠用了。
2. Examples
在OpenCASCADE的源碼文件夾中提供了動畫用法的示例,分別演示了模型變換、視圖變換及將動畫保存成視頻文件,當然這個功能需要引入第三方庫FFmpeg:

OpenCASCADE中動畫中間位置的生成采用了類gp_TrsfNLerp進行插值。

根據其注釋是對一個變換的三個部分分別進行線性插值,旋轉部分采用四元數類進行插值。這種插值方式不可能滿足復雜動畫的要求,不過可以把這個類當成一個插值的例子。
在Draw Test Harness中輸入以下命令:
source tests/v3d/anim/propeller
vanim anim -play -playSpeed 0.1
即可以讓一個螺旋槳動起來了:

其實這個螺旋槳動畫是個復雜的例子,包含了視圖動畫和模型動畫。對于簡單的示例,可以參考另外幾個文件,里面的例子是相對簡單的。

3. Conclusion
OpenCASCADE7.3版本中引入了簡單動畫的功能,結合其測試案例,找到其實現源碼,可以方便地在程序中實現簡單的動畫功能。其中動畫支持兩種方式:一種是視圖支畫,一種是模型動畫。視圖動畫一般用于兩個視圖之間的動畫過渡,如從主視圖切換到仰視圖中間加一個動畫過渡;模型動畫可用于簡單的動畫仿真。