跳到主要內容

PV3D2.0基本教學二

設定PV3D類別檔, 可以參考奶老師的第一篇教學
PV3D2.0基本教學一
PV3D世界是由幾個基本的物件組合而成, 如果你有3D動畫的製作經驗, 應該很好理解,
如果沒有也沒關係, 後面的許多範例會一一介紹到。
Viewport3D:
視圖窗口, 簡單來說可以想像是Flash裡畫布的大小, 也可以理解成算圖的尺寸。
Scene3D:整個3D的場景, 之後建立的3D物件都是被加入至其中。
Camera3D:PV3D的鏡頭, Camera3D是用來拍攝Scene3D的畫面。
BasicRenderEngine:算圖類別, 把所有的數據值結果運算成圖像。
像想一下你座在一台電視機前, 電視機的螢幕尺吋就是Viewport3D的大小
電視台的攝影棚就是Scene3D, 攝影機就是Camera3D, 當電視機收到訊號,
透過訊號轉換將數據運算成圖像, 這個工作就像是BasicRenderEngine類別。
流程即是BasicRenderEngine 運算Camera3D所看到的Scene3D世界,
並將畫面呈現在Viewport3D。
一次要記住四個類別對第一次使用PV3D的使用者可能會有些害怕。
新版本的PV3D 提供了一個整合的視圖類別BasicView。

該類別是繼承Sprite, 所以可以被加入至可視物件容器裡。
BasicView類別已包含了Scene3D,Camera3D,Renderer,Viewport四種物件,
不需要再另外建構。
因為PV3D畫面需要不斷的被更新, 透過Event.ENTER_FRAME事件不斷運算,即可一直更新畫面。
建立PV3D世界的步驟。
1.建立一個類別檔當作文件檔當別使用, 該類別必需是繼承MovieClip或是Sprite。
public class 類別名稱 extends MovieClip
2.匯入PV3D所需的類別。
import org.papervision3d.view.BasicView;
要一次匯入該類別包下的所有類別, 可以使用星號來代示。
import org.papervision3d.view.*;
3.宣告PV3D所需的相關變數
private var view:BasicView;
view變數, 型別為BasicView。
4.建立init3DEngine 函式, 用來初始化BasicView物件, 同時偵聽Event.ENTER_FRAME事件。
private function init3DEngine():void{
view = new BasicView(0, 0, true, true, "Target")
//建構BasicView物件。
this.addChild(view);
//將view物件加入至目前的可視物件容器裡。
this.addEventListener(Event.ENTER_FRAME, onEventRender3D); ;
//偵聽Event.ENTER_FRAME事件。
}
5.偵聽者函式onEventRender3D, 用來運算場景畫面。
private function onEventRender3D(e:Event){
view.singleRender();
//執行view物件的singleRender函式。
}
6.建立init3DObject函式, 用來建立其他PV3D物件。
private function init3DObject ():void{
//在這建立其他的PV3D物件
}
7.在建構函式執行init3DEngine,init3DObject函式。
發怖後即可看到輸出訊息。
INFO: Papervision3D Public Beta 2.0 - Great White (December 3rd, 2008)
INFO: Viewport autoScaleToStage : Papervision has changed the Stage scale mode.
完整程式碼:
package{ 
import flash.display.MovieClip;
//匯入MovieClip類別。
import flash.events.Event;
//匯入事件類別。
import org.papervision3d.view.BasicView;
//匯入BasicView類別。
public class A01_BasicDocument extends MovieClip { 
//A01_BasicDocument類別, 繼承MovieClip。  
private var view:BasicView;  
//宣告view變數為BasicView物件。  
public function A01_BasicDocument():void{
//建構函式, 該類別被實體化時, 會執行一次。
//可以把要初始化的值或物件寫在這。 
init3DEngine(); //執行initPV3DEngine函式。
init3DObject(); //執行initPV3DObject函式。
}
private function init3DEngine():void{
//此函式的用意,是用來建立PV3D所需的基本物件類別。
//在此建構BasicView物件、設定Camera參數。
view = new BasicView(0, 0, true, true, "Target");     
//建構BasicView物件   
//參數值(
//viewport寬度, viewport高度, 是否自動對齊場景中間
//, 是否開啟滑鼠感應功能,camera類別) 
//viewport寬度和viewport高度設定為0的話,
//表示寬高是跟著整個場景的大小。   
//PV3D的Camera有二種類型:
//Target:目標Camera,不論鏡頭怎麼移動,永遠看著目標點。
//Free :自由Camera,可以任意的移動和旋轉鏡頭。
this.addChild(view);   
//BasicView是繼承Sprite物件,可被加入至顯示物件容器裡。   
this.addEventListener(Event.ENTER_FRAME, onEventRender3D);    
//偵聽ENTER_FRAME事件。
}
private function init3DObject():void{
//init3DObject函式, 用來建立PV3D物件、材質及偵聽事件。
}
private function onEventRender3D(e:Event):void {   
view.singleRender();
//運算view物件。
//使用算圖類別,運算Camera所看到的Scene3D世界
//並將結果呈顯在view裡。
}
}
}

留言

聖翰寫道…
有問題想請教你

這個教學的第1點
public class 類別名稱 extends MovieClip

類別名稱 要繼承 MovieClip

但是我不知道那個類別名稱怎麼來?

是要自己設一個名稱 還是?


因為第一次碰FLASH和PV3D 有很多不懂  謝謝
milkmidi寫道…
那個類別名稱
是你自己取名的
只要跟檔名一樣就可以
聖翰寫道…
老師

我自己設了名稱

可是出現了
1114: public 屬性只能用於套件內部。

謝謝你 真不好意思...
milkmidi寫道…
你檢查一下是不是括號數不對
匿名表示…
網誌管理員已經移除這則留言。

這個網誌中的熱門文章

超好用的無限免費網頁空間,無廣告,無流量限制

大家好,我是奶綠茶
今天來教大家如何申請一個無限免費速度又快的網頁空間
1 首先到 https://github.com/ 申請帳號(一直下一步,下一步,下一步)
2 到你的個人頁,切換上方的 tab 到 Repositories, 按下右鍵的 new

3 Repository name
一定要是這樣的格式 username.github.io
我的 github 網址是 github.com/milkmidi
那就要輸入 milkmidi.github.io
選擇 public, 這樣別人才看的到
private 有其他用途, 而且要付費才能使用
完成後按下 Create repository


5 安裝 SourceTree
github 並不支援 FTP 或是網頁上傳,一定要透過指令碼
在這我們選用有圖型介面的軟體,方便大家學習
https://www.sourcetreeapp.com/
下載並安裝
啟動後登入你的 github 帳號

6 clone 你的 github io 專案
右上角有個 Clone or download 點選後
複製 https 連結(不要選到 ssh )


7 將 https 的連結貼到 SourceTree



8 上傳 html
到本機 github.io 資料夾,放一個 index.html
切換到 SourceTree, 這時會看到 Unstaged files 的欄位
選擇 Stage All


9 git 要求每次的 Commit, 都一定要打說明文字(好習慣)
輸入完成後,按下右邊的 Commit


10 發佈(Push),這樣就完成啦
可以到你的 http://milkmidi.github.io/ 去查看檔案有沒有出來


其他
Commit 可以想像是做一個記錄,你可以很多的 Commit
最後再一次 Push 上去
github 原本是給程式設計師用的版本控管服務
免費版提供無限空間讓你放檔案,但一定要是 public
想要有私有的 Project ,就只能付費
github.io 只能放靜態檔案,php, aspx 服務並不支援。
祝大家學習愉快

轉載請註明出處

奶綠的 github.io Source Code

Android完全入門篇-01 安裝SDK與裝置USBDriver

大家好,我是奶綠茶
筆者以 Windows 系統來介紹安裝
1. 下載 Android SDK
http://developer.android.com/sdk/index.html
有分 32 位元和 64 位元的版本
為了教學方便,筆者將檔案放置在 D:\ 下
壓開後會有
eclipse資料夾:Eclipse程式碼編譯器
sdk:Android 開發用的 SDK
SDK Manager.exe:sdk管理用的軟體


2. 開啟手機的"開發人員選項"
部份手機該選項被隱藏起來了
要開啟的話,點選"關於手機"
接著連點"版本號碼"七次,就會重新開啟該功能
接著再開啟"USB偵錯"功能
接上你的 USB 線後
這樣你的電腦才能透過 USB 線來偵錯手機的資訊
3. 為裝置安裝 adb usb driver
因為各家廠牌的 Driver 都不同也不通用,所以需要自行 Google 找 Driver
可以用"XXX廠牌 型號 adb usb driver"關鍵字來找
例:HTC Newone adb usb driver
接著找到 我的電腦 / 內容


裝置管理員

會看到一個金嘆號未知的裝置, 按右鍵更新驅動程式軟體

選擇"瀏覽電腦上的驅動程式軟體"

完成後就會看到裝置啟動,並出現 XXX Android ADB Interface

4.測試是否連接成功
進入到第一步下載的 sdk 資料夾裡
D:\adt-bundle-windows-x86_64-20131030\sdk
然後在 platform-tools 資料夾上按住 Shift 鍵,然後再按滑鼠右鍵
選擇"在此處開啟命令視窗"
(此功能只有 Win7 之後的版本才支援, XP使用者就要自行輸入 dos 指令進入到資料夾)
輸入 adb devices
如果看到一串數字,並顯示 device 就表示連線成功
5.新增環境變數(選擇性設定)
為了方便的使用 adb 指令
可以為 windows 設定變數
開啟我的電腦 / 內容 / 左邊的"進階系統設定"
點選下方 環境變數

下方系統變數,找到 Path的選項,按下編輯

在變數值欄位的最後方加入
;D:\adt-b…

前端攻城屍自動化教學 1 (入門軟體篇, 使用 prepros)

大家好,我是奶綠茶
寫程式的最高原則,就是要"懶"
"懶"指的是 "雜事交由電腦幫你完成"
你就可以專心在程式面上
比如說:
uglifyjs JS 自動幫你把 JS 壓成一行
自動幫你轉 sass/ scss
程式碼一存檔,html 就自動 reload
如果這些事還要手動處理就真的麻煩了

新手可以直接使用現成的軟體
https://prepros.io/
這是一套永久免費的軟體(如果覺的好用也支持一下作者)
免費版和正式版的功能都一樣,差在免費版三不五時會貼心的提醒你要不要付費

1. 下載軟體, 支援 PC(不支援 XP ) 和 Mac
2. 安裝, 一直下一步下一步下一步
3. 啟動軟體



4. 把你的專案資料夾拉進 prepros

5. 點選你的 js 檔
可以看到有五個選項
Auto Compile:當你存檔時是否要自動編譯,當然是要打勾呀。
SourceMaps:產生 sourcemap 檔,通常會搭配下方的 UglifyJS。
Uglify JS:幫你把 js 壓縮成一行。
Convert ES6 to ES5:將 ES6 的語法自動轉成 ES6。
Mangle Variables:將非全域變數的名字打亂。
筆者通常都是全勾。



6. 點選你的 css 檔
AutoCompile:是否存檔自動編譯
AutoPrefixCSS:自動加入 css3的 -web-kit 等前綴字。
SourceMaps:產生 sourceMap檔。
CompressCSS:將 css 壓縮成一行
Enable Cssnext:這個我還沒認真研究


7. 點選你的 html,接下右鍵
可以看到一個 Live Preview This File
按下後會啟動一個 localhost 的網頁,之後只要有修改 js, css ,都會自動 reload

8. 加掛 Proxy
live reload 預設只能跑 html, 如果想要執行 php 或是 asp.net 的話
可以在設定裡面開啟 Live Preview Custom Server

9. 其他
Prepros 也整合了 FTP ,可以讓你方便的直接上傳檔案

轉載請註明出處
SourceCodeDownload