MobileVRInterface
Телефонный stereo VR: параметры линз, высота и VRS.
MobileVRInterface — простой встроенный stereo-путь для телефона в держателе. Зарегистрированное имя — Native mobile. Он использует модель поворота по датчикам и фиксированную EyeHeight, без позиционного room tracking. Это не OpenXR/ARCore и не автоматическая интеграция любой гарнитуры.
Initialize регистрирует head и выбирает primary, но в текущем коде возвращает true и без телефона. Два вида и head pose тоже не подтверждают физические датчики. Управляйте запуском одним компонентом, не заменяйте чужой primary/head и восстанавливайте UseXR. Полный выполненный helper и диагностика: телефонный VR. Заимствованный интерфейс из FindInterface нельзя Dispose; new MobileVRInterface создаёт отдельный объект, не зарегистрированный автоматически.
EyeHeight задаётся в метрах до WorldScale; Iod, DisplayWidth и DisplayToLens — в сантиметрах. Oversample изменяет размеры target и frustum; K1/K2 задают distortion. Настройки не считывают физическую модель держателя или QR-профиль автоматически.
Задавайте WorldScale до старта. После первого GetCameraOffsets текущий кэш не пересчитывается от живого изменения WorldScale; воспроизведены старые ±0.03 при смене 1→2. Контролируемый stop/start пересоздал ±0.06. Это ограничение не исправлялось в движке. Не редактируйте возвращённые cached arrays как настройки.
На Windows headless/SDK 1.0.0 проверены параметры, lifecycle helper, primary/head ownership, восстановление UseXR и численные расчёты глаз. Телефон, GetTrackingStatus initialization, линзы/stereo pixels, VRS output, C#-экспорт на устройство, комфорт и производительность не проверены. Для OpenXR-устройств используйте запуск XR.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
MobileVRInterfaceКонструктор
public MobileVRInterface();Создаёт отдельный неинициализированный объект с параметрами по умолчанию. Не добавляет его в список XRServer, не подключает телефон и не включает Viewport.UseXR. Для встроенного зарегистрированного интерфейса используйте FindInterface("Native mobile"); не запускайте конкурирующих владельцев head.
Свойства10
DisplayToLensСвойство
public double DisplayToLens { get; set; }Расстояние от дисплея до линз в сантиметрах, изначально 4.0. Делитель в расчёте frustum: используйте осмысленное положительное значение. Setter сохраняет его и при изменении очищает projections; не является автоматической калибровкой.
DisplayWidthСвойство
public double DisplayWidth { get; set; }Физическая ширина дисплея в сантиметрах, изначально 14.5. Используется в frustum и lens-distortion layout; не число пикселей и не ширина окна. Изменение очищает projection cache. Setter не измеряет устройство.
EyeHeightСвойство
public double EyeHeight { get; set; }Предполагаемая высота головы в метрах до WorldScale, изначально 1.85. Не измеряется датчиками положения. Process записывает эту фиксированную Y в head pose; игровое перемещение/origin задаются отдельно.
IodСвойство
public double Iod { get; set; }Межзрачковое расстояние в сантиметрах, изначально 6.0. При WorldScale=1 даёт смещения глаз −0.03/+0.03. Изменение значения очищает offsets и projections; повтор той же величины не сбрасывает кэш. Не передавайте сюда метры.
K1Свойство
public double K1 { get; set; }Первый безразмерный коэффициент lens distortion, изначально 0.215. Используется при screen blit вместе с K2, не изменяет игровые координаты. Задавайте под реальные линзы; интерфейс не читает QR-профиль автоматически.
K2Свойство
public double K2 { get; set; }Второй безразмерный коэффициент lens distortion, изначально 0.215. Работает вместе с K1; не является силой AA или уровнем качества. Setter сохраняет число без подтверждения подходящей калибровки линз.
OffsetRectСвойство
public Rect2 OffsetRect { get; set; }Область вывода относительно screen rect, изначально Rect2(0,0,1,1): весь доступный прямоугольник. Position и Size масштабируются размером screen rect; это не пиксели и не смещение tracking origin. Не включает вывод SubViewport на экран сам по себе.
OversampleСвойство
public double Oversample { get; set; }Множитель рендера, изначально 1.5. На глаз target равен половине ширины окна × множитель и высоте окна × множитель; также влияет на frustum и distortion upscale. Не MSAA и не гарантированное улучшение. Изменение очищает projection cache; выбирайте положительное значение под устройство.
VrsMinRadiusСвойство
public float VrsMinRadius { get; set; }Минимальная центральная область полной плотности VRS в процентах размера, изначально 20. Setter ограничивает диапазоном 1–100 с предупреждением при выходе. Нужен используемый XR VRS путь; сохранённое значение не подтверждает применение карты или качество изображения.
VrsStrengthСвойство
public float VrsStrength { get; set; }Сила построения VRS-карты, изначально 1. Setter ограничивает диапазоном 0.1–10 с предупреждением при выходе. Большее значение меняет компромисс плотности/качества, а не обещает конкретный FPS. Фактическая карта и производительность здесь не проверены.
Методы20
GetDisplayToLensdouble
public double GetDisplayToLens();Возвращает сохранённое DisplayToLens, не запрос физических параметров устройства. Расстояние от дисплея до линз в сантиметрах, изначально 4.0. Делитель в расчёте frustum: используйте осмысленное положительное значение. Setter сохраняет его и при изменении очищает projections; не является автоматической калибровкой.
doubleСохранённое DisplayToLens; не подтверждение оборудования или качества вывода.
GetDisplayWidthdouble
public double GetDisplayWidth();Возвращает сохранённое DisplayWidth, не запрос физических параметров устройства. Физическая ширина дисплея в сантиметрах, изначально 14.5. Используется в frustum и lens-distortion layout; не число пикселей и не ширина окна. Изменение очищает projection cache. Setter не измеряет устройство.
doubleСохранённое DisplayWidth; не подтверждение оборудования или качества вывода.
GetEyeHeightdouble
public double GetEyeHeight();Возвращает сохранённое EyeHeight, не запрос физических параметров устройства. Предполагаемая высота головы в метрах до WorldScale, изначально 1.85. Не измеряется датчиками положения. Process записывает эту фиксированную Y в head pose; игровое перемещение/origin задаются отдельно.
doubleСохранённое EyeHeight; не подтверждение оборудования или качества вывода.
GetIoddouble
public double GetIod();Возвращает сохранённое Iod, не запрос физических параметров устройства. Межзрачковое расстояние в сантиметрах, изначально 6.0. При WorldScale=1 даёт смещения глаз −0.03/+0.03. Изменение значения очищает offsets и projections; повтор той же величины не сбрасывает кэш. Не передавайте сюда метры.
doubleСохранённое Iod; не подтверждение оборудования или качества вывода.
GetK1double
public double GetK1();Возвращает сохранённое K1, не запрос физических параметров устройства. Первый безразмерный коэффициент lens distortion, изначально 0.215. Используется при screen blit вместе с K2, не изменяет игровые координаты. Задавайте под реальные линзы; интерфейс не читает QR-профиль автоматически.
doubleСохранённое K1; не подтверждение оборудования или качества вывода.
GetK2double
public double GetK2();Возвращает сохранённое K2, не запрос физических параметров устройства. Второй безразмерный коэффициент lens distortion, изначально 0.215. Работает вместе с K1; не является силой AA или уровнем качества. Setter сохраняет число без подтверждения подходящей калибровки линз.
doubleСохранённое K2; не подтверждение оборудования или качества вывода.
GetOffsetRectRect2
public Rect2 GetOffsetRect();Возвращает сохранённое OffsetRect, не запрос физических параметров устройства. Область вывода относительно screen rect, изначально Rect2(0,0,1,1): весь доступный прямоугольник. Position и Size масштабируются размером screen rect; это не пиксели и не смещение tracking origin. Не включает вывод SubViewport на экран сам по себе.
Rect2Сохранённое OffsetRect; не подтверждение оборудования или качества вывода.
GetOversampledouble
public double GetOversample();Возвращает сохранённое Oversample, не запрос физических параметров устройства. Множитель рендера, изначально 1.5. На глаз target равен половине ширины окна × множитель и высоте окна × множитель; также влияет на frustum и distortion upscale. Не MSAA и не гарантированное улучшение. Изменение очищает projection cache; выбирайте положительное значение под устройство.
doubleСохранённое Oversample; не подтверждение оборудования или качества вывода.
GetVrsMinRadiusfloat
public float GetVrsMinRadius();Возвращает сохранённое VrsMinRadius, не запрос физических параметров устройства. Минимальная центральная область полной плотности VRS в процентах размера, изначально 20. Setter ограничивает диапазоном 1–100 с предупреждением при выходе. Нужен используемый XR VRS путь; сохранённое значение не подтверждает применение карты или качество изображения.
floatСохранённое VrsMinRadius; не подтверждение оборудования или качества вывода.
GetVrsStrengthfloat
public float GetVrsStrength();Возвращает сохранённое VrsStrength, не запрос физических параметров устройства. Сила построения VRS-карты, изначально 1. Setter ограничивает диапазоном 0.1–10 с предупреждением при выходе. Большее значение меняет компромисс плотности/качества, а не обещает конкретный FPS. Фактическая карта и производительность здесь не проверены.
floatСохранённое VrsStrength; не подтверждение оборудования или качества вывода.
SetDisplayToLensvoid
public void SetDisplayToLens(double displayToLens);Настраивает DisplayToLens этого интерфейса; не инициализирует его. Расстояние от дисплея до линз в сантиметрах, изначально 4.0. Делитель в расчёте frustum: используйте осмысленное положительное значение. Setter сохраняет его и при изменении очищает projections; не является автоматической калибровкой.
| Имя | Тип | По умолчанию |
|---|---|---|
displayToLens | double | — |
displayToLensРасстояние от дисплея до линз в сантиметрах, изначально 4.0. Делитель в расчёте frustum: используйте осмысленное положительное значение. Setter сохраняет его и при изменении очищает projections; не является автоматической калибровкой.
SetDisplayWidthvoid
public void SetDisplayWidth(double displayWidth);Настраивает DisplayWidth этого интерфейса; не инициализирует его. Физическая ширина дисплея в сантиметрах, изначально 14.5. Используется в frustum и lens-distortion layout; не число пикселей и не ширина окна. Изменение очищает projection cache. Setter не измеряет устройство.
| Имя | Тип | По умолчанию |
|---|---|---|
displayWidth | double | — |
displayWidthФизическая ширина дисплея в сантиметрах, изначально 14.5. Используется в frustum и lens-distortion layout; не число пикселей и не ширина окна. Изменение очищает projection cache. Setter не измеряет устройство.
SetEyeHeightvoid
public void SetEyeHeight(double eyeHeight);Настраивает EyeHeight этого интерфейса; не инициализирует его. Предполагаемая высота головы в метрах до WorldScale, изначально 1.85. Не измеряется датчиками положения. Process записывает эту фиксированную Y в head pose; игровое перемещение/origin задаются отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
eyeHeight | double | — |
eyeHeightПредполагаемая высота головы в метрах до WorldScale, изначально 1.85. Не измеряется датчиками положения. Process записывает эту фиксированную Y в head pose; игровое перемещение/origin задаются отдельно.
SetIodvoid
public void SetIod(double iod);Настраивает Iod этого интерфейса; не инициализирует его. Межзрачковое расстояние в сантиметрах, изначально 6.0. При WorldScale=1 даёт смещения глаз −0.03/+0.03. Изменение значения очищает offsets и projections; повтор той же величины не сбрасывает кэш. Не передавайте сюда метры.
| Имя | Тип | По умолчанию |
|---|---|---|
iod | double | — |
iodМежзрачковое расстояние в сантиметрах, изначально 6.0. При WorldScale=1 даёт смещения глаз −0.03/+0.03. Изменение значения очищает offsets и projections; повтор той же величины не сбрасывает кэш. Не передавайте сюда метры.
SetK1void
public void SetK1(double k);Настраивает K1 этого интерфейса; не инициализирует его. Первый безразмерный коэффициент lens distortion, изначально 0.215. Используется при screen blit вместе с K2, не изменяет игровые координаты. Задавайте под реальные линзы; интерфейс не читает QR-профиль автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
k | double | — |
kПервый безразмерный коэффициент lens distortion, изначально 0.215. Используется при screen blit вместе с K2, не изменяет игровые координаты. Задавайте под реальные линзы; интерфейс не читает QR-профиль автоматически.
SetK2void
public void SetK2(double k);Настраивает K2 этого интерфейса; не инициализирует его. Второй безразмерный коэффициент lens distortion, изначально 0.215. Работает вместе с K1; не является силой AA или уровнем качества. Setter сохраняет число без подтверждения подходящей калибровки линз.
| Имя | Тип | По умолчанию |
|---|---|---|
k | double | — |
kВторой безразмерный коэффициент lens distortion, изначально 0.215. Работает вместе с K1; не является силой AA или уровнем качества. Setter сохраняет число без подтверждения подходящей калибровки линз.
SetOffsetRectvoid
public void SetOffsetRect(Rect2 offsetRect);Настраивает OffsetRect этого интерфейса; не инициализирует его. Область вывода относительно screen rect, изначально Rect2(0,0,1,1): весь доступный прямоугольник. Position и Size масштабируются размером screen rect; это не пиксели и не смещение tracking origin. Не включает вывод SubViewport на экран сам по себе.
| Имя | Тип | По умолчанию |
|---|---|---|
offsetRect | Rect2 | — |
offsetRectОбласть вывода относительно screen rect, изначально Rect2(0,0,1,1): весь доступный прямоугольник. Position и Size масштабируются размером screen rect; это не пиксели и не смещение tracking origin. Не включает вывод SubViewport на экран сам по себе.
SetOversamplevoid
public void SetOversample(double oversample);Настраивает Oversample этого интерфейса; не инициализирует его. Множитель рендера, изначально 1.5. На глаз target равен половине ширины окна × множитель и высоте окна × множитель; также влияет на frustum и distortion upscale. Не MSAA и не гарантированное улучшение. Изменение очищает projection cache; выбирайте положительное значение под устройство.
| Имя | Тип | По умолчанию |
|---|---|---|
oversample | double | — |
oversampleМножитель рендера, изначально 1.5. На глаз target равен половине ширины окна × множитель и высоте окна × множитель; также влияет на frustum и distortion upscale. Не MSAA и не гарантированное улучшение. Изменение очищает projection cache; выбирайте положительное значение под устройство.
SetVrsMinRadiusvoid
public void SetVrsMinRadius(float radius);Настраивает VrsMinRadius этого интерфейса; не инициализирует его. Минимальная центральная область полной плотности VRS в процентах размера, изначально 20. Setter ограничивает диапазоном 1–100 с предупреждением при выходе. Нужен используемый XR VRS путь; сохранённое значение не подтверждает применение карты или качество изображения.
| Имя | Тип | По умолчанию |
|---|---|---|
radius | float | — |
radiusМинимальная центральная область полной плотности VRS в процентах размера, изначально 20. Setter ограничивает диапазоном 1–100 с предупреждением при выходе. Нужен используемый XR VRS путь; сохранённое значение не подтверждает применение карты или качество изображения.
SetVrsStrengthvoid
public void SetVrsStrength(float strength);Настраивает VrsStrength этого интерфейса; не инициализирует его. Сила построения VRS-карты, изначально 1. Setter ограничивает диапазоном 0.1–10 с предупреждением при выходе. Большее значение меняет компромисс плотности/качества, а не обещает конкретный FPS. Фактическая карта и производительность здесь не проверены.
| Имя | Тип | По умолчанию |
|---|---|---|
strength | float | — |
strengthСила построения VRS-карты, изначально 1. Setter ограничивает диапазоном 0.1–10 с предупреждением при выходе. Большее значение меняет компромисс плотности/качества, а не обещает конкретный FPS. Фактическая карта и производительность здесь не проверены.