분류 전체보기330 12. 맵 제작 및 자잘한 버그 수정 맵 제작 - 이전 프로젝트에서 유용하게 사용했던 DecoObject와 WallObject를 클래스로 따로 파서 충돌 유무에 따라 적절히 사용할 수 있게 했다. - 하나의 FBX로 묶여 있으나 같은 오브젝트가 여러개 있는 FBX 파일들은 인스턴싱 처리될 수 있도록 블렌더로 분리해서 최적화될 수 있도록 했다. 자잘한 버그 수정 - 협업 과정에서 Github에 업로드되는 파일 중 Engine 프로젝트에서 만들어지는 lib파일이 계속 충돌이 일어나서 gitignore에 lib파일을 업로드하지 않도록 했는데, 외부 라이브러리에서 사용되는 lib파일들이 업로드되지 않아서, 외부 라이브러리 파일들은 프로젝트 외부 폴더에서 따로 관리하도록 수정 PhysX 특성을 가진 오브젝트들을 AddPrefab으로 등록한 후 Get.. 2023. 8. 13. 11. Prefab 기능 구현 및 맵 제작 계획 수립 Prefab 기능 구현 - Prefab는 미리 만들어놓은 오브젝트 템플릿이다. - 이 기능은 사실 툴과 같이 개발되는게 가장 베스트이지만, 이번 프로젝트에서는 툴을 제외하고 그 시간에 다른 부분들에 시간을 투자하자는 전략을 세웠기 때문에 코드상에서 프리펩을 활용할 수 있도록 구현했다. - 내 엔진에선 특정 오브젝트의 상태를 저장하고, 그 오브젝트를 깊은 복사를 통해 불러와서 씬에 추가하는 용도이다. - 신경써서 작업한 부분은 모든 컴포넌트와 스크립트들에 Clone이라는 함수를 정의해서 내부적으로 얕은 복사가 일어나지 않게끔 처리해주는 부분이었다. - 이 기능이 유용하게 쓰이는 부분은 맵에 오브젝트를 배치할 때인데, 충돌체와 화면에 그려지는 FBX를 정렬하기 위해 Transform에서 회전이나 이동값을 미.. 2023. 8. 10. 10. Mesh와 Material 구조 변경 Mesh와 Material 구조 변경- 메쉬 구조의 경우도 이번에 FBX를 로드하면서 바꿔야겠다는 생각이 들었다. - 파일 하나에 여러 개의 메쉬가 존재하는 FBX 파일 특성 상 게임 오브젝트 하나당 하나의 정점 버퍼와 매칭되는 여러 개의 인덱스 버퍼를 가지고 있었던 기존 구조로 소화하기 어려웠다. - 기존 구조에서 이를 구현한다면 하나의 FBX파일을 로드하면 여러 개의 게임 오브젝트가 만들어져야 했기 때문이다. - 때문에 정점 버퍼와 그와 매칭되는 다수의 인덱스 버퍼를 하나의 MeshContainer라는 구조체로 두고, 이 구조체의 배열을 메쉬 클래스에서 관리하고, 렌더링할 때 가진 정점 버퍼와 인덱스 버퍼를 세팅해서 모두 렌더링해주는 방식으로 구현했다. struct IndexBufferInfo { C.. 2023. 8. 6. 9. Instancing 구현 Instancing이란? - 3D 공간상의 물체를 화면에 그리기 위해서 렌더링 파이프라인을 거쳐야 한다. - 같은 메쉬와 같은 머티리얼을 가진 물체가 여러 개 존재한다면, 각 물체들의 행렬값만 가져올 수 있으면 Input Assembler 단계를 거치지 않고 나머지 단계를 이어서 수행할 수 있지 않을까? - Instancing의 원리는 Input Assembler 단계에서 Vertex Buffer를 넘길 때 물체들의 행렬값을 담은 Instancing용 버퍼를 같이 넘겨서 그 버퍼를 통해 다른 물체들을 그리는 것이다. https://dev-treadmill.tistory.com/132 28. Instancing 붓 그리기로 치면, 전체적인 그림을 알고 있으면 빨간 붓을 들었을 때 이 참에 빨간 색이 들어간.. 2023. 8. 5. 이전 1 ··· 19 20 21 22 23 24 25 ··· 83 다음