1. 程式人生 > >Unity3D的坑(內附場景模型切割程式碼)

Unity3D的坑(內附場景模型切割程式碼)

前言

其實我是寫完後補的…

今天搞這個本地座標系轉世界座標系,發現官方API有一行…

Description 描述
Transforms position from local space to world space.
變換位置從區域性座標到世界座標。
Note that the returned position is affected by scale. Use Transform.TransformDirection if you are dealing with directions.
注意,返回位置受縮放影響。如果你是處理方向使用Transform.TransformDirection。

受縮放影響??
想了想矩陣座標變換…沒有頭緒,隨便調個gameobject的座標試試看吧…
結果發現兩個gameobject A B,A在B上面,重疊著的,結果Z軸座標相差200多??
然後去3DSMAX重新匯出,新人小白,不太懂,就隨便試試。。
結果吧,整個場景都崩了。。如下。。

事後覺得,可能是環境問題,這臺機器是新裝2018的,跟以前2014的環境不太一樣。

這篇沒結構!

啊啊啊,真是氣死我了,折騰了一下午,就這個模型,真的令人頭禿。
模型是網上下的,經過裁剪之後,另存了一小塊作為測試用。
在3DSMAX執行的好好的,是這樣似的。
原圖
一匯出FBX,再扔進Unity,就崩啦!崩啦!
崩啦!


上網查了好久的資料,最後求助於數媒專業的老哥,重置縮放、重置變換,重置所有能重置的,然後塌陷再匯出…嗯…還是失敗…
氣死了,最後找出一個好像可以稱之為環境的東西?
V-ray、3DSMAX升級包,都給裝好了,重啟,再匯出一遍看看?
真是玄學,居然就好了,就好了!!!
氣瘋。。
在這裡插入圖片描述

當然那只是玄學,不是正經的注意事項…

重置所有能重置的真的是在匯出場景前,很有必要的操作!!!

因為我今天在unity裡發現一個詭異的事情…

在場景中,同一層的兩個相鄰gameobject,Z軸座標值居然相差200多…基本上就是
A在B上面,但是Z軸座標相差200多,一開始不是很懂…一通操作之後…大概是有什麼變換重置掉了,所以現在座標正常了…

重要的事情說三遍!

3DSMAX匯出場景前,一定要重置變換!

3DSMAX匯出場景前,一定要重置變換!

3DSMAX匯出場景前,一定要重置變換!

可能有些需求不在意這些事

我這個或許是特例吧,需要通過世界座標判斷點是否在視野內…
需求是把視野內的場景扣下來,就是模型切割,然後匯出。。
由於一些點,比如一部分在視野內,一部分在視野外,但是在視野邊界線沒有碰撞
這些點就沒有辦法去切割,所以嘛…
簡單粗暴一點,把視野外的點,直接忽略,然後匯出就完事了!
所以,非常需要點的座標是正確的!

模型切割…就不放了…有點跑題…
不過有核心程式碼
連結: 視野場景切割並匯出.