본문 바로가기

전체 글

(8)
스키닝 애니메이션 https://www.slideshare.net/ssuser860833/ss-250549957
모션 워핑 발표 자료 https://www.slideshare.net/ssuser860833/ss-250374025 모션 워핑 MOTIONWARPING 서승석 www.slideshare.net 언리얼 스터디에 발표할 자료 입니다.
Space Division(공간 분할) 1. 기술 분석 공간 분할은 지형을 일정크기로 나누어놓은 것을 말한다. 이 공간분할을 하는 이유는 카메라 시야 범위 내에 들어오지 않는 오브젝트나 지형을 제외시키기 위해서 사용한다. 지형 자체의 페이스가 많을 뿐더러 캐릭터 같은 경우도 시야 범위에 들어 오지 않을 경우 애니메이션을 처리할 필요가 없다. 카메라 프로스텀으로 제외 처리를 하고 있지만, 모든 오브젝트와 비교하는 것은 엄청난 연산 부하가 일어나기 때문에 공간을 분할하여 어느 공간이 카메라 프로스텀에 들어오는지 확인하는 것이 필수적으로 있어야 한다. 이러한 공간 분할 알고리즘을 사용하는데 주로 QuadTree, Octree, BSP(Binary Space Partitioning) 이 세 가지를 사용하며, 셋 다 트리 구조를 하고 있다. 1) No..
3ds Max SDK Export(Object Animation) -2- 1. 이전 글에서 애니메이션을 하는 방법에서 생기는 문제점
3ds Max SDK Export(Object Animation) -1- 3ds Max(이하 Max)는 컴퓨터 그래픽스를 위한 디자인 툴이다. 이 툴로 3D 모델링, 애니메이션을 만들 수 있고, 그 결과물을 확인할 수 있다. 3ds Max SDK는 이 디자인 툴의 플러그인을 만들 수 있는 개발자 도구다. 이 개발자 도구를 통해 Max에서 만들어진 모델링과 애니메이션 데이터를 원하는 부분만 뽑아서 개발자만의 데이터 형식으로 파일을 출력할 수 있다. 1. INode Max에서는 모든 오브젝트가 INode를 부모로 가지고 있다. 마테리얼, 메쉬, 카메라, 라이트 등의 오브젝트를 해당되는 INode를 통해 접근할 수 있다. 접근하는 방식은 함수를 통해 해당 오브젝트 타입의 주소값을 얻는 방식이기 때문에, 상속 보다는 멤버로 가지고 있다고 생각하는 것이 이해하기가 더 쉽다. INode..
DirectX11의 객체들이 제대로 Release 했는지 확인하는 방법(DirectX11의 Debugging) 1) 준비 과정 1 2 3 4 5 6 7 8 9 #if defined(DEBUG) || defined(_DEBUG) Microsoft::WRL::ComPtr dxgiDebug; if (SUCCEEDED(GetDevice()->QueryInterface(IID_PPV_ARGS(&dxgiDebug)))) { dxgiDebug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); dxgiDebug = nullptr; } #endif Colored by Color Scripter cs 이 코드를 사용한다. 디바이스를 해제하기 바로 전에 있어야 정확하게 알 수 있다. 전처리기로 Debug 모드인지 검사해야한다. Dubug 이외에 사용할 수 없기 때문. ComPtr은 마이크로소프트의 스마..
2DLibrary 정리 1차 4월 중순부터 시작해 현재까지 만든 2D 게임의 라이브러리다. DirectX를 사용하며, 이후 이미지 또한 DirectX를 통해 관련 기능을 추가할 것이다. 1. ClassDiagram 현재까지 만든 라이브러리의 클래스 다이어그램이다. 각 매니저들은 싱글턴 템플릿 클래스를 상속 받아서 싱글턴 패턴을 사용하고 있다. 매니저가 다른 곳에 객체가 생성되면 위험하기 때문에 싱글턴 패턴을 사용했다. 매니저들 밑에 클래스가 있는데 이 클래스들은 바로 위에 있는 매니저의 멤버 변수로 사용되고 있다. 이 매니저들은 SCore에서 사용하고 있다. SCore는 SDevice와 SWindow를 상속 받고 있다. SDevice는 DirectX의 초기화를 담당하는 클래스이며, SWindow는 창을 띄우는 역할을 담당하는 클래스..
Visual Studio의 disassembly로 숨겨진 작업을 찾아보자. Visual Studio(VS)에는 Disassembly 라는 기능을 지원한다. 직접 짠 C++ 코드를 디버깅 중에 assembly 코드로 볼 수 있는 기능이다. assembly상에서는 읽기 힘들 뿐이지 왠만한 작업들이 어떻게 작동하는지 숨김 없이 볼 수 있다. VS에서 편의를 위해 제공하는 기능들 또한 볼 수 있다. 그 기능들 중 일부를 살펴보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 #include int main(int argc, char* argv[]) { char c = sizeof(c); short s = sizeof(s); long l = sizeof(l); float f = sizeof(f); int i = sizeof(i); double d = sizeof(d); retu..