본문 바로가기

분류 전체보기65

언리얼에서 지원하는 modern C++ 기능 언리얼 엔진은 크로스 플랫폼 지원을 기본으로 하는 프레임워크다. 그래서 최신 C++ 문법을 지원할 때에 모든 플랫폼에서 안정적으로 동작할 수 있도록 현재 C++11의 일부 문법만을 지원하고 있다. (4.21버전 기준) (그 외에도 멀티플랫폼 안정성을 위해 STL이 아닌 자체 컨테이너(ex:TArray TMap TSet)나 스트링 처리를 지원함- 참고) 언리얼이 지원하는 C++11 문법은 다음과 같다. 1. static_assert 일반적으로 발생 가능하다고 기대되는 경우에 대한 예외처리는 try catch나 if문을 사용해 걸러낸다. 그에 반해 assert는 절대 발생하면 안되는 상태를 체크할 때 사용한다. (발생하는 상황 자체가 이상한 경우) 1 2 3 4 5 6 7 8 9 10 11 #include .. 2021. 7. 26.
[DirectX] 더블 버퍼링(Double Buffering)과 스왑 체인(Swap Chain) 컴퓨터 디스플레이에서 이미지를 출력할 때에는 일반적으로 이전 프레임을 모두 지우고(clear) 새로이 다시 그리게 된다. 이전 프레임과 현재 프레임의 차이를 계산해서 해당 부분만 갱신하는 것이 비효율적이기 때문이다. GPU는 비디오 메모리에 존재하는 프레임 버퍼에 위와 같이 계속해서 이미지를 지우고 그리는 과정을 반복한다. 그리고 비디오 컨트롤러는 이 프레임 버퍼를 참조해서 스크린에 이미지를 출력하게 되는데, 이 속도가 GPU가 프레임 버퍼에 이미지를 그리는 속도보다 훨씬 빠르다. 때문에 프레임 버퍼가 갱신되는 과정이 스크린에 모두 그려지게 되면서 이미지 전체가 사라졌다 다시 그려지는 것처럼 깜빡거림(Flickering)이 생길 수 있다. 이 현상을 방지하기 위해서 전면 버퍼(front buffer)외에.. 2021. 7. 26.
고정 소수점과 부동 소수점 고정 소수점과 부동 소수점은 컴퓨터에서 실수(real number)를 표현하는 방법이다 1. 고정 소수점 (Fixed Point) 말 그대로 소수점이 고정된 형태이다. 32비트의 수라면 언제나 1비트를 부호 표현에, 15비트를 정수 표현에, 16비트를 소수 표현에 사용하는 식이다. 소수부에 할당된 비트의 숫자에 따라 정밀도가 달라진다. 예를 들어 부호부에 1개의 비트, 정수부에 n개의 비트, 소수부에 m개의 비트를 할당한 수의 경우, 1. 표현 가능한 실수는 2^(n+m+1)개이다. 2. 표현 가능한 가장 작은 차이는 2^(-m)이 되며 이를 분해능이라고 한다. 표현 가능한 실수의 범위와 정밀도가 제한적이기 때문에 실질적으로 잘 사용하지 않는다. 2. 부동 소수점 (Floating Point) 부동의 부.. 2021. 7. 26.
왜 정규화 벡터를 사용하는가 정규화 벡터를 사용하는 이유 http://stackoverflow.com/questions/10002918/what-is-the-need-for-normalizing-a-vector http://stackoverflow.com/questions/2304634/why-do-we-need-a-unit-vector-in-other-words-why-do-we-need-to-normalize-vector - 필수적으로 정규화 벡터를 사용할 필요는 없다. 그러나 정규화 벡터는 식을 굉장히 축소시켜주고, 따라서 API 또한 매우 간단해진다. 만약 u,v 두 벡터의 각도를 구한다고 생각해보자. 만약 두 벡터가 크기가 1인 unit 벡터라고 하면, 둘을 그냥 arccos(u*v)를 취하면 된다. 그러나 두 벡터가 un.. 2021. 7. 26.
조명 및 법선벡터 지도 추정을 이용한 사실적인 가상 화장 시스템 논문 리뷰 논문을 읽고 이해한 부분을 풀어서 작성한 포스트임을 밝힙니다. http://cg-korea.or.kr/controllers/download.php?fileID=274 가상 화장이란 요즘 모바일 어플로 많이 응용되는 기술이다. 가상 화장 어플에는 여러가지 종류가 있는데 카메라로 촬영된 영상에 실시간으로 눈코입을 인식해서 데코를 붙여주는 스타일도 있고 커스텀으로 사용할 수 있도록 블러, 번인 등의 효과를 제공하는 스타일도 있고, 얼굴 인식을 통해 화장을 얼굴 전체적으로 자동 적용 해주는 스타일도 있다 (블러셔라던지 파운데이션 등의 효과) 커스텀 수작업으로 직접 디테일한 부분을 수정할 때에는 얼굴 인식이 불필요하고 효과도 좋다. 그러나 이 논문에서는 영상으로부터 얼굴을 인식하고, 해당 얼굴에 노말맵과 조명환경.. 2021. 7. 26.
OBB (Oriented Bounding Box)와 AABB (Axis-Aligned Bounding Box) 개요 -OBB와 AABB? 1. Bounding Box 3D world에서 교차 검사는 매우 중요한 이슈이다. 게임을 예로 들자면, 캐릭터끼리 충돌 검출도 해야하고 마우스 picking도 해야되고 타격 판정도 해야되기 때문이다. 그래서 캐릭터 모델(메쉬) 나 특정 범위, 지형 구조물 등에 충돌 판정을 위한 박스나 단순한 모양의 bounding volume을 씌운다. 그렇게 해서 복잡한 메쉬끼리 교차 검사를 하는 것이 아니라 단순한 volume들 끼리 교차 검사를 하는 것이다. 만약 메쉬를 이루는 모든 삼각형끼리 충돌 검사를 한다면 너무 비용이 커질 것이다. 가장 많이 쓰이는 모양이 box인데, 이 box에는 2종류의 타입이 있으니 그것이 바로 aabb와 obb이다. 2. AABB AABB는 Axis-Al.. 2021. 7. 26.
반응형