プロジェクト

全般

プロフィール

機能 #509

完了

チルワールドに座席(VRC_Station)を実装

機能 #509: チルワールドに座席(VRC_Station)を実装

エージェント ちゃん さんが3日前に追加. 3日前に更新.

ステータス:
完了
優先度:
高め
担当者:
対象バージョン:
開始日:
2026/07/03
期日:
進捗率:

100%

予定工数:

説明

背景

Unity MCP でのワールド調査(2026-07-03)の結果、シーン全体で VRCStation が 0 件。チルワールドなのに座れる場所がない。

static_obj/chill_world/ 配下に設計時の空マーカーが残っている:

  • GIM_Seat_* ×13(ソファ3・スツール2・ベンチ2・ダイニング2・バルコニー2・プーフ1 ほか)
  • GIM_Lie_* ×3(ベッド2・ソファ1)

やること

  • GIM マーカー位置を基準に VRC_Station(着座/寝転び)を配置する。ソファ・スツール・ベンチ・バルコニーチェアを優先
  • 着座位置・向きは実家具(static_obj/Living / Dinning / Balcony の家具)に合わせて調整
  • 実装済み・不要になった GIM_* マーカーは削除してシーンを整理

確認

  • Play モード + ClientSim で Interact → 着座位置を確認
  • 最終確認はユーザーが VRChat 実機で行う

エージェント ちゃん さんが3日前に更新 操作 #1

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

制作に着手しました。

  • ブランチ: feature/509
  • 対応方針: VRC SDK サンプル VRCChair3 の構成(VRCStation + トリガー BoxCollider + StationGraph Udon)を流用し、実家具(ソファー L ×3席・ソファー 1・ダイニングチェア ×4・キッチンスツール ×2 = 計10席)の位置に Unity MCP でメッシュなし座席を配置する。Bench / Pouf / バルコニーのマーカーは実家具が非アクティブ or 存在しないため今回対象外。実装済みギミックに対応する GIM_* マーカーは削除する。

エージェント ちゃん さんが3日前に更新 操作 #2

進捗 : 座席 10 席の実装とマーカー整理をコミットしました(da46d9d

  • Gimmick/Seats 配下に SDK サンプル VRCChair3 構成(VRCStation + トリガー BoxCollider + StationGraph Udon、Interact 文言「座る」)で 10 席を配置
    • ソファー L ×3(+z 向き)/ 1人掛けソファー ×1(-x 向き)/ ダイニングチェア ×4(テーブル向き)/ キッチンスツール ×2(カウンター向き)
    • 位置・向きは GIM マーカーではなく実家具の測定値に合わせた(マーカーの向き・位置は実家具とズレていたため)
  • Bench / Pouf / バルコニーは実家具が非アクティブ(Blender シェル由来)or 存在しないため対象外。マーカーは将来用に残置
  • 実装済みの GIM マーカー 18 件を削除(Spawn / Mirror / Video / View / LightControl / Lie_Bed / 実装した Seat 系)。残 10 件は未実装ギミック用
  • シーン保存で全 PrefabInstance が新シリアライズ形式に更新されたため差分は大きいが、実変更は上記のみ(自己レビュー PASS)

確認したいこと:

  • ClientSim または実機で各席の Interact →着座位置・向き(特にスツールがカウンター向きか、降車位置が家具に埋まらないか)
  • 問題なければ MR 作成の許可をください(/mr 509

エージェント ちゃん さんが3日前に更新 操作 #3

進捗 : 座席を FukuroUdon Swivel Chair 2 に置き換えました(debfbb0

ユーザー指示により、素の VRCStation → Swivel Chair 2 ギミックに変更。

  • Packages > Fukuro Udon > Runtime > SwivelChair2 > Prefabs > SwivelChair2.prefab(メッシュなし版)をプレファブリンクを保ったまま 10 席配置
  • Wiki の手順どおり本体ルートは床面、SeatPoint を各実家具の実測座面 +8cm に設定:
    • ソファー L ×3: 0.39 / 1人掛け: 0.37 / ダイニング ×4: 0.53 / スツール ×2: 0.75
  • 初回着座から正しい高さになるよう EnterPoint(初期オフセット)も同じ高さに設定し、調整クランプ範囲 adjustMin/MaxLimit を各座面高さ ±0.5m に再設定
  • autoAdjustWhenSitting を有効化(アバター変更時に Hips を SeatPoint へ自動調整)、Interact 文言「座る」
  • ExitPoint は前回検証済みの家具外の床位置へ移動
  • vpm-manifest / packages-lock に com.mimylab.fukuroudon 3.19.4(+ tmp-fallback-fonts-jp)をコミット(VCC での追加分)

確認したいこと:

  • ClientSim/実機で着座 → 高さ・向き・ジャンプ長押し降車・スティック/W・Sキーでの高さ調整・スイベル回転
  • 座位置保存(AdjustmentSync)は今回未導入。必要なら追加します

エージェント ちゃん さんが3日前に更新 操作 #4

進捗 : AdjustmentSync 導入と椅子の ON/OFF スイッチを追加(477c53c

  • 全 10 席に AdjustmentSync.prefab(VRCPlayerObject + VRCEnablePersistence)を子として追加。座位置調整がプレイヤーごとにインスタンスをまたいで保存されます
    • 同じ座面高さの席は Link で連動: ソファー×3 = Link 1 / ダイニング×4 = Link 2 / スツール×2 = Link 3 / 1人掛けは単独
  • QuickBrown LuraSwitch2 の Switch_ChairSwitch_SwivelChairs としてリビング壁(既存 Chair Collider スイッチの隣、(-6.05, 1.12, -3.56))に設置
    • syncMode = Global(全員同期)/ Toggle / デフォルト OFF / target = Gimmick/Seats
    • Gimmick/Seats はシーン上も非アクティブで開始

確認したいこと:

  • スイッチ ON → 全席出現 / OFF → 消える(着座中に OFF にされた場合の挙動も確認推奨)
  • 座位置調整 → 一度降りて再着座 / 再ジョインで復元されるか(Persistence)
  • ※ デフォルト OFF のため、ジョイン時に Seats が非アクティブな状態での PlayerObject 生成(AdjustmentSync)が正しく動くかは実機確認が必要です

エージェント ちゃん さんが3日前に更新 操作 #5

進捗 : AdjustmentSync を常時アクティブ化(a120920

ユーザー指摘のとおり、PlayerObject が非アクティブ階層下にあるリスクを回避:

  • Gimmick/Seats と各椅子ルート(SwivelChair2 + AdjustmentSync)は常時アクティブに変更
  • デフォルト OFF は各椅子の Seat 子オブジェクト(コライダー + VRCStation + SeatAdjuster)単位で実現し、スイッチの target を 10 個の Seat に変更
  • 参照チェーンは安全: SwivelChair2 は DefaultExecutionOrder(-100) + GetComponentInChildren(true) なので Seat が非アクティブでも SeatAdjuster を解決できることをソースで確認済み

確認事項は前回コメントと同じ(スイッチ ON/OFF・座位置保存の復元)。PlayerObject の懸念は解消されたはずです

エージェント ちゃん さんが3日前に更新 操作 #6

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

チルワールドに座れる場所がなかった(VRCStation 0 件)ため、FukuroUdon Swivel Chair 2 ベースの座席 10 席を実装。座位置の Persistence 保存(AdjustmentSync)と、椅子全体を ON/OFF する全体同期スイッチ(デフォルト OFF)も追加した。

変更点

  • Gimmick/Seats 配下に SwivelChair2 プレファブインスタンス ×10(ソファー L ×3 / 1人掛け ×1 / ダイニングチェア ×4 / キッチンスツール ×2)を各実家具の実測座面に合わせて配置
  • 各椅子に AdjustmentSync.prefab(VRCPlayerObject + VRCEnablePersistence)を常時アクティブで追加。同座面高さの席を Link 連動
  • QuickBrown LuraSwitch2 Switch_ChairSwitch_SwivelChairs としてリビング壁に設置。Global 同期 / Toggle / デフォルト OFF、各椅子の Seat 子オブジェクトをトグル
  • 実装済みの GIM_* 設計マーカー 18 件を削除(未実装分は残置)
  • com.mimylab.fukuroudon 3.19.4 を vpm-manifest に追加

確認

  • プレファブ GUID / fileID 参照整合、スイッチ実効値、SwivelChair2 の参照解決ロジックをソースで確認済み
  • ユーザーによる実機確認・MR 承認済み

関連 MR

  • !10 (feature/509 → main)

他の形式にエクスポート: PDF Atom