Roblox ボックスリグ動物 は何をしますか?
動物ごとに1つの小さなデータファイル(パレット、ボーン、ボックス、クリップ)を作成します。scripts/boxrig.py がそのファイルをメッシュ、スタッド、リグ、アニメーション、突然変異、レンダリング、エクスポートに変換します。
プレビューは examples/previews/ にあります:
examples/penguin.py:二足歩行examples/dragon.py:本格的なドラゴン:滑らかなボクセルボディ/S字首/尾 + ボックス製の頭、角、プレート、コウモリの翼、顎と火吹き待機アニメーションを備えています。examples/lion.py:解剖学的に正しいライオンで、ずんぐりした外観:滑らかなボクセルボディ、大きなスタッド、ボクセルグリッド上に描かれたピクセルアートの顔。examples/lion_chibi.pyは旧式のちびライオンで、ボックスAPIの例として残されています。
必要条件
- Blender 4.2以降、ヘッドレスで実行。Windowsでは
C:\Program Files\Blender Foundation\Blender */blender.exe、Macでは/Applications/Blender.app/Contents/MacOS/Blenderを探してください。5.1でテスト済み。 - Python 3とPillow、numpy:
py -m pip install --user pillow numpy。スクリプトをpy -Iで実行しないでください。 - 以下のプレースホルダー:
<B>= Blenderの実行可能ファイル、<S>= このスキルのフォルダ。
ワークフロー
- 仕様、解剖学が最優先(ユーザールール)。 すべての動物は実際の動物の構造を取得します:実際のボディプラン、プロポーション、シルエットをブロックで構築します。特徴を貼り付けただけの立方体キャラクターにしないでください。
reference/anatomy.mdを読んでください。実際の動物を調べるか、ユーザーの参考資料を使用します。- データファイルにコメントとして、そのプロポーションを肩高で記述します:体長、頭、首、脚、尾。
- 大きな形状で側面のシルエットを大まかにブロックし、細部を追加する前に一致させます。
- ちびや「かわいいペット」のプロポーション(大きな頭、短い脚)は、ユーザーから依頼があった場合のみ使用します。
- 2~4の特徴的な特性とクリップ(デフォルトは Walk、Run、Idle)をメモします。ユーザーの参考画像やモデルが仕様です。
- スケールを決定します:Robloxキャラクターは約5スタッドの高さ、ペットは4~8スタッド、実物大の生き物は実物大(ドラゴンは約40スタッドの長さ)。大きな動物を縮小しないでください。
- 最も近い例をユーザーのフォルダにコピーするか、
py <S>/scripts/new_animal.py <名前> quad|biped <フォルダ>を実行します。スキル内では決して編集しないでください。 - データを編集します。 最初に
reference/design_guide.mdを読んでください。 - ビルドとレンダリング:
<B> -b --factory-startup --python <S>/scripts/boxrig.py -- <animal.py> all py <S>/scripts/make_sheet.py <out_dir> _v1<out_dir>はファイルの隣のout_<名前>です。- モードは
views(形状確認用、高速)、gif、export、mutations(ビュー、エクスポート、突然変異)、allです。
- 確認:
<名前>_sheet_vN.png、review_<クリップ>_vN.png、<名前>_mutations_vN.pngを確認します。データを修正し、新しいタグで再ビルドします。Readツールは画像をパスでキャッシュするためです。通常3~5ラウンド。 - 検証:
<B> -b --factory-startup --python <S>/scripts/verify_fbx.py -- <out_dir>がVERIFY_OKと出力する必要があります。 - 納品: シート、突然変異シート、GIFを納品します。
- Studio: Roblox Studio MCPが接続されている場合。
reference/roblox_studio.mdに従います:インポート、修正、BoxRigAnim+ ポーズとKeyframeSequences用の<名前>Clips、MutationFX、そして計測されたプレイテスト。
データファイルのチートシート
- 単位と軸: スタッド、Z上、正面 = -Y、動物の左 = +X。
- ボックス:
box(x0,x1, y0,y1, z0,z1, 色, ボーン)。sym(...)はボックスを右側にミラーリングし、%はボーン名でLまたはRになります。ボーンに%を含むboxも同様です。後から定義されたボックスが重なり合う領域で優先されます。 - ボクセル彫刻(クリーチャーボディのデフォルト):
VOXELを滑らかな曲線に十分小さい値(体長の約1/90:大きなドラゴンで0.5、ライオンで0.2)に設定し、STUD_SIZEを大きく(2~4セル、例:1.0 / 0.8)設定して、スタッドを塊感があり読みやすいままにします。その後:vell(cx,cy,cz, rx,ry,rz, col, bone):楕円体。vcap(p0, p1, r0, r1, col, bone):先細りカプセル(首、脚、尾、角、鼻面に使用)。vbox(...):ボックス。vsheet(origin, u, v, pts, thick, col, bone):平らなポリゴン(翼、ひれ、飾りに使用)。boneに('a', split, low, high)を指定すると、2つのボーン間で分割されます。- オプション:
paint=Trueは既存のボクセルのみを再着色(腹の縞、目、模様)。paint='belly'はその色のセルのみを再着色(縞模様のバンド)。ボーン内の'%'は左右にミラーリング。mirror=Trueは同じボーン上でミラーリング(角、歯)。 - すべてが1つのグリッド上でボクセル化され、貪欲にメッシュ化されます。半径は1ボクセル以上に保ってください。そうしないと薄い部分が壊れます。「デフォルトスタイル = 滑らかなSHAPE + 塊感のあるLOOK」を
reference/design_guide.mdで読んでください。
- 有機的形状、ボックスベース(古い塊感スタイル):
ell(cx,cy,cz, rx,ry,rz, colour, bone)は3つのボックスで作られた丸みを帯びた階段状の塊です。胴体、胸、腰、首のセグメント、太もも、尾のセグメントに使用します。poly([(x,y),...], z0, z1, colour, bone, step=1.0)は上面図の輪郭を塗りつぶします。翼膜、ひれ、飾り、尾の先端に使用します。boneはxの関数にでき、膜を Wing と WingTip に分割します。beam(p0, p1, width, z0, z1, colour, bone)はまっすぐな棒で、腕の骨、翼の指、角に使用します。
- 翼のある動物: 翼を平らに広げた状態でモデル化し、クリップ内で
wing_rest=(raise, tip_droop, sweep)で折りたたみます。ドラゴンは(58, 24, 22)を使用します。VIEW_POSE = ('Idle', 0)を設定して、シートに翼を折りたたんだ状態の動物を表示します。 - ボーン:
BONES[name] = (parent, head, tail)。正確に1つのルートが(0,0,0)にあり、これにはボックスがありません。ヘッドポイントがピボットです。- 四足歩行クリップには
Body、Head、FrontUpper/Lower_L/R、BackUpper/Lower_L/Rが必要です。オプション:尾のチェーン、neckチェーン、wings=('Wing','WingTip')、jaw。 - 二足歩行クリップには
Body、Head、Leg_L/Rが必要です。オプション:Foot_L/R、Wing_L/R、尾。
- 四足歩行クリップには
- クリップ:
CLIPS = {'Walk': (fn, frames), ...}、30fps、シームレス、その場で動作。- 既製のファクトリ(キーワード引数のみ):
quad_walk、quad_run、quad_idle(jaw=, yawn=)、quad_flybiped_walk、biped_run、biped_idle、biped_fly
- 飛行する動物(ドラゴン、鳥、グリフィン、コウモリ、翼のあるもの全般)、ユーザールール:
- Walk は地上歩行:脚が動き、翼は静止。
quad_walk(..., wings=..., wing_flap=0)またはbiped_walk(..., wing_flap=0)を使用します。 - Run は飛行:翼を羽ばたかせ、脚は走らない。脚はたたんで静止。
quad_fly(...)またはbiped_fly(...)を使用し、quad_runやbiped_runは使用しません。 - 脚が走っている間は翼を羽ばたかせないでください。
- Walk は地上歩行:脚が動き、翼は静止。
- 火吹き(ドラゴンやその他の火を吹く生物):
quad_idle(jaw='Jaw', yawn=26, fire=(0.55, 0.75))に加えて、データファイル内にMOUTH = (x, y, z)とMOUTH_BONE = 'Head'を指定します。- クリップは後ろに下がり息を吸い込み、次に顎を開いて前方に突き出します(t0 から t1)。
- GIFは代用の炎を表示します。Studioでは、
assets/FireBreath.luaがクリップのFireStartおよびFireStopマーカーから実際の炎を駆動し、突然変異ごとに色が変わります。 - 炎はアニメーションエディタでは表示されません。アニメーションエディタはボーンのみを再生するためです。編集モードで表示するには、
assets/BoxRigPreview.luaを使用します。 - 前方を向いた顎は
rx +で下に開きます。rx -は上に振れ、頭蓋骨内に消えたように見えます。
- 典型的な長さ:歩行32~40フレーム、走行18~24、待機90~150。
- 大きな動物はよりゆっくりと重く動きます:より多くのフレーム、スタッド単位でのより大きな
bobとbounce、より低いpitch。 - カスタムクリップは
fn(t) -> {bone: ((rx,ry,rz) 関節でのワールド軸周りの度数、(tx,ty,tz) スタッド)}です。符号:rx +は足を後ろに振り、頭をうなずかせ、尾を持ち上げます。
- 既製のファクトリ(キーワード引数のみ):
- 突然変異(デフォルトでは Gold、Diamond、Shadow)は
boxrig.pyのMUTATIONSから生成されます。- 各突然変異は、パレットの明るさを滑らかなカラーランプにマッピングします。
ROLESは目の部分(iris、eye、shine、blush)に名前を付け、突然変異の補色の目の色を取得できるようにします。keepは歯などのキーを変更せずに残します。MUTATIONS = {...}で上書きし、MUTATIONS_USEでサブセットを選択できます。
Robloxフレンドリーな構造(これらは壊さないでください)
- 1つのドロ―コール: 1つのメッシュ、1つのマテリアル、1つの共有512pxタイル状スタッドテクスチャ。色は頂点カラーで、RobloxがTextureIDで乗算します。
- リジッドスキニング(1.0ウェイト)と、同じボーン上の別のボックスに隠れた面のカリング。
- サイズ: ペットで約800トライアングル、ドラゴンで約1,600。モブは約3k未満に保ちます。ハードリミットは20kです。
- 突然変異は同じリグ上の別々のメッシュです:すべてのアニメーションがすべてのバリアントで機能します。エフェクトは1つのエミッターと、モデルあたり最大1つのライトから生成されます。
- エクスポート: リーフボーンのないFBX、FBX単位スケール、-Z前方でY上、ルートは原点、クリップごとに1つのFBX。
詳細:reference/design_guide.md、reference/roblox_rules.md、reference/roblox_studio.md、reference/pitfalls.md。