SmoothFollowFilter – VRM用カメラ揺れ低減スクリプト(Cinemachine対応)
- Digital100 JPY

SmoothFollowFilter v2 は、VRMモデルのトラッキング揺れを軽減し、CinemachineのVirtualCameraで滑らかに追従させるためのシンプルなスクリプトです。 ターゲットボーン(例:Neck)に発生する小刻みな揺れをフィルタリングし、配信や動画での視聴体験を向上させます。 ■ v2 アップデート(要点) - **位置/回転ごとの最大変化量**を設定できるようになりました - 位置:m/sで上限化 - 回転:deg/sで上限化 - クラス/ファイル名:**SmoothFollowAnchorV2.cs / SmoothFollowAnchorV2** - v1からの移行は、スクリプトを差し替えてInspectorの値をコピーするだけ(互換) ■ 主な機能 - 指定したTransform(例:Neck, Head)への滑らか追従 - 位置・回転それぞれのスムージング速度をInspectorから調整可能 - **最大変化量(m/s, deg/s)で“行き過ぎ”や“振り戻し”を抑制** - LateUpdate実行によりアニメーション更新後の揺れを吸収 - CinemachineVirtualCameraのFollow/LookAt先に本スクリプト出力を使用可能 ■ 想定利用例 - VRMモデル配信時の頭部や首への安定追従 - 歌枠配信など静的コンテンツのカメラ安定化 - 動きの大きいVR/モーションキャプチャ配信での見やすさ向上 ■ 動作環境 - Unity 2021.3.38f1 / C# 8 - Cinemachine導入済みプロジェクト - VRMモデル利用プロジェクト ■ 注意事項 - 本スクリプトは個人用保管も兼ねています。実験的なコードや調整中の機能を含む場合があります。 - 動作保証は上記環境のみ。他環境は保証外です。 - 再配布や販売は禁止します(改変後も含む)。 - 利用によって生じた損害について、作者は一切の責任を負いません。 ■ クレジット表記 - 不要です。表記する場合は「UFirst_fn」と記載してください。 ■ 動作例 トラッキング環境: Hatracker(ver.0.16.0)で顔・上半身をトラッキング → VMCプロトコルでモーション送信 → EVMC4UでUnityに受信 → Unity上のカメラでNeckを追従(FollowはHip) 配信アーカイブ: https://www.youtube.com/watch?v=27dWP-3GTKk ■ 動作例2 モーション読み込み → Follow:GameObject(VRMのRoot)、Look At:GameObject(このスクリプトでSpine追従) +手ブレ感を出すために Handheld_normal_strong で Amplit 0.07 / Frequency 0.7 ショート動画: https://www.youtube.com/shorts/AQqDAfFB_2E ■ 動作例3(バージョン2) モーション読み込み →Follow、Look At共にGameObject(このスクリプトでHips追従) 設定値:Position Sooth Time 0.15/Rotation Smooth Time 0.1/Max Position Data Per Second 0.16/Max Rotation Deg Per Second0.15 ショート動画: https://www.youtube.com/shorts/TQ4JaqMJKwo