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