Q1. Vector3형태의 Obejct A와 B 두개가 주어졌을 때, B가 A를 바라보게 만들려면 어떠한 방법을 따라야 하는가.
A1.
- A->B를 구한다.
- B의 Forward를 찾는다.
- A->B와 B.Forward()간의 Dot을 구한다.
- atan(Dot(A->B, B.Forward()))하여. 각도를 구한뒤에, B의 각도를 결과값에 보정한다.
Q2. 2D평면상의 Vector2형태의 Obejct A와 B가 존재할 때, A는 사각형, B는 원이다. 두 객체간 충돌을 검사하기 위한 과정은 어떻게 구성되는가?
A2.
- A의 각 꼭짓점을 찾는다.
- Rect(A) 형태의 사각형일 경우, APos(x, y)에서 사각형의 높이 길이 = Size(xA, yA)일 때.
- 좌측하단 : Lw(x - xA * 0.5, y - yA * 0.5);
- 좌측상단 : Lu(x - xA * 0.5, y + yA * 0.5);
- 우측하단 : Rw(x+ xA * 0.5, y - yA * 0.5);
- 우측상단 : Ru(x + xA * 0.5, y + yA * 0.5);
- A와 B의 사잇거리를 계산한다.
- A ->B.Length()
- 모서리 검사를 먼저 진행한다.
- 원의 반지름을 찾는다. B.Radius();
- 각 모서리와 원의 중점간의 거리를 계산하고. 반지름에 접촉하는지 판단한다.
- Lw->B, Lu->B ... Length();
- 만약 B.Radius()보다 작은값이 나왔다면 무조건 충돌
- 각 변에 대해 검사를 진행한다.
- 각 변에 대해 Normalize된 A->BVector에 대해 Dot하여. float값을 도출한다.
- Dot(Lw->Lu, A->B.Normalize) .... 4개의 변에 대해 구함
- 가장 각도가 작은 변을 기준으로 충돌위치를 판별
- Cross(resultside, A->B.Normalize) 투영하여 충돌점 의 거리를 판별.
- Length()하여 길이를 가져온다.
- ResultCrossLength <= A->B.Length(). 일 경우. 충돌로 판별한다.
Q3. 3D공간에서 최적화를 위해 백페이스 컬링을 진행한다. 백 페이스 컬링이 무엇이고 어떻게 진행되는가?
A3.
- 백 페이스 컬링이란?
- 앞면 아닐경우에 뒷면을 판별하여. 뒷면일경우 렌더하지 않는 최적화 방법
- 진행방식
- DirectX에서 Object의 투영은, 삼각형 Face에서 우측으로 회전하는 오른손좌표계를 사용한다.
- 가장 좌측 Vertex값에서 가장 우측까지 시계방향으로 회전하는데, 시계방향 상. ViewPos와 내적해서 같은 방향이 나올경우에 렌더, 아닐경우 렌더하지 않는다.
Q4. Diffuse 광원은 WorldMap상에서 전체적으로 비추어주는 태양과 같은 광원을 이야기한다. Diffuse의 수행방식과 수식은?
A4.
- Diffuse의 수행방식.
- 절대적인 Direction을 가진다.
- Direction에 따라 Obejct의 삼각 Face별로 위를 향하는 UpDirection을 사용해서 Dot을 구한다.
- 해당 Dot을 기준으로 Color값에 보정한다.
- 수식
- Light = Dot(UpDriection, DiffuseDirection);
Q5. Specular 광원은 WorldMap상에서 각 Obejct의 광원과 UpDirection에 따라 얼마나 더 밝아지는지를 이야기한다. Specular의 수행방식과 수식은?
A5.
- Specular의 수행방식.
- 절대적인 Direction을 가진다.
- Direction에 따라 DIffuse를 수행한다.
- Diffuse를 수행한 결과값에 Pow(Dot(reflect(UpDirection, DiffuseDirection), ViewDirection), Shininess) 을 더해준다.
- (또는 결과값에 Shiniess만큼 제곱한다.)
- reflect 는 반사벡터이다. 객체값에 대해 UpDIrection에 따른 반대방향을 말한다.
- 수식
- Pow(Dot(reflect(DiffuseDirection, UpDriection), ViewPosition - wPosition), Sihiniess)
Q6. 반사 벡터는 진입해오는 방향벡터를 부딛혔을 때 부딛힌 객체의 UpDirection을 기준으로 반대로 돌려주는 벡터이다. 해당 벡터의 수식을 기술하시오.
A6.
- 반사벡터의 수식
- Reflect = IncomingVector - 2 * Dot(IncomingVector, UpDIrection) * Upirection
Q7. 미끄러짐 벡터는 진입해오는 벡터에 대해 해당 Face의 표면을 타고 흐르게 하는 벡터이다. 해당 벡터의 수식을 기술하시오.
A7.
- 미끄러짐 벡터의 수식
- SlipVector = IncomingVector - Dot(incomingVector, SurFaceNoraml) * SurfaceNoramal
SUrFaceNoramal = 표면의 법선벡터
Q8. 이중 연결리스트는 이후 데이터와 이전 데이터로 양방향을 통해 이동할 수 있는 리스트이다. 해당 이중 연결 리스트의 구조를 서술하시오.
A8.
- 데이터의 양 끝단에 포인터 형태로 데이터 객체를 지정해주는 Back, Front Pointer를 생성한다.
- Back은 뒷 데이터를 지정하고, Front는 앞 데이터를 지정해준다.
- 앞 데이터를 참조하기 위해서는 Front->Data, 앞앞데이터는 Front->Front->Data 이렇게 참조하면 된다.
Q9. 힙(Heap)구조는 데이터의 정렬을 위해 사용되는 자료구조이다 힙 구조에 대해 서술하시오.
A9.
- 이진트리구조 를 띄나, map처럼 오름차순으로 데이터가 정렬되는 트리구조를 이야기한다.
Q10. 그래프 구조는 데이터의 탐색구조로 트리구조와는 다른 형태를 띄는 자료구조이다. 그래프에 대해 서술하시오.
A10.
- 그래프 구조는 트리와 다르게 시작점이 따로 존재하지 않으며, 노드와 노드끼리의 간선으로 구성된다
- 방향성을 가질수도 가지지 않을수도 있으며, 최단거리 탐색을 위해 사용한다.
Q11. Draw Call을 줄이기 위해 같은 모델을 모아 렌더링 하는 방식을 어떤 방식이라고 하는가?
A11.
- 인스턴싱
Q12. 씬 그래프란 무엇인가?
A12.
- 렌더링하고자 하는 오브젝트를 부모자식관계로 만든 트리이다.
- Loot에서 탐색하며, 노드의 기능과 충돌검사, 컬링을 수행하여 노드가 수행되지 않는다면 자식노드도 실행하지 않는 구조이다.
Q13. View와 Projection이 결합된 절두체 를 사용하여 컬링하는 방식은 무엇인가?
A13.
- 프러스텀 컬링( 절두체 컬링 )
Q14. 앞에 모델에 가려지는 모델을 그리지 않는 컬링 방식은 무엇인가?
A14.
- 오클루전 컬링
Q15. Dynamic Programming이란 무엇인가?
A15.
- 분할 정복과 유사하게 처리구역을 나누지만, 앞의 계산데이터를 사용해서 현재구역 데이터를 정렬하는것.
Q16. 오브젝트의 아이디나 대량의 데이터를 빠르게 검색하기 위해 임의의 알고리즘으로 키를 생성하는 방식은?
A16.
- 해싱
Q17. 여러개의 정렬 알고리즘은, 작은수와 큰수를 순서대로 정리하는것을 이야기 한다. 분할정복 알고리즘은 무엇인가?
A17.
- 정리할 때 데이터를 가능한 만큼 전부 쪼갠다음. 쪼갠 데이터를 각각 토너먼트 형태로 비교하여. 더 작은수를 먼저 놓아두는 방식으로 정리하는 방법.
- 시간복잡도는 O(log n)이다.
Q18. Object간 충돌할때 각 메시데이터를 통해 충돌검사를 하면 매우 비효율적이다. 이때. 충돌체를 임의로 생성해서 충돌검사를 진행하게 되는데. 사용가능한 충돌체를 3개 이상 서술하시오.
A18.
- 박스
- 구체
- 캡슐
- 사각형
- 원
Q19. 총알이나 포탄같은 발사체를 다루는 방식이 있다. 해당 기술의 명칭과 설명을 서술하시오.
A19.
- 프로젝타일
- 발사체 오브젝트를 따로 생성해서 해당 발사체를. 초기속도, 각도 중력, 공기저항, 위치, 속도갱신, 충돌감지, 충돌응답을 넣어 계산하는 방식이다.
Q20. 3D위치상에서 길을 찾는 방식을 네비게이션 메시 라고 한다. 이 네비게이션 메시가 무엇인지 서술하시오.
A20.
- 3D공간에서 실시간으로 길을 찾기위해 사용되는 기술이다.
- 3D공간을 2D로 펼쳤을 때, 이동할 수 있는 Face를 나타내는 지역을 말한다.
- Face는 Face끼리 연결되어있어 다각형 끼리의 연결을 확인할 수 있다.
- 각 Face는 노드로 간주되며, 노드간의 연결은 이동경로를 의미한다.
- Object는 해당 노드의 길을 이용해서 계획알고리즘을 통해 출발지와 목적지의 최소거리를 계산한다.
'서울게임아카데미 교육과정 6개월 국비과정' 카테고리의 다른 글
20231206 45일차 클래스 개요도, AnimationInstancing응용4 (1) | 2023.12.06 |
---|---|
20231205 44일차 AnimationInstancing응용3 (0) | 2023.12.05 |
20231201 42일차 AnimationInstancing응용2 (0) | 2023.12.01 |
20231130 41일차 AnimationInstancing응용 (0) | 2023.11.30 |
20231129 40일차 AnimationInstancing (0) | 2023.11.29 |