본문 바로가기

전체 글

(241)
그림자 표현 컴퓨터 그래픽으로 그림자를 표현하는 방법 중 가장 간단한 방식으로 구현 아래 그림에서 투영 화면의 픽셀에서 쏜 Ray 가 사각형 바닥과 충돌 했을 때의 충돌지점과 광원을 잇는 새로운 Ray 가 구체와 충돌한다면 그것이 그림자로 표현될 지점이고 이때, 그림자 색감을 정해주면 된다. 1. 픽셀 별로 원근투영 형식의 Ray 를 Thrl2. 충돌 판정 hit 의 null 확인을 하고 존재한다면 다시 Ray 를 만든다.3. 이때 Ray 의 방향을 ( 광원 - 충돌 지점 ) 이 된다.4. 이 Ray 가 다시 구체와 충돌 하는지만 체크하면 끝!! 기본적인 그림자 표현인데도 연산이 훨씬 많다. 그래서 그림자 표현은 많은 오버헤드가 생긴다.
Unreal 5.5 Mobile Firebase Sdk (사진을 찍어놨었는데 다 날림.........ㅜ....)FireStore 를 사용해 로그인 및 데이터 관리를 하기 위해 Firebase Sdk 를 프로젝트에 추가해 사용 가능하도록 만들자. 먼저 Firebase 프로젝트를 생성한다.   생성한 프로젝트에 생성한 SHA-1를 등록하여 google-services.json 파일을 반환 받고 이 파일을 프로젝트에 추가한다.해당 파일은 Build 시에  apk 에 추가되며 사용하는 구글 서비스(firebase sdk) 와 관련한 코드들을 안드로이드에서 참조해서 사용할 수 있도록 해준다. 여기서 SHA-1 란? (Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 암호학적 해시 함수 SHA-1 은 160비트의 16진수로 반환된다. cmd 에서..
원근 투영을 이용한 물체 표현 우리가 컴퓨터로 물체를 표현할 때는 여러가지 방식이 있다. 이 것을 크게 2가지로 나눈다면 Parallel 투영과 Perspective 투영이다. 분류는 다음과 같다.   이 중 가장 기본적인 Orthographic 과 Perspective 투영에 대해서 확인해보면 Orthographic Projection정투영은 3차원 공간에 객체를 2차원 평면에 투영하는 방법이다. 투영 선 ( 여기서 Ray ) 가 우리의 투영 평면 ( 모니터 등 ) 과 수직인 경우를 의미한다.  이 방식은 객체의 크기 혹은 모양이 변하지 않고 그대로 투영 되는 특징이 있다. 따라서 거리 비교가 불가능하다,  Perspective Projection원근 투영은 프로젝트 내에 시선의 방향 그대로 투영 평면의 픽셀이 Ray 를 쏴 객체를..
Ray-Tracing 레이 트레이싱카메라에서 화면의 픽셀에서 가상의 광선을 발사해 오브젝트에 부딪히는 과정을 시뮬레이션하여 최종 색상을 결정하는 방식 주요 요소반사굴절그림자전역 조명 아주 간단한 레이 트레이싱을 활용하여 구체를 표현해보자   https://en.wikipedia.org/wiki/Line%E2%80%93sphere_intersection Line–sphere intersection - WikipediaFrom Wikipedia, the free encyclopedia The three possible line-sphere intersections: 1. No intersection. 2. Point intersection. 3. Two point intersection. In analytic geometry, ..
UE5.5 mobile - 패키징 해보기 언리얼 모바일 컨텐츠 개발 및 패키징, 최적화까지 실습 할 예정이다. 1. 언리얼 모바일을 활용한 스마트폰에 패키징플랫폼 안드로이드 & 개발 툴 UE5.5 안드로이드 빌드 및 패키징을 위해 찾은 공식 문서  UE 5.5 버전 기준 필요한 안드로이드 스튜디오 버전, SDK, NDK, JDK 버전을 확인https://dev.epicgames.com/documentation/en-us/unreal-engine/set-up-android-sdk-ndk-and-android-studio-using-turnkey-for-unreal-engine 25.03.12 기준 언리얼 공식 문서를 한글 버전으로 들어가면 5.5버전으로 설정해도 안드로이드 ndk 구성 혹은 설정이 문서에 5.4 버전으로 나온다. 영어 버전으로 들..
블러, 블룸 효과 Blur이미지를 흐리게 만드는 효과 모션 블러 : 빠르게 움직이는 오브젝트가 잔상처럼 보이도록 함,가우시안 블러 : 화면의 특정 부분을 부드럽게 초점 효과를 강조함.심도 흐림 : 카메라 초점에서 벗어난 부분을 흐리게 만들어 현실적인 포커스 구현. 가장 기본적인 Blur 및 구현 방식 및 기법 가우시안 Blur, 박스 Blur 가우시안, 박스, 모션 블러 효과를 만들 때 가장 기본적인 방식이 커널을 이용하는 방식이다.  커널 : 이미지 처리에서 사용되는 작은 매트릭스를 의미한다. 이 커널 행렬의 요소마다 가중치를 둘 수 있다. ( 모든 요소의 합은 1로 설정) 기본 구현 방식 : 실제 이미지에서 추출한 픽셀 및 주변 픽셀들과  대응되면 커널의 요소를 곱하여 최종 합산한 값의 평균을 해당 픽셀의 수정 값으로..
DX11 용어 간단 정리 ID3D11Device* device; : 리소스를 생성하는 객체 (버퍼, 텍스쳐, 셰이더 등) ID3D11DeviceContext* deviceContext;  : 생성된 리소스들을 사용해서 GPU 에게 명령을 실행 (각 렌더링 파이프라인 단계 별로 셋팅이 가능) IDXGISwapChain* swapChain;: 더블 버퍼링을 관리하는 객체 (백 버퍼와 화면에 그려질 프론트 버퍼를 관리하고 버퍼 화면 전환 함수 호출 가능 Present(1,0))D3D11_VIEWPORT viewport;: GPU가 렌더링 할 화면의 크기와 위치를 설정할 수 있는 구조체ID3D11RenderTargetView* renderTargetView;: GPU 가 최종으로 렌더링할 대상을 설정 ( 예 : 스왑체인이 관리하는 백 ..
백준 1120 문자열 A 가 항상 B 보다 문자갯수가 적거나 같다. 그러니 문자 갯수 차이를 구하고 그만큼 1씩 오른쪽으로 보내면서 A를 B 와 비교하면서 최소값을 구한다. #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string a, b; cin >> a >> b; int num2 = 50; int sizeM = b.size() - a.size(); for (int i = 0; i = num) { num2 = num; } } cout