프로그래밍(42)
-
DirectX11 모델 뷰어
DirectX11 Model Viewer - 개발기간 : 2018.3 ~ 2018.3(5일) - 개발환경 : MFC, DirectX11 - DirectX11을 사용하여 만든 모델뷰어입니다. - Dx11의 이해와 HLSL 셰이더 이용과 설계, 이전에 하지 못했던 하드웨어 스키닝을 목표로하였습니다. - 모델링 파일 로드에는 Open Asset Importer Lib를 사용하였습니다. - 이미지 파일 로드에는 FreeImage Lib를 사용하였습니다. - 모델링 파일은 deviant art, 애니메이션은 mixamo에서 가져왔습니다. - 프로젝트 다운로드 : https://github.com/hns17/DirectX11 [영상] Assimp Lib 사용시 알아두면 좋은 것들1. Flag (1) Dx를 위한 F..
2018.06.29 -
Convert Voxel World To Planet
Voxel 세계를 Planet화 하려면? 1. Torus Function을 이용한 정점 변환 Is a round Minecraft world possible? 위 영상에서는 Voxel Planet을 표현하기 위해 복셀을 라운딩화 할 수 밖에 없는 이유를 설명한다. How to make the Minecraft world look spherical 그리고 위 영상에서는 Voxel 세계를 구면화 하는 방법을 제시하고 있다.영상을 보면 구면화를 위해 torus 방정식을 응용하여 정점을 새로 계산한다. 유니티에서 제시된 이론을 바탕으로 적용해본 결과는 아래와 같다. 겹치는 부분을 조정하기 힘들다는 단점이 있지만 굉장히 흥미로운 방법이라 생각됩니다. 2. 구의 특성을 이용한 방법 구는 모든 정점의 길이가 동일하다..
2018.06.29 -
Procedural Planet Generate(2) - Normal 생성
Vertex Normal 생성 - 만들어진 지형의 정점을 참조하여 노말을 생성한다. 노이즈 함수를 이용해 생성된 지형을 렌더링 해보면... 와이어 프레임으로 렌더링 했을 때와는 달리 지형의 굴곡이나 높이 정보를 파악하기 어렵습니다.물체의 형태는 음영과 그림자로 표현이 되는데, 둘 다 존재하지 않기 때문 입니다. 이 두 가지는 모두 빛과 관련이 되며, 이를 계산하기 위해서는 노말 정보가 필요합니다. 정점의 노말 정보를 구하기 위해서는 1. 현재 정점의 상, 하, 좌, 우 정점의 위치 정보를 가져온다.2. 정점 정보를 참조하여 만들어지는 4개의 삼각 메쉬의 Face Normal을 구한다. - FaceNormal은 삼각메쉬의 두 벡터를 외적하여 구합니다. 3. 만들어진 Face Normal을 가산하여 평균을 ..
2018.06.12 -
Procedural Planet Generate(1) - 지형 생성
절차적 행성 생성 - 간단하게 행성을 만드는 것을 목표로 한다. 1. 우선 Level Of Detail 이 적용된 Square 6개를 생성하여 큐브로 조립합니다. - 큐브를 사용하는 이유는 Culling 하기 좋기 때문입니다. - Level Of Detail Square 바로가기 [결과물] 2. Cube To Sphere - Cube를 Sphere로 만들어 줍니다. - 변환코드는 GLSL Shader에 작성하여 시뮬레이션 하였습니다. (1) 만드는 방법 1) 아래 링크의 공식을 이용한다. - Cube를 Sphere로 만드는 공식 - 주의 할 점은 Size가 -1 ~ 1 이어야 합니다. 2) 원의 특성을 이용하기 - Sphere 변환은 원의 특성을 이용하면 됩니다. - 원은 모든 정점이 중심점에서 동일한 ..
2018.05.23 -
QuadTree Static Level Of Detail
QuadTree를 이용한 SLOD Level Of Detail?거리에 따라 물체의 정밀도를 조절하여 연산 속도를 올리는 방법. Dynamic Level Of Detail메쉬를 실시간으로 분할하는 알고리즘을 사용하여 정밀도를 결정.팝핑현상이 적고 정밀하지만, CPU 의존도가 높으며 비디오 메모리와 연결이 자주 일어난다. Static Level Of Detail미리 각 레벨에 맞는 데이터를 비디오 메모리에 올려두고 상황에 맞게 교체하는 방법이다.팝핑현상이 눈에 띄게 일어난다. 팝핑현상 : 레벨이 교체되면서 나타나는 정밀도 변화현상 테셀레이션은 셰이더 기반으로 실행되는 Level Of Detail. 모든 작업이 gpu에서 이루어진다. QuadTree를 이용한 SLOD - 게임 프로그래밍을 입문하고 처음 진행한..
2018.05.22 -
Message Delivery vs Direct Function Calls
Message Delivery vs Direct Function Calls 멀티 쓰레드 환경이나 다양한 윈도우를 관리하는 환경에서 다른 클래스간의 함수를 호출해야 하는 경우가 상당수 존재한다. 이 경우 메시지 전달을 통해 함수를 호출 할 것인가?클래스에 직접 접근해서 함수를 호출 할 것인가?인터페이스를 정의하여 이를 통해 호출 할 것인가? 어느 쪽이 좋을까? 하는 의문점을 가지게 되어 생각해 보았다. 각각의 특징과 장단점을 알아보면 message delivery- 메시지 전달과정을 거쳐야 해서 direct function calls 에 비해 느리다.- 정보은닉, 커플링(종속성)이 줄어 객체지향 적이다.- 전달 파라미터 수가 제한되어 여러 변수를 넘기기 위해서는 구조체 선언이 필요하다. direct fun..
2017.03.15