Class CameraParameters
- Ruang Nama
- easyar
- Rakitan
- EasyAR.Sense.dll
camera parameters, termasuk ukuran image, focal length, principal point, jenis camera, dan sudut rotasi camera relatif terhadap device natural orientation.
public class CameraParameters : RefBase, IDisposable
- Pewarisan
-
CameraParameters
- Menerapkan
- Anggota Pewarisan
Konstruktor
CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizefocalLengthprincipalPointcameraDeviceTypecameraOrientation
Metode
Clone()
public CameraParameters Clone()
cameraDeviceType()
Jenis camera device. Default camera, back camera, atau front camera. Perangkat desktop semuanya default camera, sedangkan perangkat mobile membedakan back camera dan front camera.
public virtual CameraDeviceType cameraDeviceType()
cameraModelType()
Camera model.
public virtual CameraModelType cameraModelType()
cameraOrientation()
Sudut rotasi searah jarum jam yang diperlukan saat menampilkan camera image dalam device natural orientation. Rentangnya [0, 360). Ponsel Android dan sebagian tablet Android adalah 90 derajat. Kacamata Android dan sebagian tablet Android adalah 0 derajat. Perangkat iOS yang ada semuanya 90 derajat.
public virtual int cameraOrientation()
createWithDefaultIntrinsics(Vec2I, CameraDeviceType, int)
Membuat CameraParameters dengan default camera intrinsics. Default camera intrinsics (focal length dan principal point) dihitung otomatis berdasarkan ukuran image, tetapi tidak terlalu akurat.
public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraDeviceTypecameraOrientation
equalsTo(CameraParameters)
Menentukan apakah dua set parameter sama.
public virtual bool equalsTo(CameraParameters other)
Parameter
other
focalLength()
Focal length. Jarak dari equivalent optical center camera ke bidang CCD dibagi dengan unit pixel density pada arah lebar dan tinggi. Satuannya pixel.
public virtual Vec2F focalLength()
getResized(Vec2I)
Mendapatkan CameraParameters ekuivalen setelah ukuran camera image berubah.
public virtual CameraParameters getResized(Vec2I imageSize)
Parameter
imageSize
imageCoordinatesFromScreenCoordinates(float, int, bool, bool, Vec2F)
Mentransformasikan dari screen coordinate system ([0, 1]^2) ke image coordinate system ([0, 1]^2). Pada kedua coordinate system, x mengarah ke kanan, y mengarah ke bawah, dan origin berada di sudut kiri atas.
public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipscreenCoordinates
imageHorizontalFlip(bool)
Menghitung apakah image perlu horizontal flip. Saat rendering image, rotasi dilakukan terlebih dahulu, lalu flipping. Ketika cameraDeviceType adalah front camera, flipping dilakukan otomatis; manualHorizontalFlip dapat diberikan untuk menambahkan satu flip manual lagi di atasnya.
public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)
Parameter
manualHorizontalFlip
imageOrientation(int)
Menghitung sudut searah jarum jam yang diperlukan image relatif terhadap screen agar sejajar dengan screen. screenRotation adalah sudut rotasi searah jarum jam screen image relatif terhadap natural orientation. Untuk iOS: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Untuk 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)
Parameter
screenRotation
imageProjection(float, int, bool, bool)
Menghitung orthographic projection matrix yang diperlukan untuk merender camera background image, mentransformasikan titik dalam image rectangle coordinate system ([-1, 1]^2) ke clip coordinate system ([-1, 1]^4), termasuk rotasi di sekitar sumbu z, sementara dua dimensi yang tidak didefinisikan tetap tidak berubah. Bentuk orthographic projection matrix sama dengan OpenGL: matrix dikalikan di kanan dengan koordinat homogen titik, bukan dikalikan di kiri seperti Direct3D. Data disusun dalam urutan row-major, berlawanan dengan column-major OpenGL. Definisi clip coordinate system dan normalized device coordinate system sama dengan default OpenGL.
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
principalPoint()
Principal point. Koordinat pixel dari titik perpotongan principal optical axis camera pada bidang CCD ke sudut kiri atas image. Satuannya pixel.
public virtual Vec2F principalPoint()
projection(float, float, float, int, bool, bool)
Menghitung perspective projection matrix yang diperlukan untuk merender virtual object, mentransformasikan titik dalam camera coordinate system ke clip coordinate system ([-1, 1]^4), termasuk rotasi di sekitar sumbu z. Bentuk perspective projection matrix sama dengan OpenGL: matrix dikalikan di kanan dengan column vector koordinat homogen titik, bukan dikalikan di kiri seperti Direct3D. Data disusun dalam urutan row-major, berlawanan dengan column-major OpenGL. Definisi clip coordinate system dan normalized device coordinate system sama dengan default OpenGL.
public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Parameter
nearPlanefarPlaneviewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
screenCoordinatesFromImageCoordinates(float, int, bool, bool, Vec2F)
Mentransformasikan dari image coordinate system ([0, 1]^2) ke screen coordinate system ([0, 1]^2). Pada kedua coordinate system, x mengarah ke kanan, y mengarah ke bawah, dan origin berada di sudut kiri atas.
public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipimageCoordinates
size()
Ukuran image.
public virtual Vec2I size()
tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)
Membuat CameraParameters dengan custom camera intrinsics. Camera intrinsics (focal length, principal point, distortion coefficients) dan camera model harus ditentukan. Untuk camera model yang didukung, lihat CameraModelType. Catatan: gunakan antarmuka ini dengan hati-hati. Data input yang salah dapat menyebabkan pembuatan objek gagal dan mengembalikan empty.
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraParamListcameraModelcameraDeviceTypecameraOrientation