분류 전체보기 290

C 비트연산자

1. 비트연산자의 종류 - 비트 연산자는 총 6가지가 있다. ~ : NOT, 1의 보수^ : XOR| : OR& : AND : 왼쪽 시프트 연산자>> : 오른쪽 시프트 연산자  2. ~ : NOT 연산자 - 해당 연산자는 다른 연산자와는 다르게 단항연산자이기 때문에 하나의 항을 가지며 결과는 1의 보수가 된다. - 예 :             변경 전                            변경 후    ~5 -> 0000 0000 0000 0101 -> 1111 1111 1111 1010 3. ^ : XOR 연산자 - 해당 연산자는 이항연산자로 특정한 비트에 대해 XOR 연산을 수행한다. - 배타적 논리합이라고도 하며 비교되는 두 대상이 같은 값이면 0, 아니면 1의 연산을 수행한다. - 예 ..

Direct X - 키 프레임 애니메이션

키 프레임 애니메이션 시스템 설계 앞서 개발한 프레임워크에 새로운 클래스를 추가했다. ZTrack : 키 프레임 애니메이션을 보관하고 있다가, 원하는 프레임에서의 애니메이션 행렬을 구해주는 것, ZNode에 추가되며 ZNode의 Animate()함수가 조금 변형될 것이다. 개발자에 따라서 ZTrack에 해당하는 클래스를 ZNode가 아니라 ZBone에 포함시키는 사람도 있다, 이럴 경우 철저하게 뼈대 애니메이션만 지원하는 구조가 된다. 이번에 구현할 애니메이션 엔진은 메시에 직접 키값도 넣는 방식을 지원할 예정이므로 ZNode에 ZTrack클래스를 삽입하였다. 실제 구현 - ZTrack #ifndef _ZTRACK_H_ #define _ZTRACK_H_ #include "define.h" #include..

Graphics/DirectX 2014.10.09

Direct X - 계층구조 2

실제구현 - ZNode ZNode 클래스 선언부를 보도록 하자 class ZNode { protected: enum NODETYPE { NODE_NODE, NODE_BONE, NODE_MESH }; // 현재 지원하는 노드의 종류 int m_nNodeType; /// 노드의 종류 int m_nObjectID; /// 오브젝트 ID int m_nParentID; /// 부모의ID int m_nMaterialID; /// 재질의 ID D3DXVECTOR3 m_bboxMax; /// 바운딩 박스의 최대값(max) D3DXVECTOR3 m_bboxMin; /// 바운딩 박스의 최소값(min) D3DXMATRIXA16 m_matLocal; /// local TM 행렬(불변) D3DXMATRIXA16 m_matAn..

Graphics/DirectX 2014.09.30

아키텍쳐, 프레임워크, 플랫폼

아키텍처, 프레임워크, 플랫폼. 상당히 많이 헷갈려서 검색을 해보았습니다. [아키텍처: S/W 주요 설계 구조] S/W의 특징들을 결정짓는 주요 설계 구조이다. 즉, S/W의 구성 요소 및 이들간의 인터페이스, 동작 방식 등의 특징들을 결정짓는 모든 설계 구조를 말한다. 이는 S/W의 주요 특징을 결정짓고 개발에 미치는 영향도 매우 커서 가장 중요한 부분이라고 할 수 있다. [프레임워크: S/W 뼈대 구조] 프레임워크는 S/W가 개발될 수 있는 뼈대 구조이다. 지원 프로그램, 라이브러리, 언어, 다른 S/W 구성 요소들을 엮어 주는 역할을 한다. 그리고 플랫폼과 구분되는 점은 프로그램 개발을 위한 부분만을 갖기에 완전한 S/W 실행 환경이 되지 않는다. [플랫폼: S/W 실행 환경] 가장 일반적이면서도 ..

Basics/Programming 2014.09.23

Direct X - 계층구조

계층 구조의 수학적 근거 먼저 계층 구조를 구현하는건 다음의 수식을 따른다고 했다, 여기에 들어갈 값을 구할 수 있어야 계층구조를 구현할 수 있다 차근차근 구해봅시다. Vworld = Vlocal * Mchild * Mparent : 식 1 맥스에서 데이터를 추출하면 가장 쉽게 뽑아낼 수 잇는게 바로 Mtransform이다. 요고는 다음과 같은 용도로 사용된다. Vworld = Vlocal * Mtransform : 식 2 위의 식과 아래의 식을 비교해보자, 일반적으로 맥스에서 추출해낼 수 있는 데이터는 Vworld와 Mtransform의 2가지 값이, 요고로부터 우리는 Vlocal의 값을 구할 수 있다, Vworld = Vlocal * Mtransform을 조금 변형해보자.. 양변에 M-1transfo..

Graphics/DirectX 2014.09.16

Direct X - 스크립트와 XML파서

앞으로 사용하게 될 맥스 데이터 추출기와 XML 파서에 대해 간략하게 살펴보자 스크립트 3D MAX에서 데이터를 추출하는데에는 스크립트 방식을 사용하는게 편리하다. 전체적으로 ZUtility라는 클래스와 ZExport라는 2개의 클래스로 만들어져 있다. ZUtility는 이름처럼 ZExport 클래스에서 사용할 유용한 함수들로 구성되어있다. XML 데이터 파서 XML을 사용하면 기본적인 파싱 작업을 파서가 대신 해주기 때문에 우리가 만들려는 데이터 파서같은 경우 비교적 쉽게 개발할 수 있다. XML데이터 파서 클래스 ZXML : XML 파일을 열고 값(element, attribute)을 읽어온다 ZCParser : XML 파일을 파싱한다(ZCParsedData 객체에 값을 채워 넣는다) ZCParsed..

Graphics/DirectX 2014.09.05

Direct X - 애니메이션 기법

애니메이션 기법 지금까지 3D 표현에 있어서 많은걸 공부했다. 이제는 캐릭터에 영혼을 불어넣는 캐릭터 표현을 다루어볼 차례다. 캐릭터 표현 기술은 모든 3D 기술중에서 가장 고난이도의 기술을 요구하며, 무엇보다도 3D 이론에 대한 정확한 이해가 필! 쑤! 적인 요소이다. 캐릭터 애니메이션 캐릭터를 표현하는 방법은 결국 애니메이션 기법과 밀접하게 연관되어 있다. 우리는 예술가가 아니기 때문에, 예술적, 미적 관점은 약간(쵸큼)줄이고.. 요런 메시들의 집합을 어떤 애니메이션 방식과 결합시킬것이냐에 따라서 캐릭터의 표현방식과 한계가 정해지게 된다. 캐릭터 애니메이션 방식 (대략적 다섯개만) 1. 정점 애니메이션 2. 계층적 애니메이션 3. 뼈대 애니메이션 4. 스키닝 5. 역기구학 이제, 이것들에 대해 알아보..

Graphics/DirectX 2014.09.03

Direct X - 균열 방지

구멍이 보이시죠??^^ 균열방지 LOD를 적용하면서 균열이 생긴걸 봤다. 한번 땜빵해보자 결국은 LOD 단계가 다른 메시들이 만나는 경계부분에 때우기용 분할 삼각형을 추가해주면 된다. 균열부위 땜질하기 균열된 부분을 해결하려면 경계부분에 추가로 삼각형을 몇개 끼워넣으면 되는데 다음과 같은 경우를 생각해보자 균열이 생길 수 있는 경계선 부분이 땜질 삼각형으로 덮이기 때문에 균열이 발생하지 않는다. 이런 땜질 삼각형을 LOD단계가 달라지는 모든 노드에 상하좌우 네방향으로 만들어주면 된다. 균열부위를 땜질하려면 현재 자신의 노드 이외의 이웃한 노드들의 정보도 있어야하는데, 그러기 위해서 4가지 함수가 추가되었다. /// 이웃노드를 만든다.(삼각형 찢어짐 방지용) void _BuildNeighborNode( Z..

Graphics/DirectX 2014.08.27

Direct X - LOD (Level Of Detail)

LOD 메시 모델링 데이터의 정밀도를 단계별로 조정하는 기술 LOD는 크게 정적 LOD와 동적 LOD로 나눌 수 있다. 지형 처리에서 사용되는 방법은 대부분 동적 LOD이다. LOD가 필요한 이유 LOD기술은 속도와 질 사이의 타협속에서 생겨난 기술이다. 질이 너무 좋은 화면은 속도가 느리게 되고, 반면 속도에만 너무 치중하게되면 화면의 질이 떨어지는게 당연한 것! 질을 적게 떨어뜨리면서 속도도 빠른 렌더링 기술을 개발하는 과정에서 태어난 기술이 LOD라는 기법이다. 메시 하나를 표현하는데도 메시를 몇개로 분할하느냐에 따라 성능이 달라지는데, 카메라와 물체간의 거리를 측정하여 카메라와 가까운 거리에 있는 물체는 정밀한 메시를 사용하고, 거리가 멀어질 수록 낮은 단계의 메시를 사용하는 기법이 정적 LOD이..

Graphics/DirectX 2014.08.21