蒼水技術録

蒼水家技術録

蒼水が普段制作とか勉強とかして覚えたことを復習としてまとめてるものです。 それが最適解かどうかはわからないけど、何を目的として始めて、何が必要で、実際何をやって、どうなったか、まで全部過程を残すための技術ブログです。

Blender Tips編 #3 -BlenderとUnityのやりとり覚書その1(モデル)-

どうも蒼水です。
今回はBlenderでデータ作成してUnityに持っていく際のエクスポート設定のお話になります。
これに関してはモデルとリグ(モーション)に関して書きますが、今回はそのうちモデルデータのみにいったん絞ります。

今回の目的

Blenderでモデルをエクスポートする際に何も考えずにデフォルト設定でエクスポートするとUnityに持って行った際ちょっと面倒なことになるんですよね。
いわゆるスケール100倍問題とかって言われたりするやつです。
ついでなのでデータ作成時に気を付けつけたほうがいいかな~的なものいくつかまとめていこうかと思います。

ちなみに扱いやすいデータ、扱いにくいデータの違いは下の画像みたいな違いになります。
赤枠で囲っている部分が良くない部分です。
f:id:Yui_Aomi:20200426231616p:plain

データ作成時に意識すること/大事なこと

まず前提のお話になります。

これに関しては正解というものはないと思うのですが、蒼水が個人的に扱いやすさを考えた上で気を付けていることとして書いていきます。
要素としては以下のこと

  • Transform値が全て1(or 0)であること、かつ寸法も正しい状態になっていること。(フリーズ)
  • 原点がきちんと設定されていること。
  • 英字のみで、2バイト文字を使用しないこと
  • 命名に規則性があること。

主にこのあたりになります。では次項からもっと掘り下げて見ていきます。
(そもそも造形が~テクスチャが~とかそういう話ではなく、あくまでも扱うデータとしてのお話になりますのでそこは今回は考えないものとします。)

2バイト文字と命名に関しては、ただ名前変更すればよいだけなので今回は割愛します。

Transform値のフリーズ

この時点でオブジェクトの寸法は合わせておきましょう。
Blenderではフリーズという言い方はあまり聞かないのですがMAYA等でフリーズと呼ばれているものと同じです。
現在の位置/回転/拡縮を0または1などきれいな状態にします。

f:id:Yui_Aomi:20200426232250p:plain
値のフリーズ
上画像のように上部メニューから【オブジェクト->適用(Ctrl+A)】からそれぞれ選択したものをフリーズできます。
原点がしっかり設定されており、かつ(0,0,0)にある場合は全トランスフォームを適用してしまって問題ないかと思います。
そうでなければ基本回転と拡縮だけ適用してください。
*位置まで適用してしまうとオブジェクトの位置がそのままに原点だけ(0,0,0)に飛んでいきます。もとからそこに設定されていればヨシッ!
これを行うことで乱れていた各値が下のようにきれいになっていることが確認できます。
f:id:Yui_Aomi:20200426232722p:plain
適用前後
*今回は回転はもともと0だったので変化ありませんが、適用することで0にすることができます。

原点設定に関して

原点位置、結構これ大事なんですよね。
なぜかというとアニメーションを作り始めると実感できると思います。

原点位置の考え方

考え方としてはこんなかんじ
f:id:Yui_Aomi:20200426233555g:plain
左:中央に原点
右:底に原点

例えば上画像の様な柱を作成したとして、これをゲームエンジンに持って行ってスケールをいじって配置したい!というシチュエーションがあったとします。
左の状態では上下に伸びてしまい下の位置が揃わない、めんどくせーってなっちゃうんですよね。
なので右の状態にすることで上方向にしか伸びないようにすることで下をそろえたまま拡縮できるわけです。

今回の剣で言えば剣は持ち手部分を中心に回ってほしい!と思ったのでそこに原点を持っていくことでそれを実現することができます。

作成するオブジェクトによって用途は様々なため、シチュエーションに合わせて原点位置を考えて設定していくようにしています。

原点設定方法

では実際に原点を設定していきます。
原点設定は上部メニューから【オブジェクト->原点を設定】から行います。

f:id:Yui_Aomi:20200426234520p:plain
原点を設定
いくつか種類がありますが、自分が良く使うのは

  • 原点を3Dカーソルへ移動
  • 原点を重心に移動

ですね。
とくにに融通が利かせやすいのは3Dカーソルへ移動です。
言ってしまえば指定した場所狙い撃ちで原点設定が可能です。
重心に関してはそのままの通りです。オブジェクトの重心に原点が設定されます。こちらは狙い撃ちができません。

3Dカーソルの特性

3Dカーソル、Blender特有の機能なんですがこれ原点設定時に結構便利だったりします。
こいつ↓

f:id:Yui_Aomi:20200426235220p:plain
3Dカーソル

まず特性に関して確認していきます。

  • クリックで場所を指定できる
  • クリックで指定する際、オブジェクトの表面に張り付く
  • Shift+Cで原点(0,0,0)に戻せる

まずこれを前提とします。
そして2パターンあるので次項のように行います。

パターン1:カーソルが(0,0,0)にある場合

こちらのパターンはメッシュ内部に重心を持たせたい場合に使用します。
剣に関してはこちらになりますね。持ち手の表面ではなく、その内部にあってほしいわけです。

まずShift+Cでカーソルを(0,0,0)へ移動。
次にオブジェクト側を下画像のように、原点を設定したい場所に来るように移動させます。
この状態で原点を3Dカーソルに移動を実行。以上。
f:id:Yui_Aomi:20200426235917p:plain

パターン2:カーソルがオブジェクト表面にある場合

こちらはメッシュ表面に原点を持たせたい場合に重宝します。
柱なんかはこちらの方が楽ですね。

まず、指定したい場所に3Dカーソルをクリックで狙い撃ちしておきます。クリックした場所ならどこにでも貼り付けられます。
次に同様に原点を3Dカーソルに移動を実行。以上。
f:id:Yui_Aomi:20200427000253p:plain

エクスポート設定

ここまででTransformのフリーズと、原点設定まで行ったので最後にエクスポートをします。
デフォルトでは冒頭のようなおかしな数値が入ってしまうので以下のように設定してください。

f:id:Yui_Aomi:20200427000925p:plain
エクスポート設定
デフォルトからの変更点

  • 選択したオブジェクトにチェック
  • スケールを適用をFBX単位スケールに変更
  • !実験的機能!トランスフォームを適用

以上3点を変更していきます。
選択したオブジェクトのチェックは必須ではないです。シーン内にいろいろあるなかで特定のオブジェクトだけ出力したい場合に必要です。
他二つは必須でこれを変更しておかないとおかしな数値になってしまいますので入れておきましょう。

ここまで一通り設定すればきれいなデータの出来上がりです。

まとめ

モデル作成が終わったら...
Transformをフリーズ!
原点設定!
しっかりエクスポート設定!
Unityにぶちこむ!

ヨシッ!

ではまた。

前回
atelier-aomi.hatenablog.com

次回
(リンク作成予定)