はじめに

スポンサーリンク

以前の記事でも少し触れましたが、Claude CodeにBlenderやUnityを操作させて、自動で3Dモデルを作ったりムービーを作成したりする試みをしています。

アイデアとしては非常に面白くて、実際にある程度は動いてくれるのですが…やってみると思った以上に「壁」が多かったです😅

今回はその中でも特にハマった2つのポイント、「BlenderとUnityの軸の違い」「コンテキスト制限・5時間制限」について実体験をまとめます。同じことをやろうとしている方の参考になれば幸いです。

BlenderとUnityで「軸」の扱いが全然違う

最初にハマったのがこれです。BlenderとUnityでは、3D空間の「上方向」の定義が異なります。

ツール上方向(Up軸)前方向(Forward軸)座標系
BlenderZ軸-Y軸右手座標系
UnityY軸Z軸左手座標系

Blenderで「上を向いて立っているキャラクター」を作っても、そのままUnityに持ち込むと横に倒れた状態になります。これはBlenderのZ軸がUnityではY軸に相当するためです。

Claude Codeに「BlenderでモデルをエクスポートしてUnityにインポートして」と依頼すると、最初はこの変換を考慮せずにそのまま配置してしまいます。結果、意図とは全く違う向きにオブジェクトが出現します😂

FBXエクスポート時の設定が鍵

対策として、BlenderからFBXエクスポートする際に軸の変換設定を明示的に指定する必要があります。

# Blender Python API でFBXエクスポートする場合の設定例
import bpy

bpy.ops.export_scene.fbx(
    filepath="/path/to/output.fbx",
    axis_forward='-Z',   # Blenderの-Z → Unityの前方向
    axis_up='Y',         # BlenderのY → UnityのUp方向
    apply_unit_scale=True,
    apply_scale_options='FBX_SCALE_ALL'
)

この axis_forward='-Z'axis_up='Y' の指定が重要です。Claude Codeにスクリプトを書かせるときも、この設定を明示的に含めるよう指示しないと、正しいエクスポートができませんでした。

スケールの問題もある

軸だけでなく、スケールも問題になります。Blenderのデフォルト単位は「メートル」ですが、FBXの仕様上100倍されてUnityに入ってくることがあります。

// Unity側でスケールを補正する場合(C#)
// FBXインポート設定で Scale Factor を 0.01 に変更するか、
// スクリプトでTransformを調整する

transform.localScale = new Vector3(0.01f, 0.01f, 0.01f);
// ↑ これを毎回手動で直すのは大変なので、FBXインポート設定を変えるのが本来は正解

Claude Codeはこういった「ツール間の暗黙のルール」を最初から知っているわけではないので、細かく指示を出す必要があります。これが次の問題につながっていきます。

細かい修正を繰り返すとすぐにコンテキスト制限へ

軸の問題を修正してもらうために「少し左に傾いてる」「スケールが大きすぎる」「今度は回転がおかしい」と細かい修正依頼を繰り返していると、あっという間にコンテキスト(会話の記憶容量)が満杯になります。

Claude Codeには一度の会話で記憶できる量に上限があり、長い会話を続けていると「コンテキスト上限に近づいています」という警告が出始めます。そうなると新しい指示が古い情報を押し出してしまい、せっかく伝えた細かい設定を「忘れて」しまうことがあります。

5時間制限にも引っかかった

さらに追い打ちをかけるのが、Claude Codeの5時間あたりの使用制限です。

Proプランでは一定の時間帯に大量のリクエストを送ると、制限に到達して一時的に使えなくなります。3DCG系の作業はBlenderのPythonスクリプトを何度も試行錯誤するため、短時間でリクエスト数がかさんでしまいます。

問題発生タイミング対処法
コンテキスト制限長い会話の途中新しい会話を始め、重要な設定をまとめて伝え直す
5時間使用制限短時間で大量操作したとき時間を置いて再開、または別の時間帯に作業する
軸の変換ミスBlender→Unityインポート時FBXエクスポート設定にaxis指定を必ず含める

うまく付き合うためのコツ

これらの壁を経験して、少しずつコツがわかってきました。

  • 作業を細かく分割する:「Blenderでモデル作成」「FBXエクスポート」「Unityへのインポートと配置」を別々の会話セッションで依頼する
  • 毎回の会話冒頭に前提条件をまとめて伝える:「Blender→UnityはZ-upをY-upに変換、スケールは0.01」など
  • スクリプトを保存しておく:うまくいったBlender Pythonスクリプトはファイルに保存して、次回はそれをベースに修正依頼をする
  • 制限に引っかかったら休憩:5時間制限は時間が経てばリセットされるので、無理に続けない

特に「作業を分割して、毎回前提を伝える」は効果的でした。コンテキスト容量の節約にもなりますし、Claude Codeも混乱しにくくなります。

まとめ

Claude CodeとUnity/Blenderの連携は、可能性は大きいものの、ツール間の仕様の違いやAIの制限を理解した上で進める必要があります。

特にBlenderとUnityの軸・スケールの違いは、最初に一度ちゃんと把握しておくと後がずっと楽になります。また、コンテキスト制限や5時間制限も現実として受け入れて、「無理に長い会話を続けない」という戦略をとるのが結局は近道だと感じています😊

引き続きこの連携の試みは続けていくので、うまくいったことや新たな発見があればまた記事にします!

それでは、今回はここまで。ありがとうございました😊