상품 설명
Hierarchy でアバターをダブルクリックしたら頭が画面外に切れた、ボーンの根元に寄り過ぎてアバターが豆粒になった、装飾アクセサリのせいで本体が小さく映った——そんな経験ありませんか?
Smart Focus は、Unity Editor の Hierarchy window / Project window で GameObject をダブルクリックしたとき、Unity 既定の Frame Selected を「対象の SkinnedMeshRenderer / MeshRenderer 全体をしっかり収める perspective-correct な framing」に置き換える Editor 拡張です。
VRChat アバター作業中の「ダブルクリックしたのにフォーカスが微妙」を一掃します。
----------------------------------------------------------------------
■ こんな方に
----------------------------------------------------------------------
- VRChat アバターを Unity で触っているとき、Hierarchy のダブルクリックで頭や足が見切れて困っている
- 衣装やアクセサリの調整中、Scene ビューでいちいちカメラを手動で寄せ直すのが面倒
- 顔メッシュなどインポート時に X 回転が掛かったオブジェクトでも、ちゃんと正面から見える framing が欲しい
- インストールするだけで、設定 UI もホットキー変更も無しで使い始めたい
----------------------------------------------------------------------
■ できること
----------------------------------------------------------------------
【Hierarchy window でダブルクリック】
- 対象 GameObject の子孫に SkinnedMeshRenderer または MeshRenderer があれば、画面いっぱい・中央フィットで Scene ビューを切り替えます
- SceneView の角度(rotation)はそのまま維持。視線軸を奪いません
【Project window で Prefab GameObject をダブルクリック】
- Prefab Mode に入った直後に、自動で同じ framing を当てます
- 右クリック「Open Prefab Asset」や Inspector の「Open」ボタンなど、他経路から Prefab Mode を開いたときには介入しません
【何もしない場面】
- 子孫に SkinnedMeshRenderer / MeshRenderer が無い場合(Light、空 GameObject 等)→ Unity 既定の Frame Selected に委ねます
- SceneView が orthographic モード → Unity 既定に委ねます
- F キー(Frame Selected ホットキー)は触りません。muscle memory を尊重し、ダブルクリックだけを置き換えます
----------------------------------------------------------------------
■ インストール
----------------------------------------------------------------------
ダウンロード・解凍して SmartFocus.unitypackage を導入します。
導入後、設定 UI はありません。Hierarchy / Project window でダブルクリックすると即座に動作します。
----------------------------------------------------------------------
■ なぜ Unity 既定より良いか
----------------------------------------------------------------------
Unity 既定の Frame Selected には次の課題があります。
- SkinnedMeshRenderer.bounds は culling 用に大きめに設計されており、現在ポーズより緩い framing になる
- 球フィット(FoV を考慮しない)なので、画面アスペクト比によって余白が大きくなる
- 装飾用の小さな Renderer(ribbon / heart accessory など)が AABB を膨らませると本体が小さく映る
Smart Focus は次の手当てで解決します。
1. BakeMesh で SkinnedMeshRenderer の現在ポーズ tight bounds を取得
2. per-axis AABB Contains の outlier filter で、本体(最大 extent renderer)から離れた装飾を framing 対象から除外
3. perspective-correct な両端 binding solver で、画面の縦・横どちらかの端ぴったりに 2 corner が来る最小カメラ距離を求める
4. 非 binding 軸(余裕がある方)を analytic に再センタリング
framing 算法の核は同作者の MCP サーバー prefab-sentinel で AI 向けに開発したものを移植しています。VRChat アバターでの visual regression test で検証済み。
----------------------------------------------------------------------
■ 動作環境
----------------------------------------------------------------------
- Unity 2022.3 LTS で開発・検証
- VRChat SDK / ModularAvatar / VRCFury 等の追加依存はありません(一般 Unity プロジェクトでも動作)
- Unity 6 系でも当面は動作する見込みですが、将来的に `EditorApplication.hierarchyWindowItemOnGUI` が obsolete になるため、その時期に対応版を検討します
----------------------------------------------------------------------
■ 使い方
----------------------------------------------------------------------
インストール後、特別な操作は不要です。
- Hierarchy で対象をダブルクリック → Scene ビューが切り替わります
- Project window で Prefab をダブルクリック → Prefab Mode に入った直後に自動 focus
設定項目は今のところありません(v0.1.0)。要望が多ければ将来追加します。
----------------------------------------------------------------------
■ ライセンス・利用条件
----------------------------------------------------------------------
- ライセンス: MIT License
- 商用利用: 可(個人・法人を問わず)
- 改変: 可
- 再配布: 可(ライセンス表記を保つこと)
- 制作物への組み込み: 可
----------------------------------------------------------------------
■ 不具合報告・機能要望
----------------------------------------------------------------------
不具合報告・機能要望は下記 X(Twitter)アカウントまでお気軽にどうぞ。
X: @tyunta_game
----------------------------------------------------------------------
■ 更新履歴
----------------------------------------------------------------------
【v0.1.0】2026-05-22
- 初版リリース
- Hierarchy ダブルクリックで smart focus
- Project window で Prefab ダブルクリック → Prefab Mode 起動直後に自動 focus
- 公開 API: SmartFocus.SmartFocusController.TryFocus(GameObject)
----------------------------------------------------------------------
■ 既知の制限・FAQ
----------------------------------------------------------------------
【Q】F キー(Frame Selected)は smart focus にならない?
【A】はい。F は Unity 全体で muscle memory が強いホットキーなので、ダブルクリックだけを置き換えています。要望があれば将来 `Shift+F` などの別 binding 追加を検討します。
【Q】SceneView を orthographic で使っているとき smart focus が効かない
【A】仕様です。orthographic モードでは Unity 既定の Frame Selected に委ねます(perspective-correct な solver なので ortho では算法が成立しないため)。
【Q】Particle System や Trail Renderer のフォーカスもしてほしい
【A】v0.1.0 では Particle / Line / Trail / VFX Graph 系の Renderer を framing 対象から除外しています(これらが「最大 extent renderer」として core 選定で勝つと framing が壊れるため)。需要があれば opt-in で対応検討します。
【Q】複数の SceneView を開いているとき、どちらが focus される?
【A】SceneView.lastActiveSceneView(最後に active だった SceneView)に対して focus を当てます。
【Q】巨大シーン(Renderer 数 1000+)で重くなる?
【A】SkinnedMeshRenderer 1 つにつき BakeMesh を 1 回呼ぶので、数百 Renderer までは体感即時、それ以上で数十〜数百 ms オーダーになり得ます。問題が出たら BakeMesh を skip するオプション追加を検討します。
----------------------------------------------------------------------
■ 謝辞
----------------------------------------------------------------------
framing 算法は同作者の prefab-sentinel: https://github.com/tyunta/prefab-sentinel v0.7.1 から移植したものです(同じ MIT ライセンス)。AI が Unity で screenshot を撮るときに「対象が画面いっぱいに収まる構図」を 1 コールで返すために組んだ算法が、人間がダブルクリックで使うときにも同じく役立ったので、独立パッケージとして切り出しました。
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기