Fusion360で作ったモデルをUnity上で操作する方法です 環境 Windows10(Windows固有のことは行っていないのでOSは問わない) Fusion360 Unity
- Fsion360でモデルを作成し、.obj形式でエクスポート
- Unityにインポート
- 地面(terrain)を配置
- Unityにオブジェクトを配置
- 物理特性の設定
- 当たり判定の追加
- ショベルを動かす
- あとはサンプルのSky Carのマネをして動くようにする
- おわり
Fsion360でモデルを作成し、.obj形式でエクスポート
エクスポートには5~10分程度かかる。
Unityにインポート
Assets配下に適当なフォルダを作成し、先程作成した.objファイルをドラッグアンドドロップ
地面(terrain)を配置
まず地面を配置する。 3D Object → Terrain
Unityにオブジェクトを配置
ドラッグアンドドロップで配置 サイズが大きすぎたりちいさすぎても焦らない、Scaleで調整する。
このときバーツのツリーが全部同じ階層に出てきてしまうので、自分で適切に階層分けする。
悲しいことに拘束条件なども綺麗サッパリなくなってしまうので、Unity上でhingeなどを使って拘束してあげる。この作業本当に辛い。 GazeboとMaya(だったっけな)なら拘束条件を保ったままモデルのやり取りができるらしい。ほんと羨ましい。
物理特性の設定
このまま実行しても、重力や外力の影響を受けないため、ピクリともしない。幽霊のような状態。
物理特性を持たせるためにRigidBodyを追加する。
当たり判定の追加
地面との当たり判定を持たせるためにColliderを追加。
このようにモデル全体を包むようにする。この四角が見えない壁として、他の物体と接触を検知する。
もっとモデルに沿わせたい場合は、ちまちまBoxColliderを組み合わせたり、Mesh Colliderを用いる。 今回はざっくり動かしたいのでこれで良しとする。
ショベルを動かす
Wheel Colliderという仮想のホイールを設定しショベルを動かします。
本当はキャタピラ部分を本物のように動かしたいのだけれども、手間がとてもかかるので仮想のタイヤで我慢する。てがるにやろうといろいろ試したのだけれども、手軽にはできなかった。無念。
WeelColliderが思った方向に向いてくれない
このままだと、ショベルに変な角度でWheelColliderがついてしまう。 どうやらWheel Colliderは親オブジェクトのy-z平面上にできる仕様みたい。
なので
- 適当な空オブジェクトを作成
ショベルの向きに対して、y-z平面が進行方向を向くように回転
ショベルのオブジェクトを先程作った空オブジェクトに入れる
この時、最上位のオブジェクトにRigidBodyがついていたほうがいいので、ショベルについているRigidBodyを削除し、最上位の空オブジェクトにRigidBodyをつける。
ちなみにWheelColliderが見えない場合があるが、これは自分か親にRigidBodyがついていないから。物理法則のついていないものは動かせないんだね。
Wheel Colliderを4つ、タイヤの個数分つけていく。 Wheel Colliderは1オブジェクトに1つしかつけられないので、これまた適当なオブジェクトを4つ作って,wheel Colliderをつけましょう。
全体像
あとはサンプルのSky Carのマネをして動くようにする
ここまでで、サンプルのSky Carと同じような状態まで持ってこれた。
サンプルのCarはAssets→Car→Prefabsにある。
あと動かすためにするのは以下 * Wheel Colliderの数値を適切な値に調整。特にDamperが小さすぎると吹っ飛ぶ。Sky Carを参考に修正。
参考にするためにショベルの隣においてみた
- RigidBodyのMassを適切な値に調整。小さすぎるとこれまたふっとんだりバウンドしたりする。
- ユーザの入力を受け取るためのC#Scriptを記述し、Unity上に配置する。CarのCar UserControl(Script)に当たる。
- ユーザの入力に応じてWheel Colliderを回転させるC#Scriptを記述し、Unity上に配置する。CarのCar Controller(Script)に当たる
また、Car の Wheel ColliderはCar→WheelHubsに設定されている。
おわり
作ったモデルを非常にざっくり動かすための方法でした。 ショベルを作ったけど、このままじゃアームを動かしたりとか出来ない。それをするためには階層分けをきちんと行い、Hingeなどで拘束条件を設定させて上げる必要がある。 自分の作業が追いついたらまたその内容を記事にしようと思う。