BlenderやUnityを中心に、手を出して引っ込めたものをまとめます

【Blender】シームレスな3Dオブジェクトを作る

タイトルのまんま。

Unityで地面を作るときに、うまい人は頂点シェーダとかを使うんだろうけど、おれにその才はなかった。

だからオブジェクト自体の繋ぎ目をなくそうという短絡的な判断。

テクスチャを使わずにシームレスな地面を作る

例えば、

gigazine.net

こういう、水面や地面の三角ポリゴンが強調されていてかわいいゲームが多い。

この雰囲気のモデルを作るだけならチュートリアルは結構あって、

cgi.tutsplus.com

有名なこれとか、あとチュートリアルじゃないのも混じっているけど、

www.youtube.com

この人はRedditのローポリ作例スレでかなり見た(気がする、あんまり覚えてない)。

で、最終的には、こんな感じになってくれた。

f:id:honte:20170830003828g:plain

実際に作る手順は以下。

  1. 平面を細分化
  2. プロポーショナル変形を使って変形
  3. 四角面を三角面に変換
  4. 他方の頂点を複製して繋ぎ目を消す

平面を細分化

f:id:honte:20170830004417j:plain

平面を作ったら、

f:id:honte:20170830004437j:plain

ツールシェルフの細分化。

左下の分割数は数字を直接入力すれば10以上にもできる。

実は、ここでフラクタルに値を与えてやれば、この後の頂点変形を飛ばせる。いろいろと調整できるのは後述の方だけど、全体的にノイズっていれば問題ないならフラクタルの方がはやい。

プロポーショナル変形を使って変形

f:id:honte:20170830005222j:plain

適当に頂点を選択してプロポーショナル変形のランダムを選ぶ。

f:id:honte:20170830005325j:plain この青い丸とぎざぎざのとこ(アバウト)

その状態で移動すればランダムに頂点を変形できる。移動させながらホイールを回転すれば、変形を適用する範囲を調整することもできる。

もし中央だけノイズを強めにしたいながら、最初に選択する頂点を絞れば良い。

f:id:honte:20170830005615j:plain

ノイズをかけ過ぎたと思ったときはUndoか、メッシュ→頂点→頂点スムーズを使うことでも動きを抑えられる。

頂点スムーズを使えばある程度なだらかになるので、ノイズ感をあまり出したくないときは積極的に使う。

四角面を三角面に変換

これはそのまま、全選択してメッシュ→面→面を三角化

Unityとしても三角面の方が都合が良い。

他方の頂点を複製して繋ぎ目を消す

要は他方の頂点が同じであればシームレスになるという安直な発想。

f:id:honte:20170830010132j:plain

片方の頂点を消して、反対側の頂点を複製、移動する。

面張りは辺ループのブリッジを使う。繋げる頂点を選択してメッシュ→辺→辺ループのブリッジから実行する。

上下も同様。

 

完成したものにMatcapつけて配列複製するとこんな感じになる。

f:id:honte:20170830010709j:plain

結構リピート感が気になる……?

この辺はしょうがないとして割り切ってしまった。ノイズにノイズをブレンドするのはUnityの方でやれば良い。

ちなみにノーマルマップでベイクすればテクスチャとして活用できる。

f:id:honte:20170830010917j:plain

今回は地形としての利用なのでテクスチャは使わないけど、ブロックの表面の凸凹にも流用できそう。

cyclesでは無理だけど、Blenderレンダーならディスプレイスメントでベイクして、当たり前だがUVs Sculptingもできる。

www.youtube.com

※ずっと前からやりたくてもできなかったチュートリアル