Skip to content
YozoraKuragePublic

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

DaerD (DD, ディヌディヌ)

Unity の AnimatorController ゚ディタを GraphView で眮き換える゚ディタ拡匵です。 グラフでの線集に加えお、壊さないリファクタリング型倉換・カスケヌドリネヌム、 コントロヌラヌの解析静的・動的、仕掛けの自動生成オブゞェクトガゞェット・ DBT ガゞェット・パラメヌタヌ圧瞮、ギミックプレハブずの連携、C# ずの盞互倉換を 1 ぀のりィンドりにたずめおいたす。

  • Unity 2022.3 以降 / パッケヌゞ名 net.yozolab.daerd
  • VRChat SDK・NDMF・Modular Avatar は任意。無くおもコンパむル・動䜜し、該圓機胜だけが隠れたす

むンストヌル

方法 手順
VCC / ALCOM これを抌しお远加
UPM (Git URL) Package Manager →  → Add package from git URL に https://github.com/YozoraKurage/DaerD.git末尟に #0.12.0 のようにタグを付ければバヌゞョン固定
手動 Releases から .unitypackage たたは .zip

開き方: メニュヌの YozoLab > DaerD、.controller の右クリック > Open in DaerD、 AnimatorController むンスペクタヌの歯車メニュヌ。蚭定で「ダブルクリックで開く」を 有効にするず既定はオフ、Project りィンドりでのダブルクリックも DaerD に来たす。

目次


゚ディタ

グラフ線集

  • ステヌトマシン / サブステヌトマシン / ブレンドツリヌをグラフで線集。耇数のコントロヌラヌをタブで同時に開けたす
  • Shift + スクロヌルで衚瀺䞭のレむダヌを䞊䞋に切り替え、Ctrl + Shift + スクロヌルで 開いおいるタブを切り替えどちらも端で止たる
  • ブレンドツリヌは Hierarchy パネルからも蟿れたす行のクリックで遞択フレヌム、 ダブルクリックで入れ子ツリヌぞ朜る、開閉はシヌンの Hierarchy ず同じ操䜜
  • ホヌム画面 — レむダヌ䞀芧で Home を遞ぶずグラフの代わりに出る、コントロヌラヌ党䜓の画面。 プレハブリンクパラメヌタヌストアのスロット蟌み、生成した仕掛けの蚘録ず入口 DBT ガゞェット・オブゞェクトガゞェット・巡回同期・C# Recipe、 党䜓に効くツヌルが集たりたす。ガゞェットや同期蚭定は展開するずツリヌの壁になっお 読み返せないので、コントロヌラヌず䞀緒に保存されたこの蚘録が唯䞀の説明になりたす
  • DD デヌタの分離ず砎棄ホヌム画面の Controller カヌド — DaerD の保存デヌタは 既定でコントロヌラヌのサブアセットですが、分離するず Assets/zz_DaerD/
 の 専甚ファむルぞ移り、コントロヌラヌ偎から DaerD の痕跡が消えたす配垃甚。手元では そのたた䜿え、統合で戻せたす。砎棄は保存デヌタを䞞ごず消したす。 どちらもコントロヌラヌ本䜓レむダヌ・パラメヌタヌ・モヌションは無傷です

遷移の優先順䜍

Animator は 1 ぀のステヌトから出る遷移をリスト順に評䟡し、条件を満たした最初の 1 本が勝ちたす。 ステヌトを遞ぶずその党遷移が評䟡順に䞊び、ドラッグで䞊べ替えられたすEntry / Any State も同じ䞀芧。 行にマりスを乗せるずグラフ偎の該圓゚ッゞが色付き、Solo された遷移に阻たれお評䟡されない遷移は Mute ず同じ赀で衚瀺されたす。

怜玢ずゞャンプ

ツヌルバヌの怜玢欄からステヌト名・モヌション名で党レむダヌを暪断怜玢しおゞャンプ。 候補は ↑↓ で遞べたす。

Animation りィンドり連携

  • Select Sync — 遞択䞭ステヌトのクリップを Unity の Animation りィンドりぞ送り、タむムラむンを即座に切り替え
  • Preview — 遞択が倉わるたびに Animation りィンドりのプレビュヌを取り盎し、シヌンのポヌズを远埓させる Select Sync が前提なので、Preview を入れるず自動で有効になりたす

どちらも Animation りィンドりの状態に副䜜甚があるため、ツヌルバヌからのオプトむンです。


壊さないリファクタリング

パラメヌタヌの型倉換

パラメヌタヌの型を倉えるず、それを参照しおいる条件を党郚曞き換えおコントロヌラヌを 有効なたた保ちたすモヌド / しきい倀の察応付けは玔粋関数ずしお単䜓テスト枈み。適甚前に差分プレビュヌ。

カスケヌドリネヌム

リネヌムするず、条件・ブレンドツリヌDirect の子りェむトや Synced レむダヌの䞊曞きツリヌを含む・ ステヌトのフィヌルド・VRC Parameter Driver の゚ントリたで新しい名前が波及したす。Unity 暙準はここをやりたせん。 参照の別パラメヌタヌぞの付け替えリマップ、参照ごず消すクリヌン削陀も同じ仕組みです。

コピヌペヌスト

察象 できるこず
レむダヌ コントロヌラヌ跚ぎ。参照パラメヌタヌの自動远加、フレヌムの匕き継ぎ
ステヌト Ctrl+C → レむダヌを切り替えお Ctrl+V。Behaviour・範囲内の遷移に加え、Entry / Exit / AnyState ずの接続も貌り付け先で匵り盎し。別コントロヌラヌぞ貌るず参照パラメヌタヌを自動远加、ブレンドツリヌは耇補。同名がある堎合のみ連番。サブステヌトマシンは察象倖レむダヌごずコピヌを䜿甚
遷移 条件぀きでコピヌペヌスト
フレヌム / ノヌト Ctrl+C / Ctrl+V。クリップボヌドがレむダヌ参照を持たないので別レむダヌ・別コントロヌラヌぞ貌れたす。ステヌトず䞀緒に遞ぶず盞察䜍眮を保ったたた移動
Behaviour むンスペクタヌでタむトルをクリックしお耇数遞択し、Ctrl+C / Ctrl+V で遞んだものだけを他ステヌトぞ

レむダヌ蚭定の「ステヌトを貌り付け」からは、衚瀺を切り替えずに他レむダヌぞ盎接貌り付けられたす。

テンプレヌト

レむダヌ / ブレンドツリヌをテンプレヌト化しお、パラメヌタヌリマップ付きでむンポヌト。

クリップずリパス

  • クリップ䞀芧 — 参照しおいる AnimationClip を䜿甚ステヌト぀きに䞀芧衚瀺名前で絞り蟌み・ステヌトぞゞャンプ・䞀括差し替え
  • リパス — 階局倉曎で壊れたバむンディングをスキャンしお From → To を䞀括曞き換え。 りィンドりを開いおいる間だけ Hierarchy の倉曎に远埓する自動リパス付き
  • Empty クリップ — コントロヌラヌごずにプレヌスホルダヌを指定するず新芏ステヌトに自動蚭定され、 解析の「穎埋め」修正がモヌション未蚭定のステヌトや空のブレンドツリヌスロットを䞀括補完したす

クリヌンアップ

.controller に残った未参照のサブアセットゎミを怜出しおワンクリック削陀。 逆に、䜿甚䞭なのに Project りィンドりに露出しおいるサブアセットBehaviour の非衚瀺フラグが 倱われたものは、削陀せず非衚瀺に戻せたす。


解析

静的解析 — DD StaticAnalyze

ツヌルバヌの「解析」たたは YozoLab > DD StaticAnalyze。結果は独立りィンドりに出るので、 グラフを線集しながら確認できたす。倚くの問題はワンクリックで修正できたす。

怜出カテゎリ20 皮:

カテゎリ 芋おいるもの
Unused Parameter どこからも参照されおいないパラメヌタヌ
Invalid Condition 型ず合わない・壊れた条件
Duplicate Condition 同じ遷移内で重耇しおいる条件
Dead Transition 条件同士が矛盟しおいお成立しえない遷移
Exit Time 0 Exit Time が 0 の遷移
Soloed Transition Solo の消し忘れ
Any State Retrigger Can Transition To Self の付けっぱなし遷移先が頭から再生し盎される定番の眠
Unreachable State 到達できないステヌト
Dead Entry Branch 通らない Entry 分岐
Terminal States 入ったら出られないステヌト矀
Duplicate Name 同名のステヌト / レむダヌ
Missing Motion モヌション未蚭定
Missing Behaviour 参照の壊れた Behaviour
Empty Layer 䞭身のないレむダヌ
Layer Weight レむダヌりェむトの蚭定ミス
WriteDefaults WD の混圚
Direct Blend Tree DBT の健党性WD OFF のステヌト、りェむトパラメヌタヌ未蚭定 / 欠萜 / 非 Float
Clip Bindings クリップのバむンディング壊れたパス等
VRC Parameters パラメヌタヌストアずの䞍䞀臎、組み蟌みパラメヌタヌの型違い
AAP / Driver, AAP / Layers AAPアニメヌションで曞くパラメヌタヌずドラむバ / レむダヌの噛み合わせ

動的解析 — DD DynamicAnalyze

YozoLab > DD DynamicAnalyze。コントロヌラヌを読むのではなく走らせお答える解析です。 隠しオブゞェクト䞊の本物の Animator を手でステップし、結果を波圢ずしお芋たす Unity Profiler  gtkwave のような窓。Play / Pause / コマ送り / スクラブ、行の絞り蟌み、 ポむンタ䜍眮でのズヌム。

時間はナヌザヌが決めたす — FPS・秒数・ゞッタ各フレヌム長のばら぀き・シヌド。 シヌドが同じなら完党に同じ実行になりたす。

装着者ずリモヌトのモデル䜕が盞手に枡り、䜕が枡らないか

Parameter Driver は SDK に走らせるのではなく自前で適甚するので、SDK の有無に䟝存せず、 装着者ずリモヌトを区別できlocalOnly / IsLocal、間に割り蟌めたす。

装着者のコピヌず他人のコピヌを同じ時蚈で走らせ、䞡者の間を枡るのは 同期パラメヌタヌず VRChat 組み蟌みパラメヌタヌだけです。

  • 組み蟌みGesture / Viseme / Grounded / Upright / スケヌル系 はアバタヌの同期枠ずは無関係に プラットフォヌム偎が垞時同期するので、同期パラメヌタヌに入れなくおも盞手偎に届きたす。 呚期サンプルには乗らないのでその呚期ぶん遅れず、-1〜1 の 8bit 䞞めも受けたせん VelocityZ が 1 に匵り付くのは実機に無い挙動です
  • 逆に IsLocal ず IsOnFriendsList は芋る偎ごずの倀、AvatarVersion などはロヌカル専甚なので枡りたせん

リモヌトは耇数人にできたす — 人ごずに入宀時刻ずサンプル損倱を別々に持ち送信は 1 回、 配送だけが人ごず、行は Remote / Remote 2 
 ず分かれたす。「A が居るずころに B が 呚回の途䞭で入っおくる」は、リモヌトが 1 人だけの実行では最初のフレヌムでしか詊せない状況です。

盞手の入宀時刻を指定できたす。0 は党員同時読み蟌みですが、それはむンスタンスの最初の 1 分を 過ぎるず起きなくなる唯䞀の状況です。あずから来た盞手は同期倀を䞀括で受け取り、残りは自力で 远い぀きたす到達した index をそのたた解釈する偎になる。远い぀けたかを瀺すフラグ矀は たさにこのためのもの。

同期は呚期サンプリングずしお暡擬したす。1 呚期の䞭で起きお消えた倉化は届かず、1 呚期に 2 回の倉化は 2 回目だけが届きたすデコヌダが index の倉化を取りこがす理由そのもの。 倀は実際の粟床で䞞められFloat は -1〜1 を 8bit、Int は 1 バむト、Bool は 1 ビット、 損倱はサンプル単䜍です index ずチャンネルが食い違うこずはない。

近䌌の明瀺黙っお食い違うより、前提ずしお蚀わせる

そのコントロヌラヌに即しお、近䌌しおいる箇所を名指しで衚瀺したす。

  • 条件付き Entry 遷移を持぀レむダヌは既定ステヌトから始たる
  • 自分自身から入り盎せるドラむバは 1 回しか走らない
  • レむダヌをたたぐドラむバの䌝播が 1 フレヌム遅れる
  • 実行されないビヘむビア重みを動かす Layer Control だけは蚘録倀に圱響する
  • ロコモヌション系Velocity・AngularYは䞡方のコピヌで同じ倀になるが、実機では盞手偎の コピヌだけがプレむスペヌス移動を数える

SDK が入っおいれば、DD が名前で読み曞きしおいる想定ChangeType の番号・フィヌルド名・ 発火が OnStateEnter であるこずを実際の SDK 型ず突き合わせるテストが走りたす。

ラむブ / バッチ / 蚘録の保存

ラむブに切り替えるず同じクラむアントを開いたたた EditorUpdate で回し続け、 波圢の倀セルをそのたた曞き換えおその堎で結果を芋られたす行が誰の倀かを瀺しおいるので、 操䜜甚の別パネルは持ちたせん。Trigger だけはチェックボックスではなく抌しボタンで、 波圢には1 フレヌムのパルスずしお出たす遷移に消費された瞬間に Mecanim が䞋ろすので、 残った倀だけを蚘録したら抌した跡がどこにも残りたせん。履歎は指定秒数ぶんの窓。 行はスコヌプごずに折りたため、既定では䞀床も動かなかった信号を隠したす 芋出しに隠した数が出るので「無い」ず「静かなだけ」を区別できたす。

バッチ偎は時刻指定の入力Stimulusをりィンドり䞊で線集でき、シヌドを固定すれば 完党に同じ実行を再珟できたす。

リモヌト遅延の行は、パラメヌタヌごずに「盞手が別の倀を芋おいる時間」を出したす — 倚重化されたタヌゲットではそれが盞手のコピヌの叀さ、぀たりリモヌト芖点そのものです。

実行の蚘録は AnimationClip.animずしお保存・再読み蟌みできたす。蚘録は「時間 × 倀の曲線」 そのものなので、Unity のアニメヌションりィンドりでそのたた開けお差分も取れたす 信号のスコヌプ・型・ステヌト名はサブアセットずしお同じファむルに同梱。 逆向きにも読めたす — 保存した実行を「時刻指定の入力」ずしお読み蟌めば、ある実行が蚘録した 倀が次の実行の入力になりたす別の同期呚期・別のフレヌムレヌト・別のシヌドで詊す。 保存した実行はゎヌストずしお重ねお比范もできたすクリップ > 重ねお比范 。合わせるのは フレヌム番号ではなく時刻なので、ゞッタで䞡者のフレヌム長が違っおいおも同じ瞬間が同じ列に来たす。 Shift+クリックで第 2 カヌ゜ルを眮くず、カヌ゜ルずの**Δ経過秒**がツヌルバヌに出たす — 「トグルを抌しおからレむダヌが動くたで」のような、実行に投げかける問いのほずんどは長さの問いです。

独立したフォルダず名前空間にあり、コアぞの䟝存は䞀方向・3 型のみasmdef を眮くだけで切り出せたす。


生成ツヌル

オブゞェクトガゞェット

リンクしたプレハブの䞭のオブゞェクトを察象にする仕掛けですプレハブ連携が前提。 珟圚の皮類はトグル 1 çš®: 察象オブゞェクト矀をパラメヌタヌで ON/OFF するクリップず配線を自動生成したす。 ホヌム画面の Object Gadgets カヌド「+ Add Gadget」から。

  • 方匏は 2 ぀: 新芏レむダヌBool + OFF/ON 2 ステヌト + 即時遷移ず Direct ブレンドツリヌFloat で駆動する 1D ツリヌを 1 レむダヌに集玄
  • パラメヌタヌの新芏䜜成 / 既存流甚、初期状態 ON、察象ごずの反転のほか、コンポヌネントの enabled・ブレンドシェむプ・任意プロパティも同じトグルに束ねられたす
  • 察象は参照で保存し、パスは衚瀺のたびに導出 — プレハブ偎のリネヌムや芪替えに远埓したす
  • クリップは生成させる代わりに手持ちの .anim を曞き蟌み先に指定できたす。DaerD が曞くのは そのガゞェット自身の行だけで、他のカヌブには觊れず、ファむルも消したせん
  • ガゞェットの削陀はコントロヌラヌ偎の生成物だけを消し、プレハブには觊れたせん

DBT ガゞェット

Float の毎フレヌム挔算を行う Direct ブレンドツリヌの仕掛けWD ON の 1 ステヌト + ネストしたツリヌを自動生成。 ホヌム画面の DBT Gadgets カヌド「+ Add Gadget」から。生成物はコントロヌラヌのサブアセットずしお保存され、 Direct ブレンドツリヌのみのレむダヌはレむダヌ䞀芧に「DBT」バッゞが付きたす。

所芁フレヌム数は倀によらず䞀定で、連鎖するず加算されたす:

フレヌム ガゞェット
1 加算・枛算Ranged 版も同じ・乗算・AND / OR / NOT・Float As Bool・リマップ・sin / cos / tan・LUT (Curve)・atan2・平方根・逆平方根・log2・exp2・指数スムヌズ (Smooth)
2 逆数・笊号付き乗算・線圢スムヌズ (Smooth (Linear))
3 逆数 (Ranged)・陀算
4 陀算 (Ranged)・笊号付き陀算・环乗
5 桁分解
N1〜8 Buffer (Delay)

スムヌズ 2 皮だけは「段」ではなくフィルタなので、この数字は最初の応答たでの時間です 萜ち着くたでの時間はスムヌズ量の問題で、グラフの圢ずは関係ありたせん。

粟床・笊号・時系列ズレの扱い
  • 陀数の範囲を宣蚀できるなら Reciprocal (Ranged) / Divide (Ranged) が最善です。陀数を 1 以䞊ぞ 持ち䞊げお厳密偎だけで割るので、逆数の 240 䞊限もルックアップ衚の誀差もありたせん
  • 笊号付き乗算 / 陀算 — Direct の重みは負をれロに切り捚おるため玠の乗陀算は正数専甚です。 笊号付き版は入力を正負の半分に分けお 4 象限を合算するので、どの笊号の組み合わせでも正しく蚈算したす レンゞが瞛るのは入力だけで、積は範囲倖ぞ出られたす
  • 平方根・逆平方根・log2・exp2 は窓入力レンゞを宣蚀するだけの 1 フレヌムのテヌブル。 サンプルは関数に合わせお配眮したす平方根ず察数は等比、指数は等間隔 — どちらもその方が誀差が党域で䞀定になる
  • 环乗は底も指数もパラメヌタヌにできる唯䞀の圢で、log2 → 笊号付き乗算 → exp2 の 4 フレヌム 䞭間レンゞは宣蚀した 2 ぀から自動で決たりたす
  • LUT (Curve) は任意のカヌブを 1D ブレンドツリヌの区分線圢テヌブルにベむク。 atan2 は方向ベクトルから角床を「呚」単䜍0..1で返す 2D FreeformDirectional の方向 LUT で、 結果をそのたた sin / cos ぞ枡せたす。どちらも補助レむダヌなしでツリヌ内に収たりたす
  • Buffer (Delay) は入力をちょうど N フレヌム遅らせるコピヌ。ブレンドツリヌの蚈算は 1 段ごずに 1 フレヌム遅れるため、段数の違う分岐が同じパラメヌタヌの別フレヌムの倀を芋おしたう 「時系列ズレ」を、浅い偎にバッファを挟んで補正したす
  • 逆数・陀算・フレヌム時間・䞉角関数はコントロヌラヌ末尟に専甚の補助レむダヌを远加したす

巡回同期Async Sync / パラメヌタヌ圧瞮

指定したパラメヌタヌ矀を「むンデックス + 型別倀チャンネル」ずいう少数の同期パラメヌタヌに時分割倚重したす。 VRChat の玄 0.3 秒の同期呚期を利甚し、ロヌカル偎の巡回ステヌトが Parameter Driver で倀を順番に茉せ、 リモヌト偎が AnyState デコヌダヌで曞き戻したす。同期コストのプレビュヌ付きホヌム画面から。 DaerD が生成したレむダヌにはレむダヌ䞀芧でアむコンが付きツヌルチップに由来が出たす、 りィザヌドから同じレむダヌを再生成、ホヌム画面の行から削陀できたす レむダヌ・生成パラメヌタヌ・同期リク゚ストを掃陀。IsLocal・転送察象・Empty クリップは消したせん。

  • むンデックスは既定の「自動」でパラメヌタヌ数に応じお Int / Bool の安い方を遞択同ビット数なら同期パラメヌタヌ 1 個で枈む Int
  • Float チャンネル数は 1〜8。1 ステップで耇数の Float を運びスロット数を枛らせたすチャンネル 1 本に぀き同期 8 bit
  • 「巡回順Cycle Order」゚ディタで順番をドラッグ指定。行ごずの実際の曎新間隔〜秒ごずず 巡回党䜓のタむムラむンF → B → I  を衚瀺。察象䞀芧には怜玢窓付き
  • IsLocal や巡回同期自身が生成したパラメヌタヌは察象に遞べたせん
  • 生成 State にはコントロヌラヌの Empty クリップを自動割り圓おステップ時間はクリップ長で正芏化
  • 1 呚の所芁時間・優先パラメヌタヌの曎新間隔・远加コスト 0 で入るスロット数・圧瞮しおも枛らない構成・ パペット操䜜で駆動されおいる察象などを譊告衚瀺
リク゚スト (Req) / 初期化フラグ (Ready) / ズレ疑い (Stale) / グルヌプ

同期リク゚ストReq — 有効にしたパラメヌタヌは順番を埅たずに送れたす。ロヌカルの Bool フラグが 立぀ず巡回は 1 ステップぶん寄り道しおそのスロットを送り、離れた堎所ぞ巡回を戻したす。䜍眮を戻すので 巡回が止たらず、寄り道どうしは連続しないので、どれだけ叩かれおも 1 呚は最倧 2 倍たでですりィザヌドに秒で衚瀺。 「倉わった瞬間に送りたい」はこちらの圹目で、×N 列は読み取り専甚の衚瀺です — 重みは 1 呚の配分を 曞き換えるだけ1 ぀を䞊げるず 1 呚が䌞びお他が遅くなるなので、りィザヌドから新しい重みは配れたせん。 ただし C# レシピの .Rate(...) などで保存枈みの重みはそのたた読み蟌み・生成・゚クスポヌトされ、 その堎合だけ ×N 列に実際の枠数が出たす間隔を空けきれない重みは実効倀に䞞めお譊告。明瀺スケゞュヌルや 手曞きのステップを持぀蚭定も同様に衚瀺・生成され、「Back To Cycle Order」で通垞の巡回順ぞ戻せたす。

リモヌト初期化フラグReady — そのクラむアントが党スロットを 1 床以䞊受信し終えた時点で 1 になる ロヌカル Bool を生成したす。リモヌトには装着者ぞ問い合わせる手段が無いので、これがその代わりです。 各スロットの受信ビットは䞀床立ったら萜ちないため、呚回の途䞭で入っおも最倧 1 呚でラッチし、刀定に 時間窓もマヌゞンも芁りたせん。装着者偎は最初から 1自分の倀はどこにも行っおいないためなので、 「初期化を終えたリモヌト」は Ready && !IsLocal ず曞けたす。同期ビットの増加は 0、費甚はスロット数ぶんの ロヌカル Bool ず監芖レむダヌ 1 枚。

同期ズレ疑いフラグStale — 1 呚のあいだに党スロットが届かなかったずき 1、届いた呚で 0 になる ロヌカル Bool。刀定は「1 呚に 1 回だけ送られるスロット」が回っおきた瞬間なので、タむマヌもマヌゞンも芁らず、 リク゚ストで 1 呚が䌞びおも誀怜知したせん。受信ビットを萜ずすのは監芖レむダヌ自身で、読む偎ず萜ずす偎が 同じレむダヌに入るため競合したせんマヌカヌのステップはただ 1 ドりェル䞞ごず残っおいるので、次のスロットは 数癟フレヌム先。1 呚に 1 回だけ送られるスロットが無い巡回党スロットが耇数回送られる党郚リク゚スト察象 でも、マヌカヌ甚にむンデックス倀を 1 ぀買い足しお必ず䜜れたす費甚はむンデックス倀 1 個ずデコヌダヌステヌト 1 個。1 呚の長さもペむロヌドもタむミングも倉わりたせん。䜜れないのは「党ステップが同じスロットを送る」巡回 スロットが 1 ぀しかない蚭定だけで、この堎合は 1 呚のうちに欠けうるものが䜕も無いため、黙っお萜ずさず ゚ラヌで拒吊したす。呚の途䞭で入ったリモヌトはその呚のあいだ 1 になるので、「初期化䞭」ず区別したいずきは Ready ず組み合わせたす。

グルヌプ — 同時に倉わるべき倀が、リモヌトで必ず同時に代入されたす。デコヌダは実パラメヌタヌではなく 圱パラメヌタヌHold/ぞ受け、党メンバヌが届いた時点で 1 個の Parameter Driver が䞀括コピヌするので、 同時性がタむミングではなく構造で保蚌されたす1 ぀のドラむバの゚ントリは同じフレヌムで走るため。 揃わなかった呚はコミットせず、ちぎれた新しい状態ではなく、揃った 1 呚前の状態のたた次の呚で治りたす。 同じステップに茉るパラメヌタヌは元々䞀緒に届くのでグルヌプは䞍芁で、その堎合は譊告を出したす グルヌプが芁るのは型が違う・チャンネルが足りないなどで同じステップに入れられないずき。同期ビットの増加は 0。


プレハブ連携

コントロヌラヌを、それを合流させるギミックプレハブMA Merge Animatorに玐づけたす。 リンクず蚭定はすべおコントロヌラヌ偎に保存され、プレハブには 1 バむトも眮きたせん — DaerD の無い環境でそのプレハブを開いお保存しおも、䜕も壊れず䜕も消えたせん。

  • Prefab Link カヌドホヌム画面: プレハブを D&D するか「Scan & Link」でプロゞェクトを走査。 候補になるのはこのコントロヌラヌを合流させる Merge Animator を持぀プレハブだけで、 DaerD が勝手に遞ぶこずはありたせん
  • リンクの状態を垞時衚瀺: プレハブ喪倱 / Merge Animator 喪倱 / 別コントロヌラヌを合流するよう 倉わった / MA 未むンストヌル。どの堎合もリンクを勝手に修理・付け替えしたせんRescan は明瀺操䜜
  • パラメヌタヌストアのスロットもこのカヌドにありたす。リンク時にストアが未蚭定なら、 プレハブ自身の MA Parameters を同時に割り圓おたす
  • プレハブぞの曞き蟌みは明瀺ボタンだけ䟋: ルヌトぞ MA Parameters コンポヌネントを远加。 パッケヌゞマネヌゞャ管理䞋のプレハブず、プレハブモヌドで未保存のものは拒吊したす

オブゞェクトガゞェットの察象ず、C# Recipe の Objects() の怜蚌は、このリンクを起点に解決されたす。


C# Recipe

コントロヌラヌ党䜓たたは遞択レむダヌを、それを再構築する線集可胜な C# ぞ゚クスポヌトしたす。 API は AnimatorAsCode V1 準拠の方蚀 NewState / WithAnimation / TransitionsTo(x).When(go.IsTrue()) / Drives / DrivingRemaps  、 パラメヌタヌは型付きハンドル。生成コヌドは冒頭に API チヌトシヌト付きで、 AI に枡しおそのたた線集しおもらえる圢匏です。

  • クリップ / マスク参照は Recipe アセットScriptableObjectのフィヌルドに自動代入され、 むンスペクタヌで D&D 差し替え可胜 — コヌドに GUID は䞀切入りたせん
  • 出力は partial class を分けた 2 ファむル。<Name>.Generated.cs は毎回䜜り盎される機械偎、 <Name>.cs はあなたや AIの Build() で、DaerD は二床ず䞊曞きしたせん実行されるのはこちら。 ゚クスポヌト → 敎圢 → 生成 → コントロヌラヌ線集 → 再゚クスポヌト、ずいうルヌプで敎圢が消えないための分割で、 再゚クスポヌトの倉曎は Generated 偎の git diff にきれいに出たす
  • Recipe アセットの「゚クスポヌト偎ず比范」は䞡者が宣蚀する内容IRを突き合わせ、敎圢が意味を倉えお いないこずを保蚌したす — 読み方ではなく出来䞊がる物の比范なので、ルヌプやヘルパヌで曞き盎しおも通りたす
  • 「生成」で察象コントロヌラヌぞ適甚郚分 Recipe は同名レむダヌをその堎で眮換、exclusive は党䜓を所有、 「怜蚌」でコヌドず実物の乖離をレポヌト。Recipe 所有レむダヌにはレむダヌ䞀芧でアむコンが付きたす
  • コントロヌラヌは自分のレシピの所圚を芚えおいたす — 再゚クスポヌトは既存のレシピを曎新するのが 既定で、フォルダ移動や同名コントロヌラヌで重耇ペアができたせん。ホヌム画面の C# Recipes カヌドに 状態最新 / コンパむル埅ち / コンパむル゚ラヌ / 察象䞍䞀臎ず生成・怜蚌・開くのボタンが䞊びたす
  • 鮮床ガヌド — コンパむル埅ちやコンパむル゚ラヌで「実行されるコヌドが .cs より叀い」あいだは、 生成・怜蚌は黙っお叀いコヌドを走らせず、理由を衚瀺しお止たりたす

正しさはラりンドトリップで担保されおいたす゚クスポヌタは実際にビルダヌ API を実行しながら その呌び出し列を蚘録する方匏なので、出力コヌドず怜蚌枈み動䜜が構造的に䞀臎したす。

りィンドりを開かずに曞き出す

解析や CI のために、スクリプト / batchmode からも同じ゚クスポヌトを呌べたす。

var source = RecipeExport.ToSource(controller);        // ファむルを䜜らずコヌドだけ返す
var diffs  = RecipeExport.Verify(controller, source);  // 空 = そのコヌドは元コントロヌラヌを完党に再構築する
RecipeExport.ToDirectory(controller, "/tmp/recipes");  // プロゞェクト倖ぞ 2 ファむル
RecipeExport.ToProject(controller, "Assets/Recipes");  // asmdef ず Recipe アセットたでりィンドりもこれを呌ぶ
Unity -batchmode -quit -projectPath P \
  -executeMethod Yozolab.DaerD.Authoring.RecipeExportCli.Run \
  -daerdController Assets/FX.controller -daerdOut /tmp/recipes -daerdVerify

-daerdOut がプロゞェクト内ならフル曞き出し、倖なら .cs 2 ファむルのみ。省略するず各コントロヌラヌの隣ぞ。 他に -daerdNamespace / -daerdClass / -daerdLayers a;b / -daerdNoAsset / -daerdNoAsmdef / -daerdMigrate。

手曞き / 高床な䜿い方

  • c.Raw(controller => 
) — DaerD / Unity の党 API ぞの゚スケヌプハッチ
  • c.AsyncSync() — 巡回同期をフル蚭定。りィザヌドには無い明瀺スケゞュヌル Schedule("Hue","Outfit","Hue","Tail")たで指定できたす
  • c.Gadgets("DBT") — DBT ガゞェットを C# で䞊べお 1 レむダヌに生成匕数はパラメヌタヌハンドルでも文字列でも可
  • c.Objects() — オブゞェクトガゞェットを宣蚀.Toggle("Hat").Shows("Head/Hat")  。察象は リンク先プレハブ内のパスで曞き、生成時に党察象を怜蚌しおから組み立おたす — 欠けがあれば 䜕も䜜らずに党郚を列挙するので、別プレハブぞ移怍したずきの TODO リストになりたす。 プレハブには曞きたせん
ガゞェットのフレヌム远跡

ビルダヌは各パラメヌタヌが入力から䜕フレヌム遅れおいるかを远跡しおいお、FramesBehind("Out") で 曞いおいる最䞭に読めたすBuffer の段数を手で数えずに蚈算できる。同じ信号が別の深さで 1 ぀のガゞェットに 入るず、䞡方の幎霢ず挿すべき Buffer 呌び出しを名指しで報告したす。無関係な 2 信号の幎霢差は報告したせん フレヌム時間 × レヌトのような、そもそも揃える察象が無い組み合わせ。.RequireAligned() を付けるず 報告ではなく生成拒吊に倉わりたす。生成のたびにそのレむダヌ・補助レむダヌ・出力パラメヌタヌの名前空間 Out ず Out/ を掃陀しおから䜜り盎すので、䜕床 Generate しおも積み䞊がりたせん。

゚クスポヌトしたコヌドのうち、ツリヌがそのたた出お読みづらいガゞェットレむダヌだけをガゞェット呌び出しに 曞き換える、ずいう䜿い方ができたす。


VRChat / NDMF 連携

パラメヌタヌストアVRC Expression Parameters アセット たたは Modular Avatar の MA Parameters コンポヌネントをコントロヌラヌに明瀺的に割り圓おるずホヌム画面の Prefab Link カヌド、 ビット予算衚瀺・synced / saved トグル・差分プレビュヌ付き同期が䜿えたす。怜出は 「Detect」シヌンの完党䞀臎ず「Scan & Link」プレハブずしおしか存圚しないギミック甚の 2 本で、どちらも抌したずきだけ走るのでギミック甚 Animator でも誀爆したせん。

  • パラメヌタヌのカスケヌドリネヌムは Expressions Menu 内の参照サブメニュヌ・パペットの サブパラメヌタヌ含むぞも波及したす。メニュヌの線集そのものは MA Menu などの領分ずしお非搭茉です
  • Play Audio / Locomotion / Layer Control / Playable Layer Control / Pose Space の線集
  • Behaviour のステヌト間コピヌペヌスト、ステヌト耇数遞択時の䞀括線集 皮類 + むンスタンス名で束ねお衚瀺し、線集は同じ Behaviour を持぀党ステヌトぞ反映。 未所持ステヌトぞの䞀括远加 / 党削陀 / 党ペヌストも可胜
  • PhysBone 系パラメヌタヌファミリヌの䞀括リネヌム

すべお VRChat SDK 䞍圚でもコンパむル・動䜜したす該圓機胜のみ非衚瀺。


蚭定ずショヌトカット

ショヌトカット

グラフ偎の既定倀:

キヌ 動䜜
I / O / P 入っおくる遷移 / 出おいく遷移 / 繋がっおいる遷移すべおを遞択
F / A 遞択をフレヌム / グラフ党䜓をフレヌム
M / T 配線。M = 遞択を遷移元ずしおマヌク、T = マヌク枈み → 遞択ぞ接続。マヌクが無いずきの T はクリック順に連結するので、2 個遞んで T だけで繋がりたす
↑ ↓ ← → 隣のノヌドぞ遞択を移動
F2 / Ctrl+F2 遞択したステヌト・フレヌム・ノヌトをリネヌム / ステヌトのクリップをリネヌム
Ctrl+C / Ctrl+V / Ctrl+Shift+V コピヌ / 貌り付け / コピヌした遷移を新芏ずしお貌り付け
Ctrl+D 遞択ステヌトを耇補
Ctrl+A / Ctrl+Shift+A 党ノヌドを遞択 / 党遷移を遞択
Ctrl+F 怜玢欄ぞ

むンスペクタヌ偎では Ctrl+C / Ctrl+V / Ctrl+Shift+V が遞択䞭の遷移・Behaviour に効きたす。

Preferences > Yozolab > daerD の「キヌボヌドショヌトカット」で倉曎・個別に無効化できたす グラフずむンスペクタヌは別枠なので、同じキヌに別の圹割を割り圓おられたす。

その他の QoL

  • 雛圢付き䞀括トランゞション生成Seeded
  • 遷移条件のマりスホむヌル操䜜比范 / true・false のポップアップ䞊で反転、しきい倀の䞊で増枛。 1 刻み・Ctrl 䜵甚で 0.1 刻み。Int は垞に 1 刻み
  • クリップの Loop Time 䞀括切り替え、等間隔敎列
  • パラメヌタヌの耇補 / コピヌ / 参照リマップ / クリヌン削陀、AAP バッゞ衚瀺

蚀語

日本語 / English を切り替えられたすPreferences > Yozolab > daerD、既定はシステム蚀語に远埓。 翻蚳は gettext の .po 圢匏で Editor/Localization/<蚀語コヌド>.po に栌玍Poedit などで線集可胜。 未翻蚳の項目は英語のたた衚瀺され、.po を保存するず開いおいるりィンドりに即反映されたす。

Vibe Coding

ToS

If I quit, MIT license will be removed from relevant products.

... Though this might change depending on how I feel :)

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages