Away3d學習筆記1-三維世界的四個基本構件


flash 3d,沒近距離接觸她之前我感覺她特神秘、特深奧;加之flash3d 引擎國外獨大的局勢,中文資料少之又少,flash3d對於國內用戶來說,她真的很不平易近人!直至硬着頭皮啃英文資料開始學習away3D(有很多主流flash3d引擎,如pvd3daway3dsandy。。但網上傳away3d架構清晰,易學。所以我選她)。原來只要懂得as3,用away3D做三維東東並沒有想象中的復雜。出於加深學習目的我寫下這套筆記,同時希望可以給flash3d初學者帶來幫助(本筆記基於away3d,但所有引擎機理都是差不多的,所以也適合其他引擎用戶閱讀)。

 

如同人是由骨架、肌肉、呼吸系統、血液循環系統這些必要東西構成一樣,away3d世界,以下是必須的部分: 

1view 視口

2scene 場景

3camera 攝像機

43D物體

其中3D物體就是那些我們想要在三維世界里顯示的內容。有內容了就要有放置“內容”的“舞台”,這個“舞台”就是場景。當然還要有攝像機把場景里的3D物體“錄”下來。有了這些似乎萬事俱備,但還欠東風!這個東風就是“視口”.視口相對前三者要難理解的多,我們不妨這樣想下:”錄“下來的“影像”不也得要通過電視機我們才能看到嗎?對,視口你可以大概看成是電視機屏幕。

 

我把這四者稱為三維世界的四個基本構件。

 

下面通過實例,說明away3d的基本構架。先看該例子的效果:

點擊觀看

再看源代碼:

package{

         //導入要用的類

         import flash.display.Sprite ;

         import flash.events.Event;

         import away3d.containers.View3D;

         import away3d.cameras.Camera3D;

         import away3d.containers.Scene3D;

         import away3d.primitives.Sphere;

         //定義輸出flash高寬、背景等

[SWF(width="500",height="400",frameRate="60",backgroundColor="#FFFFFF")]

 

public class basicObjects extends Sprite{

                   //申明幾個后面會用到的變量;

                   private var view:View3D;

                   private var cam:Camera3D;

                   private var sce:Scene3D;

                   private var sphere:Sphere;

                  

                   public function basicObjects():void{

                            //!!!!!新建四大基本構件!!!!!!!!!

                            //新建攝像機

                            cam=new  Camera3D();

                            //設置攝像機位置,為什么要設置、如何設置這里先不要關心

                            cam.z=-1000;

           

                            //新建場景

sce=new  Scene3D();

    //新建視口,並指定視口使用的攝像機、場景等。

                            view=new  View3D({camera:cam,scene:sce,x:250,y:200});

                            //新建3D物體,這里新建了一個球Spheresphereaway3D內置的一種3D基本元素。

                            sphere=new  Sphere();

            

                            //!!!!!!四大基本構件之二:視口與3D物體一定加入顯示列表!!!!!

                            //view添加到舞台、sphere添加到場景。

                            addChild(view)

                            sce.addChild(sphere);

 

                           //!!!!一定要“渲染”才行喲!!!!!!

                           //渲染視口

                            view.render();

                      }

         }

        

}

 

看過加注釋的源代碼,大家對這代碼的理解也就八九不離十了。下面對這些代碼作必要的分析。

 

代碼主要可分為三步:

一、新建四大基本構件。

既然是三維世界里不可或缺的四大基本構件,我們當然要把它創建出來。

二、顯示view3D物體

flash里一樣,必須把要顯示的對象實例添加到各級顯示列表里。view添加到舞台、3D物體(本例是球sphere)添加到場景。

三、渲染視口

電腦里的“三維”其實不是真的三維。你想呀,電腦屏幕是個平面當然不可能像科幻片里的全息音像那樣呈現三維!電腦里的三維實質是通過“透視法”將三維物體“投影”到二維屏幕,見下圖。在視口沒有用其方法(view.render();)之前,所有數據都是三維數據,渲染就是將三維數據“透視“成二維以便能顯示在二維的屏幕上。記住,最后一步——渲染!它是實現的電腦三維魔力的所在。

 

 

本圖來源:flb3D.com


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com