DirectX 3D 7개월차 김성도 3D 5인 프로젝트.

Slides:



Advertisements
Similar presentations
㈜ 금산산업 회사 소개서. 회사 소개 회사 개요 회사 연혁 공장약도 제품 소개 원료 관리 필렛 작업 염 ( 소금 ) 침지 공정 급속동결 및 진공 포장 거래처 LIST 거래처별 매출 실적 공장사진 목 차.
Advertisements

BYC 브랜드 이미지개선을 위한 CI 기획서 Branding Design consultants by Sunny Let’s make the power!
미디어 프로그래밍 II 소개.
땅 따먹기 박중규,나민하 나와 바~악!.
한국농수산식품유통공사 귀하 「국내 외식트렌드 조사」 보고서를 제출합니다
Company Introduction Ver 1.2.
School of Computer, Information & Communication Engineering
Chapter 2 정보시스템 아키텍처 (IS Architecture)
연구실 인턴쉽 안내자료 컴퓨터공학과 2017학년도 1학기.
컴퓨터 그래픽스 연구회지 2000년 5월 발표자 : 이영건 날짜 :
Deferred Shading (지연 세이딩)
kloseup GameMovie 서비스 제안
통합단말 UI Framework 컨설팅 - 디자인 시안 설명회
고급 컴퓨터 프로그래밍 팀명:지식인 팀원:홍광수 원대연 이소정.
Based on Inverse Kinematics 김동철
EPG Rendering Service ㈜ 이 파 워 게 이 트.
Animation 제작기법에 대하여 2001/03/13 미디어공학과 V 주다영.
Multimedia Programming 17: Introduction to DirectShow
WIPI 플랫폼 상의 휴대폰용 네트워크 게임 이 제걸(PL) 백 인호.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Building-Find Argument Reality
12. 데이터베이스 설계.
C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부.
C++ 프로그래밍 2007년 1학기 전자정보공학대학 컴퓨터공학부.
C++ Component System KASA 김성헌.
지도교수 확인 Planetarium 김종우 김정민 이정훈.
3D 캐릭터 애니메이션을 3D Studio MAX로 만들어보자
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
멀티미디어 기본+활용 제대로 배우기.
INDEX DirectX 9.0 진아서스무쌍(지형, 맵툴) 괴혼 따라잡기 – 첸과 공
Visual C++ Programming
MFC UI for TS Analyzer 서울시립대학교 컴퓨터통계학과 최 용 진.
ASP.NET Mobile Controls
김 정 석 Web Programming 김 정 석
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Matrix 및 Rendering 파이프라인
Real-time Tactics Game
글사랑 캡션 편집 안드로이드 앱 담당 교수님 전진우 교수님 진세훈 정상기 글사랑.
보상사업 제안서 반룡일반산업단지 사업시행자 성창아이엔디㈜ 대표 정연교님 귀하 주 식 회 사 한 국 보 상 원.
(주)크리틱 웹사이트 구축 기획안.
게임 || 충돌. 돼지고기(구경원) 구제역아 물러가라..
소프트웨어 공학 (Software Engineering)
제 1장 서론 Hello!! C 언어 강성호 김학배 최우영.
지도교수님 : 김 정배 기획 및 프로그램 : 양 승훈
AIMS 2016 설비.물류 통합 모니터링 솔루션 Advanced Integrated Monitoring Solution
수납형계단 & 바닥수족관 이다영 김수지 김은지 진윤정.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
Spring DI 이해 및 활용.
2d game pRogramming 1차 발표 이재남.
Chapter 02. 소프트웨어와 자료구조.
프로젝트 2차 발표 학번: 이름: 남준현.
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
문제해결 과정 제안서 LEARNING NETWORKS February, 2006.
김희정 Bridge Pattern.
Java 5장. 객체지향 개념 public class SumTest {
게임수학 제 9 장 가시성 판단.
Final Team Project 이 종철 김 용환
Windows System Programming
씨 름.
房思琪的初恋乐园 ‘팡쓰치’로 보는 문학의 힘 정은비.
박 현 미 울산여자상업고등학교 창업포스터 만들며 포토샵과 친해지기 박 현 미 울산여자상업고등학교.
The Graphics Process: Summary
포트폴리오 기술서 조병욱.
C++ 언어의 특징
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
Presentation transcript:

DirectX 3D 7개월차 김성도 3D 5인 프로젝트

1. Project Summary 2. Code Style 3. Technique 4 1. Project Summary 2. Code Style 3. Technique 4. Responsibility Technique 5. Project Key Information Contents

제작 기간 2012. 03. 21 ~ 2012.04.22 2012.05.07 ~ 2012. 05. 28 참여 인원 클라이언트 3명, 모델러 1명, MFC 툴 1명 담당 분야 팀장, 클라이언트 메인 프로그래머 사용언어/개발도구 C/C++, Win32 API, STL, DirectX SDK, HLSL, MFC, FMOD Sound, XML Parsing 3D Max, Photoshop, Mesh View, Direct Show, UE View 동영상 3D Team Project 동영상 링크 http://youtu.be/dx4HheZaJ6c Project Summary

1. Objected Oriented Programming 2. Access Control KeyWord, Accessor 3 1. Objected Oriented Programming 2. Access Control KeyWord, Accessor 3. Memory Leak, Debug KnowHow 4. Comment Code Style

OOP ( 1/ 2) Objected Oriented Programming Encapsulation Information Hiding 외부에서 객체 상태를 바꾸거나 허가되지 않은 동작을 요청하지 못하게 하여 안정성을 확보 Abstraction 동일한 특징을 가진 객체들을 한가지 인터페이스를 유지 효율적이고 안전한 설계 OOP ( 1/ 2)

OOP ( 2/ 2) Objected Oriented Programming Inheritance Polymorphism 기존의 클래스를 파생시켜 최대한 재활용 하여 시간과 노력을 절약 Polymorphism 똑같은 호출이라도 상황과 객체에 따라 다른 동작을 할 수 있게 하여 객체들을 사용하는 코드를 일관되게 유지 OOP ( 2/ 2)

Access Control KeyWord, Accessor 상위 클래스의 멤버 변수를 Protected 로 설정하여 하위 클래스에서만 사용할 수 있도록 하였습니다. 실제 구현 클래스는 Private 을 사용하여 외부에서의 직접적인 접근을 막았습니다. Get, Set 접근자를 지정하여 멤버변수에 직접 접근하지 못하고 간접적으로만 접근 할 수 있게 하였습니다. Access Control KeyWord, Accessor

Memory Leak, Debug KnowHow _CrtSetDbgFlag 함수와 _CrtSetBreakAlloc 함수를 사용하여 Memory Leak 발생여부 체크 두 함수로 찾을 수 없을 경우에 Visual Leak Detector 를 사용하여 Leak 발생위치를 찾음 Message Box 를 활용하여 오류 발생시 한번에 쉽게 알아 볼 수 있게 하였고, 중단점을 활용하여 값을 확인한 다음 잘못된 점을 찾아내는 방식으로 Debug를 하였습니다. Memory Leak, Debug KnowHow

주석을 최대한 활용하여 팀원들이 Frame Work 를 잘 이해하고 다시 보더라도 단번에 알아 볼 수 있도록 하였습니다. Comment

Technique List Rendering Skill Multi - Thread Texture Splatting Collision OBB, AABB, Ray Collision Design Pattern Template Factory Singleton Mediator State Strategy Algorithm DDA Algorithm Quad Tree Rendering Skill Texture Splatting Detail Map Persistence Of Vision Depth Shadow Soft Particle Water Phong Shading High Dynamic Range Lightning Lens Flare Skinning Frustum Culling Technique List

Design Pattern ( 1/ 7 ) Singleton 최대 1(N)개로 객체 생성을 제한하기 위하여 사용 충돌, Factory 등 Design Pattern ( 1/ 7 )

Design Pattern ( 2/ 7 ) Factory Method Template Method 로 구체적으로 어떤 클래스의 객체를 생성해야 할 지 미리 몰라도 쉽게 생성 생성할 객체 종류마다 하위 클래스 생성으로 확장성부여 Design Pattern ( 2/ 7 )

Design Pattern ( 3/ 7 ) State Pattern Game 을 시작할 때 Logo, Movie, Select, Game 으로 상태를 나눠서 다양하게 변경 가능하게 제작 Design Pattern ( 3/ 7 )

추가상태(Character Select, Loading) 가 필요할 경우 분기문을 수정함으로써 반영 Design Pattern ( 4/ 7 )

Design Pattern ( 5/ 7 ) Mediator 타 객체의 정보가 필요한 각각의 객체들이 필요한 정보마다 접근하지 않고 하나로 모아둠으로 M:N의 관계를 M: 1로 만들어서 개별 클래스의 재 사용성을 늘리고 순환 참조의 범위를 줄였다. Design Pattern ( 5/ 7 )

Design Pattern ( 6/ 7 ) Strategy 구현된 Rendering 기술로 여러 가지 방식을 사용해야 하는데 Mgr 클래스를 생성하여 Rendering 기술들의 인터페이스를 하나로 만들어 필요에 따라 맞는 기술을 사용하도록 하였다. Design Pattern ( 6/ 7 )

Design Pattern ( 7 / 7 ) ProtoType 자주 생성하는 객체의 정보를 미리 담아두고 필요할 때 마다 새로운 객체를 생성하여 정보를 복사하여 사용한다. 복사 생성자의 사용 Design Pattern ( 7 / 7 )

Multi - Thread Multi Thread 긴 작업을 수행 중에 프로그램의 수행을 계속하여 사용자에 대한 응답성을 증가 시킴 Critical Section 을 사용하여 하드웨어 리소스를 공유할 때 서로 간섭 할 수 없게 설계 Multi - Thread

STL : Effective Use List : 삽입/삭제가 빈번 한 객체 관리 Vector : 삽입/삭제가 빈번하지 않은 객체 관리 Map : Key/Value를 사용해 Resource 관리 STL : Effective Use

Responsibility Technique Main Frame Work Phong Shading Lens Flare High Dynamic Range Lightning OBB Collision Quad Tree, Frustum Culling Animation Move Multi - Thread Responsibility Technique

Phong Shading Phong Shading 정점을 포함하여 내부의 픽셀마다 조명연산을 하여 각 정점단위로 색상 값을 연산하는 Gouraud Shading 보다 더 매끄러운 출력이 가능하게 구현. Phong Shading

High Dynamic Range Lightning 디스플레이에 표시되지 않는 강도의 빛을 고려한 처리 눈부시게 보이는 것 같은 연출 추가 각 성분에 관해서 256단계의 정밀도 밖에 없기 때문에 어두운 곳에 있는 희미한 빛에 대해서 큰 차이가 발생한다. 따라서 좀 더 정밀도가 높은 데이터(HDR) 로 미리 보관해두고, 디스플레이에 출력할 경우에 256 단계로 복원해 출력한다. High Dynamic Range Lightning

High Dynamic Range Lightning 구현 과정 A16B16G16R16F (부동소수점) 형태의 Render Target 에 최초 장면을 Rendering 한다. 빠른 처리를 위한 축소 버퍼(부동소수점 포맷)에 그린다. 휘도가 높은 부분만 추출하여 그린다. 추출한 부분을 크로스필터를 사용하여 6방향으로 늘리고 6장의 텍스쳐를 합성한 뒤 최초장면에 덧씌워서 출력한다. High Dynamic Range Lightning

High Dynamic Range Lightning

Lens Flare 태양의 화면상의 투영좌표를 저장하고 화면상의 중심을 기준으로 대각으로 반대 점에 한 점을 잡는다. 두 점을 잇는 거리를 1로 변환하고 Flare 를 출력할 곳을 보간 할 T값을 넣고 추가해준다. 스크린으로부터 태양이 얼마나 떨어져있는지 계산하여 강도를 구하고 2D로 출력한다. Lens Flare

강도 구하기 Lens Flare

처음에는 Sphere Collision 을 이용하여 접근한 몬스터만을 Vector에 넣어두고 OBB Collision 으로 계산한다. 정교한 충돌 처리를 위하여 무기 에도 OBB Box 로 처리 한번 휘두를 때 한번씩, 다수의 몬스터를 타격 판정 되도록 설계 Collision

Collision

Project Key Information F3 : NonTargeting Camera (WASD, Lbutton Click) F4 : Free Camera (Rbutton Drag, W,S) 1, 2, 3, 4 : Skill O : OBB Box Render Near Merchant, F : Open Store(Rclick : Insert List) WASD Move : Quit Store Project Key Information

Reference DirectX9를 이용한 3D Game PG 입문 : Frank D.Luna 저 DirectX9 Shader PG : 타카시 이마기레 저 Gof Design Pattern : 에릭 감마 외 3인 3D 게임 프로그래밍 : 김용준 저 Effective C++, Effective STL : 스콧 마이어스 저 Reference