Fusion360で回転機能とレンダリングを行ったオブジェクト「tumbler」をUnityにインポートして、スクリプトにより回転させます。
Fusion360で回転機能とレンダリングを行ってオブジェクト「tumbler」を作成
Fusion360の回転機能で、オブジェクト「tumbler」を作成するために、次のようにX-Z平面に回転のもとになるオブジェクトの断面図を作成します。
作成ボタンをクリックして「回転」を選択し、作成した断面図を使用して回転して、次のようなオブジェクト「tumbler」を作成します。
レンダリングボタンを選択すると、次のようなアイコンメニューが表示されます。
設定ボタンをクリックして次のように「物理マテリアル」→「ガラス」→「ガラス」を選択し、「シーンの設定」で「背景」を「環境」に設定します。
キャンパス内レンダリングボタンをクリックして、「キャンパス内レンダリング」をクリックします。レンダリングが開始されます。
Fusion360で作成したオブジェクトをエクスポートしてUnityにインポート
Fusion 360で作成したオブジェクト「tumbler」を、FBXファイル形式でエクスポートします。エクスポートしたFBXファイルをUnityのAsettsにドラッグ&ドロッブし、その後Scene画面にドラッグ&ドロッブします。
- Unityにエクスポートするときは、Fusion360でオブジェクトの中心に原点をもっていくとその位置がUnityのローカルの原点となります。
- Unityにエクスポートすると、Fusion360でのオブジェクトの回転が異なります。Unityではx軸回転を「-90」回転させる必要があります。
- 今回、Fusion360でガラス素材でレンダリングしましたが、情報がUnityに伝わっていないようです。
UnityでQuaternion.AngleAxisを使って回転
Quaternion.AngleAxisを使ってオブジェクト「tumbler」を回転させます。作成したオブジェクト「tumbler」をUnityにインポートすると次のように表示されます。
オブジェクト「tumbler v5」次のスクリプト「AxisRotator.cs」を付与して、オブジェクト「tumbler」を回転させます。
AxisRotator.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 指定した軸周りで自転する /// </summary> public class AxisRotator : MonoBehaviour { public float radius = 100f; public float accelx; public float accely; public float accelz; void Start() { this.transform.localScale = new Vector3(50, 50, 50); UnityEngine.Debug.LogWarning("start"); } // 回転処理 private void Update() { // 位相を計算します。 float phase1 = Time.time * 2 * Mathf.PI; // 現在の位置を計算します。 float accelx = radius * Mathf.Cos(phase1); float accely = radius * Mathf.Sin(phase1); float accelz = radius * Mathf.Sin(phase1); // transform.rotation = Quaternion.AngleAxis(accelx, Vector3.up) * Quaternion.AngleAxis(accely, Vector3.right) ; // transform.rotation = Quaternion.AngleAxis(accelx, Vector3.up) ; transform.rotation = Quaternion.AngleAxis(accelx, Vector3.right) ; // transform.rotation = Quaternion.AngleAxis(accelz, Vector3.forward) ; } }
Playボタンを押して、Scene画面で実行をします。次のようにオブジェクト「tumbler」が回転します。