2009年11月27日 星期五

PV3D 練習 - 加入影片

現在可以邊開車邊看電視了 ^ ^"

http://www.asn.com.tw/flex/cardrive/CarDriver4.html
20110827連結更新…
http://www.vercenter.nknu.edu.tw/flex/CarDriver/CarDriver.html

不過所使用的影片檔是伺服端的 flv 檔,若要使用外部的連結(如 youtube),則會有 security domain 的問題,還要再研究。

幾個問題要注意…

一、DAE 物件有可能是很多個小物件組成的,在 3DS 裡會有不同的名稱及材質名稱,若需要讓 DAE 物件能產生事件 ( 譬如這個例子中液晶電視的畫面會接收滑鼠按下的事件來停止、撥放影片 ),必須從讀入的 DAE 物件中抽取出子物件 ( getChildByName ),再把這個子物件加上 InteractiveScene3DEvent (材質亦需事先設定好 interactive = true,才能正確接收到事件。

二、同樣是 DAE 物件,由於物件的建立順序是先建立 DisplayObject3D 再 LOAD 進模型及上材質,因此在 Render 的時候要特別注意,別在還沒 FileLoadEvent.LOAD_COMPLETE 之前就先調用子物件 ( 例如本例中的車承軸及車輪 ),否則會誤用 NULL 物件。 解決的辦法是確認全部 LOAD 完再 startRendering 或者在每次使用前作 NULL check。

三、材質使用貼圖 bitmap 時要特別小心原 bitmap 的檔案大小也會嚴重影響到 render 的效能 ( 例如被我消去的草坪 = =",跟原本很大張的木箱圖 )。


 PV3D 的效能確實不是很理想,但想必隨著 ADOBE 日後支援 3D 硬體 GPU 加速 (希望早點實現 ),PV3D (或其它 WEB 3D 引擎 ) 應該也會更讚才是,在此之前,先把效率最優化的技巧學好吧~ ^ ^


另外順便介紹一個超驚人的 Web 3D 引擎 UNITY,底下是官網 DEMO…
http://unity3d.com/gallery/live-demos/tropical-paradise
需要安裝個小小元件才能看到,不過效果驚人。

沒有留言:

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...