Class CameraParameters
- 네임스페이스
- easyar
- 어셈블리
- EasyAR.Sense.dll
카메라 파라미터로는 이미지 크기, 초점 거리, 주점, 카메라 유형 및 기기 자연 방향에 대한 카메라 상대적 회전 각도가 포함됩니다.
public class CameraParameters : RefBase, IDisposable
- 상속
-
CameraParameters
- 구현
- 상속된 멤버
생성자
CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
매개 변수
imageSizefocalLengthprincipalPointcameraDeviceTypecameraOrientation
메서드
Clone()
public CameraParameters Clone()
cameraDeviceType()
카메라 장치 유형. 기본 camera, 후면 camera 또는 전면 camera. 데스크톱 기기의 경우 모두 기본 camera로, 모바일 기기는 후면 camera와 전면 camera로 구분됩니다.
public virtual CameraDeviceType cameraDeviceType()
cameraModelType()
카메라 모델.
public virtual CameraModelType cameraModelType()
cameraOrientation()
카메라 이미지가 기기의 자연 방향으로 표시될 때 시계 방향으로 회전해야 하는 각도입니다. 범위는 [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)
매개 변수
imageSizecameraDeviceTypecameraOrientation
equalsTo(CameraParameters)
두 세트의 매개변수가 동일한지 판단합니다.
public virtual bool equalsTo(CameraParameters other)
매개 변수
other
focalLength()
초점 거리. 카메라의 광학 중심에서 CCD 평면까지의 거리를 가로와 세로 두 방향으로의 단위 픽셀 밀도로 나눈 값. 단위는 픽셀.
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)
매개 변수
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipscreenCoordinates
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로 OpenGL의 column-major와 반대입니다. 클립 좌표계와 정규화된 장치 좌표계(NDC)의 정의는 OpenGL 기본값과 동일합니다.
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
매개 변수
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
principalPoint()
주점. 카메라의 주광축이 CCD 평면과 만나는 지점에서 이미지 좌상단까지의 픽셀 좌표. 단위는 픽셀.
public virtual Vec2F principalPoint()
projection(float, float, float, int, bool, bool)
가상 물체 렌더링에 필요한 원근 투영 행렬을 계산하여 카메라 좌표계의 점을 클리핑 좌표계([-1, 1]^4)로 변환합니다(z축 회전 포함). 원근 투영 행렬의 형태는 OpenGL과 동일하며, 행렬 오른쪽에 점의 동차 좌표 열 벡터를 곱하는 방식입니다(Direct3D의 행렬 왼쪽 곱셈 방식과 반대). 단, 데이터 배치는 행 중심(row-major)으로 OpenGL의 열 중심(column-major)과 상반됩니다. 클리핑 좌표계와 정규화된 장치 좌표계의 정의는 OpenGL 기본값과 동일합니다.
public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
매개 변수
nearPlanefarPlaneviewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
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)
매개 변수
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipimageCoordinates
size()
이미지 크기.
public virtual Vec2I size()
tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)
사용자 정의 카메라 내부 파라미터로 CameraParameters를 생성합니다. 카메라 내부 파라미터(초점 거리, 주점, 왜곡 계수)와 카메라 모델을 지정해야 합니다. 카메라 모델은 CameraModelType을 참조하여 지원됩니다. 주의: 이 인터페이스 사용 시 주의하십시오. 입력 데이터 오류로 인해 객체 생성이 실패하고 null을 반환할 수 있습니다.
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
매개 변수
imageSizecameraParamListcameraModelcameraDeviceTypecameraOrientation