building-3d-objects について
Roblox Studioで3Dオブジェクトを作成するエージェント向けの段階的なガイドです。座標計画、ジオメトリとCSGの扱い、構築後の構造検証を扱います。
主な機能
- 01構築前の部品とサイズ確認
- 02親基準の位置計画
- 03ジオメトリとCSGの指針
- 04複数パーツ構築のグリッド調整
- 05検証スクリプト実行と問題修正
活用シーン
- 01複数パーツからなるオブジェクトの作成
- 02曲面や空洞を含む形状の構築
- 03モデル構造の確認とエラー対応
MCP 対応
mcp__roblox__run_codeを使ったRoblox Studioでの生成と検証を案内し、呼び出し間で変数やオブジェクト参照が保持されないことを説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ohzw/ roblox-dev-skills --skill building-3d-objectsインストール後、Claude Code で/building-3d-objectsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
docs/csg-patterns.mdplatform-rules.mdspatial-patterns.mdscripts/validate.luau詳細
Roblox で 3D オブジェクトを作成する
このスキルでは、mcp__roblox__run_code ツールを使用して Roblox Studio で信頼性の高い高品質な 3D オブジェクトを生成するための手順を説明します。
優先事項:この SKILL.md ファイルは、docs/ フォルダー内の指示よりも優先されます。
MCP の制限事項と回避策(重要)
mcp__roblox__run_code ツールは、状態を保持せずに Lua コードを実行します。
実行のたびに状態はすべて初期化されます。
- 状態の消失:ある呼び出しで宣言した変数は、次の呼び出しでは存在しません。
- 参照の消失:オブジェクトへの参照は呼び出し間で失われます。
- 解決策:すべての
run_code呼び出しの開始時に、workspace:FindFirstChild("ModelName")を使って作成途中のモデルへの参照を必ず再取得してください。
-- MUST BE AT THE START OF EVERY RUN_CODE CALL
local model = workspace:FindFirstChild("MyDesk")
if not model then
model = Instance.new("Model")
model.Name = "MyDesk"
model.Parent = workspace
end
アンチパターン(避けるべきこと)
- 推測しない(実際の状態を基準にする):前のチャンクで作成したパーツの正確な座標、サイズ、向きが必要な場合、推測したり、チャット履歴に頼ったりしないでください。必ず
mcp__roblox__run_codeを使用して、workspaceから現在のCFrameとSizeを明示的に読み取って(出力して)、その実際の状態に基づいて次の操作を行ってください。 - 未固定のパーツを避ける:
Anchoredの既定値はfalseです。物理シミュレーションが明示的に必要な場合を除き、すべてのパーツでtrueに設定してください。 - ワールド座標のハードコードを避ける:すべてのサブコンポーネントの位置は、親パーツまたはモデルの
CFrameを基準にする必要があります。座標をハードコードすると、モデルを移動した際に位置関係が崩れます。 - 有機的な形状をブロックだけで構成するのを避ける:実物に曲線やくぼみがある場合は、CSG(Subtract/Union)、円柱、または球体を使用してください。
- CSG の失敗を見逃さない:
SubtractAsyncとUnionAsyncは、失敗してもエラーが表示されないことがあります。必ずpcallで囲み、結果がBasePartであることを確認してください。
作成プロセス(4 フェーズ)
以下のフェーズを順に進めてください。複雑なオブジェクトを 1 回の実行で作成しようとしないでください。
フェーズ 1:評価(設計と予算)
オブジェクトの作成依頼を受けたら、構造の詳細が十分かどうかをすばやく判断します。
簡易チェック:
- 作成する具体的な構成要素やパーツが分かっていますか?(単なる「キッチン」ではなく、「カウンター、シンク、コンロ、アイランド」など)
- おおよそのスケールが分かっていますか?(プレイヤーサイズ? ミニチュア? 部屋サイズ?)
- 静的なものか、可動パーツがあるものか分かっていますか?
判断:
- すべて「はい」の場合:フェーズ 2 に進みます。色や細部については妥当な想定をしてください。
- いずれかが「いいえ」の場合:作業を中断してください。ユーザーに「適切に作成するには、詳細を確認する必要があります。要件の確認をお手伝いできるデザインコンサルタントにおつなぎします。」と伝えてください。その後、要件を整理するために
roblox-design-consultantスキルの使用を提案してください。
フェーズ 2:計画(座標系と変数)
空間的な位置関係を定めます。
条件付きルール:
- 複数の
run_code呼び出しに分ける場合:寸法には名前付き変数を使用し、幾何マニフェストのヘッダーを付ける必要があります(docs/spatial-patterns.mdを参照)。 - パーツ数が 5 を超える場合:浮動小数点のずれを避けるため、寸法を一定のグリッド(例:0.1 または 0.5 studs)に合わせてください。
いずれかの条件に当てはまる場合は、今すぐ docs/spatial-patterns.md を読んでください。
フェーズ 3:作成(ジオメトリと CSG)
パーツを生成します。
CSG のルール:
- Z ファイティングを防ぎ、きれいに切り抜くため、負のパーツ(カッター)のサイズには
EPSILON(例:0.01)を加えてください。 - ベースパーツの
CFrame全体を、生成された CSG パーツにコピーしてください。CFrame.new(pos)を使うと回転がリセットされます。 - CSG 操作ではカッターの色が結果に混ざることがあるため、結果に
UsePartColor = trueと元のColorを再設定してください。
作成に曲線、穴、または中空部分が必要な場合は、今すぐ docs/csg-patterns.md を読んでください。
フェーズ 4:検証(ビルド後のゲート)
ビルドが視覚的に完成したら、構造的な整合性を確認するために、検証スクリプトを必ず実行してください。
scripts/validate.luauの内容を読みます。TARGET_MODEL_NAME変数を調整します。run_codeを使ってスクリプトを実行します。- 回帰ループ:スクリプトが
[ERROR]または[WARN]を出力した場合、必ずフェーズ 3 に戻り、コードを修正して再検証してください。
補足ドキュメント
特定のフェーズまたは条件に該当する場合にのみ、以下のファイルを読んでください。
| ファイル | 読むタイミング |
|---|---|
docs/spatial-patterns.md | フェーズ 2:複数回の呼び出しを伴うビルド、またはパーツが 5 個を超える場合 |
docs/csg-patterns.md | フェーズ 3:SubtractAsync または UnionAsync を使用する場合 |
docs/platform-rules.md | Roblox 固有の動作(マテリアル、ライティング、円柱の向き)を扱う場合 |
scripts/validate.luau | フェーズ 4:ビルド後の必須検証 |