從WM2到mesh陸地

2021-06-27 19:11:10 字數 2855 閱讀 3503

tv中的mesh陸地不象terrain陸地那樣有那麼多的功能,更無法使用mini草等東西,甚至對座標位置高度都不可能有函式支援,但是,由於它不是用高度圖生成的,所以應該在形狀上能夠與物理陸地嚴格匹配.

1、首先在wm2中使用output的mesh output的預設引數,輸出mesh成obj檔案。(同時也應該用height output生成高度圖,這個高度圖不在渲染或物理中擔任任何形體生成作用,僅僅只在ldt中用於生成表面貼圖,生成方法詳見"tv陸地與heightfield的轉換**"的第2、3條,生成貼圖的大小也不一定要嚴格規定,因為它畢竟只是一張貼圖而已)。

2、3dmax10匯入生成的obj檔案。方法嚴格按照"從wm2到剛體陸地"第1、2條,注意不要翻轉任何座標,這樣匯入的地形將正面向上正確的,匯出的地形亦然。

3、匯入的檔案單位為公尺,要想變大(無論在物理還是在渲染裡),都可以用縮放工具放大2的倍數倍。

4、貼圖與材質:ldt中做好的貼圖,可以建乙個普通材質球,漫反射顏色中指定位**件並賦予mesh。

使用uvm貼圖的平面,保證貼圖大小與mesh同。(不要勾選[真實世界貼圖大小])

匯出場景為tvm,一定要連light map一起匯出,否則匯出的mesh將沒有texture.

5、使用"從wm2到剛體陸地"的其他部分,匯出物理檔案。

6、在渲染中出來的檔案,不要作旋轉和移動,直接就可以使用。

這裡需要注意的問題是,座標系的問題,在max匯出到mesh這兩個階段,地面都必須以y軸向上的。

而在max匯入到匯出成物理時,則必須要先勾選zx軸互換,並且還要將陸地從上方旋轉180度,這時候看上去陸地是豎直的,這就產生了兩個問題:

1、匯入max就必須匯入兩次,一次是zx軸不互換的,為的是產生正確的mesh去渲染。一次是zx軸要互換並且要旋轉的,為的是產生正確的物理陸地。

2、在進行上面一條時,會有旋轉出現,那麼旋轉的軸向及軸心位置是否正確,將關係到物理陸地與mesh的正確匹配問題。

讓我們觀察匯入時zx軸沒有互換時的狀態:

下面一張是zx軸互換了的匯入時狀態:

可以看出,在物理狀態時,「下面」的概念在圖中就是-y軸,「上面」的概念是+y軸。

要想將其還原成上面綠圖的形狀,對紫色平面進行左右旋轉是不行的,而只能對紫色平面進行上下翻轉,才可能得到綠圖的形狀。

現在讓我們把紫圖上下翻轉180度,得到了第三個圖形醬紅圖:

想象一下左邊是「上面」,這個圖形才是正確的,唯一的問題是零點座標的位置在**?

在綠圖中,零點座標在山最凹點的下面

而醬紅色圖中,零點座標卻根本不靠近最凹點,而是在山脊點的上方。

所以我們得出乙個結論,在max匯入物理時

1、zx軸互換

2、上下翻轉

3、將零點移回凹點的下方,既在醬紅圖中,將mesh先向左邊(即渲染中的上方)移動整個正方體的高度距離,再將mesh向下移動整個正方形的邊長距離。

由此,我們得到了第4個圖-----青色圖:

這裡可以看出,青色圖中無論是形狀,還是零點與陸地的相對位置,都完全與最開始的綠色圖相同了。

但問題依然存在,因為我們無論在渲染還是物理中,所使用的都不是原來大小的陸地,而是放大了幾十倍的陸地,那麼,隨著陸地的放大,使用世界座標放大物體時,其與零點的距離也會發生相應變化,所以,我們在一匯入物體時,無論是渲染還是物理物體,都最好先進行座標對齊,然後再進行旋轉與放縮,座標對齊是以物體外面那個白色邊框為標準,而不是以物體為標準。

如圖所示:

在零點座標對齊之後,便可以進行縮放了,放縮可以使用世界座標作為縮放中心,也可以使用物體中心為縮放中心(最好以世界中心),但縮放完之後,一定要記得再作一次零點對齊,這樣可以把因放大導致的誤差縮至最小(零點對齊要注意多從頂、側檢視進行,這樣就很容易實現對齊)。

結果試驗發現:這樣出來的渲染和物理陸地並不正確,渲染的零點位置及mesh與max完全相同,而物理陸地的零點位置居然跑到了物體的正中間!換句話說,無論在max中是否與世界零點對齊,在物理中都會以物體的中心點作為零點!

所以,我們決定在max中對渲染mesh作如下修正:

1、從上方旋轉+90度。

2、仍然放大倍數

3、將mesh物體的中心點移動到世界零點(使用中心軸,然後利用中心軸的位置與世界零點對比來進行中心對齊)。

4、一定千萬要注意,在物理中的所有物體,凡是涉及到位置的,都一定要將渲染中的xz座標,置換為zx座標,才能正常。

最後,我們得到了完美的世界吻合。

Cocos Creator 從入門到入魔 2

預製體類似於android開發中的自定義控制項,都是自己布局寫好內容,作為乙個新的元件使用。我們可以在場景中先做乙個大概的布局,例如彈出框,包含提示語 兩個按鈕等元件,給這些元件設定自己的操作。然後在層級管理器中將節點拖動到資源管理器中 prefab this.node.removefrompare...

從刪庫到跑路 2

1 查詢整張表的所有資料 select from myfirst schema.pets 如果當前表的資料比較多,只想看到特定行的資料 select from pets where name shagou 在上面這個查詢語句中,可以制定任何列為條件 select species from pets ...

MakeFile從入門到精通 2

程式的編譯與連線 軟體的底層構造系統 1,程式儲存與執行 2,程式編譯和連線 3,程式檔案的分類 4,動態庫與靜態庫 計算機基本都遵循馮諾伊曼結構,cpu 記憶體ram ddr記憶體條 固態硬碟 嵌入式就是flash nor nand 一般手機平板呼叫 pc 伺服器基本都遵循。主要是這三塊組成。一般...