うにty生活

UnityChanを生活させたい

Unity 3Dオブジェクトの原点は変えられるのか #23.1

  

f:id:tubakihimeLoveHate:20190619013641j:plain

 

どうもラブヘイトです

私のブログ内でこの記事が一番人気だったので、見やすく修正しました!

 

今日は3Dオブジェクトの原点を変える方法についてです

 

 

結果から

先に結果をお伝えすると原点を変える方法は3つあります

 

原点(pivot)を変更したい理由

pivotは中心という意味があり、Unityではオブジェクトの中心のことを指します

オブジェクトはこのpivotを基点として回転したり、オブジェクトの正確な位置はpivotの 場所だったりします。

 

原点を変更したい理由としては、中心以外の場所を軸に回転してほしい!

ってところだと思います

2DからUnityを触り始めた人(私)は

「2Dではpivotグリグリ動かせるのに〜!3Dオブジェクトはpivot変えられないの!?」

とずっと疑問でした

 

残念ながらデフォルトでは好きな軸に回転させたいだとか2Dでは簡単なことも3Dでは出来ないのです、、、

f:id:tubakihimeLoveHate:20190619011547p:plain


もしpivotを動かすことができて、2Dのようにグリグリ動かせたら最高ですよね!

なので pivotを動かす方法をいくつか調査しました

 

コードを作成する

UnityAnswers(←リンク)の質問をいくつか見たところ、Unityのデフォルトの機能ではできないみたいです

コードを書けばできるみたいで、Editor拡張のコードを書いた人のコードを使用させていただきました

http://solvethesystem.wordpress.com/2010/01/15/solving-the-pivot-problem-in-unity/

f:id:tubakihimeLoveHate:20190619011702p:plain
このコードをAsset>Editorフォルダに入れるだけで、

f:id:tubakihimeLoveHate:20190619011749p:plain

こんな風にエディターから原点を編集できちゃいます!

↓↓↓

f:id:tubakihimeLoveHate:20190619011846p:plain

f:id:tubakihimeLoveHate:20190619012221g:plain

ただ、やっぱりUnity上でのpivotの表示は真ん中にあるので、オブジェクトをみた瞬間に理解できなかったり。pivot動かしたのを忘れてたりすると挙動がおかしいと勘違いしてしまうので微妙かもしれない

 

モデリング時に原点を変更しておく

また、こんな意見も、、、

「コードを書くよりも、モデリングの時点で原点考えて作ったほうがいいよ!っていうか、みんなそうしてるよー」

 

例えば郵便ポストみたいな、地面に突き刺す系のオブジェクトは地面との接触箇所を原点にしておくとUnityに持ってきたときも楽ですよね

 

これは多分大体の人が行っている方法だと思います。

 

擬似的に原点を動かす

根本的な解決にはなりませんが、簡単に思い通りの動作をするといえば

やはり空のGameObjectを親にすることですかね!

原点を変えたいオブジェクトを空のGameObjectの子にします。

 

下の図で言うとCubeが原点を変更したいオブジェクトです。

f:id:tubakihimeLoveHate:20190602191532p:plain

 

そして、親のGameObjectのRotationを変更してみてください!

そこが軸となって回転しています 

f:id:tubakihimeLoveHate:20190602191433g:plain

今のところ不具合や変な挙動はしたことがないので、ある程度はこの方法でもいいと思います!

 

前回の記事ではGameObjectを親にする方法で、Unityちゃんに物を持たせてみました

 

 

まとめ

3Dオブジェクトの原点(Pivot)を動かす3つの方法は

・エディター拡張するコードを作成する

・モデリングの時点で原点を決めて作成する

・空のGameObjectで擬似的に再現する

 

以上 

それでは、良い原点ライフを(なんだそれ)