1. 3D對象
■ Object3D
Object3D 是所有3D對象的基類,也是最簡單的3D對象,它定義了一個3D對象的基本屬性和方法。
Object3D可以作為容器包含其它3D對象,類似於2D中的 DisplayObjectContainer。
所有的3D對象都繼承自Object3D。3D對象大體上可區分為可視對象與不可視對象:
不可視對象
● Camera3D(3D攝像機)
● Light3D(3D燈光)
● AmbientLight(環境光線)
● DirectionalLight(方向性光源)
● OmniLight(點光源)
● SpotLight(聚光燈)
● Joint(骨骼關節)
可視對象
● AxisAlignedSprite(單一軸向正對攝像機的平面對象)
● Sprite3D(所有軸向正對攝像機的平面對象)
● AnimSprite(通過不斷更換材質形成動畫的Sprite3D)
● Mesh(空間網格)
● Decal(圖案)
● Plane(平面)
● Box(立方體)
● GeoSphere(幾何球體)
● SkyBox(天空盒)
● Skin(骨骼動畫)
● WireFrame(線框)
Alternativa3D 8 中的3D對象
■ Mesh
Mesh 可理解為空白間網格,是展示幾何體(Geometry)的地方,Geometry包含描述幾何體的頂點和三角面資訊。
幾何體在Mesh中的顯示形式為表面(Surface),表面是由一個序列的三角面構成,這些三角面通過Surface的材質進行顯示。或許把Surface想象成皮膚更容易理解一些。
Mesh、Geometry、Surface三者的關係是:Geometry為Mesh提供了頂點和三角面資訊,Mesh根據這些資訊建立Surface來顯示Geometry所描述的3D對象。
所有需要顯示的空間幾何體都繼承自Mesh類,不論是內建的基本幾何體,還是自訂幾何體(代碼建立或者外部匯入模型)都是通過Mesh進行展示的。
Alternativa3D通過擴充Mesh類為我們提供了 Decal、Plane、Box、GeoSphere、SkyBox 等基本幾何體。
■ Surface
Surface 可理解為表面或者皮膚,它由一個序列的三角面組成,具有單獨材質。
每個Mesh可分割為多個Surface,當需要為Mesh中的部分三角面賦予單獨的材質時,可將序號連續的三角面建立為一個Surface。
例如,Mesh中有10個三角面,需要為三角面0、1、2、5、6賦予材質m0,其它的三角面賦予材質m1,那麼可以將三角面分為[0,1,2]、[3,4]、[5,6]、[7,8,9]四個序列,建立s0、s1、s2、s3四個Surface,其中s0、s2賦予材質m0,s1、s3賦予材質m1。
■ Skin
簡單點說,Skin 就是可帶骨骼動畫的Mesh。通過Joint綁定頂點串連成骨骼。
■ Joint
Joint 可理解為關節,是Skin的一部分,用於骨骼動畫。
2. 材質
■ Material
材質是3D對象非常重要的一部分,沒有材質的3D對象只是一堆描述幾何體形狀外觀等資訊的資料,什麼也看不到。我們所能見到的那些奇妙的空間幾何體都是通過材質才得以顯現的,材質讓虛擬3D對象變得可見。
材質分為填充材質(FillMaterial)和貼圖材質(TextureMaterial、ParserMaterial)。
Material 是所有材質的基類,定義了材質的基本屬性和方法。
FillMaterial 是填充材質,以單一的顏色填充整個Surface。
TextureMaterial 是貼圖材質,用位元影像填充Surface。要正確表現貼圖效果,幾何體頂點UV座標的設定十分重要。
ParserMaterial 用以儲存外部載入的*.DAE或*.A3D模型的材質資訊,需要通過TextureLoader(貼圖載入器)來載入外部貼圖。
LightMapMaterial(燈光貼圖材質)、StandardMaterial(標準材質)、VertexLightTextureMaterial(動態燈光貼圖材質)都是繼承自TextureMaterial。
StandardMaterial 支援漫反射貼圖、法線貼圖、高光貼圖、光澤度貼圖和光澤度、高光強度設定。
LightMapMaterial 支援燈光貼圖。
VertexLightTextureMaterial 支援動態燈光。
填充材質
● FillMaterial(填充材質)
貼圖材質
● ParserMaterial(解析材質)
● TextureMaterial(貼圖材質)
● StandardMaterial(標準材質)
● LightMapMaterial(燈光貼圖材質)
● VertexLightTextureMaterial(動態燈光貼圖材質)
Alternativa3D 8 中的材質
3. 資源
■ Resource
Resource 是GPU資源的基類,定義了資源上傳與釋放的相關屬性和方法。
GPU資源分為2種:幾何體資源和貼圖資源。
幾何體資源使用頂點緩衝(VertexBufferResource)和索引緩衝(IndexBufferResource)進行上傳。
貼圖資源套件括位元影像貼圖資源(BitmapTextureResource)和壓縮貼圖資源(ATFTextureResource)。
幾何體資源
● Geometry(幾何體資源)
貼圖資源
● TextureResource(貼圖資源)
● ATFTextureResource(壓縮貼圖資源)
● BitmapTextureResource(位元影像貼圖資源)
● ExternalTextureResource(外部貼圖資源)
Alternativa3D 8 中的資源
■ Geometry
Geometry 儲存了3D對象的幾何體資料,記錄每個頂點的資訊,這些資訊將被劃分為多個頂點緩衝上傳到GPU。
頂點資訊包括3D座標(POSITION)、貼圖座標(TEXCOORDS)、法線(NORMAL)、切線(TANGENT4)、骨骼權重(JOINTS)等。
■ TextureResource
TextureResource 是貼圖資源的基類。
貼圖資源套件括位元影像貼圖資源(BitmapTextureResource)和壓縮貼圖資源(ATFTextureResource)。
位元影像貼圖資源以位元影像資料(BitmapData)上傳,ATF壓縮貼圖資源以位元據(ByteArray)上傳。
ExternalTextureResource 用以載入外部貼圖資源,結合TextureLoader(貼圖載入器)可以比較方便地載入外部模型的貼圖。
4. 外部模型
Alternativa3D支援外部模型的載入與解析,支援的模型檔案格式有
*.DAE、
*.A3D、
*.3DS。
*.DAE是基於XML的Collada模型檔案,*.A3D為Alternativa3D專用模型檔案,*.3DS是3DS Max軟體使用的格式。
Alternativa3D官方提供了相關的3DS Max外掛程式,用以匯出*.DAE和*.A3D格式的模型。
通過模型解析器,可以十分方便地解析載入的模型,擷取模型中的幾何體對象、貼圖材質、動畫、燈光等資訊。
ParserCollada:*.DAE格式模型解析器,可擷取模型中的幾何體對象、貼圖材質、動畫、燈光。
ParserA3D:*.A3D格式模型解析器,可擷取模型中的幾何體對象、貼圖材質。
Parser3DS:*.3DS格式模型解析器,可擷取模型中的幾何體對象、貼圖材質。
此外,Alternativa3D還給出了ExporterA3D類,用以將3D對象匯出儲存為*.A3D格式的模型檔案。