2009-08-23 86 views
0

你好我的目標實現,3D立方體鼠標每面牆漸變填充操作。如何在Flash 3D立方體的兩側沿着旋轉梯度 - ActionScript 3.0中

我發現一些源代碼coresponding到梯度和3D旋轉立方體,但現在的問題是:

當我把這兩個東西放在一起的效果看起來像立方體是用透明線框到背後隱藏的一些漸變背景第一架飛機純黑色背景。漸變總是保持不動。其旋轉/顯示立方體

方法拿到輸入三個參數ROTX .roty,ROTZ我想利用它,並將其應用到在每一側上顯示梯度。漸變得到了自己的矩陣,但我不知道如何以及何時操縱此漸變以獲得所需的效果 - 我的意思是變換/旋轉漸變,看起來像是在立方體上繪製,並沿着它轉換到3D位置。我猜測每一邊都應該有獨立的梯度矩陣dor,但是如何處理這個矩陣以適應rotx,roty,i rotz。誰能幫我?

這裏是源梯度 http://snipplr.com/view.php?codeview&id=7050

和網站,在這裏你可以得到立方體FLA文件 http://www.flashandmath.com/flashcs4/cs4simple3d/index.html

,這裏是從鏈接FLA文件的代碼上面我修改

http://pastebin.com/fdc431a4

+0

我喜歡你有代碼的方式,這使得它更容易。我不明白的是你到底想要達到什麼目的。你想要一個陰影立方體嗎?如果是這樣,你需要:1.每個面的不同梯度(或至少可見面的梯度)2.確定你的光在3d的位置(只有x,y,z)......然後你需要將光線與面對光線的臉部相區分,並根據角度,某些漸變將變得更輕,而其他漸變將變得更暗。 – 2009-08-23 11:30:19

+0

答案更新... greetz – back2dos 2009-08-23 12:50:34

回答

1

這是不可能的......透視失真不是affine transformation,這就是爲什麼t這裏就不矩陣會是創建具有正確的透視變形梯度的合適的參數...

我認爲閃存10最簡單的辦法就是真正去用不同的方式......所有的DisplayObject可在改造的空間,讓你簡單地表示由一個DisplayObject任何臉型,就可以執行所有的轉換,然後所有剩下要做的就是Z分類...


編輯:逼近你尋找是不可能的......想象一個面向你的立方體,從黑色到白色,從頂部到底部呈線性漸變......當你開始向右轉時,漸變的線條客戶不再保持平行,而是他們開始形成一個錐形漸變,所有會聚在一個點...

在第二段的方法正是你正在尋找......創建一個DisplayObject(形狀應該這樣做,你不需要MovieClip),繪製一個漸變,然後使用x,y,z,rotationX,rotationYrotationZ ...在3d空間中轉換它,並且只要您使用多個對象,您將需要手動Z-對它們進行排序...如果你想三維漸變,你將不得不放棄該代碼,並使用這種方法,這是迄今爲止最簡單的...

您與AS3的問題真的母鹿與語言無關......你應該重新考慮你的方法......從一種新的語言和一個未知的API開始,試圖增強一個3D引擎而不知道背後的理論,並不是真的最好的辦法......

你應該開始習慣的語言首...一旦你對此感到滿意,我認爲最好的方法就是使用一個好的AS3 3D引擎,比如沙地,papervision,away3d,alternativa或其他......例如在沙地上,你創建一個天空盒子(a 3D立方體),並將任何你想要的材料分配給它的臉部,這樣你就完成了......而且,這些引擎還可以與3D建模軟件進行互操作,所以不需要手動創建多面體並與它們一起玩,你可以導入複雜模型,並做一些很酷的東西......但是做事情的邏輯順序並有足夠的理論知識......

好運氣,然後...;)


格爾茨

back2dos

+0

好吧,但也許你可以建議我應該怎樣處理這個代碼(或者建議其他一些解決方案)來製作這種變換的錯覺,而不是確切的,但是通過操縱一些漸變參數做一部分通過旋轉strengng梯度,剩餘的效果文字只有通過梯度被繪製的表面被轉換的事實才能解決。或者也許有可能訪問現有的電影clisp並操縱它們以及它的漸變 – MoreThanChaos 2009-08-23 11:17:46

+0

我剛剛跳入AS3並在開始時遇到問題 – MoreThanChaos 2009-08-23 11:18:57

+0

從我的角度來看,我可以說它讓我感到不快,我第一次認真接觸隨着閃光燈,我只能說,這次我的直覺和假設,這通常幫助我解決問題,這次失敗了。無論如何,謝謝你的幫助 – MoreThanChaos 2009-08-23 14:15:26