Skip to content

Blenderから出力するモデル原点を個別に設定してUnityで利用する

   
2193文字(約3分)

この記事でわかること

Blenderで出力した3Dモデルの原点をワールド原点ではなく個別に設定した原点で出力できるようになる。

問題内容

例えば次のようなモデルをUnityで利用することを考えます。

alt

ここでドアを開けた状態にするべくY軸を中心に30度回転すると次のようになります。
/(^o^)\ナンテコッタイ

alt

これは原点位置が人間の意図する場所にないことが原因です。
邪魔なものを消した状態で見ると次のようになります。

alt

操作側の意図としてはオブジェクト隅に原点があり、そこを中心に回転してほしかった。
しかし実際の原点はワールド原点(他のオブジェクトと共通の位置)となっていたため
意図せぬ回転となっていました。

ということでオブジェクトの原点を変更するための作業が必要です。
(または作成ソフトで原点を共通にせず、個別に出力する必要がある。今回は調べた限り個別出力はできなかった)

環境

  • blender 3.1.2
  • Unity 2019.4.22f

blender

3Dモデルを操作する際にはやはりblender。無料で素晴らしい。

blenderでやることは次の3点

  1. オブジェクトの分割
  2. オブジェクトの原点の変更
  3. オブジェクト固有の原点でエクスポート

オブジェクトの分割

alt

今回利用しているオブジェクトは画像のように1つのオブジェクトとしてまとまっています。
扱いづらいため分割します。
まずモードを「Modeling」に変更します。

alt

その後対象のファイルをすべて選択した状態で「P」キー押下後「構造的に分割したパーツで」を選択します。
そうすることでオブジェクトが個別に分割されます。
alt

オブジェクトの原点の変更

分割できたため、(見た目のために)ドア以外を非表示にしました。
この時点では原点はオブジェクトとは離れた位置にいます。そのため原点の位置を変更します。

alt

選択肢は5つあります。詳細は公式ドキュメントを参照してください。

set-origin

一応2パターンのスクリーンショットを紹介します。
省いた「原点を3Dカーソルへ移動」, 「原点を重心に移動(サーフェス)」, 「原点を重心に移動(ボリューム)」は移動方法の差のため
詳細は検索をしてください。

  • ジオメトリを原点へ移動
    alt
    「原点を設定」という分類でこれがあるのは少し疑問が残りますが、原点位置にオブジェクトを移動させるコマンドです。

  • 原点をジオメトリへ移動
    alt
    上記逆版です。

今回ドアを回転させたいため、原点が中心にあることは望ましくありません。

https://docs.blender.org/api/current/bpy.types.Object.html#bpy.types.Object
https://docs.blender.org/api/current/bpy.ops.object.html

オブジェクト固有の原点でエクスポート

今回はfbxでエクスポートします。これ以外で原点を変えつつエクスポートする方法が分かりませんでした。

alt

ここで「トランスフォームを適用」のチェックボックスを有効にします。
alt

Unityで確認

alt
無事原点位置がオブジェクト固有のものとなっていることが確認できました。

(重心に置いているので結局回転は出来ない)

モチベーション

原理はすぐに分かったのだが、原点を変更してUnityで利用する方法が分からなかった。
検索ワード「blender オブジェクト原点で出力」
Blender Tips編 #3 -BlenderとUnityのやりとり覚書その1(モデル)-
で見つけ出すのにすごく時間がかかってしまった。
休日を半日潰してしまったという悲しみを糧にして、検索ワードに少しでも引っ掛かりやすくなるように
記事作成するぞ、ということが本記事作成のモチベーション。

関連記事

  1. 個人用wiki作成
  2. Unityで2Dシーン編集競合対策
  3. Unityのスプライトの色をコード上から変える方法まとめ
  4. Gitホスティングサービスについて
  5. 課題管理サービスについて
comments powered by Disqus