2017의 게시물 표시

[UNITY3D] 쉐이더 내에서 "행렬 * 벡터" 연산

mul(UNITY_MATRIX_MVP, *)  <== 이런 형태의 "행렬 * 벡터 연산"에서 행렬과 벡터길이가 맞지 않으면, PC 에선 적절히 변형해서 적용되지만 안드로이드, iOS 같은 모바일 기기에서 쉐이더 에러발생함. (쉐이더를 이용하는 모델링들이 분홍색으로 출력됨) mul( (float3x3)UNITY_MATRIX_MVP, vector3 ) <== 이렇게 행렬과 벡터 크기를 정확히 맞춰줘야함.

[Unity3D] Use 32-bit Display Buffer. 옵션

이미지
RenderTexture 사용해서 알파값을 조절할 경우 ( 캐릭터 렌더링, 아이템 등드ㅇ ) "Use 32-bit Display Buffer" 체크를 끄면 안됨. 끌경우 RGBA 에서  RGB 텍스쳐로 변경됨 ( 32 bit --> 24 bit ) //- Unity 5.4.x , Unity 2017 1.x 에서 확인.

[메모] Dot product 의미

 Dot( A, B ) = |a||b| cos θ - A,B 벡터 크기가 1 이면 , A,B 벡터의 Dot product == cos θ - 이 특성과 Normalize 를 같이 이용한 3D 계산에서 활용도가 높음 . - Cosine 그래프 특성상 좌 , 우 각도 차이없이 동일한 값 유지   예시 ) Dot( Normal vector, Light dir ) è 3D 도형과 빛과의 명암 처리 Dot( View dir, reflection vector ) è specular 수치 Dot( View dir, enemy dir ) è 시야에 상대방이 보이는지 여부 판단   결론 ) 두 벡터사이의 각도차이를 쉽게 구함 .

[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 에서 잘 작동하는걸 테스트 한뒤 마무리하는 경우가 많습니다.  실제로 여러번 겪은 ...

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

구글을 통한 블로그 시작~