Unityで簡単モデリング! UModeler

Unityにblenderなどのモデラーで作った3Dモデルを読み込めば、アニメーションさせたりスクリプトで動かすことができたりと、3Dモデルに息を吹き込むことができますね。
Unity単体でも球や円柱などのプリミティブな3Dモデルを作成できますが、もっと複雑なオブジェクトが作れたら、よりUnityが楽しく使えそうです。
それを可能にしてくれるassetが「UModeler」です。

8月も終わりですね。今年は新型コロナでゴタゴタした夏でしたが、それでも夏が終わるのは少し寂しさを感じますね。

この記事は「Unity アセット真夏のアドベントカレンダー 2020 Summer!」の29日目の記事です。今回、私は2回目のアドカレ参加です。
前回は、Easy Roads 3Dという道路を作るassetの紹介で参加しました。今回もメッシュ系asset繋がりです。

<UModelerとは>

UModelerは、Unityエディタの中で3Dモデリングを行うためのassetです。
3DモデリングができるUnityのassetは有名なものだけでいくつかありますが、その中でも群を抜いて使い勝手が良いassetだと思います。

3Dモデリングソフトではなく、敢えてUnityのassetで3Dモデリングをするメリットは、やっぱりUnityの中だけで完結することです。
3DモデリングソフトとUnityを行き来するフローを確立していれば、このメリットはそれほど大きなものでは無いかもしれませんが、例えばUnityで作った町の中にUnityのUIで建築物を直接作ることができるのは、ソフト間の切り替えで思考が止まらないので凄く快適です。

もちろん、オブジェクトを作成・編集するのにassetでは必要以上に時間がかかったりする場合は逆効果なので、素直に3Dソフトで作成・編集した方が良いと思います。ここは使い分けの勘が必要になりますね。

UModelerの説明に入る前に、言わなければならないことがあります。
実は、Unityには既にProBuilderという3Dモデラーがpackageで提供されています。元々は、Unity Asset Storeで最も有名な3Dモデラーのassetだったのですが、少し前にUnityファミリーの一員となり無料でUnityからimportできるようになりました。

UModelerの良さを知るためには、このProBuilderを触ってみるのが一番分かると思います。ProBuilderは無料なので、もしProBuilderを使ってみて用が済んでしまえば、それはそれでラッキーですしね。w
UIは、どちらも標準的な3Dモデラーのスタイルなので、ProBuilderを覚えてもそのままUModelerで活かせます。

私自身、最初はProBuilderを使ってました。自作ゲームで作ったダブルループコースは、ProBuilderで作りました。(UModelerが使える今となっては、もっと早く、もっと滑らかな路面を作ることができると思います)

[UModelerやProBuilderで作ったモデルが入ったゲームです。良かったら遊んでください〜]

ProBuilderは、確かに有名なだけあってなかなか使えるのですが、細かい操作でかゆいところに手が届かなくて、「これ、使い続けるか?」と微妙な感じでした。
ProBuilderは、assetだった時代は3Dモデリングと言うよりは、プロトタイプ作成ツールとかレベルデザインツールと言われてましたね。

結局、ProBuilderはそれっきりで、UModelerを使うまではShadeという3Dソフトでモデリングして、.fbxファイルを介してUnityと行き来していました。

UModelerはツールの種類と機能が豊富なので、ProBuilderで作るのに時間がかかったり作ること自体が困難だった形状をより簡単に作ることができる、3Dモデリングソフト寄りなUnityのassetなのです。

■UModelerを使うのに必須のUnityスキル

[UnityのSceneビュー]

UModelerは、UnityのGizmoを使って移動・回転・スケールを操作できるスキル、UnityのTPS操作のショートカットキーが操作できるスキルがあることを前提としています。(この辺は、ProBuilderであろうとMeshMakerであろうと同じで、Unityのassetである限りはそうなるようです)

●Gizmoは、3D空間上にスピーカーアイコンやライトアイコンなどが浮かぶお馴染みのUnityエディタのUIです。
UModelerでは、オブジェクトを選択すると出てくる多種多様なハンドルを多用します。これはUnityを使っている方ならほぼ操作できると思うので問題ないですね。
UModelerでは、オブジェクトとそのメッシュの点・線・面はもちろん、ミラーツールなどのUIもGizmoを使って操作します。

●TPS操作の方は、UnityエディタのSceneビューで、マウスを右クリックしながら[W][A][S][D]キーで移動ですね。
あと、カメラを上下させる[Q][E]キーと、Shift+[F]キーの注視も多用します。
この辺りは通常の3Dモデラーと同様で、ショートカットを覚えてるだけUModelerのモデリングが効率的になります。

■ぶっちゃけ、UModelerの生存状況は?

[UModelerは毎週アプデするのもザラですw]

UModelerのアップデートは頻繁で、バグFIXは速やかに対応してくれます。
私が使い始めた2019年12月からでも、ずーっと休みなくアプデを繰り返して機能強化やバグFIXが進められています。

アップデート作業は簡単で、importした時のフォルダを捨てて、キレイにimportし直すだけでOKです。また、assetの容量が非常に軽いので、Asset Storeからのダウンロードもストレスが無いです。

オンラインマニュアルもしっかりしていて、チュートリアルのYoutube動画は充実しています。


アイコンじゃなくテキストボタンにすると機能の多さが際立ちます。w
UVには専用のウィンドウとUIがあります。

Unityのassetとは言えほぼ3Dモデラーなので、機能説明だけでマニュアル本が1冊書けるくらいのボリュームがあります。

今回の記事は、UModelerの大まかなワークフローと、「ここが凄いよ!UModelerの機能5選」という感じで機能ピックアップの紹介にしたいと思います。

<UModelerのワークフロー>

既にimport済みが前提で説明を始めます(と言っても、importしたら即使える状態だと思います)。
あと、Unityのシーン保存は暇さえあればデフォルトで常にする!(みんなそうですよね?)ということでお願いします。w

UModelerのフローとしては、以下ざっくりとこんな感じです。

1)UModelerのオブジェクトを作る:

UnityのHierarchyにUModeler ObjectというGameObjectを作ります。(Unity標準のCubeなどと同じ単位)

UModeler Objectを作るには複数のやり方がありますが、一番簡単なのはUModelerウィンドウにあるアイコンボタンをポチっと押すだけです。
UModeler Objectが作られた時点では、まだオブジェクトの中身は空っぽです。

また、空っぽのUModeler Objectを作る以外にも、UModelerizeという機能で既にHierarchyに存在する既存モデルのメッシュを読み込むこともできます。
(ただ、複雑すぎるメッシュをUModelerizeで読み込むと重くなってしまいます。ローポリ程度なオブジェクトの読み込みが良いと思います)

2)オブジェクトの中にメッシュを作る:

作ったUModeler Objectの中にメッシュを作成します。ここからは、Unity標準の使い勝手から独立しています。

3Dモデラーらしく、2Dの図形を描いて立体起こしの元にしたり、予め用意された多種多様なプリミティブなどを使ったり、様々な方法でメッシュを作ることができます。
今回は、予め厚みのある壁付きの部屋が作成できるRoom Toolという機能を使いました。

3)メッシュを編集する:

UModeler Objectの中に作ったメッシュを加工していきます。代表的なツールで、引き伸ばしツールやミラーツール、穴を開けるツール、ベベルツール、カッターツール、整列ツール、消しゴムツール、もちろんブーリアン演算も!
これら以外にも様々なツールが用意されています。

ProBuilder(ShadeやBlenderなどの一般的な3Dソフト)などと同様、Sceneビューの上に設置される、頂点・線・面・立体を選択する切り替えで、選択するモードを選んでメッシュを編集します。

4)メッシュを保存する:

UModeler Objectで作ったメッシュをUnityの.assetファイルとして保存します。これはUnityのシーン保存とは別の保存になります。
命名してメッシュを保存しない場合は、「um_4050」のようなファイル名で一時的なメッシュとしてシーンと一緒に保存されます。

この保存とは別に、.objやPrefabファイルとしてExportする機能もあります。

5)マテリアルを貼る

UModeler Objectのメッシュで選択した面単位で、UnityのMaterialを貼ることができます。
アトラス画像をMaterialにセットしてUVテクスチャとして設定し、ポリゴン単位でデカールのようにテクスチャを貼り付けることも可能です。

ざっくりですが、ワークフローの説明は以上です。
1)の入り口は必ず通りますが、2)〜5)は必要に応じて行き来することになると思います。
上記、一連の操作を動画にすると上のtwitterの動画のようになります。工程で分けると何だか物々しいですが、動画で見ると一瞬ですね。

2)〜5)はUModelerObjectの中の話になり、Sceneビュー上にある点・線・面ボタンの間の作業になります。
面ボタンの右隣にあるオレンジの立方体ボタンがオブジェクト単位の編集になり、UnityのGameObjectを編集することになります。

つまり、[点・線・面]でUModeler内の編集をして、[立方体]でUnityに戻る、ようなイメージで作業を切り分けることになります。

<ここが凄いよ!UModelerの機能5選>

と言うわけで、ProBuilderやMeshMakerなどの3Dモデリングassetを触った私の独断で、UModelerの特筆すべき特徴を順不同にピックアップしていきます。

【その1】何はともあれPush Pull Tool機能

端的に言うと、「面に描いた図形に側面を持たせて押し込んだり引き出す」機能です。
引き出す方は、よくあるExtrude機能にも似ているので「へぇ〜」くらいにしか思わないのですが、押し込む方を初めて見た時は「えぇ〜!?」ってなりました。w
この凄さは見た方が早いので、以下tweetの動画を見納めください。

つまり、厚みのあるオブジェクトに対して窓穴を簡単に作れるのです。
もう、これだけで建築物が作りたくなりますね〜。
上のtweetの動画のように、UModelerは多角形を扱うことができるので、星型など複雑な形状でもできます。

Push Pull Toolの隣のボタンはMulti PushPull Toolと言って、複数の面を選択してPush Pull Toolと同じことができる優れものです。(限界はあるので多大な期待は禁物ですw)

ただ、Push Pull Toolも万能な訳ではなく、開ける面が水平垂直からズレると挙動が怪しくなってきます。なので、上手い穴の開け方としては、壁が予め水平垂直の時に穴を開けておいて、開けた後に壁を斜めにしたりするのがベターです。
(仮に複雑になってしまった壁に対しても、側面を持ったまま押し込むことはできるので、開かない穴の出口を自分で消して点で繋ぎ直せばできないこともないです)

【その2】細かい設定ができるStair ToolとSpiral Stair Tool

1選なのに機能が2つ入っちゃいましたが、どちらも階段作成ツールなので固いこと言わないでください。w
階段作成ツールはProBuilderにもありますが、UModelerのは調整機能が細かいです。

上のtwitterの動画の右下にpropertiesというフローティングパレットがおいてあるのですが、UModelerはUnityのcomponentだけでなく、このパレットからもプロパティの設定ができるので便利です。
ここでUnityのUIでおなじみの数値ラベルを左右にグイグイ動かすと、ダイナミックに階段の形状を変えながら検討することができます。

ちょっと見た目に派手な目くらましの機能ですが、TPSゲームをサクッと作って自キャラが階段を昇るところを想像しただけでワクワクしちゃいますね。w

【その3】多彩な選択ツール群

選択ツール機能は、かなり地味なのでまとめて1選としました。w
UModelerが優れていると感じるのは、選択ツールが豊富なことが大きいと思います。
普通の3Dモデラーと比べたらまだ足りないですが、Unityの3Dモデリングassetでここまで揃えたのはUModelerくらいじゃないでしょうか?

Isolated Selection Toolは、オブジェクト内の塊を選択します。(1つのUModeler Object内にメッシュの塊はいくつも作れます)
Loop Selection Toolは、水平方向に帯状の選択をします。
Ring Selection Toolは、垂直方向に帯状の選択をします。
Invert Selection Toolは、選択した範囲以外の非選択領域を選択します。(逆転ですね)
Increase Selection Toolは、最初に選択した領域から少しずつ領域を増やしながら選択していきます。(例えば、選んだ面と同一平面を選びたい時に、これで選んでいけます)

3Dモデラーは選択ツールが豊富であるほど、点・線・面の選択の仕方が増えるので作業効率が上がって手が早くなりますね。
上のtwitterの動画では面だけで実演してますが、点と線の選択にも使えます。

【その4】巨大なオブジェクトをバラすのに便利なDetach Tool

単機能ながら意外に便利なDetach Toolです。Unityで巨大なオブジェクトを作ると、カメラの視界にその一部しか映っていなくても全部表示されてしまいます。そこで、巨大オブジェクトをcullingするために、パーツごとにバラすのに便利なのがDetach Toolです。

選択したメッシュを1つのオブジェクトとして母体から切り離します。
ここで切り離しのために面を選択する作業で、【その3】の多彩な選択ツールが活きてくるという訳です。
自作ゲームでも、以下画像のように長〜い海底トンネルをcullingしたかったので、細かくバラすのにDetachツールを使いました。

UModelerにはDetachの逆のツールである、Combine Object Toolも用意されています。これは複数のオブジェクトを選んで使うと、合体して1つのオブジェクトにしてくれます。
さらに、特定範囲の頂点をマージ統合してくれるツールもあるので、分離・合体は問題なく行えます。

【その5】3D cursorとPivot Tool

最後の5選目は悩みに悩んだ結果、これまた地味ですが実用的な3DカーソルとPivot Toolにしました。
3Dカーソルを中心として、オブジェクトのピボット(支点)を自由に決めることができます。ただ、これだけの機能ですが、結構いろんなところで活躍します。

例えば、ドアを作るとした場合、ドアの回転の中心はヒンジなので左右どちらかの辺が軸になります。ところが、Unity単体ではメッシュの支点の位置を変えることができないので、3Dソフトなどでピボットを変更して読み込み直す必要があります。

UModelerには、Pivot Toolの隣にPivot To Center Toolという、お手軽にピボットの位置を変更できるツールもあります。しかし、これは天面中心か、ど中心、底面中心の3択しかありません。
そこで、メッシュの自由な位置を支点にするために3Dカーソルを使うというワケです。

使い方は簡単で、3Dカーソルが支点になるようにオブジェクトの位置を決めてPivot Toolを押すと、メッシュの支点が即座に変わります。(これをUnityで確認するには、Unity側のToggle tool handle positionというボタンをPivotに切り替える必要があります)

特に、アニメーションやスクリプトでオブジェクトを動かすときは、すごく簡単なことではあるけど大変重要なツールになります。

<追記>
Pivot Toolを使ってピボットの位置合わせもできるのですが、Prefabの中でコライダーを作ったりして位置合わせをする場合は、Bake Transform Toolを使ってBake PositionやBake Rotationをした方が合わせやすかったです。
3DカーソルとPivot Toolは、単品のメッシュでサクッと支点を変えたい時に良いですね。

<まとめ>

かなり地味な機能が多い特徴5選となりましたが、「痒いところに手が届く」という意味では、どれもUnityで使う機会が少なくない機能だと思います。
もちろん、UModelerにはUV機能やブーリアン機能などド派手な機能もたくさんありますし、地味な機能でも面貼り機能や重複頂点消去などたくさんあります。(個人的には、.aiや.epsファイルで2Dベクターが読み込みができるようになったら最高だなぁと思います)

また、今後も新機能が追加されていくことも期待できると思います。
ProBuilderではちょっと力不足かなと感じたら、UModelerを検討してみるのもアリかもしれません。

明日のアドベントカレンダーVR発掘隊さんの「unityアセット Gaia2の機能まとめてみる!」です。
よろしくお願いします〜。

[UModelerで作った家]
[UModelerで作ったゲーム内の施設]
[UModelerで作った海底トンネル入口]
(道路はEasy Roads 3Dのものです)

これらのオブジェクトは、以下自作の「爆走!ドライビング スクール シミュレーター」で実際に使っています。

画像に alt 属性が指定されていません。ファイル名: 640_200_banner.jpg