카메라 렌즈 캘리브레이션 퀵스타트 가이드

렌즈 및 카메라의 렌즈 디스토션과 노달 포인트 오프셋을 체커보드로 조정하는 방법을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

이 퀵스타트 가이드에서는 카메라 캘리브레이션(Camera Calibration) 플러그인을 사용하여 렌즈 디스토션과 노달 포인트 오프셋을 조정하는 방법에 대해 살펴봅니다.

이 가이드에 나와 있는 예시에서는 프로덕션 카메라, 옵티컬 카메라 트래킹 시스템 및 AJA Kona 5를 소스 비디오 입력으로 사용합니다.

전제 조건

이 섹션을 완료하려면 다음과 같은 프로젝트 구성이 필요합니다.

  • 활성화된 카메라 캘리브레이션 플러그인

  • 라이브 링크(Live Link)를 통한 카메라 트래킹 및 초점, 조리개, 줌(FIZ) 데이터 스트리밍. 특히 프로젝트에 카메라 롤(Camera Role) 과 함께 라이브 링크 버추얼 서브젝트(Live Link Virtual Subject) 가 있는 라이브 링크 컴포넌트 컨트롤러(Live Link Component Controller) 가 갖춰진 시네 카메라(CineCamera) 액터가 준비되어 있어야 합니다.

  • AJA 또는 Blackmagic 같은 소스 비디오 입력

  • 프로젝트에 추가된 미디어 소스 및 환경설정된 미디어 프로파일

  • (선택 사항) 동기화 제너레이터를 사용하는 경우 미디어 프로파일의 타임코드 및 젠록 구성 구성 방법에 대한 자세한 내용은 미디어 프로파일을 참고하세요.

  • (선택 사항) 동기화 및 타임코드를 평가하는 방법에 대한 자세한 내용은 시간 데이터 모니터를 참고하세요.

1단계 - 렌즈 파일 에셋 생성하기

렌즈 파일은 각 렌즈-카메라 조합별로 디스토션 및 노달 오프셋 데이터를 계산 및 저장합니다. 렌즈, 트래킹 오브젝트 위치 또는 카메라 바디가 변경되면 새 렌즈 파일을 생성하는 것을 권장합니다. 새 렌즈 파일은 각 렌즈-카메라 바디 조합별로 생성되어야 합니다.

프로젝트에서 렌즈 파일 에셋을 생성하려면 다음 단계를 따릅니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭하여 컨텍스트 메뉴를 열고 기타(Miscellaneous) > 렌즈 파일(Lens File) 을 선택하여 새 렌즈 파일 에셋을 생성합니다.

  2. 렌즈 파일 에셋을 더블클릭하여 렌즈 파일 에셋 에디터(Lens File Asset Editor) 를 엽니다.

  3. 뷰포트 세팅(Viewport Settings) 에서 다음을 수행합니다.

    1. 연결된 카메라에 대해 카메라(Camera) 를 설정합니다.

    2. 미디어 프로파일에 대해 미디어 소스(Media Source) 를 설정합니다.

    Set Media Source and Camera

  4. 렌즈 정보(Lens Information) 에서 다음을 수행합니다.

    1. 렌즈 모델 이름(Lens Model Name) 을 추가합니다. 권장되는 명명 규칙은 카메라 바디 이름과 초점 길이를 조합하는 것입니다.

    2. 가능한 경우 렌즈 일련 번호(Lens Serial Number) 를 추가합니다.

    3. 렌즈 모델(Lens Model) 을 추가합니다. 여기서는 구형 렌즈 모델만 지원됩니다.

    4. 사용 중인 카메라에 맞춰 센서 크기(Sensor Dimensions) 를 설정합니다.

    Lens information set

  5. 아웃라이너(Outliner) 에서 시네 카메라 액터를 선택하여 디테일(Details) 패널을 엽니다.

    1. '디테일' 패널에서 라이브 링크 컨트롤러(Live Link Controller) 컴포넌트를 선택하고 디테일을 확인합니다.

    2. 롤 컨트롤러(Role Controllers) > 카메라 롤 > 카메라 캘리브레이션 > 렌즈 파일 선택 툴(Lens File Picker) 에서 렌즈 파일 을 이전 섹션에서 생성한 렌즈 파일 에셋으로 설정합니다.

'렌즈 파일 에셋 에디터' 하단에서는 현재 렌즈 파일에 적용된 프로퍼티를 확인할 수 있습니다. 이 단계에서 대부분의 프로퍼티는 공백 또는 N/A로 표시됩니다. 이 프로퍼티는 캘리브레이션 프로세스가 진행됨에 따라 업데이트 됩니다.

Lens file summary

2단계 - 체커보드를 사용하여 렌즈 디스토션 계산하기

이 단계에서는 체커보드를 사용하는 일반적인 방법으로 렌즈 디스토션을 계산하는 방법에 대해 살펴봅니다. 리지드 표면에 마운팅 및 프린팅된 체커보드를 사용하여 프로덕션 카메라의 시점으로 보거나 태블릿에 표시된 체커보드 이미지를 사용할 수도 있습니다. 여기서는 물리적 체커보드와 프로퍼티가 일치하는 CG 체커보드를 언리얼 엔진에서 생성해 보겠습니다.

렌즈 디스토션을 계산하려면 다음 단계를 따릅니다.

  1. 툴바 에서 콘텐츠 추가(Add Content) 를 선택하고 버추얼 프로덕션(Virtual Production) > 체커보드(Checkerboard) 를 클릭하여 CameraCalibrationCheckerboard 액터를 레벨에 추가합니다.

    Create Checkerboard Actor

  2. 아웃라이너 에서 CameraCalibrationCheckerboard 액터를 선택하여 디테일 패널을 엽니다. '디테일' 패널의 캘리브레이션(Calibration) 에서 다음을 수행합니다.

    1. 코너 행 개수(Number of Corner Rows) 를 체커보드 열의 코너 수로 설정합니다. 이 예시에서 행 코너의 수는 7입니다.

    2. 코너 열 개수(Number of Corner Columns) 를 체커보드 행의 코너 수로 설정합니다. 이 예시에서 열의 개수는 11입니다.

    3. 정사각형 변 길이(Square Side Length) 를 체커보드 한 변의 길이(cm)로 설정합니다. 이 예시에서 각 변의 길이는 4.5cm 입니다.

    4. 처음에는 체커보드에 아무 머티리얼도 할당되어 있지 않습니다. 홀수 큐브 머티리얼(Odd Cube Material) 을 왼쪽 상단 사각형 컬러 머티리얼로 설정하고, 짝수 큐브 머티리얼(Even Cube Material) 은 그 옆에 있는 사각형의 컬러로 설정합니다. 이 예시에서 전자의 사각형은 검은색, 그 옆의 사각형은 하얀색입니다.

    Checkerboard numbered example

  3. 렌즈 파일 에셋 에디터 에서 렌즈 디스토션(Lens Distortion) 탭으로 이동합니다.

    1. 렌즈 디스토션 알고리즘(Lens Distortion Algo)렌즈 디스토션 체커보드(Lens Distortion Checkerboard) 로 설정합니다.

    2. 체커보드(Checkerboard) 를 생성한 CameraCalibrationCheckerboard 액터로 설정합니다.

    3. 탐지 표시(Show Detection) 를 활성화합니다. 그러면 렌즈 디스토션에 사용할 이미지가 매번 생성될 때마다 프리뷰 이미지를 생성합니다.

  4. 아래에서와 같이 카메라 앞에 체커보드를 배치합니다.

    Checkerboard in front of the camera

  5. '뷰포트(Viewport)'를 클릭하여 캘리브레이션 프로세스를 시작하고, 사용할 첫 번째 이미지를 생성합니다.

    Create first image for calibration

  6. 체커보드를 카메라의 필드 오브 뷰 주변으로 이동시키면서 이미지를 계속 클릭하여 더 많은 캘리브레이션 픽처를 캡처합니다. 캘리브레이션의 정확도를 높이려면 서로 다른 방향과 심도에서 오버랩되는 이미지로 필드 오브 뷰를 덮을 수 있도록 체커보드의 위치를 계속 움직여야 합니다.

Collecting checkerboard images

  1. 빌드 오브 뷰를 덮을 수 있을 정도로 오버랩 이미지를 충분히 수집했다면 렌즈 디스토션 캘리브레이션에 추가(Add To Lens Distortion Calibration) 를 클릭합니다.

  2. 그러면 창 하단의 디스토션 파라미터가 업데이트됩니다.

    Distortion values updated

대부분의 렌즈는 서로 다른 초점 거리에서 서로 다른 디스토션 값을 갖습니다. 렌즈 디스토션에 최대한 정확한 렌즈 파일을 만들려면 다양한 초점 거리에서 위 프로세스를 반복해야 합니다.

3단계 - 렌즈 디스토션 확인하기

렌즈 디스토션을 확인하려면 노달 오프셋(Nodal Offset) 탭을 사용할 수 있습니다. 이 경우 씬에서 트래킹되지 않은 CG 체커보드가 비디오 피드를 오버레이하여 물리적 체커보드와 CG 체커보드가 일치하는지 확인할 수 있습니다.

렌즈 디스토션을 확인하려면 다음 단계를 따릅니다.

  1. 카메라의 필드 오브 뷰에 물리적 체커보드를 배치합니다.

  2. 렌즈 파일 에셋 에디터 에서 노달 오프셋 탭으로 이동합니다.

    1. 노달 오프셋 알고리즘(Nodal Offset Algo)노달 오프셋 체커보드(Nodal Offset Checkerboard) 로 설정합니다.

    2. 체커보드체커보드 액터(Checkerboard Actor) 로 설정합니다.

    Nodal offset set to checkerboard algorithm

  3. 이미지를 클릭하여 캘리브레이션의 코너 데이터를 모두 채웁니다.

  4. 캘리브레이터에 적용(Apply To Calibrator) 을 클릭합니다. 그러면 체커보드 액터가 카메라로 이동하여 물리적 체커보드와 일치됩니다.

    Apply to calibrator

  5. 뷰포트 세팅(Viewport Settings) 에서 '투명(Transparency)'을 1 로 설정하여 체커보드 액터가 카메라 뷰포트의 물리적 체커보드와 일치하는지 확인합니다.

    Lens distortion demo

4단계 - 노달 오프셋 캘리브레이션에 대해 트래킹된 오브젝트 생성하기

노달 오프셋은 트래킹된 카메라의 축과 실제 렌즈의 노달 포인트/보정 중인 카메라 캘리브레이션 간의 차이를 파악합니다. 렌즈가 변경되거나 카메라의 트래킹 디바이스가 움직인 경우 새 노달 포인트 오프셋을 계산해야 합니다.

시네 카메라 액터에 적용된 노달 오프셋을 계산하려면 물리적으로 트래킹되는 오브젝트 및 CG 모델을 생성하여 트래킹된 오브젝트와 일치시켜야 합니다.

이 예시에서는 이전에 사용된 실제 체커보드에 트래킹 마커를 추가했습니다. 또한 트래킹된 체커보드와 일치하도록 CG 모델을 생성하여 옵티컬 트래킹을 구성했으며, 다음 단계에서 사용할 CG 체커보드가 언리얼 엔진으로 임포트되었습니다.

보통 체커보드를 사용하지만 필요에 따라 트래킹된 오브젝트 및 CG 모델을 생성할 수 있습니다. 이 프로세스에는 CG 모델에 대한 캘리브레이션 포인트 추가가 포함됩니다. 트래킹된 오브젝트와 CG 모델은 서로 일치해야 합니다.

노달 오프셋 캘리브레이션에 대해 트래킹된 오브젝트를 생성하려면 다음 단계를 따릅니다.

  1. 콘텐츠 브라우저 에서 우클릭하여 컨텍스트 메뉴를 엽니다.

    1. 기본 에셋 생성(Create Basic Asset) 아래에서 블루프린트 클래스(Blueprint Class) 를 선택합니다.

    2. 부모 클래스 선택(Pick Parent Class) 패널에서 액터(Actor) 를 선택합니다.

  2. '콘텐츠 브라우저'에서 새 블루프린트 클래스를 더블클릭하여 블루프린트 에디터에서 엽니다.

  3. 컴포넌트(Components) 패널에서 더하기 기호 모양의 컴포넌트 추가(Add Component) 를 클릭하여 스태틱 메시(Static Mesh) 를 선택합니다.

  4. 스태틱 메시의 디테일 패널에서 스태틱 메시 를 트래킹된 오브젝트의 CG 모델로 설정합니다. 이 예시에서 CG 모델은 Checkerboard_mesh가 됩니다.

  5. '컴포넌트' 패널에서 더하기 기호 모양의 컴포넌트 추가(Add Component) 를 클릭하고 캘리브레이션 포인트(Calibration Point) 를 선택합니다. 이 예시에서는 컴포넌트 이름을 'Top_Left'로 짓겠습니다.

  6. 뷰포트 에서 아래와 같이 'Top_Left' 컴포넌트를 체커보드 왼쪽 상단에 배치합니다.

    Top left component set in checkerboard for nodal offset

  7. 'Top_Left' 컴포넌트를 네 번 복제하여 'Bottom_Left', 'Bottom_Right', 'Top_Right', 'Center'를 만듭니다.

  8. 각 컴포넌트를 체커보드 메시에서 해당되는 위치에 배치합니다.

    All components set up on checkerboard mesh

  9. 블루프린트를 컴파일 하고 저장 합니다.

  10. 블루프린트 클래스를 레벨로 드래그합니다.

  11. 라이브 링크에서 트래커 소스를 체커보드에 추가합니다. 이 예시에서는 Optitrack이 쓰였으며 서브젝트 이름은 Checkerboard 로 지었습니다. 트래커 소스를 추가하는 방법에 대한 자세한 내용은 라이브 링크에서 단계별로 확인할 수 있습니다.

  12. 아웃라이너 에서 블루프린트 클래스 액터를 선택하여 '디테일' 패널을 엽니다. '디테일' 패널에서 다음을 수행합니다.

    1. 더하기 기호 모양의 컴포넌트 추가 를 클릭하여 라이브 링크 컨트롤러 를 선택합니다.

    2. 라이브 링크 컨트롤러 컴포넌트를 선택하여 디테일을 확인합니다.

    3. 라이브 링크 에서 서브젝트 표시(Subject Representation) 를 체커보드 트래커에 대한 라이브 링크 서브젝트로 설정합니다. 이 예시에서 라이브 링크 서브젝트는 체커보드입니다.

    Live Link Subject Representation for Checkerboard

5단계 - 노달 오프셋 계산하기

노달 오프셋은 시네 카메라 액터에 오프셋을 적용하여 물리적 카메라에서 사용 중인 렌즈의 실제 노달 포인트를 파악합니다.

카메라 캘리브레이션 플러그인은 트래킹된 오브젝트를 물리적 프로덕션 카메라 앞의 다른 위치로 움직여 노달 오프셋을 계산합니다. 이 예시에서는 체커보드 액터가 노달 오프셋을 계산하기 위해 수집 및 사용되는 캘리브레이션 포인트를 갖습니다.

노달 오프셋을 계산하려면 다음 단계를 따릅니다.

  1. 렌즈 파일 에셋 에디터에서 노달 오프셋(Nodal Offset) 탭으로 이동합니다. 노달 오프셋 에서 다음을 수행합니다.

    1. 노달 오프셋 알고리즘노달 오프셋 포인트 방식 으로 설정합니다.

    2. 캘리브레이터(Calibrator) 를 이전 섹션에서 생성한 블루프린트 클래스 액터로 설정합니다.

    Nodal offset points algorithm

  2. '뷰포트'에서 체커보드 이미지를 클릭하여 각 캘리브레이션 포인트의 위치를 일치시킵니다. 예를 들어 체커보드의 오른쪽 하단을 클릭하여 'Bottom_Right' 캘리브레이션 포인트에 일치시키는 식입니다. 캘리브레이션 포인트는 이미지를 클릭하면 자동으로 업데이트됩니다.

    Select calibration points on checekrboard

  3. 트래킹된 체커보드를 카메라 앞의 5~8개 서로 다른 위치로 움직여 각 위치별 캘리브레이션 포인트를 여러 개 확보합니다.

  4. 노달 오프셋 캘리브레이션에 추가(Add To Nodal Offset Calibration) 를 클릭합니다.

    Collecting points

  5. 에디터 하단의 '노달 포인트 오프셋' 프로퍼티를 확인하여 노달 오프셋이 제대로 적용되었는지 확인합니다.

    Nodal point offset properties updated

  6. '투명'을 '0'에서 '0.5'로 변경합니다. 트래킹된 체커보드의 CG 엘리먼트는 라이브 비디오의 체커보드와 일치해야 합니다.

    Checkerboard overlay physical checkerboard

  7. 트래킹된 카메라를 패닝하고 트래킹된 체커보드를 움직입니다. CG 버전은 실제 비디오 피드의 물리적 체커보드에 올바르게 겹쳐져야 합니다.

타임코드와 젠록을 구성하지 않고 '시간 데이터 모니터'를 사용하여 동기화를 조정한 경우 이동 시 CG 엘리먼트에 딜레이가 발생할 수 있습니다. 카메라 이동을 멈추면 CG 엘리먼트는 다시 일치하게 됩니다.