はじめに
以前の記事でも少し触れましたが、Claude CodeにBlenderやUnityを操作させて、自動で3Dモデルを作ったりムービーを作成したりする試みをしています。
アイデアとしては非常に面白くて、実際にある程度は動いてくれるのですが…やってみると思った以上に「壁」が多かったです😅
今回はその中でも特にハマった2つのポイント、「BlenderとUnityの軸の違い」と「コンテキスト制限・5時間制限」について実体験をまとめます。同じことをやろうとしている方の参考になれば幸いです。
BlenderとUnityで「軸」の扱いが全然違う
最初にハマったのがこれです。BlenderとUnityでは、3D空間の「上方向」の定義が異なります。
| ツール | 上方向(Up軸) | 前方向(Forward軸) | 座標系 |
|---|---|---|---|
| Blender | Z軸 | -Y軸 | 右手座標系 |
| Unity | Y軸 | 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時間制限も現実として受け入れて、「無理に長い会話を続けない」という戦略をとるのが結局は近道だと感じています😊
引き続きこの連携の試みは続けていくので、うまくいったことや新たな発見があればまた記事にします!
それでは、今回はここまで。ありがとうございました😊