개요
카오스 비주얼 디버거(Chaos Visual Debugger, CVD) 는 카오스 피직스 시뮬레이션을 위한 비주얼 디버깅 툴입니다. 카오스 비주얼 디버거는 카오스 피직스 씬의 그래픽 뷰를 제공하며, 데이터를 시각화하고 시뮬레이션 결과를 분석할 수 있는 다양한 툴을 갖추고 있습니다.
CVD는 언리얼 엔진에 포함된 에디터 툴이자 런타임 시스템으로, 게임플레이 동안 피직스 시뮬레이션의 상태를 녹화합니다. 그런 다음 툴 내에서 해당 시뮬레이션을 재생하여 시뮬레이션의 특정 프레임 또는 서브 스텝 데이터를 검사할 수 있습니다.
지원되는 기능
카오스 비주얼 디버거는 씬에 포함된 모든 활성 리지드 바디(Rigid Body) 와 리지드 바디 애니메이션 노드(Rigid Body Animation Node, RBAN) 솔버를 녹화할 수 있게 해줍니다. 여기에는 모든 피직스 파티클과 그 상태, 컨택트 및 컨스트레인트 같은 콜리전 데이터도 포함됩니다.
피직스 씬 저장 및 로드
이 툴을 사용하면 세션을 녹화하고 나중에 검사할 수 있도록 디스크에 저장할 수 있습니다. 이렇게 저장된 에셋은 프로젝트 자체와 독립적이므로, 누구든지 언리얼 엔진에서 CVD 에셋을 로드하여 피직스 씬을 분석할 수 있습니다.
씬 데이터 시각화


로드한 후에는 파티클을 상태, 셰이프 타입 또는 클라이언트 또는 서버에서의 활성 여부 에 따라 컬러 코딩을 적용하여 씬을 시각화할 수 있습니다.
다음과 같은 항목도 시각화할 수도 있습니다.
- 글로벌 파티클 데이터: 선택한 파티클 또는 뷰포트 내 모든 파티클의 속도, 가속, 임펄스, 연결 에지 및 질량 중심을 표시합니다.
- 글로벌 콜리전 데이터: 선택한 파티클 또는 뷰포트의 모든 파티클에 대한 컨택트 포인트, 노멀, 임펄스, 푸시 아웃을 표시합니다.
- 글로벌 씬 쿼리: 씬 쿼리를 스윕, 라인 트레이스, 오버랩 등 소스별로 그립니다.
- 글로벌 조인트 데이터: 선택한 파티클의 푸시 아웃, 커넥터, 스트레치 및 축을 표시하고 뷰포트 내 모든 파티클 또는 선택한 파티클에 대해 시뮬레이션 중인지 또는 키네마틱인지 여부를 표시합니다.
콜리전 디버그
CVD는 다음과 같은 파티클별 데이터를 표시하여 콜리전을 디버그하는 데 도움을 줄 수 있습니다.
- 컨택트 포인트: 파티클에 콜리전 컨택트 포인트를 그립니다.
- 컨택트 정보: 파티클의 과잉 관통과 같은 추가 콜리전 정보를 그립니다.
- 넷 푸시 아웃: 파티클의 푸시 아웃 힘을 그립니다.
- 넷 임펄스: 이 컨택트 포인트에 적용되는 총 임펄스를 그립니다.
- 컨택트 노멀: 두 번째 셰이프에 첫 번째 셰이프에서 멀어지는 방향을 가리키는 셰이프-공간 컨택트 노멀을 그립니다.
- 누적 임펄스: 콜리전 컨스트레인트에 누적된 임펄스를 그립니다.
- 비활성 컨택트 그리기: 생성은 되었지만 유효하지 않은 것으로 플래그가 지정되었거나 계산된 푸시 아웃 힘 또는 임펄스 값이 없는 콜리전 컨택트 포인트를 그립니다.
디버그 씬 쿼리
CVD는 다음과 같은 파티클별 데이터를 표시하여 씬 쿼리를 디버그하는 데 도움을 줄 수 있습니다.
- 라인 트레이스 쿼리: 파티클과 관련된 라인 트레이스를 그립니다.
- 스윕 쿼리: 파티클과 관련된 스윕을 그립니다.
- 오버랩 쿼리: 파티클과 관련된 오버랩을 그립니다.
- 히트: 파티클과 관련된 히트를 그립니다.
- 서버 쿼리: 서버에서 실행되는 파티클 쿼리를 그립니다.
- 클라이언트 쿼리: 클라이언트에서 실행되는 파티클 쿼리를 그립니다.
라이브 세션 디버깅
라이브 게임플레이 세션에 연결하여 카오스 피직스 씬을 실시간으로 확인할 수 있습니다. 이를 통해 게임이 실행되는 동안 컨텍스트에 맞게 실시간으로 디버깅할 수 있습니다. 이 세션은 로컬(동일한 워크스테이션 또는 PIE) 또는 네트워크를 통해 수행될 수 있습니다.
이 라이브 세션은 언제든지 중지하고 녹화된 데이터를 사용하여 계속 디버깅할 수 있습니다.
서버 스테이지 디버그
현재 녹화가 가능한 솔버 스테이지는 다음과 같습니다.
- 진화 시작: 솔버 스텝이 시작될 때 모든 파티클의 스냅샷을 찍습니다.
- 통합 후: 파티클에 대해 통합 계산을 수행한 후 모든 파티클의 스냅샷을 찍습니다.
- 콜리전 탐지 넓은 페이즈: 콜리전 탐지 프로세스의 넓은 페이즈를 실행한 후 모든 중간 페이즈(바운드가 오버랩되는 모든 파티클 쌍에 대해 오브젝트가 생성됨)의 스냅샷을 생성합니다.
- 콜리전 탐지 좁은 페이즈: 콜리전 탐지 프로세스의 좁은 페이즈를 실행한 후 모든 중간 페이즈(바운드가 오버랩되는 모든 파티클 쌍에 대해 오브젝트가 생성됨)의 스냅샷을 생성합니다.
- 컨스트레인트 솔브 전: 사용 가능한 컨스트레인트를 솔브하기 전에 모든 파티클의 스냅샷을 찍습니다.
- 컨스트레인트 솔브 후: 컨스트레인트를 솔브한 후에 모든 파티클의 스냅샷을 찍습니다.
- 진화 끝: 솔버 단계가 끝날 때 모든 파티클의 스냅샷을 찍습니다.
피직스 데이터 검사하기
파티클 데이터 인스펙터
파티클 데이터 인스펙터(Particle Data Inspector) 또는 '디테일(Details)' 패널에는 씬에서 선택된 파티클 관련 정보가 표시됩니다.
인스펙터는 지정된 파티클에 대해 시각화 플래그, 회전 및 속도 등의 파티클 데이터, 파티클 다이내믹스 및 파티클 질량 프로퍼티 세팅을 표시합니다.
콜리전 데이터 인스펙터
콜리전 데이터 인스펙터 는 선택된 파티클의 데이터를 표시합니다. 파티클을 선택하면 드롭다운을 통해 해당 파티클이 속한 모든 중간 페이즈 쌍 을 확인할 수 있습니다. 특정 중간 페이즈 쌍을 추가로 선택하고 검사하여 컨스트레인트 데이터를 확인할 수 있습니다.
중간 단계 쌍 은 바운드가 오버랩되는 모든 파티클 쌍에 대해 생성되는 오브젝트입니다. 잠재적으로 충돌을 유발하는 셰이프 세트를 빌드하고 틱마다 해당 쌍에 대해 콜리전 탐지를 실행합니다.
컨택트를 선택하면 컨택트의 모든 데이터와 파티클이 속한 컨스트레인트 데이터를 확인할 수 있습니다.
씬 쿼리 인스펙터
씬 쿼리 인스펙터(Scene Query Inspector) 는 씬 내 특정 씬 쿼리를 검사하는 데 유용합니다. 시각화된 쿼리를 선택하면 결과를 수집하기 위해 수행된 모든 내부 페이즈(SQ 탐색)를 포함한 관련 데이터를 모두 인스펙터에서 확인할 수 있습니다.
씬 쿼리는 평가가 필요한 오브젝트의 양을 줄이기 위해 AABBTree 같은 가속 구조에 대해 수행됩니다. 쿼리가 수행되면 쿼리 영역에 해당하는 가속 구조 내 노드가 평가됩니다. 노드 평가는 씬 쿼리 인스펙터가 SQ 탐색으로 표시하는 것으로, 쿼리의 특정 포인트에서 수집된 데이터를 볼 수 있습니다.
'씬 쿼리 인스펙터'에는 녹화된 각 SQ 탐색을 단계별로 살펴보는 데 사용되는 단계별 타임라인 컨트롤이 있습니다. 인스펙터에서 단계가 변경될 경우, 뷰포트는 선택한 단계까지 쿼리를 그리도록 업데이트됩니다.
이 기능은 쿼리 결과에 오브젝트가 포함될 것으로 예상(예: 오버랩)했지만 오브젝트가 탐지되지 않은 경우를 디버깅하는 데 유용합니다. 각 SQ 탐색을 단계별로 살펴보면 해당 오브젝트가 처음에 평가되었는지 확인할 수 있으며, 평가된 경우 무시된 이유를 조사할 수 있습니다.
일부 쿼리는 서브트레이스를 수행할 수 있으며, 이 경우 인스펙터는 부모 쿼리로 이동하는 버튼 또는 사용 가능한 경우 서브쿼리 데이터를 표시합니다.
조인트 컨스트레인트 데이터 인스펙터
조인트 컨스트레인트 데이터 인스펙터(Joint Constraint Data Inspector) 는 뷰포트에서 선택된 조인트를 검사하는 데 유용합니다. 시각화된 조인트를 선택하면 닫혀 있는 경우 인스펙터를 열고 해당 프레임 내 조인트의 상태를 표시합니다.
인스펙터는 해당 프레임에서 조인트의 상태와 해당 조인트가 각도 및 선형 임펄스를 받고 있는지 여부를 표시합니다. 또한 강성, 선형 및 각도 투영, 쇼크 프로퍼게이션, 텔레포트 거리 및 각도와 같은 다수의 조인트 세팅을 표시합니다.
카오스 비주얼 디버거 에 대한 자세한 내용은 카오스 비주얼 디버거 - 사용자 가이드를 참고하세요.