osgconv是一種用來讀取3D數據庫以及對它們實施一些簡單的操作的實用應用程序,同時也被稱作
一種專用3D數據庫工具。
用osgconv把其他格式的文件轉換為OSG所支持的格式
osgconv是一種非常有用的的工具來讀取標准的3D格式,如OpenFlight,3DS,Alias Wavefront
(OBJ) etc,並且可以將它們轉換為一種OSG所支持的格式,如OSG中的ASCII格式的.osg,二進制格式的.ive。
在程序運行的默認情況下,優化導入的場景圖,將形成的這樣結果:場景圖讀取的數據量將會更少且速度會更
快。尤其值得指出的是,.ive格式的的文件,快速裝載數據的能力使它非常適合數據頁和大型的數據庫。
把文件從.obj格式轉換為同等的.ive格式,命令如下:
osgconv cow.obj cow.ive
把文件從.obj格式轉為為同等的.ive格式,並壓縮自動生成映射紋理,命令如下:
osgconv osgconv --compressed cow.obj cow.ive
osgconv的操作:
下面是osgconv的所有操作,可以通過下面的命令來查看:
osgconv --help
使用用法:
osgconv [options] infile1 [infile2 ...] outfile
操作:
-O ReadWrite選項
--compressed 壓縮紋理
--compressed 啟用壓縮紋理
--compressed-arb 啟用OPENGL ARB壓縮紋理
--compressed-dxt1 啟用S3TC DXT1壓縮紋理
--compressed-dxt3 啟用S3TC DXT3壓縮紋理
--compressed-dxt5 啟用S3TC DXT5壓縮紋理
這些壓縮手段小米手機都不支持,不過一般的平板是支持的
基於OpenGL ES的壓縮紋理有常見的如下幾種實現:
1. ETC1(Ericcson texture compression)
2. PVRTC(PowerVR texture compression)
3. ATITC(ATI texture compression)
對於使用NVIDIA Tegra2芯片的手機如Motorola XOOM,ATRIX和DRIOID BIONIC則支持如下的紋理壓縮
4. S3TC(S3 texture compression)
GPU“兼容性”
現在還有個經常被提到的是GPU的“兼容性”問題,這里就要涉及到各個GPU支持的紋理格式了。
首先是ETC1,這個是OPENGL ES 2.0支持的紋理格式,大家都得支持。但這個紋理的一個缺點是不支持alpha通道,所以對於有alpha通道的紋理,就要拆成2個紋理去讀取,效率低,浪費了帶寬。
而PVRTC是PowerVR自家的紋理格式,同樣ATITC是高通Adreno的紋理格式,此外S3TC就是桌面很常見的DXT,微軟DirectX 3D的紋理格式,這些都是支持alpha通道的。
PowerVR GPU支持自家的PVRTC和通用的ETC1(iOS下的PVR GPU只支持PVRTC),Adreno支持自家的ATITC和通用的ETC1,NV的GeForce和Vivante的GC系列支持DXT和ETC1,剩下Mali-400只支持ETC1。所以,對應不同的GPU,會有不同的游戲數據包。通用數據包,一般都會采用ETC1,雖然通用,但由於不支持alpha通道要貼圖2次,對於非Mali的GPU其實都算是吃虧了。如果用自己支持的其他格式,就不用受這個苦了。對於貼圖單元(TMU,Texture Mapping Unit)數目相對較少的Adreno 2xx系列,恐怕更是吃虧。
當然,紋理的支持度只是兼容性的一方面,並不是兼容性問題的全部。
-l libraryName 裝載名為libraryName的插件,如-l osgdb_pfb
用來Read/Write一些導入的除了它本身擴展名的的文件格式
-e extensionName 裝載擴展名為extensionName的Read/Write插件 如-e pfb
很有用的工具,用來指定裝載所有擴展名為extensionName的插件,其作用方式和上面
的-l一樣 ,因為它會自動擴展至全部插件名以適合每個平台。
-o orientation input和output文件之間的幾何變換
定位方向的格式參數應該象下面一樣:
X1,Y1,Z1-X2,Y2,Z2
or
degrees-A0,A1,A2
X1,Y1,Z1表示在input文件中的一個向量,X2,Y2,Z2表示在output文件中的一個向量
degrees表示繞軸(A0,A1,A2)旋轉的角度。例如:把一個建立在Y軸向上的坐標系中MODEL
轉換為一個Z軸向上的坐標系,參數形式應該是這樣的:
0,1,0-0,0,1
or
-90-1,0,0
-t translation 平移output文件的空間位置
平移的參數格式必須象下面這樣:
X,Y,Z
在這里,X,Y,Z表示在坐標系中的絕對距離
-s scale 縮放MODEL的大小
縮放的參數格式必須象下面這樣:
SX,SY,SZ
這里的SX,SY,SZ表示的是縮放比例。警告:縮放應該指定一個特定的縮放方向。