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」が回転します。





