일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2294
- RVO
- UnrealEngine5
- 줄 세우기
- baekjoon
- directx
- UE5
- 팰린드롬 만들기
- 오블완
- Programmers
- GeeksForGeeks
- UnrealEngine4
- C
- 1563
- 백준
- const
- 프로그래머스
- softeer
- DeferredRendering
- C++
- IFileDialog
- Unreal Engine5
- NRVO
- algorithm
- 언리얼엔진5
- 티스토리챌린지
- RootMotion
- DirectX11
- Frustum
- winapi
- Today
- Total
목록ComputerGraphics/My Project (15)
Game Develop
-> 윈도우크기와 같은 크기의 그림자깊이맵텍스쳐. ->윈도우맵보다 8배 큰 그림자깊이맵 텍스쳐. 근데 8배나 늘려야 저정도 퀄리티가 나온다는게 영 이상하다;;
그림자매핑을 구현하긴 했는데, 그림자퀼리티가 너무 떨어진다. 고해상도의 그림자맵을 사용하거나 CascadeShadow를 적용해야할 거 같긴 한데... 고해상도 그림자맵은 아마 시범삼아 한번 시도는 하겠지만, 결국에는 CascadeShadow를 적용해야 할 것이다.
1. 몬스터 증발버그 해결 (바로 이전 글에 올려놨던) 2. 몬스터가 공격도중에 플레이어가 기본공격을할때 특정타이밍에 충돌 체크가 안되던 점 해결 -> 알고보니 너무 가까워서 애초에 충돌이 안났던 것. 거리만 조금 늘려주니 잘 체크됨. 너무 허무했다. 3. 몬스터 거리에 따른 몬스터체력UI Zsorting. 4. 플레이어 애니메이션 여러개 추가... =========================================================================================== 전부해결
예전에 2D포폴했을때는 몬스터->플레이어의 방향벡터를 정규화하는 과정에서 nan값이 발생했었다. 분모에 0이 들어가면 안되는데, 몬스터랑 플레이어랑 거의 겹쳐져버리면 x2-x1값도 0, y2-y1값도 0이라 분모에 루트0값이 들어가버려서 nan값이 발생했었다. 근데 이번에도 몬스터가 증발하길래 열심히 추적해서 해결했다. 먼저 여차저차해서 몬스터의 WorldMatrix값에 nan값들이 포함되어있는걸 확인 -> rotation.y가 nan값이 발생되는걸 확인-> assert이용해서 어떤 함수에서 rotation.y에 nan값이 대입되는지 확인 -> 해당함수 벡터값 다 출력찍어봐서 확인 -> cmath::acos 함수에서 nan값이 리턴(!). acos 관련 글 : https://runebook.dev/ko/..
그런데 코드 다시 짜야할 것 같다. UI구현은 처음이다보니 어떤 변화에대한 오프셋값을 구해야하는지 몰랐었는데 구현하다보니 머리속이 정리가 되서 구해야할게 정해졌다. 어떻게해야하는거를 모르는게 아니라 뭘 해봐야 할 지를 몰랐었다. 일단 해야할 것. 윈도우크기는 고정인 상태에서 UI크기 조절을 통해 위치값 구하기. 즉 스케일값에 대한 offset값을 구하기.
포폴에 너무 인게임컨텐츠가 부실해서(심지어 UI도 구현을 안했었다) 옵저버패턴 활용해서 UI코드를 작성하는 중이다. 인게임에 UI를 배치하면 위치조정을 해야하니 그냥 Transform 클래스에 TRS값 조절(Translation,Rotation,Scale)하는 ImGui윈도우를 렌더하는 함수를 추가했다. ImGui윈도우를 생성할때는 고유이름으로 생성해야하는데, 중복될경우 한개만 렌더가 된다. 꼭 이거때문이 아니더라도 각 오브젝트의 이름을 고유값으로 설정하고 싶었다. 그래서 트랜스폼을 상속받는 객체가 태그네임을 Set할 때 고유한값으로 Set할 수 있도록 코드를 작성했다. 대충 로직은 아래처럼 짰다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23..
내 포폴에 적용중인 Assimp버전이 너무 오래된 나머지, 믹사모에서 다운받은 FBX파일을 추출할 때 에러가 난다. 그래서 Assimp관련 파일들을 전부 교체했더니 에러가 떴다. 에러는 아래와 같다. 얼추 해석하면 aiMaterial::GetName()이라는 함수를 해당경로의 DLL파일에서 못찾는다..는 내용 같았다. DLL파일경로를 못찾나 싶었지만 프로젝트속성에 해당 경로는 설정이 잘 되어있었다. 뭐가 문제였나 싶었는데 에러메시지의 경로를 보니까 솔루션경로\x64\Debug 쪽으로 이어지길래 확인했더니, 해당폴더의 DLL파일이 구버전 그대로였다. 파일만교체하고 빌드가 안되는상태였어서 그런 것 같다. (정확히는 모르겠다.) 어쨌든 Debug폴더의 Assimp DLL파일만 새버전으로 교체했더니 잘 실행됐다..
툴씬이 아니라 메인씬인데 너무 컨텐츠가 없는것같아서 더 구현중이다. 플레이어캐릭터와 마찬가지로 컬라이더세팅씬에서 바이너리로 저장한 파일을, 하드에웨어인스턴싱을 사용하려는 몬스터클래스에서 로드해서 적용하게 해놨다. 실제 위의 메인씬에서는 엄청 다양한 종류의 몬스터를 집어넣거나 하지는 않겠지만, 그렇게 넣는다는 가정하에 하드코딩 안하게 코드를 짜려고 하고있다. 하드웨어인스턴싱을 하는 오브젝트에 컬라이더를 셋팅하고 렌더하는 코드는 전부 동일하다. 그냥 복붙해도 된다. 미리 조금 확장성있게 짜놓으면 나중에 편하다. (딱히 뭐 대단한 코드를 짠것도 아니다) 다만 그렇다고 처음부터 확장성 있게 짠다고 시간을 너무 쓰지는 말자. 일단 되게 만든다음에 확장성있게 하든 성능최적화를 하든 하자. 내가 이런걸 조절 잘 못해..