본문 바로가기

전체 글339

17. PhysX를 이용한 Mesh Collider 구현 Mesh Collider란? - 현재 우리 엔진은 모든 충돌 처리를 PhysX를 통해 처리하고 있는데, 한 가지 문제점은 구부러진 펜스같은 것들은 표현하기 어렵다는 것이다. - 현재 내가 구현해놓은 Geometry는 박스, 구, 캡슐인데, 플레이어의 접근을 막기 위해서는 펜스의 모양을 흉내낸 여러개의 박스 콜라이더를 잔뜩 붙여야 했다. - 팀원과 회의를 통해 유니티에서 메쉬 콜라이더라는 충돌체를 지원한다는 얘기를 들었고 이 충돌체는 메쉬가 가진 정점과 인덱스를 이용해서 충돌체를 만들어낸다. 이와 비슷한 것을 PhysX에서 TriangleMeshGeometry라는 이름으로 지원한다는 것을 어렴풋이 알고 있었기 때문에 PhysX Docs를 참고해서 기능을 구현할 수 있었다. - 우리 엔진에서 메쉬란 Mesh.. 2023. 9. 12.
16. 불러온 FBX 파일 데이터를 파일입출력을 통해 저장 불러온 FBX 파일 데이터를 파일입출력을 통해 저장 - FBX는 씬, 카메라, 조명과 같은 다양한 정보들을 포함하고 있다. - FBXLoader 클래스는 여기서 메쉬에 해당하는 것들만 추출해서 저장하는 역할을 하는데, 트리를 재귀적으로 탐색하는 구조다보니, 시간이 오래 걸린다는 단점이 있다. - 애니메이션 클립의 경우 최종 행렬을 구하는 로직이 모든 부모 좌표계로 향하는 행렬을 곱해줘서 구하는 구조이기 때문에 이 부분이 특히 시간이 오래 걸린다. - 한 번 불러오고 난 후에는 그냥 불러온 데이터를 파일입출력을 통해 바이너리로 저장하고 다음부턴 그 파일을 다시 불러오는 식으로 구현하면 빠르지 않을까? - 오랜만에 파일 입출력을 사용해서 꽤나 애먹긴 했지만, 그래도 나름 성공적으로 구현했다. void Mes.. 2023. 8. 25.
15. 맵 제작 작업 진행 맵 제작 작업 진행 - 우리가 구현해야 할 맵의 종류가 많아서, 맵에 많은 시간이 소요될 것 같아 나도 붙어서 맵 작업을 진행하기로 했다. - 맵 제작을 위해 간단한 툴을 구현했는데, IMGUI를 사용하지 않고, 창에 폰트만 띄우는 방식으로 구현했다. - 특정 오브젝트를 움직일 수 있게끔 스크립트를 작성해서 원하는 위치에 배치한 후, Tranform 정보를 그대로 코드창에 기입하는 방식. - 1번, 2번, 3번 숫자키를 통해 Scale / Rotation / Translation 각각을 수정할 수 있도록 했다. - 이 방식은 우리 팀원의 아이디어를 참고해서 제작하였다. - 툴을 사용하면 맵을 파일로 저장해야 하는 복잡성이 있으나, 이 방식을 통해 맵을 파일로 저장하지 않으면서도 툴을 사용하는 것과 같은 .. 2023. 8. 22.
14. HDR 구현 및 림 라이트 구현 HDR 구현 - HDR이란 화면 픽셀들의 평균 휘도 값을 구해서 LDR에서 표현할 수 없는 색의 범위를 표현할 수 있게 해주는 기술이다. - 우리 게임에서 HDR을 구현하는 이유는 색의 표현 범위를 넓혀서 화면 후처리 기술들을 돋보이게 하기 위함이다. - HDR은 총 세 단계의 과정을 거치는데, 그 과정은 아래와 같다. 1. 다운스케일 - 다운 스케일을 하는 이유는 이후 블러나 블룸 효과를 넣을 때 성능 향상을 위한 것도 있지만, - 가장 중요한 목적은 HDR에 꼭 필요한 평균 휘도값을 구하는 것 - DownScale4to4, DownScale1024to4, DownScale4to1 등과 같은 함수들을 통해 다운스케일을 진행하고 평균 휘도값을 계산한다. - 평균 휘도값을 구할 때 LUM_FACTOR라는 .. 2023. 8. 18.