Coin3D三維可視化教程3

命名約定
 

在Inventor中基本數據類型的名字都是以字母Sb開始的,例如:

  • SbColor
  • SbViewVolume

除了上面的基本數據以外,在Inventor中所有其他的類都是以字母So作爲前綴(場景對象)。例如:

  • SoCone
  • SoPerspectiveCamera
  • SoMaterial
  • SoTransform

方法和變量使用小寫字母作爲開頭字母。在類、方法、變量的名字中,每個單詞都以大寫字母開頭。例如:

  • getNormal()
  • setSceneGraph()
  • myCube

枚舉類型數值都是用大寫字母表示的。例如:

  • FILLED
  • PER_PART

場景基本類型(Scene Basic Types)


本節將討論Inventor的Sb 基本數據類型。這些數據類型被很多的Inventor對象所使用。Inventor爲不同類型的數據轉換以及執行特定的 3D操作提供了很多方便實用的方法。

Inventor 定義了下列類型:


SbBool 布爾值 (TRUE or FALSE)
SbBox nx 2D 矩形或者 3D 的立方體數據。這些數據所表示的各個側面都是平行於主軸的。可以通過設置對角線上的兩點座標來指定它們(包括SbBox3f, SbBox2f, SbBox2s);n 表示的是內部數值的個數(2 或 3個),x 表示的是內部數值的類型(f 表示浮點類型,s 表示短整形)
SbColor RGB (紅/綠/藍) 顏色值。這個類有轉換函數可以將顏色值轉換到其它的顏色空間中( 例如,YUV 顏色空間(色調,飽和度,亮度)。譯者注 )
SbCylinder 圓柱類
SbLine 有向 3D 直線類
SbMatrix 4×4 矩陣類
SbName 字符串類。這些類被保存在一個特殊的表中( hash 哈希表。譯者注 ) ,可以快速方便的進行查找。通常用於標識對象 。
SbPList 通用指針( void *)列表類。
SbPlane 3D 平面類
SbRotation 代表一個繞任意軸進行旋轉的 3D 旋轉類
SbSphere 球類
SbString “靈巧”的字符串類,對處理字符串提供了許多方便的方法。
SbTime 表示秒,毫秒的時間類;也可以使用 timeval 結構類型來表示
SbVec nx 2D 或 3D 向量類。用於表示點或者方向(包括 SbVec2f, SbVec3f,SbVec2s); n 是在這個類中的數據個數(2, 3, or 4 個), x 是數據類型 f 表示浮點類型,s 表示短整形)

SbViewportRegion 代表在顯示窗口中的視口區域

SbViewVolume 視見體裁剪( view volume)類。( 或稱“可視體積”。當使用平行投影時,view volume 就是一個長方體,當
使用透視投影時,它就是一個近大遠小的截錐方體,Inventor 使用這個類來判場景中的物體是否是處於長方體或者截錐方體的範圍內,如果物體已不在視見體範圍之內,Inventor 就不會渲染這個物體,以提高渲染效率。具體說明可翻閱本書第四章“照相機和燈光”。譯者注 )

類方法


每種Sb 類都帶有一些與其相關的實用操作。例如,可以對SbVec3f類型的變量進行取反、乘矩陣、單位化等操作。下面的代碼將定義一個基於特定方向和單位長度的向量。

SbVec3f v(1.0, 2.0, 3.0); // declares and initializes the vector
v.normalize(); // normalizes the vector to unit length


類似的,SbMatrix 類也包含有一些實用的方法,例如,multVecMatrix() 這個方法將當前矩陣與一個行向量相乘,並返回計算結果。rotate() 方法可以按照給定的旋轉量數據設置矩陣。Open Inventor C++ Reference Manual 書中對每個Sb類的可用方法都有完整的描述。


類型 VS 域


第三章“節點和組”有關於域(fields)的完整討論。域是節點用來存儲參數的內存結構。每個域都帶有一個特定類型的變量。域通常是包含在Inventor的節點中。許多域都帶有一個相對應的Sb 類型的變量。例如

  • SoSFVec3f 域帶有一個 SbVec3f 類型的變量
  • SoSFRotation 域帶有一個 SbRotation 類型的變量
  • SoSFName 域帶有一個 SbName 類型的變量

Inventor 使用的座標系統


Inventor 對 3D 數據使用的是右手座標系,從屏幕內指向外,表示 z 軸的正方向。所有的角度單位都是弧度。對象都是在自己的局部座標系空間下進行描述的,既衆所周知的“對象座標系空間”(object coordinate space)。當場景中的所有物體都已經進行完座標變換後,那麼它們就都在“世界座標系空間”下描述了(world coordinate space)。照相機和燈光節點處於世界座標系空間下。


包含文件(Include Files)


Inventor爲每個類都提供相應的包含頭文件。在程序中使用Inventor類之前都需要首先包含相應的頭文件。例如,SoSphere and SoTransform 這兩個節點類需要包含 SoSphere.h 和SoTransform.h 兩個頭文件。絕大多數的Include頭文件都位於一個子目錄中-例如nodes/SoSphere.h 和 sensors/SoNodeSensor.h 。
另外,如需要使用 Inventor 組件庫來編寫交互式應用程序的話,還需要包含 SoQt.h, SoMin或SoXt.h頭文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章