카오스 비주얼 디버거(Chaos Visual Debugger, CVD)는 피직스 시뮬레이션을 녹화하는 데 사용할 수 있는 툴입니다. CVD를 사용하면 머신에서 실행되는 게임과 애플리케이션은 물론, 원격 머신이나 머신에 연결된 플랫폼에서 실행되는 게임과 애플리케이션을 녹화할 수 있습니다.
CVD에서 녹화를 재생하면 디버깅을 위해 데이터를 검사할 수 있습니다. 이러한 녹화는 프로젝트와 무관합니다. 즉, 언리얼 엔진(UE) 프로젝트 파일에 액세스하지 않고도 로드할 수 있어 팀 간 협업이나 원격 디버깅이 가능합니다.
CVD가 기록하는 데이터에는 다음이 포함됩니다.
파티클(속도, 가속도, 질량 프로퍼티, 오브젝트 스테이트 포함)
콜리전 지오메트리(콜리전 채널 포함)
콜리전 컨스트레인트(컨택트 페어와 스테이트)
조인트 컨스트레인트(스테이트 및 조인트 세팅)
캐릭터 컨스트레인트(물리 기반 캐릭터 무브먼트)
씬 쿼리(라인 트레이스, 스윕, 오버랩 포함)
리지드 바디 애니메이션 노드(RBAN)
CVD 컨텍스트에서 파티클은 보통 리지드 바디를 가리킵니다.
카오스 비주얼 디버거 실행
CVD는 두 가지 방법으로 실행할 수 있습니다. 에디터에서 실행하거나 독립형 프로그램으로 실행할 수 있습니다.
언리얼 에디터 내부
언리얼 에디터에서 카오스 비주얼 디버거를 열려면 메뉴 바에서 툴(Tools) > 디버그(Debug) > 카오스 비주얼 디버거(Chaos Visual Debugger)를 클릭합니다. CVD를 선택하면 툴이 새 창에서 열립니다.
독립형 프로그램으로
CVD를 독립형 프로그램으로 실행하려면 언리얼 엔진의 소스 코드 빌드를 사용해야 합니다. GitHub에서 소스 코드 빌드를 다운로드할 수 있습니다. 자세한 내용은 소스에서 언리얼 엔진 빌드하기를 참고하세요.
CVD는 실행 파일(이식 불가) 또는 배치 파일(이식 가능)에서 독립형 프로그램으로 빌드하고 실행할 수 있습니다. 아래 표는 각 옵션의 파일 위치와 빌드 단계를 설명합니다.
| 빌드 플로 | 설명 |
|---|---|
CVD 실행 파일 | 이 실행 파일은 CVD를 빌드하고 실행하려면 다음 단계를 따릅니다.
빌드가 완료되면 실행 파일에 대한 바로가기를 생성하고 클릭 한 번으로 툴을 실행할 수 있습니다. |
CVD 배치 파일 | 다음 경로에 있는 배치 파일: CVD를 빌드하고 실행하려면 다음 단계를 따릅니다.
|
CVD 유저 인터페이스 살펴보기
이 섹션에서는 카오스 비주얼 디버거에서 가장 많이 상호작용하게 될 버튼, 패널, 툴바에 대해 설명합니다. 이러한 엘리먼트 중 일부는 언리얼 에디터 인터페이스와 유사하지만, CVD와 일부 언리얼 에디터 버전 간의 시각적 차이로 인해 CVD에 익숙해져야 합니다.
아래 섹션에서는 각 유저 인터페이스(UI) 엘리먼트의 위치와 간단한 사용 사례를 설명합니다. 자세한 내용은 이 페이지 전체에 제공된 링크를 참조하세요.
| 번호 | 이름 | 개요 |
|---|---|---|
1 | 메뉴 바(Menu Bar) | 최근 녹화를 로드하고 CVD 레이아웃을 수정하는 옵션입니다. |
2 | 메인 툴바(Main Toolbar) | 녹화를 시작하거나 중지하고, 녹화를 로드하고, 녹화할 데이터를 커스터마이징하는 옵션입니다. |
3 | 뷰포트 툴바(Viewport Toolbar) | 뷰포트에 표시할 데이터와 시각적으로 구분되는 방식을 수정하는 옵션입니다. |
4 | 씬 아웃라이너(Scene Outliner) | 녹화 내 씬 컴포넌트 목록을 표시합니다. |
5 | 뷰포트(Viewport) | 언리얼 에디터 뷰포트처럼 로드된 녹화 또는 라이브 녹화를 디스플레이합니다. 여기에는 다음이 포함될 수 있습니다.
|
6 | 재생 컨트롤(Playback Controls) | 다음을 포함한 재생 타임라인 및 로그 컬렉션을 디스플레이합니다. |
7 | 디테일 패널(Details Panel) | 파티클처럼 전용 데이터 인스펙터가 없는 뷰포트에서 선택한 항목에 대한 정보를 표시합니다. |
8 | 데이터 인스펙터(Data Inspectors) | 다음에 대한 추가 디테일을 제공합니다. |
메뉴 바
메인 툴바
| 번호 | 이름 | 설명 |
|---|---|---|
1 | 파일 열기(Open File) | 기존 |
2 | 세션에 연결(Connect to Session) | (레거시) 원격 디버깅을 위해 원격 머신에 연결합니다. 이제 명령줄을 통해 원격 세션을 녹화할 때만 사용됩니다. 자세한 내용은(레거시) 명령줄 인터페이스로 라이브 세션 녹화하기를 참고하세요. |
3 | 결합(Combine) | CVD에 열려 있는 여러 개의 녹화를 하나의 |
4 | 씬 쿼리 브라우저(Scene Query Browser) | 단일 프레임에 대해 이루어진 모든 씬 쿼리를 검사합니다. 자세한 내용은 데이터 인스펙터를 참고하세요. |
5 | 세션 타깃(Session Targets) | 녹화할 타깃을 선택합니다. |
6 | 로딩 모드(Loading Mode) | 단일 또는 다중 녹화를 로드합니다(데이터 병합). |
7 | 파일에 녹화(Record to File) | 녹화를 시작하고 파일에 저장합니다. |
8 | 라이브 세션 녹화(Record Live Session) | 녹화를 시작하고 리얼타임으로 시각화를 렌더합니다. |
9 | 데이터 채널(Data Channels) | 녹화 도중 캡처된 데이터를 다음과 같이 커스터마이징합니다. |
10 | 세팅(Settings) | CVD의 UI 및 퍼포먼스를 커스터마이징합니다. |
뷰포트 툴바
햄버거 메뉴
| 이름 | 설명 | 이미지 |
|---|---|---|
녹화된 프레임 레이트로 재생(Play at Recorded Framerate) | 녹화된 프레임 레이트를 고정된 프레임 레이트로 오버라이드합니다. | |
오브젝트 트래킹(Object Tracking) (F8) | 뷰포트의 오브젝트에 카메라를 잠급니다. | |
FOV 옵션(FOV Options) | 뷰포트의 FOV(필드 오브 뷰)와 가장 먼 렌더 거리를 조정합니다. | |
반투명 선택 허용(Allow Translucent Selection) (T) | 반투명 토글 오브젝트를 클릭하여 통과하는 기능을 토글합니다. | |
위치로 이동(Go to Location) | XYZ 포맷을 사용하여 이 필드에 입력된 위치로 카메라를 텔레포트합니다. |
뷰 모드
뷰 모드는 뷰포트에서 원근, 상단, 하단, 왼쪽, 오른쪽, 정면, 후면 뷰 간에 전환합니다.
라이팅 모드
라이팅 모드는 뷰포트에서 라이팅포함(Lit), 언릿(Unlit), 라이팅포함 와이어프레임(Lit Wireframe), 와이어프레임(Wireframe) 뷰 모드 간에 전환합니다.
라이팅 모드
버튼 표시
버튼은 기존 녹화의 뷰포트에 표시할 시각화 플래그 및 디버그 텍스트를 수정합니다. 데이터 플래그에 대한 자세한 내용은 데이터 시각화 플래그를 참고하세요.
이 메뉴의 세팅은 기본값으로 재설정되지 않는 한 CVD 세션 간에 유지됩니다.
트랜스폼 및 스냅 툴바
트랜스폼 및 스냅 툴바는 언리얼 에디터 이전 버전의 레거시 뷰포트 툴바와 유사합니다. 대부분 이러한 툴을 사용하여 라이트 액터를 조작합니다.
| 아이콘 | 이름 | 설명 |
|---|---|---|
오브젝트 선택(Select Objects) | 뷰포트 내에서 오브젝트를 선택합니다. | |
오브젝트 선택 및 이동(Select and Translate Objects) | 개별 축, 두 개의 축 또는 세 축 모두를 따라 월드에서 라이트 액터를 이동합니다. | |
오브젝트 선택 및 회전(Select and Rotate Objects) | 개별 축을 따라 라이트 액터를 회전합니다. | |
오브젝트 선택 및 스케일 조절(Select and Scale Objects) | 스케일 기즈모를 사용하여 라이트 액터의 스케일을 조절합니다. 기즈모를 사용하여 개별 축이나 두 개의 축을 따라, 아니면 세 축 모두에서 균일하게 오브젝트의 스케일을 조절할 수 있습니다. | |
좌표계(Coordinate System) | 월드와 로컬 간에 좌표계를 순환합니다. | |
표면에 스냅(Snap to Surface) | 다른 오브젝트의 표면을 따라 라이트 액터를 드래그할 때의 스내핑 행동을 설정합니다. | |
그리드에 스냅(Snap to Grid) | 라이트 액터가 그리드에 스냅되는지 여부를 토글하고 증가분을 설정합니다. | |
회전 증분(Rotation Increments) | 라이트 액터가 점진적으로 회전하는지 여부를 토글하고 각도를 설정합니다. | |
스케일 증분(Scaling Increments) | 라이트 액터의 스케일 증분 조절 여부를 토글하고 증분을 설정합니다. | |
카메라 속도(Camera Speed) | 카메라가 월드에서 이동할 수 있는 속도에 영향을 줍니다. |
씬 아웃라이너
씬 아웃라이너(Scene Outliner)는 녹화 내 씬 컴포넌트 목록을 표시합니다. 각 녹화에는 다수의 솔버가 포함될 수 있으므로 각 솔버의 particle은 속한 솔버의 이름과 ID가 있는 폴더에 저장됩니다. 해당 폴더 내에서 각 파티클은 카오스 측 디버그 이름으로 라벨이 지정됩니다.
CVD에서 피직스 솔버는 일반적으로 게임 월드의 피직스 시뮬레이션 인스턴스로, 카오스 피직스 엔진(Chaos Physics Engine)에 의해 처리됩니다.
재생 컨트롤
카오스 비주얼 디버거에는 게임 스레드 프레임, 피직스 솔버 프레임 또는 시뮬레이션 스테이지를 기반으로 기존 녹화를 재생하고 되감는 컨트롤이 포함되어 있습니다. 이렇게 하면 네트워크 피직스, 비동기 피직스 또는 멀티플레이어 게임과 같은 다수의 게임 월드를 사용하는 상황을 검사할 수 있는 정도가 극대화됩니다.
게임 프레임 타임라인
게임 프레임 타임라인은 녹화의 각 게임 스레드 프레임을 나타냅니다.
이 타임라인을 사용하여 녹화를 재생하면 솔버 타임라인도 재생됩니다. 이는 재생되는 각 게임 스레드 프레임에 대해 CVD가 해당 타임스탬프에서 사용 가능한 가장 가까운 피직스 솔버 프레임을 검색하기 때문입니다.
게임 프레임 타임라인의 프레임 번호가 솔버 타임라인과 항상 일치하지는 않습니다. 이는 게임 스레드 프레임이 여러 피직스 솔버 프레임에 대응할 수 있기 때문입니다. 두 타임라인에 모두 액세스할 수 있다는 것은 비동기 피직스를 사용할 때처럼 이러한 상황이 발생하는 상황을 조사할 수 있다는 뜻입니다.
CVD가 동기화 및 비동기 피직스, 여러 게임 월드의 데이터, 재시뮬레이션된 프레임을 시각화하는 방법에 대한 자세한 내용은 16분 5초에 언리얼 엔진에서 카오스 피직스 디버깅하기를 참고하세요.
솔버 타임라인
타임라인은 녹화에 대한 각 피직스 프레임을 나타냅니다. 각 솔버에는 전용 트랙이 있습니다. 이 타임라인을 사용하면 솔버 트랙의 데이터를 재생하고 어떤 솔버 프레임이 특정 게임 스레드 프레임에 해당하는지 확인할 수 있습니다.
| 세팅 | 설명 | 이미지 |
|---|---|---|
타임라인 동기화 모드(Timeline Sync Mode) | 각 솔버 트랙이 동기화되는 방식을 제어합니다.
| |
재시뮬레이션 배지(Re-Simulation Badge) | 네트워크 비동기화 보정 프로세스 중에 수행된 재시뮬레이션의 일부인 프레임이 포함된 솔버 트랙에 표시됩니다. | |
비저빌리티 컨트롤(Visibility Control) | 특정 솔버 트랙에서 시각화된 데이터를 표시하거나 숨깁니다. |
솔버 스테이지 타임라인
솔버 스테이지 타임라인을 사용하면 피직스 시뮬레이션의 특정 스테이지로 점프할 수 있습니다. 스테이지는 단일 피직스 프레임 내 여러 지점에서 촬영한 시뮬레이션의 스냅샷입니다.
파티클 시뮬레이션을 예시로 사용하여 다음 스테이지를 시각화할 수 있습니다.
| 스테이지 | 설명 |
|---|---|
진화 시작(Evolution Start) | 솔버 단계 시작 시 모든 파티클의 스냅샷을 찍습니다. |
통합 후(Post-Integrate) |
|
콜리전 탐지 넓은 페이즈(Collision Detection Broad Phase) | 콜리전 탐지 프로세스의 광범위한 페이즈를 실행한 후 모든 중간 페이즈(바운드가 오버랩되는 모든 파티클 쌍에 대해 오브젝트가 생성됨)의 스냅샷을 찍습니다. |
콜리전 탐지 좁은 페이즈(Collision Detection Narrow Phase) | 콜리전 탐지 프로세스의 좁은 단계를 실행한 후 모든 중간 단계의 스냅샷을 찍습니다. |
프리 컨스트레인트 솔브(Pre Constraint Solve) | 사용 가능한 컨스트레인트를 해결하기 전에 모든 파티클의 스냅샷을 찍습니다. |
포스트 컨스트레인트 솔브(Post Constraint Solve) | 컨스트레인트를 해결한 후 모든 파티클의 스냅샷을 찍습니다. |
진화 끝(Evolution End) | 솔버 단계가 끝날 때 모든 파티클의 스냅샷을 찍습니다. |
솔버 스테이지 타임라인은 오브젝트가 프레임 시작 시 올바른 위치에 표시되지만 프레임 종료 시 예상치 못한 위치에 표시되는 경우와 같이 단일 프레임 내에서 비정상적인 행동을 검사하는 데 유용합니다.
기록된 출력 로그
솔버 타임라인 트랙(Solver Timeline Tracks) 탭 옆에 있는 기록된 출력 로그(Recorded Output Log) 탭은 CVD가 소급 검사를 위해 애플리케이션의 로그 스트림을 기록하는 곳입니다.
출력 로그
출력 로그(Output Log)는 활동을 모니터링하는 리얼타임 로그입니다. 이 탭은 현재 CVD 인스턴스의 활성 로그와 CVD 자체에 대한 오류 또는 경고를 표시합니다.
디테일 패널
디테일 패널에는 뷰포트에서 선택한 항목에 대한 정보가 표시됩니다.
디테일 패널은 파티클 데이터의 데이터 인스펙터 역할도 합니다. 자세한 내용은 파티클 데이터(디테일 패널)를 참고하세요.
다음 순서
데이터 인스펙터
카오스 비주얼 디버거의 데이터 인스펙터를 살펴봅니다.
데이터 시각화 플래그
카오스 비주얼 디버거의 데이터 시각화 플래그를 이해합니다.
카오스 비주얼 디버거로 데이터 캡처하기
카오스 비주얼 디버거로 녹화를 캡처하고 재생합니다.