Physics Asset 이란?

피직스 애셋은 스켈레탈 메시에 사용되는 콜리전(Collision)과 물리(Physics)를 정의하는 데 사용된다.

피직스 애셋은 궁극적으로 스켈레탈 메시의 시뮬레이션을 위해 구성한다.

이는 리짓 바디(Rigid Body)와 컨스트레인트 세트를 통해 하나의 레그돌을 구성하며, 이는 인간형 레그돌에만 적용할 수 있는 것이 아니라 모든 스켈레탈 메시에 사용 가능하다.

바디와 컨스트레인트를 사용하는 어떤 피지컬 시뮬레이션도 가능하다.

하나의 스켈레탈 메시에는 하나의 피직스 애셋만 넣을 수 있다. 그래서 분리된 스켈레탈 메시의 경우 스켈레탈 메시 컴포넌트에서 켜고 끄거나 여러 설정을 진행할 수 있다.

Physics Body

요즘 나오는 AAA 급 게임들이나 여러 게임들을 보면 갈수록 복잡해져가는 3D 메시들이 실시간 물리 시뮬레이션까지 사용하고 있다.

최적화된 물리 시뮬레이션을 위해 프록시 형태를 사용해야 하는데, 언리얼 엔진의 피직스 바디를 사용하면 단순화된 형태의 3d 메시들 (박스, 구체, 캡슐, 컨벡스 헐 등)을 사용해 연산할 수 있게된다.

Physics Asset Editor

피직스 애셋을 수정하기 위해서는 피직스 애셋 에디터를 사용하여야 한다.

이 에디터에서는 스켈레탈 메시에 연결된 바디 및 컨스트레인트 계층구조에 대한 시각화와 제어 기능을 제공한다.

스켈레탈 메시 래그돌 시뮬레이션이나 콜리전에 사용되는 바디 및 컨스트레인트 역시 여기서 생성할 수 있다.

피직스 애셋 에디터의 UI는 다음과 같다.

1 : 툴바

피직스 애셋 에디터의 툴바 에는 피직스 애셋에 가한 변경사항을 저장하는 옵션 또는 콘텐츠 브라우저에서 찾기 기능이 제공된다.

특정 피직스 애셋에 프리뷰 메시 를 설정, 선택된 바디에 대한 콜리전 활성화 / 비활성화, 피직스 애셋 래그돌의 시뮬레이션 세팅 등을 설정할 수 있다.

툴바 멀리 오른쪽에는 에디터 툴바 가 있어서 언리얼 엔진 4 의 다양한 애니메이션툴 사이에서의 전환이 가능하다.

2 : 스켈레톤 트리

현재 스켈레톤 애셋의 스켈레톤 계층구조가 표시된다, 여기서 바디와 컨스트레인트를 만들 수 있다.

3 : 컨스트레인트 그래프

컨스트레인트 그래프에서는 다른 바디에 컨스트레인트 설정된 스켈레탈 계층구조 바디를 시각적으로 표현해 볼 수 있다.

이 그래프에서, 메인 바디 노드를 끌어 놓아 별도의 컨스트레인트를 만들고 컨스트레인트 설정할 새로운 바디를 설정하거나, 끝 바디를 더블클릭하여 트리를 다음 바디 및 컨스트레인트 세트로 점프할 수도 있다.

프로파일 패널에서 현재 선택된 것에 따라 어느 피지컬 애니메이션 및 컨스트레인트 프로파일이 할당되었는지도 확인할 수 있다.

4 : 뷰포트

뷰포트 창에서는 변경사항이나 바디 위치 미리보기 또는 피직스 래그돌 시뮬레이션 미리보기가 가능하다.

뷰포트에서, 라이팅 모드 변경, 스켈레톤의 컨스트레인트, 바디, 본 표시 또는 숨김, 심지어 스켈레탈 메시를 턴 테이블에 올려놓고 자동 회전시키면서 모든 방향에서 확인하도록 할 수도 있다.

5 : 애셋 디테일 / 프리뷰 씬 세팅

디테일 패널은 메인 에디터와 비슷하다. 주로 바디 또는 컨스트레인트같은 추가된 요소의 프로퍼티를 변경하는 데 사용된다.

예를 들어, 스켈레톤에 바디 또는 컨스트레인트를 추가할 때, 스켈레톤 트리 또는 뷰포트에서 그것을 클릭하면 디테일 패널이 바디 또는 컨스트레인트 작동 방식에 관련된 옵션으로 채워진다.

프리뷰 씬 세팅 패널에서는 레벨에서 씬을 직접 구성하지 않고도 애셋이 여러 환경에서 어때 보이는지를 빠르게 볼 수 있다.

스켈레탈 메시에서 여러가지 다양한 세팅을 정의하고 적용해 두면, 에디터 내 각 애니메이션 툴 안에서 라이팅과 포스트 프로세스 이펙트 가 전부 적용된 애니메이션을 직접 재생해 볼 수 있다.

6 : 툴 및 프로파일

툴 패널에는 바디를 새로 생성하거나 선택된 바디를 재생성할 때 사용할 수 있는 옵션이 표시된다.

콘텐츠 브라우저에서 피직스 애셋을 생성할 때도 같은 옵션을 사용할 수 있으며, 그 외에는 스켈레탈 메시를 임포트할 때  피직스 애셋 생성 (CreatePhysicsAsset) 옵션이 켜져있으면 기본 세팅으로도 사용된다.

프로파일 패널에서는 프로파일을 생성한 뒤 피지컬 애니메이션 및 컨스트레인트 에 재사용할 수 있다. 이 프로파일을 통해 기본 세팅을 설정하고 다른 바디나 컨스트레인트에 빠르게 할당할 수 있다.

직접 한 번 만들어 보기

피직스 애셋을 만들 스켈레탈 메시를 고르고, 오른쪽 클릭을 해서 생성->피직스 애셋->생성 및 할당을 누르면 생성창을 불러올 수 있다.

피직스 애셋 생성 창을 불러오면 이렇게 생겨있다.

최소 본 사이즈, 물리 시뮬레이션에서 사용할 단순한 모양 타입 (박스, 구체, 캡슐, 컨벡스 헐 등), 버텍스 Weighting 타입 등등의 설정이 가능하다.

애셋을 생성하면, 자동으로 내가 골랐던 캐릭터에 내가 만든 피직스 애셋이 붙게 된다.

이렇게 만들어진 캐릭터의 피직스 애셋으로 아래같은 래그돌 실험도 가능하다.

보이는건 캐릭터만 보여도 사실 캐릭터를 감싸고있는 여러개의 Physics Asset의 충돌체들이 시뮬레이션 되고 있는 것이다. 그게 캐릭터의 본과 여러 위치에 붙어있기 때문에 캐릭터도 같이 움직이게 되는 원리이다.

이렇게하면 메시 하나하나의 연산이 필요없게 되어서 더 낮은 연산량으로 같은 결과를 볼 수 있게된다.

래그돌이 궁금하다면, 한 번 봐보길 바란다.

http://158.247.209.73/unreal-engine/ue4-%ec%97%90%ec%84%9c%ec%9d%98-ragdoll/