블로그 이미지
한국IT전문학교 게임프로그래밍 2018년 졸업생 / 배우고 익히고 정리하는 곳 무명의 공룡

카테고리

분류 전체보기 (133)
Unity (5)
AR / VR (8)
홀로렌즈2 (2)
Unity 3D 액션 게임 제작 (2)
정리 (9)
소소한 배움 (6)
그외 (7)
비공개 (56)
--이전 프로젝트들-- (0)
Tree-sha (팀 3D) (9)
Icicle Game (2D) (19)
MMD RPG (3D) (9)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

(유니티 3D) Mesh Cut

AR / VR/VR / 2018. 9. 10. 17:03

Mesh Cut이란 이름 그대로 메쉬를 자르는 기능입니다.


보통 게임에선 칼로 물건을 잘랐을 때 해당 물건이 베인 곳을 기준으로 두동강 난 형태를 연출하기 위해서 사용합니다.


이 연출을 활용하여 유명한 게임으로는 후르츠 닌자가 있습니다.


그리고 VR에는 비트 세이버가 있죠.



실시간으로 메쉬를 자르고, 나누고, 자른 부분을 채워야 하기에 꽤나 고비용임에도 불구하고 유저의 행동이 그대로 결과에 반영된다는 이 기능 연출은 매력적이지 않을 수 없습니다.


그래서 저도 한 번 해보았습니다.



Mesh Cut의 코드는 공개 되어 있는 것을 사용했습니다.


구글에 Mesh Cut이라고 검색만 해도 나오는데 https://gist.github.com/alexcmd/f4c19a24e8f48bb2aadf 링크 걸어두겠습니다.



사용 방법은 간단합니다.


GameObject[] gameObjects = MeshCut.Cut(gameObject, transform.position, Vector3.down, capMaterial);


MeshCut.Cut은 public static 함수라 어디서든 사용이 가능합니다.


 (자를 오브젝트, 자를 중심점, 잘린 오브젝트의 방향, 잘린 영역을 메꿀 Material) 을 다 채워주면 간단하게 오브젝트가 잘리고 원본 오브젝트의 속성을 지닌 잘린 오브젝트가 gameObjects[0]에, 잘려서 새롭게 생긴 오브젝트가 gameObjects[1]에 생깁니다.


예를 들어 위 스크립트 한 줄을 실행한 기본 Cube의 경우



이런 식으로 두동강 나고 오브젝트명은 각각 위가 leftSide, 아래가 rightSide란 이름으로 변경되어 생겨있습니다.


방향에 Vector3.down을 주었기 때문에 아래쪽이 잘려서 새로 생성 된 오브젝트가 됩니다.


이건 MeshCut 스크립트의 기본 설정이라 본인이 원하는데로 변경하시면 됩니다.


기본 설정을 따라가게 되면 leftSide가 원본의 컴포넌트들을 그대로 가져가게 되고 rightSide는 메쉬만을 가진 오브젝트가 됩니다.


여기서 주의할 점이 만약 기본설정으로 놔둘 시 leftSide의 콜라이더가 잘리기 전 모양을 유지하고 있다는 점입니다.


잘린 파편에도 물리 효과를 정상적으로 주고 싶다면 설정을 좀 바꿔 기존 오브젝트를 그대로 이어받는게 아닌 leftSide도 rightSide처럼 새롭게 생성 후 컴포넌트들을 달아주시면 됩니다.




현재 이 스크립트를 활용하면 잘리는 면의 크기는 무한이 됩니다.


자르다 만다거나 하는 행위는 불가능 하고 점의 위치가 꼭 오브젝트 내에 위치할 필요는 없습니다.




이걸 VR에 적용시켜 비트 세이버 마냥 검으로 자르는 행위가 하고 싶다면 간단하게 흉내낼 수 있습니다.


백터의 외적은 새로운 수직백터가 나온다는 것을 이용한 방법인데 충돌하는 순간 이전 프레임의 검의 위치와 비교해서 외적을 구하면 현재 검이 그대로 직선으로 관통했다는 가정 된 결과물이 나오게 됩니다.


유니티에선 Vector3.Cross라는 아주 편한 함수가 있어서 외적을 쉽게 구할 수 있습니다.


리턴되는 두 개의 오브젝트에 바로 Rigidbody 컴포넌트를 추가시켜주면 꽤 리얼하게 두 조각이 떨어지는 모습을 볼 수 있습니다.




만들어본 예시


베는 속도가 빠를수록 조각이 더 멀리 날아갑니다.


VR로 하면 실제로 움직일 수도 있어서 비트세이버같은 느낌도 납니다.

Posted by 무명의 공룡
, |