IT 이모저모 156

네비게이션 메쉬 + A* (Navigation Mesh + AStar)

https://blog.naver.com/jinowin/60007604437네비게이션 메쉬 + A* (Navigation Mesh + AStar): 3차원 지형을 2D처럼 간단하게 표현 하는 방식으로 Object가 이동 가능한 모든 지형을 Cell(삼각형)으로 표시 하여 A*와 같은 길찾기 알고리즘을 쉽게 적용 할 수 있게 해 줍니다. [Navigation Mesh] 1. NaviCell 만들기Cell 이란? vetex 세개로 구성되어 이루어 진 하나의 삼각형입니다. - 삼각형의 사이드 라인 세개를 만듭니다.- 평면 방정식을 위한 Plane을 생성 합니다.- Cell의 중점을 계산 합니다.- Cell의 세 사이드 라인의 중점을 계산 합니다.(mid[0], mid[1], mid[2])- Cell의 중점에서..

IT 이모저모 2018.03.05

DDS 포맷의 DXT1~5

DXT1 - A1R3G3B3, R4G4B4DXT3 - A4R4G4B4 DXT5 - A8R4G4B4( 실제 파일에는 알파가 4bit가 들어 있고, 화면에 출력될때 보간으로 8bit 보간 ) 결과적으로 DXT3, 5는 파일 용량은 같다. 실제로 화면에 그려질때 좀더 부드럽게 알파가 보이게 하려면 DXT5를 사용하면 되고, 알파가 없는 경우는 DXT1에서 알파가 없는 R4G4B4를 사용하는게 용량면에서 좋음 좀더 정리하면, 알파없는 이미지의 경우는 DXT1(R4G4B4)를 사용하고, 스프라이트 형식의 알파를 사용하는 경우는 DXT3(A4R4B4G4)를 사용하고, 부드러운 알파의 경우는 DX5(A8R4B4G4)를 사용하는게 좋음

IT 이모저모 2018.03.05

Convex Hull - Graham Scan

T -Strip LOD문서를 보다 Graham Scan알고리즘을 적용하여 convex hull을 구하는 부분이 나온다.이 알고리즘은 O(N log N)의 시간복잡도를 가지는 convex hull을 구하는 알고리즘 이다. 방법 1. 정렬 - 가장 아래의 왼쪽에 위치한 점을 기준으로 모든 점들을 반시계방향으로 정렬2. 스캔 - 기준점은 무조건 convex hull에 포함된다. 기준점을 스택에 넣고 두점까지 푸쉬한뒤 세번째 점부터 마지막 점까지 스캔을 하는데, 항상 스택의 top, top-1, top-2가 반시계 방향을 이루게 push와 pop을한다. 그렇게 하다보면 남아있는 점들 모두 convex hull을 이루는 점들이 된다.

IT 이모저모 2018.03.05

3D 평면

3D 에서 평면의 정의는 한점 P와 법선 벡터 N이 있다고 하면 점 P를 지나고 N이 가리키는 방향과 수직인 평면 즉, N dot (Q - P) = 0 인 점 Q들의 집합이라고 할 수 있다. 평면의 방정식 : Ax + By + Cy + d = 0 (여기서 x,y,z는 법선 벡터 N의 x,y,z 성분, d = - N dot P) 보통 법선 벡터 N을 크기가 1인 단위벡터로 정규화 하여 표시한다. 그렇게 하면 임의의 점 Q와 평면과의 부호가 있는 거리를 구할 수 있다. Q dot N + D (D = - P dot N ) = d(임의의 점 Q와 평면의 거리) 위의 식에서 d 가 0이면 Q는 평면위의 점이 되고 d가 0 보다 크면 평면에서 N의 방향으로 d만 큼 떨어 점이 되고 0 보다 작다면 그 반대가 된다...

IT 이모저모 2018.03.05

스텐실 버퍼

스텐실 버퍼는 후면 버퍼 및 깊이 버퍼와 동일한 해상도를 가지고 있는 버퍼이다.실제로는 깊이버퍼의 특정 비트를 사용하기 때문에 깊이 버퍼와 동일 하다. 스텐실 버퍼를 D3DFMT_D24S8 다음과 같은 인자로 생성하면 깊이 버퍼에 24bit할당, 스텐실 버퍼에 8bit를 할당해서 사용하게된다. 스텐실 테스트(참조 & 매스크) 비교 연산자 (값 & 매스크)(StencilRef & StencilMask) StencilFunc (스텐실 버퍼의값 & StencilWriteMask) DX에서는 스텐실 버퍼를 유연하게 제어하기 위해서 다음과 같은 API를 제공한다. StencilEnable : 스텐실 버퍼를 활성화 시킨다.True - 활성화False - 비활성화 StencilFunc : 스텐실 테스트가 성공 또는 ..

IT 이모저모 2018.03.05

소프트웨어 스키닝

이글은 실시간 스켈레톤 애니메이션을 구현하는 여러가지 방법을 어떻게 자신만의 스켈레톤 애니메이션 시스템을 구현 하는지에 대해 설명한다. 최종 목표는 3D MAX,Chater Studio에의해 추출된 데이터를 가지고 실시간으로 애니메이션 시키는 것이다. 애니메이션 데이터는 캐릭터의 캐릭터의 애니메이션 키 position, rotation, scale값으로 구성된다. 스킨이 어떤 본에의해 얼마나 영향을 받는지에대한 스키닝 정보도 포함 된다.(만약 vertex가 하나의 본에만 영향을 받으면 weight 는 1이된다.)BlendWeight 구조체를 다음과 같이 정의 할 수 있다. struct BlendWeight{int iVertexIndex; // blend vertex IDfloat fWeight; // 해..

IT 이모저모 2018.03.05

DX 11의 Stages

Dx11의 파이프 라인의 첫번째 스테이지는 Input-Assembler(IA) 스테이지라고 한다. 이 스테이지에서는 Direct3D가 렌더를 하기위해 필요한 정보를 설정하는 단계인다.두번째 스테이지는 버텍스 셰이더(VS)이다. 하나의 점을 Vertex(정점)라고 하고 이 정점들이 모여서 삼각형과 같은 도형을 만들게 된다. VS에서는 각각의 정점에 대해서 우리가 작성해 놓은 코드를 실행하게 된다. 또한 버텍스 셰이더는 항상 하나의 Input 정점과 Output정점을 가진다. 이 정점 데이터는 IA에의해서 버텍스 셰이더로 제공된다. 3,4,5번째 스테이지는 텍셀레이션을 다루는 선택적인 스테이지이다. 텍셀레이션은 Direct3D에 새롭게 추가된 Hull Shader와 Domain Shader를 사용 한다. 하..

IT 이모저모 2018.03.05

DirectX Tools

1. Sample Browser and Documentation- DirectX SDK Sample Brower는 예제 데모, 기술 페이퍼, 튜토리얼, 논문들을 보여주는 툴이다. Sample Brower는 DX9, DX10, DX11을 포함하고 있다. 새로운 버전이 release되면 보기를 추천함 2. PIX- PIX는 Direct3D 응용프로그램을 분석및 디버깅하는 툴이다. API콜, 타이밍 통계, 변환 전후의 메쉬정보등을 보여준다. PIX는 GPU에서 작동하는 셰이더 코드를 디버깅하는데도 사용할 수 있다. 3. Caps Viewer- DirectX Caps Viewer는 하드웨어가 지원하는 정보(Direct3D, DirectDraw, DirectSound, DirectInput)를 보여준다. 4. D..

IT 이모저모 2018.03.05

DX 11 - Direct3D 초기화

Direct3D를 초기화하기 위해서 다음 4단계가 필요하다. 1. 디바이스 타입과 feature level을 정의한다.- Direct3D 11에서는 hardware device, WARP device, software driver device 또는 reference device를 선택할 수 있다. 하드웨어 디바이스는 그래픽스 하드웨어로 동작하면 모든 디바이스중에서 가장 빠르다. 이 타입은 사용하고자하는 feature level을 하드웨어에서 지원한다면 사용할 수 있는 타입이다.레퍼런스 디바이스는 하드웨어 지원없이 CPU를 사용하여 렌더링 수행할때 사용한다. 이 방식은 매우 느리며, 비효율적이다. 그래서 이 방식은 개발용으로 밖에 사용할수가 없다. 하지만 새로운 DirectX가 relese됐는데 그 버전을..

IT 이모저모 2018.03.05