にわかプラス

にわかが玄人になることを夢見るサイトです。社会や国際のトレンド、プログラミングや電子工作のことについて勉強していきたいです。

Fusion360で作成したモデルをUnityで動かす【ショベルカー】

sponsor

Fusion360で作ったモデルをUnity上で操作する方法です 環境 Windows10(Windows固有のことは行っていないのでOSは問わない) Fusion360 Unity

Fsion360でモデルを作成し、.obj形式でエクスポート

エクスポートには5~10分程度かかる。

f:id:hiddenvally333:20200605232103p:plain f:id:hiddenvally333:20200605232106p:plain

Unityにインポート

Assets配下に適当なフォルダを作成し、先程作成した.objファイルをドラッグアンドドロップ

地面(terrain)を配置

まず地面を配置する。 3D Object → Terrain

Unityにオブジェクトを配置

ドラッグアンドドロップで配置 サイズが大きすぎたりちいさすぎても焦らない、Scaleで調整する。

f:id:hiddenvally333:20200605232119p:plain

このときバーツのツリーが全部同じ階層に出てきてしまうので、自分で適切に階層分けする。

f:id:hiddenvally333:20200605232132p:plain

悲しいことに拘束条件なども綺麗サッパリなくなってしまうので、Unity上でhingeなどを使って拘束してあげる。この作業本当に辛い。 GazeboとMaya(だったっけな)なら拘束条件を保ったままモデルのやり取りができるらしい。ほんと羨ましい。

物理特性の設定

このまま実行しても、重力や外力の影響を受けないため、ピクリともしない。幽霊のような状態。

f:id:hiddenvally333:20200605232145p:plain
実行中の図

物理特性を持たせるためにRigidBodyを追加する。

f:id:hiddenvally333:20200605232116p:plain

当たり判定の追加

地面との当たり判定を持たせるためにColliderを追加。

f:id:hiddenvally333:20200605232056p:plain

このようにモデル全体を包むようにする。この四角が見えない壁として、他の物体と接触を検知する。

f:id:hiddenvally333:20200605232158p:plain

もっとモデルに沿わせたい場合は、ちまちまBoxColliderを組み合わせたり、Mesh Colliderを用いる。 今回はざっくり動かしたいのでこれで良しとする。

ショベルを動かす

Wheel Colliderという仮想のホイールを設定しショベルを動かします。

f:id:hiddenvally333:20200605232140p:plain

本当はキャタピラ部分を本物のように動かしたいのだけれども、手間がとてもかかるので仮想のタイヤで我慢する。てがるにやろうといろいろ試したのだけれども、手軽にはできなかった。無念。

WeelColliderが思った方向に向いてくれない

f:id:hiddenvally333:20200605232136p:plain

このままだと、ショベルに変な角度でWheelColliderがついてしまう。 どうやらWheel Colliderは親オブジェクトのy-z平面上にできる仕様みたい。

なので

  • 適当な空オブジェクトを作成
  • ショベルの向きに対して、y-z平面が進行方向を向くように回転 f:id:hiddenvally333:20200605232100p:plain

  • ショベルのオブジェクトを先程作った空オブジェクトに入れる f:id:hiddenvally333:20200605232109p:plain

この時、最上位のオブジェクトにRigidBodyがついていたほうがいいので、ショベルについているRigidBodyを削除し、最上位の空オブジェクトにRigidBodyをつける。

ちなみにWheelColliderが見えない場合があるが、これは自分か親にRigidBodyがついていないから。物理法則のついていないものは動かせないんだね。

Wheel Colliderを4つ、タイヤの個数分つけていく。 Wheel Colliderは1オブジェクトに1つしかつけられないので、これまた適当なオブジェクトを4つ作って,wheel Colliderをつけましょう。

全体像 f:id:hiddenvally333:20200605232148p:plain

あとはサンプルのSky Carのマネをして動くようにする

ここまでで、サンプルのSky Carと同じような状態まで持ってこれた。 f:id:hiddenvally333:20200605232152p:plain

サンプルのCarはAssets→Car→Prefabsにある。

あと動かすためにするのは以下 * Wheel Colliderの数値を適切な値に調整。特にDamperが小さすぎると吹っ飛ぶ。Sky Carを参考に修正。 f:id:hiddenvally333:20200605232155p:plain

参考にするためにショベルの隣においてみた

  • RigidBodyのMassを適切な値に調整。小さすぎるとこれまたふっとんだりバウンドしたりする。
  • ユーザの入力を受け取るためのC#Scriptを記述し、Unity上に配置する。CarのCar UserControl(Script)に当たる。
  • ユーザの入力に応じてWheel Colliderを回転させるC#Scriptを記述し、Unity上に配置する。CarのCar Controller(Script)に当たる f:id:hiddenvally333:20200605232123p:plain

また、Car の Wheel ColliderはCar→WheelHubsに設定されている。

おわり

作ったモデルを非常にざっくり動かすための方法でした。 ショベルを作ったけど、このままじゃアームを動かしたりとか出来ない。それをするためには階層分けをきちんと行い、Hingeなどで拘束条件を設定させて上げる必要がある。 自分の作業が追いついたらまたその内容を記事にしようと思う。