7월 16, 2017의 게시물 표시

[UNITY3D] 유니티에서 메시 임포트할 경우 탄젠트 공간 계산 옵션에 따른 버그

이미지
(유니티 5.5.x 에서 테스트)  노멀맵을 사용하고 탄젠트 공간 정보를 파일에서 Import 하지 않고, 유니티에서 제공하는 탄젠트 공간 계산법을 사용할때 발생하는 문제이다.  특히 "노멀맵 사용 & 매우 각지고 간단한 형태의 모델링 사용" 할때 잘 발생하는 문제인데, 오브젝트의 특정 면이 빛을 강하게 받는것처럼 라이트 색상이 매우 강하게 오브젝트에 맺히는 현상.  유니티 FBX 선택한뒤 보여지는 Inspector 인데, Tangents 공간계산 옵션 기본값이 Calculate Tangent Space 이다. 이것을  Calculate Legacy 혹은 Calculate Legacy - Split Tangents 둘중 하나로 선택하면 해결됨. *  원인에 대한 이유 및 예상  나는 유니티 내부 소스코드를 볼 수 없기에 추측만 할 뿐이지만, 3D 리소스를 최적화 하는 방법에 3D 메시를 이루는 폴리곤에서 위치가 겹치는 정점은 1개만 남기고 제거하는 방식이 있다. 이런 최적화 기법이 원인이 되어 발생하는 문제라고 추측된다.  하지만 두개의 정점이 위치만 같고 노멀, 탄젠트 공간등이 다른 경우가 종종 생기는데, 폴리곤이 수천개 이상으로 둥글둥글한 형태로 이루어진 메시들은 문제가 발생하지 않거나, 발생해도 눈에 잘 안띄게 된다. (예, 캐릭터, 둥근 공, 형태감 있는 바위 등등)  박스, 계단 같이 인접한 폴리곤 사이의 각도가 작아지면 두개의 폴리곤에 맞는 노멀 방향을 각각 가지고 있지 않고 어느한쪽에 종속되어 있는 정점을 가지고 있기에 빛계산이 이상해진다.  따라서 정점의 위치만으로 통합하지 않고 노멀도 동일할 경우 통합하거나 아예 통합을 시도하지 않아야 원하는 형태의 라이팅이 들어가게 된다고 생각하기에 Calculate Legacy 혹은 Calculate Legacy - Split Tangents 둘...

[엔진] 게임 엔진에서 공통적으로 겪는 문제점

   좀 다뤄봤다고 말할수 있는 게임엔진이 2개 (해당 엔진으로 개발을 1년 이상하고 적극적으로 활용한것 기준)이고, 좀 관심 가져보고 조금 살펴보기만하고 적극적으로 사용해보진 못한것 2개 정도 되었는데, 공통적으로 하는 실수들 이 생각나서 최대한 줄여서 몇가지 적어봅니다.  참고로 적극적으로 사용해본 엔진은 Gamebryo, Unity3D 이고, 조금 살펴보기만한 엔진은 Unreal Engine4, Orge3D 입니다. (Orge3D 는 기억도 안남;;) Gamebryo 와 Unity3D 사용경험으로 작성 했습니다.  < 2017년 7월 18일 기준 > * 엔진은 만능이다?  자체 제작 엔진으로 게임을 만들던 시절(DirectX SDK 을 직접 이용) 엔진에 대한 막연한 환상을 가지는 경우가 많았습니다. 그리고 다음 프로젝트에서 상용엔진을 구매해서 프로젝트를 시작했습니다.(당시에는 유명게임 엔진들을 회사에서 직접 구매해서 사용했고, 개발사 입장에서 부담스러운 가격이었습니다)   사람들은 이제 엔진을 사용해서 게임을 만들면 엄청난 게임이 나오리라 생각했지만, 실상은 그렇지 않고, 그저 조금더 시간이 단축되고 프로그래머들이 조금더 편해질 뿐 결과물은 평범했습니다.  지금은 많은 사람들이 알고 있는 점이지만 엔진홍보나 기타 교육기관에서 매우 쉽게 만들수 있다고 말하지만 실상은 그렇지 않습니다. 물론 초반에 그럴듯하게 어느정도 까지는 매우 빠르게 만들 수 있지만, 게임 완성이라는 점에서는 달라지지 않았습니다. * 멀티플렛폼 지원 엔진일 경우 테스트 (프로그래머)  알고 있는 사람들이 많지만 번거로워서 잘 지켜지지 않는 경우가 많은점 입니다. 보통 개발자는 pc에서 개발을 합니다. 엔진레벨에서 A 라는 api 가 제공될 경우 pc 에서 잘 작동하는걸 테스트 한뒤 마무리하는 경우가 많습니다.  실제로 여러번 겪은 ...

[테스트] 시작 & 테스트 페이지.

구글을 통한 블로그 시작~