XROrigin3D
Игровой origin для отслеживаемого XR-рига.
XROrigin3D связывает пространство tracking с игровым миром. Камеру, контроллеры и якоря размещайте непосредственно под ним. Для игрового перемещения двигайте origin или тело-родитель; не исправляйте tracking ручным перемещением камеры.
В runtime первый origin в дереве автоматически становится Current. Выбор другого отключает прежний; отключение или выход активного выбирает другой доступный. Detached-объект не считается активным. Current не инициализирует сеанс и не выбирает активную Camera3D. Активный origin публикует GlobalTransform в XRServer.WorldOrigin.
WorldScale общий для XRServer: изменение через любой origin влияет на остальные. Конечные значения ограничены 0.01…1000. Не меняйте локальный Scale рига для этой цели. Для WorldScale=1 стандартная метрическая модель tracking соответствует одной игровой единице на метр.
Выбор origin, масштаб и мировой трансформ проверены без гарнитуры. Стереовывод, интерполяция между потоками и реальный recenter не проверялись. Полный пример движения: локомоция XR.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
XROrigin3DКонструктор
public XROrigin3D();Создаёт origin рига. Первое добавление в runtime-дерево делает первый origin активным. Добавьте камеру и отслеживаемые Entity непосредственно под ним; создание origin не инициализирует XR.
Свойства2
CurrentСвойство
public bool Current { get; set; }Выбирает активный origin среди находящихся в дереве. Первый добавленный становится активным автоматически. Включение выключает остальные; выключение или выход активного выбирает другой доступный. Вне дерева getter возвращает false в runtime, даже после setter true. Не запускает XR-сеанс и не выбирает камеру.
WorldScaleСвойство
public float WorldScale { get; set; }Общий XRServer.WorldScale, не отдельный масштаб этого origin. Изменение через неактивный origin также влияет на остальных. Конечные значения ограничиваются 0.01…1000; передавайте положительный конечный масштаб. Это не Entity3D.Scale: локальный scale рига оставляйте единичным.
Методы4
GetWorldScalefloat
public float GetWorldScale();Читает общий масштаб XRServer как float. Другой origin видит то же значение; WorldScale не равен локальному Scale.
floatОбщий масштаб XRServer; не Scale Entity.
IsCurrentbool
public bool IsCurrent();true, если этот origin активен и находится в дереве runtime. Режим редактора возвращает сохранённую настройку; это не проверка наличия устройства.
booltrue только для активного origin в дереве runtime.
SetCurrentvoid
public void SetCurrent(bool enabled);Выбирает активный origin среди находящихся в дереве. Первый добавленный становится активным автоматически. Включение выключает остальные; выключение или выход активного выбирает другой доступный. Вне дерева getter возвращает false в runtime, даже после setter true. Не запускает XR-сеанс и не выбирает камеру.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
enabledСделать этот origin активным; в runtime результат зависит от нахождения в дереве.
SetWorldScalevoid
public void SetWorldScale(float worldScale);Общий XRServer.WorldScale, не отдельный масштаб этого origin. Изменение через неактивный origin также влияет на остальных. Конечные значения ограничиваются 0.01…1000; передавайте положительный конечный масштаб. Это не Entity3D.Scale: локальный scale рига оставляйте единичным.
| Имя | Тип | По умолчанию |
|---|---|---|
worldScale | float | — |
worldScaleПоложительный конечный общий масштаб; конечные значения ограничиваются 0.01…1000.