UnityのCubeを引き伸ばしても、テクスチャが引き伸ばされずにしき詰めてくれるアセットを見かけたので、メモします。
Master Cube
https://www.assetstore.unity3d.com/jp/#!/content/40033
アセットの名前はMasterCubeで、Cubeを引き伸ばした時のUVを云々する事に特化したアセットみたいです。
大きな機能は3つ。
- Cubeを引き伸ばしてもテクスチャが伸びなくする
- CubeのUVを面毎に調整する
- メッシュを結合して単一のメッシュにする
早速見てみましょう。
Cubeを引き伸ばしてもテクスチャが伸びなくする
UnityのScale機能は、Cubeを引き伸ばしてもUVを調整しません。アセットから取り出した頂点情報を再配置せず、そのまま使いまわします。
一方このアセットの場合、引き伸ばしたメッシュを元にUVを調整といった処理を行うみたいです。マテリアルのタイリングの設定では無いので、マテリアルが増えるといった事は無いっぽいです。
使い方は簡単です。
- Master CubeコンポーネントをCubeに追加する
- Reflesh Base UVを押す
- スケールを変更する
CubeのUVを面毎に調整する
Cubeのスケールを伸ばした場合、CubeのUVが合わなくて境目が見えちゃう事があります。そういったケースでUVを強引に調整するのが、この機能です(多分)
Face Transformには、Front~Bottomまで6面のUVとOffset、あとRotationの設定が開放されています。この項目を使用すると、6面のUVを調整出来たりします。
UVの流れで変な方向を向いていた時に調整したら、便利そうです。
メッシュを結合して単一のメッシュにする
最後がメッシュの結合です。
これは単純に、UVを調整したキューブ達を結合して一つのメッシュにします。オブジェクトが多くてドローコールが多い等の場合には結構有効そうです。
機能的にはUnityのシーン上に配置したモデルを結合する と同じ感じです。またUnityエディタ上で作成したMeshをOBJファイルとして出力する と比較して単なるメッシュなので、最適化出来る範囲は狭いです。
この機能の使い方は簡単です。
- 空のGameObjectを作成
- メッシュ群を空のオブジェクト以下に配置
- GameObject > Combine Meshsを選択
- 「Are you sure if want to combine meshs?」と聞かれるのでYes
- 「Destroy old mesh」と聞かれるので、
更に編集したい場合はNo、そうでないならばYes。
Yesを選択すると、オブジェクト群が単一オブジェクトに差し替わります。
これでMasterCube > Combine Meshsフォルダ以下にメッシュが作られます。
感想
ステージを作りたい場合は、ProBuilder Basic(旧名Prototype)を使うのが良さそうな気がしますが、とりあえずCubeで作ってMayaやMaxといったDCCツールで味付けするようなケースで、もしくはもっと楽に適当に作りたいケースでは、結構良い感じなきがします。
https://www.assetstore.unity3d.com/jp/#!/content/11919
少なくとも、Cubeをひたすら並べる擬似マインクラフトスタイルよりは良い気がします。パフォーマンス的に。
関連