UDN
Search public documentation:

PhysXProfilingHomeKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 퍼포먼스, 프로파일링, 최적화 > PhysX 피직스 시뮬레이션 프로파일링

PhysX 피직스 시뮬레이션 프로파일링


개요


플레이 도중 PhysX 피직스 엔진을 통해 오브젝트에 피직스 시뮬레이션을 돌리면 게임에 현실성과 시각적인 세련미를 드높일 수 있습니다만, 퍼포먼스에 악영향을 끼칠 수도 있다는 점을 감안해야 합니다. 피직스 시뮬레이션을 감시하고 분석하기 위해 언리얼 엔진 3 에는 정보를 출력하고 시각화시켜주는 내장 기능이 몇 가지 포함되어 있습니다. 엔비디아가 제공하는 써드 파티 툴로도 매우 자세한 프로파일링이 가능합니다.

STAT 명령


STAT 명령은 프로파일링 방법 중 가장 자주 사용되는 유용한 방법입니다. STAT 명령을 사용하면 내부적으로 어떤 일이 벌어지나 실시간으로 알 수 있는 통계 그룹을 화면상에 띄워볼 수 있습니다. 이를 통해 게임내 문제를 일으키는 부분으로 이동하여 뭐가 문제인가 즉시 확인해 보는 작업이 매우 쉬워 집니다.

stats.jpg

STAT PHYSICS

STAT PHYSICS 명령은 PhysX 피직스 엔진에 관한 통계를 나타냅니다.

  • Novodex Allocator Time 노보덱스 얼로케이터 시간 - PhysX 로의 메모리 할당입니다.
  • Physics Stats Time 피직스 통계 시간 - 피직스 시스템에 대한 통계 캡처입니다.
  • Fluid Mesh Emitter Time -
  • Broadpahse GetPairs Time -
  • Broadphase Update Time -
  • Nearphase Time -
  • Solver Time -
  • Substep Time 서브스텝 시간 - 평균 서브스텝 시간입니다.
  • Phys LineCheck Time -
  • Phys Wait Time -
  • Phys Events Time -
  • Fetch Results -
  • Start Physics Time -
  • Total Dynamics Time -

  • Novodex Allocation Size 노보덱스 할당 크기 - PhysX 에 할당된 메모리 총량입니다.

  • Novodex Allocation Count 노보덱스 할당 횟수 - PhysX 에 메모리가 할당된 횟수입니다.
  • Num Substeps 서브스텝 수 - 타임 스텝을 분할한 서브 스텝 수입니다.
  • Total SW Dynamic Bodies 총 SW 다이내믹 바디 - 현재 시뮬레이션 스텝에 대해 씬에 있는 다이내믹 액터 수 입니다.
  • Awake SW Dynamic Bodies 깬 SW 다이내믹 바디 - 슬리핑 그룹(island) 일부가 아닌 다이내믹 액터 수 입니다.
  • Solver Bodies 솔버 바디 - 현재 스텝에 있는 솔버 바디 수(, 즉 컨스트레인트(제약) 대상 바디 수) 입니다. 2.6 에서는 지원되지 않습니다.
  • Num Pairs 페어 수 - 현재 시뮬레이션 스텝에 대한 씬에 있는 모양 페어 수입니다.
  • Num Contacts 컨택트 수 - 현재 시뮬레이션 스텝에 대한 씬에 있는 컨택트 수입니다. 2.6 에서는 지원되지 않습니다.
  • Num Joints 조인트 수 - 씬에 있는 조인트 수입니다. 참고로 씬에 있는 모든 "데드 조인트"를 포함한 수치입니다 (NxScene.releaseActor 참고).
  • Num ConvexMesh 컨벡스 메시 수 - 씬에 있는 PhysX 컨벡스(볼록) 메시 수입니다.
  • num TriMesh 트라이 메시 수 - 씬에 있는 PhysX 트라이앵글 메시 수 입니다.

STAT PHYSICSCLOTH

STAT PHYSICSCLOTH 명령은 PhysX 클로쓰 시뮬레이션 관련 정보를 나타냅니다.

  • Total Cloths 총 클로쓰 - 총 클로쓰 시뮬레이션 수입니다.
  • Active Cloths 활성 클로쓰 - 활성 클로쓰 시뮬레이션 수입니다.
  • Active Cloth Vertices 활성 클로쓰 버텍스 - 활성 클로쓰 시뮬레이션에서 시뮬레이팅중인 버텍스 수입니다.
  • Total Cloth Vertices 총 클로쓰 버텍스 - 모든 클로쓰 시뮬레이션의 총 클로쓰 버텍스 수입니다.
  • Active Attached Cloth Vertices 활성 부착 클로쓰 버텍스 - 활성 클로쓰 시뮬레이션에 부착된 버텍스 수입니다.
  • Total Attached Cloth Vertices 총 부착 클로쓰 버텍스 - 모든 클로쓰 시뮬레이션에 부착된 버텍스 총 수입니다.

STAT PHYSICSFIELDS

STAT PHYSICSFIELDS 명령은 PhysX 포스 필드 관련 정보를 나타냅니다.

  • CylindricalForceFieldTick 원통형 포스 필드 틱 - 원통 포스 필드를 틱합니다.
  • RadialForceFieldTick 방사형 포스 필드 틱 - 방사형 포스 필드를 틱합니다.

STAT PHYSICSFLUID

STAT PHYSICSFLUID 명령은 PhysX 플루이드(유체) 이미터 관련 정보를 나타냅니다.

  • PhysXEmitterVertical Tick Time -
  • PhysXEmitterVertical Sync Time -

  • Total Fluids 총 플루이드 - 총 PhysX 플루이드 시뮬레이션 수입니다.
  • Total Fluid Emitters 총 플루이드 이미터 - 총 PhysX 플루이드 이미터 수입니다.
  • Active Fluid Particles 활성 플루이드 파티클 - 활성 시뮬레이션의 플루이드 파티클 수입니다.
  • Total Fluid Particles 총 플루이드 파티클 - 총 플루이드 파티클 수입니다.
  • Total Fluid Packets 총 플루이드 패킷 - 총 플루이드 패킷 수입니다.

게임내 시각화


NXVIS 명령은 피직스 시뮬레이션 관련 다양한 데이터를 플레이 도중 뷰포트에 직접 표시하는 옵션을 선택하여 사용할 수 있습니다. 뭐가 어떻게 돌아가는가를 완전 대화식으로 알아볼 수 있는 것입니다.

예를 들어 NXVIS COLLISION 명령으로 피직스 콜리전 프리미티브를 표시할 수 있습니다:

nxvis_collision.jpg

NXVIS 명령에 사용가능한 옵션 목록과 그 각각에 대한 설명은 Console Commands KR 페이지의 피직스 명령 부분을 참고하시기 바랍니다.

PhysX Visual Debugger


PhysX Visual Debugger 는 엔비디아가 제공하는 어플리케이션으로, 언리얼 엔진 3 에서 플레이 도중 실행되고 있는 피직스 시뮬레이션에서 데이터를 캡처하여 분석하는 데 사용됩니다.

vrd.jpg

내려받아 설치하기

PhysX Visual Debugger 는 nVidia Developer Support 사이트에서 내려받을 수 있습니다. 다음 위치로 찾아가시면 됩니다:

  • Online Support > Downloads > PhysX Tools
    vrd_download.jpg

주: 등록된 개발자만이 PhysX Visual Debugger 다운로드 페이지 접근할 수 있습니다. Developer Support 사이트의 Sign In 페이지에서 계정을 요청하시면 됩니다.

설치하고나면 시작 버튼 메뉴(> 모든 프로그램 > NVIDIA Corporation > NVIDIA PhysX Visual Debugger)에서 PhysX Visual Debugger 를 실행할 수 있습니다. 어플리케이션을 설치한 디렉토리로 이동하여 .exe 파일을 직접 실행해도 됩니다.

디버깅 세션 수행하기

어플리케이션이 실행된 상태로 게임에서 다음 명령을 사용하면 디버거에 연결할 수 있습니다:

  • 원래 명령
    • nxvrd connect [호스트 IP 주소] - 오브젝트 디버깅 제공

  • 새 명령
    • nxpvd connect_object [호스트 IP 주소] - 오브젝트 디버깅 제공
    • nxpvd connect_profile [호스트 IP 주소] - APEX 용 프로파일링 디버깅 제공

호스트의 IP 주소는 (추가 ini 세팅이 필요한) 콘솔에서 실행할 때만 필요합니다. (PC 버전은 퍼포먼스야 물론 다르겠지만 피직스 오브젝트 데이터는 같으니, 그걸로 시작합시다.) PC 에서 실행할 때는 알아서 로컬로 연결합니다. 그러면 "클립" 녹화가 시작되어 나중에 살펴볼 수 있습니다. 녹화가 처음 시작되는 초기에는 좀 긴 포즈가 있을 테지만, 그 이후 런타임 영향은 미미할 것입니다. 클립 녹화를 중지하려면:

  • 원래 명령
    • nxvrd disconnect

  • 새 명령
    • nxpvd disconnect

그러면 씬이 게임에서 실행되고 있는 맵의 표현으로 채워집니다.

vrd_scene.jpg

이제 디버거에서 PhysX 데이터를 분석할 수 있습니다. (뭔가 나타나게 하려면 슬라이더를 조금 문질러야 할 수도 있습니다.) 퍼포먼스 문제를 잘 나타내 주는 표지로써 찾아보기 가장 쉬운 것 중 하나는, 씬의 액터 수 입니다. 크게 뛰어오르는 것은 피할수도 없고 좋지도 않지만, 크게 떨어지는 것이 사실 퍼포먼스에 더 문제가 되니 잘 지켜 보시기 바랍니다. 오브젝트 카운트 창을 불러 오려면:

  1. All Objects 패널이나 탭이 이미 보이지 않는다면 열어줍니다.
    vrd_all_objects.jpg
  2. 리스트 뷰의 NxScene 항목을 확장한 다음 "Scene stats" 를 선택합니다.
    vrd_scene_stats.jpg
  3. 왼편의 Inspector 창에서 "Number of actors" 를 찾습니다.
    vrd_num_actors.jpg
  4. "Graph Number of actors for Scene stats" 를 선택합니다.
    vrd_num_actors_menu.jpg
  5. 오른쪽에 씬에 있는 피직스 앳터의 수 타임라인이 표시되는 탭이 새로 열릴 것입니다.
    vrd_num_actors_graph.jpg

세션 프로파일링 도중엔 다음과 같은 명령이 유용합니다. 액터를 선택한 상태에서:

명령 설명
Alt + Z 선택된 액터 포커스
Alt + T 선택된 액터 추적

Dynamic Commands 메뉴 안에는 Graph contact characteristics, Graph inner/outer frame times (PhysX 3.0) 등 디버깅 세션 도중 사용할 수 있는 명령도 있습니다.

어노테이션

어노테이션(Annotation, 주석달기)을 통해 관심 프레임과 프로퍼티에 표시해 놨다가 언제고 건너뛰어 빠르게 볼 수 있습니다. PVD 파일을 (PhysX 서포트 팀에) 회람시킬 때, 사람들이 어노테이션만 클릭해도 PVD 가 "여기서부터 박스가 삐져나감" 같은 식의 관심 프레임으로 건너뛸 수 있으니 그런 경우에 유용합니다.

어노테이션을 만들려면:

  1. 관심가질 만한 것이 발생하는 프레임으로 이동한 다음 Ctrl + Alt + A 키를 누릅니다. Create Annotation 대화창이 뜹니다.:
    vrd_create_annotation.jpg
  2. 새 어노테이션의 NameDescription 을 입력합니다:
    vrd_annotation_data.jpg
  3. vrd_ok_button.jpg 버튼을 클릭하여 어노테이션을 만듭니다. Annotations 패널에 나타날 것입니다:
    vrd_annotations.jpg

프리퍼런스

PhysX Visual Debugger 의 프리퍼런스(Preference, 개인설정) 패널을 통해 뷰포트 내 부가 정보 표시, 파일 저장 위치, 뷰포트 조종 방식 등등을 환경설정할 수 있습니다.

Preferences 패널은 View 메뉴를 통해 접근 가능합니다:

Capture & Playback

Capture & Playback 은 데이터의 캡처 및 표시 방식을 환경설정합니다. 여기서 특히 눈여겨 볼만한 세팅은:

  • Temp Directory - 임시 파일이 생성되고 저장되는 디렉토리를 지정할 수 있습니다.
  • Navigation Scheme - 뷰포트 조종 방식을 설정합니다. Maya 스키마를 사용하면 액터 선택을 클릭 한번으로 할 수 있으니 도움이 될 수도 있습니다.

Visualization

Visualization (시각화) 부분의 세팅은 어떤 부가 데이터를 다른 뷰포트 전용 옵션과 함께 표시할지를 제어합니다.

  • Contacts - 콜리전 접촉면을 표시합니다.
  • Bounding Boxes - 액터의 바운딩 박스를 표시합니다.
    vrd_bounding_boxes.jpg
  • Center of Mass - 액터의 질량 중심을 표시합니다.
    vrd_COM.jpg
  • Frames - 좌표 기준 프레임을 표시합니다.
    vrd_frames.jpg
  • Velocities - 이동 액터의 속도를 표시합니다.
    vrd_velocities.jpg
  • Transparency - 액터를 투명하게 그립니다.
  • Transparency Amount - 투명을 사용할 때 투명한 액터를 그리는 방식을 결정합니다.
    vrd_transparency_low.jpg vrd_transparency_high.jpg
  • Gizmo Scale - 프레임, 질량 중심 등을 그릴 때 사용할 기즈모 크기입니다.
    vrd_gizmo_scale_1.jpg vrd_gizmo_scale_4.jpg
  • Culling Far Distance - 뷰포트에 얼마나 멀리 있는 오브젝트를 그릴지 입니다.
  • Culling Near Distance - 뷰포트에 얼마나 가까이 있는 오브젝트를 그릴지 입니다.
  • Camera Speed Scale - 뷰포트를 조종할 때 카메라의 이동 속도입니다.

Coordinates

  • Orientation - 왼손 또는 오른손잡이로 방향을 설정합니다.
  • Up Axis - 뷰포트에서 윗축으로 사용할 축을 설정합니다.

기타 세팅 관련 세부 정보는, Help 메뉴의 도움말을 참고하시기 바랍니다.