Ble 作成したモデルをUnityへ

Blender

チュートリアル

  • なし

成果物

作業のながれ

  • 面の向きが反対になっているとUnityで透明になってしまうので確かめる
  • このように赤くなっている部分は面の向きが逆なので修正する
    • メッシュを選択して、編集モード
    • alt + N(ormal) -> Flip
  • OK!
  • ミラーなどのモデをすべて適用
  • 目、体、羽、尾ヒレをすべて選択してCTRL + Jで結合

エクスポート

  • Unityの座標系に変換してエクスポート
  • テクスチャもalt+sで保存しておく

インポート

fbxとテクスチャ画像をドラッグ&ドロップで配置する

  • シーンに配置された
    • 小さすぎきてカメラに映らない。->スケールを100にすると映る
  • z軸の向きがおかしい

blender

  • Unityでz軸を向けたい方向にblender上で向ける
  • apply transformにチェックを入れる
  • いざUnityで確認
  • いい感じだが、傾いている
  • blender
  • set originで3Dカーソル(またはジオメトリ)
  • 大きさをUnityのユニットに合わせるようにやく1mに
  • ctrl + a で scalerotation

いざエクスポート&Unity

rotationを適用するのでblender上では前を向かせていてOKのようだ。

  • blender
  • 正面に向けて、Rotationとtransformを適用 エクスポート
  • Unityへ

キターーーーーー!!

せっかくなのでスクリプト作成して動かした。

using UnityEngine;

public class FloatingSwim : MonoBehaviour
{
    public float forwardSpeed = 2f;        // 前進速度
    public float waveAmplitude = 0.5f;     // 上下の揺れの幅
    public float waveFrequency = 2f;       // 上下の揺れの速さ

    private float time;
    private Vector3 startPosition;

    void Start()
    {
        // 初期位置を記録(基準Y座標)
        startPosition = transform.position;
    }

    void Update()
    {
        time += Time.deltaTime;

        // 上下に揺れるYオフセット
        float yOffset = Mathf.Sin(time * waveFrequency) * waveAmplitude;

        // 現在の高さを上書き(Yだけ変化)
        Vector3 newPosition = startPosition + transform.forward * forwardSpeed * time;
        newPosition.y += yOffset;

        transform.position = newPosition;
    }
}

作成を終えた感想

  • Blenderで作成したものをUnityに適切にインポートするのは想像以上にしんどかった!
  • 面の向きチェック
  • 適切サイズにして、原点に配置し、原点の設定、アプライトランスフォーム
  • ただ、Unityに取り込めるようになったのは大きい!

コメント

タイトルとURLをコピーしました