Namespace easyar
클래스
- Accelerometer
Accelerometer는 시스템에서 제공하는 가속도계를 호출하여 AccelerometerResult를 출력합니다. 해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. 동시에 여러 번 여는 것은 권장하지 않습니다. 사용할 수 없거나 정밀도가 떨어질 수 있습니다.
- AccelerometerResult
가속도계 판독값. x축 양의 방향은 장치 중심에서 화면 오른쪽 부분을 향합니다. y축 양의 방향은 장치 중심에서 화면 윗부분을 향합니다. z축 양의 방향은 장치 중심에서 화면을 수직으로 뚫고 나옵니다. x, y, z 단위는 m/s^2입니다. timestamp 단위는 초(seconds)입니다.
- AccelerometerResultSink
가속도계 결과 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- AccelerometerResultSource
가속도계 결과 출력 포트. 구성 요소의 출력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전입니다.
- ARCoreCameraDevice
ARCoreCameraDevice는 ARCore 기반 카메라 장치를 구현하며, InputFrame (이미지, 카메라 매개변수, 타임스탬프, 6DOF 위치 정보 및 추적 상태 포함)을 출력합니다. 사용 시에는 java.lang.System.loadLibrary를 사용하여 libarcore_sdk_c.so를 먼저 로드해야 합니다. 생성 후에는 start/stop을 호출하여 비디오 스트림 데이터 수집을 시작 및 중지할 수 있습니다. 해당 장치가 더 이상 필요하지 않은 경우 close를 호출하여 닫을 수 있습니다. 닫은 후에는 계속 사용하지 않아야 합니다. ARCoreCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource를 InputFrameSink에 연결하여 사용해야 합니다. bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 이 수량을 초과하는 InputFrame이 출력되고 해제되지 않은 경우, 이전 InputFrame이 해제될 때까지 새 InputFrame을 출력하지 않습니다. 이는 화면 정지 등의 문제를 일으킬 수 있습니다. 참고: 현재 ARCore(v1.13.0) 구현은 세션 생성 및 소멸 시 메모리 누수가 존재하며, 반복적인 생성과 소멸은 메모리 사용량이 지속적으로 증가하고 소멸 후에도 해제되지 않는 문제를 야기할 수 있습니다.
- ARCoreDeviceListDownloader
ARCoreDeviceListDownloader는 ARCoreCameraDevice에서 사용되는 기기 목록 보정 파라미터를 업데이트하기 위해 다운로드하는 데 사용됩니다.
- ARKitCameraDevice
ARKitCameraDevice는 ARKit 기반 카메라 장치를 구현하여 InputFrame(이미지, 카메라 파라미터, 타임스탬프, 6DOF 위치 정보 및 추적 상태 포함)을 출력합니다.
생성 후 start/stop을 호출하여 비디오 스트림 데이터 수집을 시작 및 중지할 수 있습니다.
해당 장치가 더 이상 필요하지 않을 때 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다.
ARKitCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource를 InputFrameSink에 연결하여 사용해야 합니다.
bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 출력된 InputFrame 중 해제되지 않은 것이 이 용량을 초과하면, 이전 InputFrame이 해제될 때까지 새 InputFrame을 출력하지 않습니다. 이로 인해 화면 정지 현상 등의 문제가 발생할 수 있습니다.
- AttitudeSensor
AttitudeSensor는 시스템에서 제공하는 자세 센서를 호출하여 AttitudeSensorResult를 출력합니다. 해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 후에는 계속 사용해서는 안 됩니다. 동시에 여러 번 열지 않는 것이 좋으며, 사용 불가능하거나 정밀도가 저하될 수 있습니다.
- AttitudeSensorResult
자세 센서 판독값. x축 양의 방향은 기기 중심에서 화면 오른쪽 부분을 향합니다. y축 양의 방향은 기기 중심에서 화면 상단을 향합니다. z축 양의 방향은 기기 중심에서 화면에 수직으로 바깥쪽을 향합니다. 기기가 축(x, y, z) 주위로 각도 θ만큼 회전했습니다. 단위 회전 사원수는 (cos(θ/2), x*sin(θ/2), y*sin(θ/2), z*sin(θ/2))입니다. (v0, v1, v2, v3) = (cos(θ/2), x*sin(θ/2), y*sin(θ/2), z*sin(θ/2)). 참조 좌표계는 방향이 있는 표준 직교 기저로 정의되며, 여기서
Z는 하늘을 가리키며 지면과 평행합니다. (X, Y, Z)는 오른손 좌표계를 구성합니다.timestamp의 단위는 초입니다.
- AttitudeSensorResultSink
자세 센서 결과 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- AttitudeSensorResultSource
자세 센서 결과 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- BlockInfo
고밀도 재구성으로 얻은 모델은 삼각형 메시로 표현되며 메시(mesh)라고 합니다. 메시가 자주 업데이트되기 때문에 효율성을 보장하기 위해 전체 재구성 모델의 메시는 매우 많은 수의 메시 블록(mesh block)으로 분할됩니다. 하나의 메시 블록은 약 1미터 길이의 정육면체로 구성되며, 그 안에는 버텍스(vertex)와 인덱스(index) 등의 요소가 포함됩니다.
BlockInfo는 하나의 메시 블록의 내용을 설명하는 데 사용됩니다. 여기서 (x,y,z)는 메시 블록의 인덱스로, (x,y,z)에 각 메시 블록의 물리적 크기를 곱하면 해당 메시 블록의 원점이 세계 좌표계에서의 좌표를 얻을 수 있습니다. 메시 블록이 세계에서의 위치를 통해 표시해야 할 부분을 사전에 필터링하여 렌더링에 필요한 시간을 절약할 수 있습니다.
- BlockPriorResult
사전 지도 정보.
blockIds는 지도 ID입니다.
mode는 시스템에서 사전 정보가 사용되는 방식을 나타내며, soft 또는 hard일 수 있습니다. BlockPriorMode 참조.
- Buffer
Buffer는 원시 바이트 배열을 저장하며 이미지 데이터에 접근하는 데 사용할 수 있습니다. Java API에서는 Image에서 buffer를 가져온 후 Java 바이트 배열로 데이터를 copy할 수 있습니다. EasyAR Sense의 모든 버전에서 이미지 데이터에 접근할 수 있습니다. Image를 참조하십시오.
- BufferDictionary
파일 경로에서 Buffer로의 매핑. 메모리 내(in-memory) 파일들의 집합을 나타내는 데 사용됩니다.
- BufferPool
BufferPool은 메모리 풀을 구현하여, 사용자 정의 카메라 연동과 같이 동일한 크기의 메모리를 반복적으로 할당해야 하는 기능에서 메모리 할당 소요 시간을 줄이기 위해 사용됩니다.
- CalibrationDownloader
CalibrationDownloader는 MotionTracker에서 사용하는 보정 파라미터 업데이트를 다운로드하는 데 사용됩니다. 다운로드 후 MotionTracker를 재생성해야 적용됩니다.
- CallbackScheduler
콜백 스케줄러. 두 개의 하위 클래스 DelayedCallbackScheduler와 ImmediateCallbackScheduler가 존재합니다. 이 중 DelayedCallbackScheduler는 콜백을 수동으로 호출할 시점까지 지연시키는 데 사용되며, 단일 스레드 환경(예: 다양한 UI 환경)에서 활용 가능합니다. ImmediateCallbackScheduler는 콜백을 즉시 실행하는 데 사용되며, 다중 스레드 환경(예: 서버 또는 백그라운드 서비스)에서 활용 가능합니다.
- CameraDevice
CameraDevice는 카메라 장치를 구현하며 InputFrame(이미지, 카메라 파라미터 및 타임스탬프 포함)을 출력합니다. Windows, Mac, Android 및 iOS에서 사용 가능합니다.
개방 후 start/stop을 호출하여 데이터 수집을 시작 및 중지할 수 있습니다. start/stop은 이전에 설정된 카메라 파라미터에 영향을 주지 않습니다.
장치가 더 이상 필요하지 않은 경우 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다.
CameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource는 InputFrameSink에 연결하여 사용해야 합니다.
bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 출력된 InputFrame이 이 수량을 초과하고 해제되지 않은 경우, 이전 InputFrame이 해제될 때까지 새로운 InputFrame을 출력하지 않습니다. 이로 인해 화면 정지 등의 문제가 발생할 수 있습니다.
Android 사용 시 AndroidManifest.xml에 android.permission.CAMERA 권한 선언을 추가해야 합니다.
iOS 사용 시 Info.plist에 NSCameraUsageDescription 권한 선언을 추가해야 합니다.
- CameraDeviceSelector
Android에서 Camera API(camera1 또는 camera2)를 선택하는 데 사용됩니다. camera1은 호환성이 우수하지만 타임스탬프와 같은 일부 필수 정보가 부족합니다. camera2는 일부 기기에서 호환성 문제가 있을 수 있습니다.
다른 옵션들은 용도에 따라 camera1 또는 camera2를 선택합니다.
- CameraParameters
camera 매개변수는 이미지 크기, 초점 거리, 주점, camera 유형 및 기기 자연 방향에 대한 camera 회전 각도를 포함합니다.
- CloudLocalizer
CloudLocalizer는 클라우드 로컬라이제이션 기능을 구현함.
- CloudLocalizerBlockInstance
CloudLocalizer가 위치를 찾는 block 인스턴스
- CloudRecognizer
CloudRecognizer는 클라우드 인식 기능을 구현합니다. 클라우드 인식 기능을 사용하려면 클라우드에 Cloud Recognition Service(CRS) 갤러리를 생성해야 합니다. EasyAR CRS 문서를 참조하십시오.
해당 컴포넌트가 더 이상 필요하지 않은 경우,close를 호출하여 닫을 수 있습니다. 닫은 후에는 계속 사용해서는 안 됩니다.
CloudRecognizer를 사용하기 전에 ImageTracker를 설정하고 준비해야 합니다. 반환된 모든 target은 추적(track)되기 전에 loadTarget을 사용하여 수동으로 ImageTracker에 로드되어야 합니다. 로드된 후, target의 인식 및 추적은 로컬 target 사용과 동일합니다. target이 인식된 후, 콜백에서 획득할 수 있으며, 서로 다른 target을 구분하기 위해 target uid를 사용해야 합니다. target runtimeID는 동적으로 생성되므로 클라우드 인식 시나리오에서 target을 고유하게 구분하는 데 적합하지 않습니다.
- DelayedCallbackScheduler
지연 콜백 스케줄러.
수동 호출 시점까지 콜백 실행을 지연시키는 데 사용되며, 단일 스레드 환경(예: 다양한 UI 환경)에서 활용 가능합니다.
본 클래스의 모든 멤버는 스레드 안전합니다.
- DenseSpatialMap
DenseSpatialMap은 환경의 정밀한 3D 조밀 재구성에 사용되며, 재구성된 모델은 삼각형 메시(mesh)로 표현됩니다. DenseSpatialMap은 1개의 camera buffer를 점유합니다.
- EventDumpRecorder
이벤트 덤프 레코더. 일부 주요 진단 정보를 EED 파일에 저장하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- FeedbackFrame
피드백 프레임.
ImageTracker와 같은 피드백 기반 동기화 처리 컴포넌트에 사용되는 입력 프레임과 히스토리 출력 프레임을 포함합니다.
- FeedbackFrameFork
피드백 프레임 분배기. 하나의 피드백 프레임을 여러 구성 요소에 병렬로 전송하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드-안전합니다.
- FeedbackFrameSink
피드백 프레임 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드-안전합니다.
- FeedbackFrameSource
피드백 프레임 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 thread-safe합니다.
- FrameFilterResult
FrameFilterResult는 모든 동기화 알고리즘 컴포넌트 결과를 사용하는 기반 클래스입니다.
- Gyroscope
자이로스코프는 시스템에서 제공하는 자이로스코프를 호출하여 GyroscopeResult를 출력합니다.
해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용하지 않아야 합니다.
동시에 여러 번 열지 않는 것이 좋습니다. 사용할 수 없거나 정밀도가 떨어질 수 있습니다.
- GyroscopeResult
자이로스코프 판독값. x축 양의 방향은 기기 중심에서 화면 오른쪽 부분을 가리킵니다. y축 양의 방향은 기기 중심에서 화면 상부를 가리킵니다. z축 양의 방향은 기기 중심에서 화면에 수직으로 바깥쪽을 가리킵니다. x, y, z는 해당 축을 중심으로 회전하는 각속도를 나타내며, 단위는 라디안/초입니다. 좌표축 양의 방향 상의 어느 지점에서 기기를 바라볼 때 반시계 방향이 회전의 양의 방향입니다. timestamp 단위는 초입니다.
- GyroscopeResultSink
자이로스코프 결과 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- GyroscopeResultSource
자이로스코프 결과 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전합니다.
- Image
Image는 이미지 데이터를 저장하며 메모리 내 이미지를 나타냅니다. Image는 원시 데이터에 대한 접근을 바이트 배열 형태로 제공하며, 너비/높이(width/height) 등의 정보에 접근하는 인터페이스도 제공합니다. EasyAR Sense의 모든 버전에서 이미지 데이터에 접근할 수 있습니다. iOS에서는 다음과 같이 접근합니다.
#import <easyar/buffer.oc.h> #import <easyar/image.oc.h> easyar_OutputFrame * outputFrame = [outputFrameBuffer peek]; if (outputFrame != nil) { easyar_Image * i = [[outputFrame inputFrame] image]; easyar_Buffer * b = [i buffer]; char * bytes = calloc([b size], 1); memcpy(bytes, [b data], [b size]); // 여기서 bytes 사용 free(bytes); }Android에서는,
import cn.easyar.*; OutputFrame outputFrame = outputFrameBuffer.peek(); if (outputFrame != null) { InputFrame inputFrame = outputFrame.inputFrame(); Image i = inputFrame.image(); Buffer b = i.buffer(); byte[] bytes = new byte[b.size()]; b.copyToByteArray(0, bytes, 0, bytes.length); // 여기서 bytes 사용 b.dispose(); i.dispose(); inputFrame.dispose(); outputFrame.dispose(); }
- ImageHelper
이미지 헬퍼 클래스
- ImageTarget
ImageTarget은 평면 이미지의 타겟을 나타내며, ImageTracker에 의해 추적될 수 있습니다.
ImageTarget 내부의 데이터는 읽기 전에 먼저 create... 등의 메서드를 통해 채워져야 합니다. 이후 ImageTracker에 loadTarget을 통해 성공적으로 로드된 후에야 ImageTracker에 의해 감지 및 추적될 수 있습니다.
- ImageTargetParameters
ImageTargetParameters는 ImageTarget 생성에 필요한 매개변수를 나타냅니다.
- ImageTracker
ImageTracker는 평면 카드의 감지 및 추적을 구현합니다. ImageTracker는 (1 + SimultaneousNum)개의 camera buffer를 점유합니다. camera의 setBufferCapacity를 사용하여 모든 컴포넌트가 점유하는 camera buffer 수량보다 적지 않게 설정해야 합니다. 생성 후, start/stop을 호출하여 실행을 시작 및 중지할 수 있으며, start/stop은 매우 가벼운 호출입니다. 해당 컴포넌트가 더 이상 필요하지 않을 때 close를 호출하여 종료할 수 있습니다. close 후에는 계속 사용해서는 안 됩니다. ImageTracker는 feedbackFrameSink를 통해 FeedbackFrame을 입력받으며, FeedbackFrameSource를 feedbackFrameSink에 연결하여 사용해야 합니다. Target이 ImageTracker에 의해 추적되기 전에 loadTarget/unloadTarget을 통해 로드해야 합니다. 인터페이스 콜백을 전달하여 load/unload 결과를 얻을 수 있습니다.
- ImageTrackerConfig
ImageTracker 생성 구성을.
- ImmediateCallbackScheduler
즉시 콜백 스케줄러.
다중 스레드 환경(예: 서버나 백그라운드 서비스)에서 콜백을 즉시 실행하는 데 사용됩니다.
이 클래스의 모든 멤버는 스레드 안전합니다.
- InertialCameraDevice
InertialCameraDevice는 운동 관성 기반의 카메라 장치를 구현하며, CameraTransformType이 FiveDofRotXZ인 InputFrame(이미지, 카메라 파라미터, 타임스탬프, 포즈 변환 행렬 및 추적 상태 포함)을 출력합니다. 생성 후, start/stop을 호출하여 비디오 스트림 데이터 수집을 시작 및 중지할 수 있습니다. 해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. InertialCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource는 InputFrameSink에 연결하여 사용해야 합니다. bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 출력된 InputFrame이 이 수량을 초과하고 해제되지 않은 경우, 이전 InputFrame이 해제될 때까지 장치는 새로운 InputFrame을 출력하지 않습니다. 이로 인해 화면 정지 등의 문제가 발생할 수 있습니다.
- InputFrame
입력 프레임. 이미지, camera 파라미터, 타임스탬프, 월드 좌표계에 대한 카메라의 변환(transform), 추적 상태를 포함합니다. 여기서 camera 파라미터, 타임스탬프, 월드 좌표계에 대한 카메라의 변환, 추적 상태는 모두 선택 사항이지만, 특정 알고리즘 구성 요소는 입력에 대한 특정 요구 사항을 가질 수 있습니다.
- InputFrameFork
입력 프레임 분배기를 입력합니다. 하나의 입력 프레임을 여러 컴포넌트에 병렬로 분배하는 용도입니다. 본 클래스의 모든 멤버는 thread-safe합니다.
- InputFramePlayer
입력 프레임 플레이어. EIF 파일로부터 입력 프레임을 가져오기 위한 입력 프레임 출력 포트가 있습니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- InputFrameRecorder
입력 프레임 레코더. 통과하는 입력 프레임을 EIF 파일로 저장하기 위한 입력 프레임 입력 포트와 입력 프레임 출력 포트가 있습니다. 본 클래스의 모든 멤버는 스레드 안전합니다.
- InputFrameSink
입력 프레임 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버들은 스레드 안전합니다.
- InputFrameSource
입력 프레임 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드-세이프입니다.
- InputFrameThrottler
입력 프레임 스로틀러. 하나의 입력 프레임 입력 포트와 입력 프레임 출력 포트를 가지며, 알고리즘 컴포넌트가 이전 프레임 데이터 처리를 완료하지 못했을 때 새로운 입력 프레임이 알고리즘 컴포넌트로 진입하는 것을 차단합니다. InputFrameThrottler는 1개의 camera 버퍼를 점유합니다. camera의 setBufferCapacity를 사용하여 모든 컴포넌트가 점유하는 camera 버퍼 수량 이상으로 설정해야 합니다. 본 클래스의 모든 멤버는 스레드 안전(thread-safe)합니다. 주의할 점: signalInput의 연결 및 해제는 데이터 유입이 동시에 진행 중인 상태에서 수행되어서는 안 됩니다. 그렇지 않으면 출력 불가 상태에 빠질 수 있습니다. (카메라 시작 전에 데이터 흐름 연결을 완료하는 것을 권장합니다.)
- InputFrameToFeedbackFrameAdapter
입력 프레임에서 피드백 프레임으로의 어댑터.
입력 프레임 입력 포트, 이력 출력 프레임 입력 포트 및 피드백 프레임 출력 포트를 가지며, 입력 프레임과 이력 출력 프레임을 결합하여 ImageTracker와 같이 피드백 프레임 입력을 요구하는 알고리즘 컴포넌트에 전달합니다.
입력 프레임이 들어올 때마다, 이전 입력의 이력 출력 프레임과 결합하여 피드백 프레임을 생성합니다. 이력 출력 프레임이 입력된 적이 없는 경우, 피드백 프레임의 이력 출력 프레임은 비어 있습니다.
InputFrameToFeedbackFrameAdapter는 카메라 버퍼 1개를 점유합니다. camera의 setBufferCapacity를 사용하여 모든 컴포넌트가 점유하는 카메라 버퍼 수량 이상으로 설정해야 합니다.
이 클래스의 모든 멤버는 thread-safe합니다.
- InputFrameToOutputFrameAdapter
입력 프레임에서 출력 프레임으로의 어댑터. 입력 프레임 입력 포트와 출력 프레임 출력 포트를 가지며, 입력 프레임을 출력 프레임으로 래핑하여 알고리즘 컴포넌트에 연결하지 않고도 직접 렌더링을 수행할 수 있는 기능을 구현합니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- JniUtility
JNI 도구 클래스. Unity에서 Java 배열 및 ByteBuffer를 래핑하는 데 사용됩니다. iOS 플랫폼은 지원하지 않습니다.
- LocationResult
위치 정보. latitude, longitude 단위는 degree(도)입니다. altitude 단위는 meter(미터)입니다. horizontalAccuracy는 수평 방향 정확도로 단위는 meter(미터)입니다. verticalAccuracy는 중력 방향 정확도로 단위는 meter(미터)입니다.
- LocationResultSink
위치 결과 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- LocationResultSource
위치 결과 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 thread-safe합니다.
- Log
로그 클래스.
로그를 출력하거나 사용자 정의 로그 출력 함수를 설정하는 데 사용됩니다.
- Magnetometer
Magnetometer는 시스템에서 제공하는 자력계를 호출하여 MagnetometerResult를 출력합니다. 해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. 동시에 여러 번 열지 않는 것이 좋으며, 사용 불가능하거나 정확도가 저하될 수 있습니다.
- MagnetometerResult
자력계 판독값. x축 양의 방향은 기기 중심에서 화면 오른쪽으로 향합니다. y축 양의 방향은 기기 중심에서 화면 상단으로 향합니다. z축 양의 방향은 기기 중심에서 화면에 수직으로 바깥쪽으로 향합니다. x, y, z 단위는 uT(마이크로테슬라)입니다. timestamp 단위는 초입니다.
- MagnetometerResultSink
자력계 결과 입력 포트.
구성 요소의 입력 포트를 노출하기 위해 사용됩니다.
이 클래스의 모든 멤버는 스레드 안전합니다.
- MagnetometerResultSource
자력계 결과 출력 포트. 구성 요소의 출력 포트를 노출하는 데 사용됨. 이 클래스의 모든 멤버는 스레드 안전합니다.
- Matrix33F
3차 정사각행렬. 데이터 배열 방식은 row-major입니다.
- Matrix44F
4차 정방행렬. 데이터 배열 방식은 row-major이다.
- MegaLandmarkFilter
MegaLandmarkFilter는 VPS 클라우드 위치 측정 필터링 기능을 구현합니다.
- MegaTracker
클라우드 위치 추적 기능을 제공합니다. MegaTracker는 1개 camera 버퍼를 차지합니다.
- MegaTrackerBlockInstance
MegaTracker가 위치 확인한 block의 인스턴스.
- MegaTrackerLocalizationResponse
MegaTracker 위치 요청의 응답
- MegaTrackerResult
메가트래커의 출력은 OutputFrame 주기로 업데이트됩니다.
- MotionInputData
운동 입력 데이터. 타임스탬프, 세계 좌표계에 대한 변환 및 추적 상태를 포함합니다.
- MotionTrackerCameraDevice
MotionTrackerCameraDevice는 실제 크기 6DOF 모션 추적 카메라 장치를 구현하며, InputFrame (이미지, 카메라 파라미터, 타임스탬프, 6DOF 위치 정보 및 추적 상태 포함)을 출력합니다. 생성 후, start/stop을 호출하여 데이터 스트림을 시작하고 중지할 수 있습니다. 해당 장치가 더 이상 필요하지 않은 경우 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. MotionTrackerCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource를 InputFrameSink에 연결하여 사용해야 합니다.
- ObjectTarget
ObjectTarget는 3D object target을 나타내며, ObjectTracker에 의해 추적될 수 있습니다.
ObjectTarget의 크기는obj파일에 의해 결정됩니다.scale을 수정하여 크기를 변경할 수 있으며,scale의 기본값은 1입니다.
ObjectTarget는 loadTarget을 통해 ObjectTracker에 성공적으로 로드된 후 ObjectTracker에 의해 감지 및 추적될 수 있습니다.
- ObjectTargetParameters
ObjectTargetParameters는 ObjectTarget 생성을 위한 파라미터를 표시합니다.
- ObjectTracker
ObjectTracker는 3D 객체 타겟의 감지 및 추적을 구현합니다. ObjectTracker는 (1 + SimultaneousNum)개의 카메라 버퍼를 점유합니다. 모든 컴포넌트가 점유하는 카메라 버퍼 수량 이상으로 설정하기 위해 camera의 setBufferCapacity를 사용해야 합니다. 생성 후, 실행 시작 및 중지를 위해 start/stop을 호출할 수 있으며, start/stop은 매우 가벼운 호출입니다. 해당 컴포넌트가 더 이상 필요하지 않을 경우, close를 호출하여 종료할 수 있습니다. close 이후에는 계속 사용하지 않아야 합니다. ObjectTracker는 feedbackFrameSink를 통해 FeedbackFrame을 입력받으며, FeedbackFrameSource를 feedbackFrameSink에 연결하여 사용해야 합니다. Target이 ObjectTracker에 의해 추적되기 전에, loadTarget/unloadTarget을 통해 로드해야 합니다. 로드/언로드 결과는 인터페이스 콜백을 통해 획득할 수 있습니다.
- OutputFrame
출력 프레임. 입력 프레임과 동기 처리 컴포넌트의 출력을 포함합니다.
- OutputFrameBuffer
출력 프레임 버퍼. 비동기 방식을 동기 폴링 방식으로 전환하여 출력 프레임을 획득하는 출력 프레임 입력 포트와 출력 프레임 획득 함수가 있어 프레임별 렌더링에 적합합니다. OutputFrameBuffer는 camera 버퍼 1개를 차지합니다. camera의 setBufferCapacity를 사용하여 모든 구성 요소가 차지하는 camera 버퍼 수량 이상으로 설정해야 합니다. 본 클래스의 모든 멤버는 스레드 안전합니다.
- OutputFrameFork
출력 프레임 분배기. 단일 출력 프레임을 여러 컴포넌트에 병렬로 전송하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전성을 가집니다.
- OutputFrameJoin
출력 프레임 합류기.
여러 컴포넌트의 출력 프레임을 하나의 출력 프레임으로 병합하는 데 사용됩니다.
이 클래스의 모든 멤버는 스레드 안전합니다.
주의해야 합니다: 여러 입력의 연결 및 분리는 데이터가 유입되는 동시에 수행되어서는 안 됩니다. 그렇지 않으면 출력이 불가능한 상태에 빠질 수 있습니다. (Camera 시작 전에 데이터 흐름 연결을 완료할 것을 권장합니다.)
- OutputFrameSink
출력 프레임 입력 포트.
컴포넌트의 입력 포트를 노출하는 데 사용됩니다.
본 클래스의 모든 멤버는 스레드 안전합니다.
- OutputFrameSource
출력 프레임 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전합니다.
- ProximityLocationResult
근접 위치 판독값. x, y, z 단위는 미터. 원점은 타일 원점입니다. y축 위로. accuracy 단위는 미터. timestamp, validTime 단위는 초. is2d는 y값을 사용하지 않는지 여부를 나타냅니다.
- ProximityLocationResultSink
인접 위치 결과 입력포트. 구성요소의 입력포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드로부터 안전합니다.
- ProximityLocationResultSource
인접 위치 결과 출력 포트. 컴포넌트의 출력 포트를 노출시키는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전합니다.
- Recorder
Recorder는 현재 렌더링 환경의 화면 녹화 기능을 구현하였습니다. 현재 Recorder는 Android(4.3 이상) 및 iOS의 OpenGL ES 3.0 환경에서만 작동합니다. OpenGLES에 대한 의존성으로 인해, 이 클래스의 모든 함수(requestPermissions 제외, 소멸자 포함)는 OpenGLES 컨텍스트를 포함하는 단일 스레드 내에서 호출되어야 합니다. 유니티 전용 Unity에서 Multi-threaded rendering 기능을 사용하는 경우, 스크립트 스레드가 렌더링 스레드와 분리되어 updateFrame을 렌더링 스레드에서 호출할 수 없습니다. 따라서 화면 녹화 기능을 사용해야 하는 경우 Multi-threaded rendering 기능을 비활성화해야 합니다. Android 사용 시 AndroidManifest.xml에 android.permission.RECORD_AUDIO 권한 선언을 추가해야 합니다. iOS 사용 시 Info.plist에 NSMicrophoneUsageDescription(마이크 사용 권한에 대한 설명) 권한 선언을 추가해야 합니다.
- RecorderConfiguration
RecorderConfiguration은 Recorder의 시동 설정입니다.
- SignalSink
신호 입력 포트. 컴포넌트의 입력 포트를 노출하는 데 사용됩니다. 본 클래스의 모든 멤버는 스레드 안전(thread-safe)합니다.
- SignalSource
신호 출력 포트. 컴포넌트의 출력 포트를 노출하는 데 사용됩니다. 이 클래스의 모든 멤버는 스레드로부터 안전합니다.
- SparseSpatialMap
SparseSpatialMap 시스템의 주요 기능을 제공합니다. 맵 생성 및 저장, 맵 로딩 및 위치 추정을 하며, 포인트 클라우드, 평면 등의 환경 정보를 획득하고 hit Test를 수행할 수 있습니다. SparseSpatialMap은 2개의 camera buffer를 점유합니다. camera의 setBufferCapacity를 사용하여 모든 구성 요소가 사용하는 camera buffer의 수량보다 적지 않게 설정해야 합니다.
- SparseSpatialMapConfig
희소 매핑에서의 위치 추정 전략을 구성하기 위한 목적입니다.
- SparseSpatialMapManager
SparseSpatialMap 관리 클래스, SparseSpatialMap의 공유 기능을 관리하는 데 사용됩니다.
- SparseSpatialMapResult
희소 매핑 및 위치 추정 시스템의 출력을 획득하면 OutputFrame의 빈도로 업데이트됩니다.
- SurfaceTracker
SurfaceTracker는 환경 표면 추적을 구현합니다. SurfaceTracker는 카메라 버퍼 1개를 사용합니다. 카메라의 setBufferCapacity를 사용하여 모든 컴포넌트가 사용하는 카메라 버퍼 수량 이상으로 설정해야 합니다. 생성 후 start/stop을 호출하여 실행을 시작하거나 중지할 수 있으며, start/stop은 매우 가벼운 호출입니다. 해당 컴포넌트가 더 이상 필요하지 않을 때 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. SurfaceTracker는 inputFrameSink를 통해 InputFrame을 입력받으며, InputFrameSource를 inputFrameSink에 연결하여 사용해야 합니다.
- Target
Target은 EasyAR에서 ImageTracker 또는 기타 알고리즘으로 추적 가능한 모든 대상의 기본 클래스입니다.
- TargetInstance
TargetInstance는 tracker에 의해 추적된 target입니다. TargetInstance는 추적된 원본 Target 및 이 Target의 현재 상태와 자세를 포함합니다.
- TargetTrackerResult
TargetTrackerResult는 ImageTrackerResult 및 ObjectTrackerResult의 기반 클래스입니다.
- TextureId
TextureId는 그래픽 API에서의 텍스처 객체를 캡슐화합니다. 여기서 OpenGL/OpenGLES은(는) getInt 및 fromInt를 사용해야 하며, Direct3D은(는) getPointer 및 fromPointer를 사용해야 합니다.
- ThreeDofCameraDevice
ThreeDofCameraDevice는 three dof 카메라 장치를 구현하며, CameraTransformType이 ThreeDofRotOnly인 InputFrame(이미지, 카메라 파라미터, 타임스탬프, 포즈 변환 행렬 및 추적 상태 포함)을 출력합니다. 생성 후, start/stop을 호출하여 비디오 스트림 데이터 수집을 시작 및 중지할 수 있습니다. 더 이상 해당 장치가 필요하지 않을 때 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. ThreeDofCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource는 InputFrameSink에 연결하여 사용해야 합니다. bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 출력된 InputFrame이 이 수량을 초과하고 해제되지 않은 경우, 이전 InputFrame이 해제될 때까지 새로운 InputFrame을 출력하지 않습니다. 이로 인해 화면 정지 현상 등이 발생할 수 있습니다.
- Vec2F
2차원 float 벡터
- Vec2I
2차원 int 벡터
- Vec3D
3차원 double 벡터
- Vec3F
3D float 벡터
- Vec4F
4차원 float 벡터.
- Vec4I
4차원 int 벡터
- VideoInputFramePlayer
입력 프레임 플레이어. EIF MKV 파일로부터 입력 프레임을 가져오기 위한 입력 프레임 출력 포트가 있습니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- VideoInputFrameRecorder
입력 프레임 레코더. 통과하는 입력 프레임을 EIF MKV 파일로 저장하기 위한 하나의 입력 프레임 입력 포트와 하나의 입력 프레임 출력 포트를 가집니다. 이 클래스의 모든 멤버는 스레드 안전합니다.
- VideoPlayer
VideoPlayer는 비디오 재생 클래스입니다. EasyAR은 일반 비디오, 투명 비디오 및 스트리밍 재생을 지원합니다. 비디오 콘텐츠는 setRenderTexture로 전달된 텍스처에 렌더링됩니다. 이 클래스는 OpenGLES 3.0 텍스처만 지원합니다. OpenGLES에 대한 의존성으로 인해, 이 클래스의 모든 함수(소멸자 포함)는 OpenGLES 컨텍스트를 포함하는 단일 스레드에서 호출되어야 합니다. 현재 버전에서는 너비와 높이가 모두 16의 배수여야 합니다. 지원되는 비디오 파일 형식 Windows: Media Foundation 호환 형식. 추가 코덱 설치로 더 많은 형식 지원 가능. Supported Media Formats in Media Foundation 참조. DirectShow는 지원하지 않음. Mac: 지원하지 않음. Android: 시스템 지원 형식. Supported media formats 참조. iOS: 시스템 지원 형식. 현재 유효한 참조 문서가 없음.
- VisionOSARKitCameraDevice
VisionOSARKitCameraDevice는 VisionOS ARKit 기반 카메라 장치를 구현하며, InputFrame (이미지, 카메라 파라미터, 타임스탬프, 6DOF 위치 정보 및 추적 상태 포함)을 출력합니다. 생성 후, start/stop을 호출하여 비디오 스트림 데이터 수집을 시작 및 중지할 수 있습니다. 해당 장치가 더 이상 필요하지 않을 때는 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. VisionOSARKitCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource는 InputFrameSink에 연결하여 사용해야 합니다. bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 수량을 초과하는 InputFrame이 이 장치에서 출력되고 해제되지 않으면, 이전 InputFrame이 해제될 때까지 장치는 새로운 InputFrame을 출력하지 않습니다. 이로 인해 화면 정지 등의 문제가 발생할 수 있습니다.
- XREALCameraDevice
XREALCameraDevice는 XREAL Enterprise Native SDK Plugin 기반 카메라 장치를 구현하며, InputFrame을 출력합니다(이미지, 카메라 파라미터, 타임스탬프, 6DOF 위치 정보 및 추적 상태는 획득할 수 없음). 생성 후, 비디오 스트림 데이터 수집을 시작 및 중지하기 위해 start/stop을 호출할 수 있습니다. start 호출 전에 isDeviceSupported가 true를 반환하는지 확인해야 합니다. 해당 장치가 더 이상 필요하지 않을 때 close를 호출하여 닫을 수 있습니다. close 이후에는 계속 사용해서는 안 됩니다. XREALCameraDevice는 inputFrameSource를 통해 InputFrame을 출력하며, inputFrameSource는 InputFrameSink에 연결하여 사용해야 합니다. bufferCapacity는 InputFrame 버퍼의 용량을 나타냅니다. 이 장치에서 이 수량을 초과하는 InputFrame이 출력되고 해제되지 않으면, 이전 InputFrame이 해제될 때까지 새로운 InputFrame이 출력되지 않습니다. 이로 인해 화면이 멈추는 등의 문제가 발생할 수 있습니다.
열거형
- BlockPriorMode
사전 지도 정보 작업 모드
- CameraDeviceType
카메라 장치 유형.
- CameraModelType
카메라-모델-유형
- CameraTransformType
카메라 변환 유형.
- CloudLocalizerStatus
클라우드 위치 추적 상태
- MegaApiType
MEGA API 유형
- MotionTrackingStatus
Describe the quality of device motion tracking.
- PixelFormat
PixelFormat은 이미지 픽셀 형식을 나타냅니다. 모든 형식의 픽셀 방향은 좌에서 우로, 상에서 하로 동일합니다.
- StorageType
StorageType은 이미지, json 파일, 비디오 또는 기타 파일의 저장 위치를 나타냅니다.
StorageType은 파일이 저장되는 루트 디렉터리를 지정하며, 모든 관련 인터페이스에서 이 루트 디렉터리에 대한 상대 경로를 사용할 수 있습니다.