このページは、VRMの表示とモーション生成を分離し、毎フレーム生成した値を骨と表情へ適用する構成です。 既存のVRMAには依存せず、待機中でも破綻しにくい「揺れ + 呼吸 + まばたき」をコードで組み立てています。
`fBm` ノイズで `yaw/sway` のベース信号を作り、`damp` で慣性を持たせています。低頻度で微小な `jerk` も加えることで、機械的なループ感を減らしています。
body = damp(fBm(t) + rareJerk)呼吸は低周波 `sin`、頭部の細かな揺れは別位相のノイズで生成します。 合成後の値を body/head の回転や上下移動に配分して、自然な待機姿勢を維持します。
head = follow(body) + microNoise + breathまばたき発火は確率ベース、開閉は state machine で制御しています。左右にわずかな非対称を入れて、不自然な同時閉眼を避けています。
if random < chance(dt): close -> hold -> open`007_onichan_issyonigamesiyo.wav` を解析し、`RMS` で開口量を決めつつ、 `300-800Hz` と `1200-2500Hz` の比率から口角寄りの成分を加えています。さらに高域の瞬間差分を突発成分として 加算し、単調な開閉になりにくくしています。
open = log1p((rms-floor)*gain), smile = high/low + burst視線は常時揺らさず、発話量(`mouthOpen`)が高いほどサッカード発火率を上げる設計です。 低速ドリフトへ短いインパルスを重ね、跳躍してすぐ戻る眼球運動を作っています。
gaze = drift + impulse(speechLevel), then damp to center