Spring08

WECO Landmarks in Second Life

投影布幕實作(三)

除了用到 link message ,改變大小跟位置之外,還需要用到 timer 來讓布幕依據時間改變,做法是再 default state 中加上一個 timer(),並將改變大小跟位置的程式碼寫在其中,當有 message 傳來時便呼叫 llSetTimerEvent 這個 function 來開始執行 timer 中的程式,llSetTimerEvent 接受一個參數來設定多少時間會啟動 timer 一次,本來是想說值設定的越小,布幕會跑得更平順,不過 lslwiki 上有提到最小只能接受 0.04 秒,聽梅老大的解釋是如果不設定個限制,server 的負載會太大,所以也只能夠這樣。當布幕升降到一定高度時要讓動作停止,這時候只需要將 llSetTimerEvent 的參數設為 0 就能夠停止 timer。

在升降的時候,因為改變大小是以中心為基準,所以假如我一次縮小 0.5 的話,改變位置就要設成 0.25,這樣才會有一邊不動一邊動效果。

還有,當物件 link 起來時,其子物件的 x, y, z 軸會跟 root 一樣,所以建議大家當要 link 物件時,最好讓他們的 x, y, z 方向統一,不然就有可能發現按上升紐時,卻是左右邊縮了起來。

小技巧是,當要縮小物件時,記得給他加上個最小值,不然可能縮到最後,物件不見了,你也點不到它。

default video texture 也是有方向的,請確保方向正確,不然影片可是會顛倒。

最後我這個布幕有個問題,就是雖然黑色部分比白色來的大,但是如果我將兩塊布幕每次縮小的數值設為一樣,照理來說應該兩塊縮小的速率應該要一樣,可是跑到最後卻發現黑色布幕會超過白色布幕,而且先接收到訊息的也是白色布幕,很奇怪的現象,所以折衷方法就是將黑色布幕縮小的值減少一些, 才勉強及格,或許我應該上傳一塊 texture 就不會有這種問題了。

投影布幕實作(二)

按鈕部分的程式碼很簡單,短短三四行就完成了,主要就是在玩家 touch 按鈕時會將訊息送出,而接收訊息的部分就顯得麻煩了,也就是兩塊布幕的部分。為了要讓布幕有升降的感覺,很直覺的就是會讓布幕改變大小,不過在改變大小時,記住,Second Life 的物件是以中心為基準來放大縮小,改變大小時會兩邊一起來,所以只改變物件大小沒辦法達成我所希望的動作,解決辦法是,同時改變大小及移動物件,這樣看起來就會像是真實布幕一般,上面固定下面移動。

我先在 default state 之外宣告 size 跟 position 變數,然後再 entry state 時利用 llGetScale 跟 llGetLocalPos 來取得布幕的大小跟位置,記住,當物件 link 起來時,應該使用 llGetLocalPos 來取得該物件相對於 root 的位置,而非利用 llGetPos 來取得物件的絕對位置。還有一點要注意的是,因為我將俄兩個 function 寫在 entry state 中,而 entry state 是在 compile 之後即會進入的狀態,所以假如你已經寫好 code 且 compile 了,物件就會記錄當時的大小跟位置,假如這時你再利用 Second Life 中的物件工具來改變大小跟位置,變數中所存的大小跟位置並不會隨之改變,除非你再 compile 一次,不然你就會發現,明明你就已經用工具改變了大小跟位置,怎麼在跑程式的時候卻又跳回原來的樣子。

 

投影布幕實作(一)

想要做投影布幕是因為再做 term project 家庭劇院組時,已經拉好了投影布幕的物件,而且利用 default video texture,也可以同時在上面顯示影片,只是沒辦法像真實的投影布幕一般可以上升下降,剛好 LAB3 是要我們實作 link message,剛好投影布幕很符合要求(按鈕送訊息給布幕來操作升降),所以順勢將它完成。

首先先將幾個物件做好,總共六個prim,分別為布幕上方的捲軸、黑色的布幕邊框、白色的布幕、紅色按鈕(上升),綠色按鈕(下降)和按鈕基座,其中有程式碼的為黑色布幕邊框、白色布幕、紅色按鈕及綠色按鈕。

一開始做的時候,不知道只要在已經 link 好的物件上,勾選"選擇連結部分",就可以選擇 link 前的物件,害我一直在 link、unlink 之間不斷循環,一下子物件大小不對,一下子位置錯誤,一下子程式碼不見等等,弄得我一個頭兩個大,有點笨。

要完成升降的功能,需要利用到 llMessageLinked(integer linknum, integer num, string str, key id) link_message(integer sender_num, integer num, string str, key id) 這兩個 function,一個為傳送訊息,一個為接收訊息,我在紅色按鈕及綠色按鈕中皆放有兩個llMessageLinked,其中第一個參數為 4 跟 5(記住,當物件 link 起來之後,最後選擇的物件為此 link 物件的 root,以 1 表示,倒數第二個以 2 表示,以此類推),而紅色按鈕的第三個參數為 "up",也就是將 "up" 訊息傳出,綠色則為 "down",讓黑白布幕收到訊息時可以判斷到底要上升還是下降。

 

 

MAYA與3D MAX

摸了一下3D MAX後

又看了一下論壇

發現大家也蠻推MAYA

因為MAYA做動畫跟電影特效會比較適合

而3D MAX比較適合做3D的圖 

所以又去碰了一下MAYA

發覺MAYA比較難操作 

而且功能比較多

但MAYA看起來比較有系統 

但在台灣好像用3D MAX的人比較多

所以今後可能會先學3D MAX吧 

[Term Project] Animation in Second Life

這次的Term Project我們主題是:線上虛擬復健室
主要是使用了QAvimator來製作.bvh檔上傳至Second Life製作動畫
在SandBox中也建立了一個小間的復健室
並自己製作或是搜尋其他免費的物件來讓這間復健室內容更為豐富

途中也面臨了不少的困難
像是SandBox的Prims容納數不足
因此我還必須將學長的物件退回
還有QAvimator所製作出的animation跟我最後上傳至Second Life的動作有落差
導致我所製作的animation無法達成我所預期的動作
梅老師是說可能是因為我們所使用的外部軟體設定上的問題
的確我所使用的QAvimator是非常陽春的軟體
如果能利用Maya再搜尋所應設定的參數...etc
應該最後就能完成我所預期的復健動作吧

而Second Life上傳一個動畫必須花費L$10
也是我最後無法完整的完成復健室每個復健動作的一大障礙
另外還有Domain Knowledge的不足
復健有分不同的種的復健
物理性的、光學性的、電療...etc
因為我們都不是專業人士
沒辦法將一個真正復健室的動作完整呈現
再加上美工能力的不足
最終呈現出來的結果還是有所落差
不過還是有學到了不少東西!!

虛擬經濟帶動龐大商機及利潤 單一遊戲公司營收媲美小國


原文

 

太令人驚訝了!一個虛擬世界中的交易,

竟可以為現實帶來這樣大的商機,

想不透開發者最初從何發現此構想,

這樣大膽的投資,在我這種一般人思維中

,不太可能放手去做.

 

訂閱文章