Table of Contents

Class CameraParameters

Пространство имен
easyar
Сборка
EasyAR.Sense.dll

Параметры camera, включая размер изображения, фокусное расстояние, главную точку, тип camera и угол поворота camera относительно естественной ориентации устройства.

public class CameraParameters : RefBase, IDisposable
Наследование
CameraParameters
Реализация
Наследуемые члены

Конструкторы

CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)

public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
focalLength
principalPoint
cameraDeviceType
cameraOrientation

Методы

Clone()

public CameraParameters Clone()

CloneObject()

protected override object CloneObject()

cameraDeviceType()

Тип устройства камеры. По умолчанию camera, задняя camera или фронтальная camera. На настольных устройствах всегда используется camera по умолчанию, на мобильных устройствах различают заднюю и фронтальную camera.

public virtual CameraDeviceType cameraDeviceType()

cameraModelType()

Модель камеры.

public virtual CameraModelType cameraModelType()

cameraOrientation()

Угол, на который необходимо повернуть изображение camera по часовой стрелке для отображения в естественной ориентации устройства. Диапазон: [0, 360). Для Android-смартфонов и некоторых Android-планшетов: 90 градусов. Для Android-очков и некоторых Android-планшетов: 0 градусов. Для существующих iOS-устройств: 90 градусов.

public virtual int cameraOrientation()

createWithDefaultIntrinsics(Vec2I, CameraDeviceType, int)

Создает CameraParameters с параметрами камеры по умолчанию. Параметры камеры по умолчанию (фокусное расстояние, главная точка) рассчитываются автоматически на основе размера изображения, но не являются особенно точными.

public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
cameraDeviceType
cameraOrientation

equalsTo(CameraParameters)

Определяет, равны ли два набора параметров.

public virtual bool equalsTo(CameraParameters other)

Параметры

other

focalLength()

Фокусное расстояние. Расстояние от эквивалентного оптического центра камеры до плоскости ПЗС, деленное на плотность пикселей по ширине и высоте. Единицы измерения: пиксели.

public virtual Vec2F focalLength()

getResized(Vec2I)

Получает эквивалентные CameraParameters после изменения размера изображения камеры.

public virtual CameraParameters getResized(Vec2I imageSize)

Параметры

imageSize

imageCoordinatesFromScreenCoordinates(float, int, bool, bool, Vec2F)

Преобразование из системы координат экрана ([0, 1]^2) в систему координат изображения ([0, 1]^2). В обеих системах ось x направлена вправо, ось y - вниз, начало координат находится в левом верхнем углу.

public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip
screenCoordinates

imageHorizontalFlip(bool)

Определяет, нужно ли зеркально отражать изображение по горизонтали. При рендеринге изображения сначала выполняется поворот, затем отражение. Когда cameraDeviceType является фронтальной камерой, отражение выполняется автоматически; на основе этого можно передать manualHorizontalFlip для добавления дополнительного ручного отражения.

public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)

Параметры

manualHorizontalFlip

imageOrientation(int)

Вычисляет угол, на который изображение нужно повернуть по часовой стрелке относительно экрана для выравнивания с экраном. screenRotation - угол, на который изображение экрана повернуто по часовой стрелке относительно естественной ориентации. Для iOS: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Для Android: * Surface.ROTATION_0: screenRotation = 0 * Surface.ROTATION_90: screenRotation = 90 * Surface.ROTATION_180: screenRotation = 180 * Surface.ROTATION_270: screenRotation = 270

public virtual int imageOrientation(int screenRotation)

Параметры

screenRotation

imageProjection(float, int, bool, bool)

Вычисляет матрицу ортографической проекции, необходимую для рендеринга фонового изображения камеры, преобразующую точки из системы координат прямоугольника изображения ([-1, 1]^2) в систему координат отсечения ([-1, 1]^4) (включая поворот вокруг оси z), при этом две неопределенные размерности остаются неизменными. Форма матрицы ортографической проекции совпадает с OpenGL: матрица умножается справа на вектор-столбец однородных координат точки, а не слева, как в Direct3D. Однако способ упорядочивания данных - row-major, в отличие от column-major в OpenGL. Определения системы координат отсечения и нормализованной системы координат устройства по умолчанию совпадают с OpenGL.

public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip

principalPoint()

Главная точка. Координаты точки пересечения главной оптической оси камеры с плоскостью ПЗС относительно левого верхнего угла изображения. Единицы измерения: пиксели.

public virtual Vec2F principalPoint()

projection(float, float, float, int, bool, bool)

Вычисляет матрицу перспективной проекции, необходимую для рендеринга виртуального объекта, преобразующую точки из системы координат camera в систему координат отсечения ([-1, 1]^4) (включая поворот вокруг оси z). Форма матрицы перспективной проекции совпадает с OpenGL: матрица умножается справа на вектор-столбец однородных координат точки, а не слева, как в Direct3D. Однако способ упорядочивания данных - row-major, в отличие от column-major в OpenGL. Определения системы координат отсечения и нормализованной системы координат устройства по умолчанию совпадают с OpenGL.

public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

Параметры

nearPlane
farPlane
viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip

screenCoordinatesFromImageCoordinates(float, int, bool, bool, Vec2F)

Преобразование из системы координат изображения ([0, 1]^2) в систему координат экрана ([0, 1]^2). В обеих системах ось x направлена вправо, ось y - вниз, начало координат находится в левом верхнем углу.

public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip
imageCoordinates

size()

Размер изображения.

public virtual Vec2I size()

tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)

Создает CameraParameters с пользовательскими внутренними параметрами камеры. Требуется указать внутренние параметры камеры (фокусное расстояние, главная точка, коэффициенты искажения) и модель камеры. Поддерживаемые модели камер см. в CameraModelType. Внимание: используйте этот интерфейс с осторожностью, неверные входные данные могут привести к сбою создания объекта, возвращается пустое значение.

public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
cameraParamList
cameraModel
cameraDeviceType
cameraOrientation