Director基礎教程:Director 3D 基本的(8)
2024-09-08 19:27:13
供稿:網友
director 3d 基礎
移動模型與攝像機
在 director 8.5 中,不止一種方法去移動模型與攝像機。模型與攝像機可以相對于它們自己、其它模型或整個身處的 3d 世界而移動。另外,這些物體可以利用兩種不同的 lingo 程序來移動。無論你選擇哪種方法,都會有明顯的效果于你的 3d 演員的外觀。
樣版影片
本文的樣版影片是 moving_model_and_camera.dir 。你可以打開來查看它的程序,如果你喜歡的話,你可以改動它。
看 scene 1
影片中的第一個 scene 說明了如何利用簡單的 lingo 命令 rotate 和 translate 來移動模型和攝像機。
舞臺上包含了一個 3d 精靈 ―― 一個含有四個字母的模型。還有一些精靈是顯示模型與攝像機的當前位置與旋轉角度的文本字段。當按下舞臺左下角的說明文字中說明的鍵時,你可以移動和旋轉攝像機和模型。(請注意,如果要旋轉是要按住換檔鍵的)
查看名叫 “interface 1” 的腳本演員,它是控制 3d 模型和攝像機的運動的。這個腳本一開始就檢查 shift 鍵是否按住了,以決定是用 rotate 還是 translate 命令。
member(‘‘3d‘‘).model(‘‘a‘‘).rotate(-1, 0, 0, #world)
當使用 rotate 命令,事件會在一個鍵每次按下時輕微改變一個模型的方位角度。當使用 translate 命令,事件會在一個鍵每次按下時輕微改變一個模型的位置。每次鍵按下會在一個軸上改變模型的位置與旋轉角度的一個單元值。你可以在舞臺上的位置與旋轉字段中看到每個軸上的數值是如何依賴于哪個鍵按下而改變的。
注意到 rotate 和 translate 命令包括了一個 “#world” 參數。這告訴 lingo 模型的運動是相對于整個 3d 世界的,而不是相對于 3d 世界中的其它物體的。
影片提供了一個代替程序, alternate interface ,可以代替 “interface 1” 程序。這個代替程序履行修改位置與旋轉屬性的數值的同樣的任務,卻不是使用 rotate 和 translate 命令。
看 scene 2
影片中的第二個 scene 說明了如何移動模型和攝像機相對于其它物體。在這個 scene 的 3d 世界中包括了三個模型而不是一個。每個有四個字母的模型都是大模型大寫字母 “p” 的子對象。由于這種關系,小模型們可以相對于父對象大寫字母 “p” 而運動,就象相對于 3d 世界或相對于它們自身一樣。
現在的舞臺看起來和 scene1 一樣,只是多了三個按鈕,是用來允許你選擇小模型們相對于它們自己、它們的父對象或整個 3d 世界而運動。你可以通過選擇標記是 “self” 的按鈕來選擇小模型們相對于它們自己運動,選擇標記是 “parent” 的按鈕來選擇小模型們相對于它們的父對象運動,選擇標記是 “world” 的按鈕來選擇小模型們相對于整個 3d 世界運動。
名叫 “selfbeh 、 parentbeh 和 worldbeh” 的腳本的作用是更新記錄 “#self , #parent , 或 #world” 的全局變量 grelativeto 。舉個例子:
on mouseup
grelativeto = #self
end
然后,全局變量 grelativeto 被用來傳送相對參數給在 scene2interface 腳本中的 translate and rotate 命令。
member(‘‘3d2‘‘).model(‘‘a2‘‘).rotate(-1, 0, 0, grelativeto)
試驗各種不同的相對運動并觀察它們可見的不同效果。(記住要按 shift 鍵呀?。海ㄍ辏?