SensaHelp

Internal lab workflow

简体中文 | English

Avatar/World Labs organize measurement and interaction experiments into reproducible scenes. Choose a measurement route, set up the target and receiver, then compare the readings with the workbench. The same steps help diagnose an OGB, SPS, Contact or Shader setup in your Unity project.

Preparation and entry points

Project/application Entry
Avatar Assets/SensaAvatarLab/Generated/FullFlow.unity, SDK private upload
World Assets/SensaLab/Functional/FunctionalLab.unity, SDK Build & Test/private upload
VRChat Wear the corresponding Avatar; check OSC/Contacts and needed self-interaction permissions
Sensa Verify actual listener/source; default port 9001

Use the internal QuickStart and experiment components already included in FullFlow. Prop placement, SPS activation, measurement selection and device permission are managed separately. Prop menus

Verify one question at a time

Stage Observe Verification
Synthetic scalar START HERE five steps/STOP and wrist QuickStart values/conditions Compare each step, then check stopping through STOP and a closed condition
Native PB Stretch amount and IsGrabbed state Grab and stretch, then release and check stopping
OGB / SPS SPS2 · PenOthersNewRoot / PenOthersNewTip, or SPS1 · PenOthers / PenOthersClose Fix object/source, separate then approach, and check depth trend and Close presence
SPS four-anchor tracking Dedicated root, P0–P3, changing Sample and endpoint calibration Move along one axis; check local direction and stopping after sample invalidity
Contact direct tracking (SDK Beta) Add SensaContactRootProbe separately and follow Contact setup for a dedicated own root; inspect metre-based XYZ, relative velocity in m/s, Radius, Sample and Proximity_SenderType=1 (Self) Calibrate position or speed; check stopping after leaving Receiver coverage or Sample activity freezing
Shader Native block, capture region, producer ID, CRC and advancing Frame Move the selected root and check decoded position, X/Z axes and Avatar world scale; obscure/freeze the block and check invalidity

Configure synthetic Depth/GateEnable manually from actual paths. After the experiment, replace those paths and conditions with actual linkage parameters. Use the Avatar’s PhysBone prefix in place of MyPB in the PB template.

Use the OGB depth or vibration template and enable the heartbeat to VRChat as required by the Avatar. SPS four-anchor tracking uses Dedicated/Exclusive authoring and Sensa/SPS/<id>/{P0,P1,P2,P3,Sample}.

Native Shader uses one Camera and three natively skinned points to encode the selected root's position, X/Z axes and Avatar world scale. It uses a nonzero producer ID and sends Sensa/Shader/<id> after explicit ROI selection. FullFlow synthetic code and Editor Model Probe PNG use Sensa/Diagnostics/Shader/0 to check encoding, capture and transport. Shader guide

Switch scenes and check time

Disable input, remove the previous mappings/gates, save, verify actual mode/source/validity, then explicitly reactivate. Check each model’s sampling-time rule separately:

  • Legacy Point/Handle/Pose use the oldest participant, including grab.
  • SPS four-anchor tracking uses changing Sample, default 1000 ms/cap 1250 ms; stationary P can cache.
  • Contact direct tracking checks changing Sample with an age cap of 1000 ms, shortened by a smaller positive input timeout; zero coordinates and zero velocity remain valid when the other validity conditions hold.
  • Shader bridge defaults to 350 ms freeze; desktop Frame change age caps at 500 ms.

The internal preview configures 500 ms in tools/unity-world-lab/sensa-preview.json. Record sample change age, geometric residual and actual device travel together. Positioning

World interaction and language

The amber WORLD PLUG in 08 MY AVATAR SPS approaches your Socket; the blue WORLD SOCKET receives your Plug. World Contacts may trigger Self/Others. Expected labels/bars show geometric references; compare them with the actual values received by Sensa.

World text follows VRChat's current language and language-change event. The local panel offers Auto / English / 简体中文; an explicit choice applies only to that player's current session. Existing scenes need their display-language bindings refreshed, and uploaded-client fonts/layout still need manual inspection. Avatar menu text uses the language selected at build time and retains that text after upload. Language boundaries

Record evidence

Record commit, Unity/SDK/client versions, object/source, actual paths, change ages, stops and whether data was simulated. Record Editor, SDK bundle, ClientSim and actual-client results separately, so changes in Contacts/OSC, grabbing, capture, accuracy and device motion can be traced to the relevant step.

CI runs units, browser E2E and isolated process checks. Developers arrange Unity/World PlayMode and actual-client checks for the behavior being verified. Automated device-related checks use mock transports. Development and releases · Avatar tools · World tools