본문 바로가기

전공/증강현실

CG Modeling/Rendering/Animation

 CAD(Computer-Aided Design)

: 건축, 컴퓨터 그래픽, 설계 등에서 많이 사용되는 프로그램

 

Training

: 실시간 상호작용 기반으로 즉각적인 피드백을 얻을 수 있어 훈련에 많이 사용.

 

Medical

: 3D 엑스레이 등에 사용

 

게임, 캐릭터 디자인. 애니메이션 등 엔터테이먼트 분야, 과학적 가시화 등 여러 분야에서 사용

 

CAVE

: 통같은 물건을 사용하여 사용자자가 가상 환경에 더 몰입하도록 하는 기기

 

컴퓨터 CG 기술의 순서

 

Modeling -> Animation -> Rendering

 

Modeling

: 폴리곤을 사용하여 3D 모델을 구성하는 것. 3D 모델을 2D 텍스쳐 기반으로 펴서 만든다고 생각하면됨.

Modeling 순서

1. 모델 만들기

2. 모델에 재질(텍스쳐) 적용

3. 3D 환경(Scene)에 모델을 가져다 둠

4. 3D 환경(Scene)에 빛 위치를 조정

5. 카메라를 둠

primitives(폴리곤을 이루는 도형 모양 ex 네모 세모)and attributes 출력

- Point : drawPoint(x,y), 특성은 point size, point color, Coordinate System 사용

- Line : drawLine(x1, y1, x2, y2), 특성은 line style , line color

- Rectangle and polygon : drawRectangle(x1, y1, x2, y2), drawPolygon(vertexcount, vertextlist), 특성은 line style, line width, line color, fill style, fill, pattern, fill color

- Cube : drawCube(x1, y1, z1, x2, y2, z2)

3D 오브젝트 Representations(Polygonal meshes)

- Polygon meshes : edge, verties, polygons의  집합체

- Triangluar mesh : 삼각형의 집합으로 거의 모든 모양을 구현 가능

- Level of detail(LOD) : 멀리 있는 것은 간단하게, 가까울 수록 폴리곤의 개수를 늘려서 더 자세하게 구현하는 것

- Non-Indexed Triangle List : 한 vertex buffer에 삼각형의 좌표를 차곡차곡 쌓으며 저장, 램을 더 잡아먹음

- Indexed Triangle List : index buffer을 추가하여 한 index안에 좌표를 넣어서 저장

** 계층적 모델링(Hierarchical Modeling) **

: 팔-> 팔꿈치 -> 손목 처럼 계층적으로 모델을 구성해서 함께 움직이게 하는 모델링

ex) 책상의 판과 다리, 자동차의 자체와 바퀴 등

2D/3D geomtric transformations - 위치

: 위치(Position), 회전(Rotate), 크기(Scale) 등을 조절

: Position - translation 위치변환, Size - scaling 크기 변환, Orientation - rotation 회전 각도 변환

: 들어간 순서에 따라 위치가 달라질 수 있으므로 stack 구조 사용, 나중에 들어간게 먼저나옴.

1. traslation(2D)

기존 x, y 좌표를 x', y'으로 변환

x' = x + tx

y' = y + ty

2. rotation(2D)

x,y를 x',y'로 바꿀때, theta가 왼쪽 방향이면

x' = xcos(theta) - ysin(theta)

y' = ycos(theta) - xsin(theta)

3. scaling

x' = x.Sx

y' = y.Sy

shearing

: 3D 물체가 비스듬하게 찌그러져 보이는 것

x' = x + Shy*y

y' = y + Shx*x

카메라 속성 - Perspective projection

 

Rendering

: 3D Scene에서 2D 이미지를 생성하는 프로세스를 뜻한다.

- Texture mapping : 3D 오브젝트 표면에 입힐 2D 이미지를 만드는 과정. 이미지의 픽셀을 좌표로 삼는다

1. Texture Coordinates : 픽셀 값이나 크기가 다른 이미지를 일정한 2차원 배열에 넣을 수 있게 (u,v) 값을 0에서 1사이 값으로  정규화하는 것

2. Bump Mapping : 2D 이미지를 3D 느낌이 나도록 매핑하는 방법 ex) 자갈, 벽돌

3. reflection Mapping : 매끈한 표면을 가지는 물체에 주변이 어떻게 비치는지 설정

- Shading : 여러 방법으로 각 폴리곤의 색을 정하여 명암을 구현

: Flat(한 폴리곤에 한 색상만 적용)

: gouraud(폴리곤의 각 정점에 색을 설정, 중간에는 그 중간 값 넣기)

: phong(픽셀별로 색을 정함) 등 

- 2D/3D viewing

1. Perspective projection : 3D 물체를 2D 이미지로 표현할때 사람 눈에 보이는 것 처럼 원근감을 적용

2. Orthogonal projection : 상하좌우앞뒤 위치에서 보이는 이미지 대로 구현, 거리 관계 없이 똑같이 보이도록 적용

- FOV(Field of View) : 카메라의 시야각. Clipping plane에 따라 짤려서 보일 수도 있음

- Visible Surface Determination

- illumination and shading

- 빛의 종류

1. Area Light : 게임이나 영화 등에서 빛과 관련된 상호작용을 미리 계산 해두는 것

2. Directional Light : 태양광

3. Point Light : 한 지점을 기준으로 전방위로 빛을 발산 ex) 횃불

4. Spot Light : 한 점을 기준으로 콘 모양의 빛을 발산 ex) 자동차 헤드라이트, 무대 스팟라이트

- Raytracing Rendering : 빛에 비춰진 것을 카메라로 감지하여 픽셀의 색을 2D로 옮기는 방법

- Radiosity : Light Source를 기준으로 폴리곤의 색 값을 전부 계산

- Billboards : 특정 텍스쳐를 맵에 두면 시각에 따라 그 텍스쳐가 빙글빙글 돌아 어느 방향에서든 보이도록 함 ex) 숲

- Moving Texture / Sprites : 이미지 여러개를 이어붙여 움직이는 것처럼 보이게 하는 것 ex) 애니메이션

- Particles : 작은 알갱이 같은 것을 생성하여 적용 ex) 물, 불, 연기 등

- 360 Video/Image Panorama : 여러 카메라를 사용해서 촬영하거나, 한 카메라로 여러 개를 찍어서 이어 붙이는 방법으로 360도의 이미지를 제작함

- 3D Reconstruction : 여러 대의 카메라로 물체를 촬영하여 이어붙여서 3D 모델을 제작함

 

Animation

: skeletal structure 이라는 뼈대를 기반으로 모델의 움직임을 제어함

: 뼈대를 갖춘 모델이 움직이는 과정을 저장한 뒤 실행하는 것

: 구현하는데는 기존의 CV 기술 등을 사용하면 되지만, VR/AR에서는 실시간 상호작용이 필요하므로 이에 대한 기술이 더해져야함

- Keyframe Animation in 3D : 각 프레임에 키를 줌. 키는 위치, 회전 각도 등이 있음. 컴퓨터는 그 키 사이 값을 계산하여 적용시켜줌. 전문가가 와도 53초의 애니메이션을 만드려면 약 32시간 소요됨.

- * Motion Capture : 사람몸에 마커를 부착한 슈트를 입히고, 적외선 카메라로 그것을 촬영하여 모션 데이터를 얻음. 시간을 크게 단축 할 수 있다는 장점.

1. *Optical motion capture : 슈트를 입고 모션을 캡쳐하는 것, 이때 스튜디오 같은 시설이 필요함. 정확하다는 장점.

2. *Gyro based motion capture : 시간/장소 관계 없이 자이로 센서가 관절에 부착된 슈트만 입어서 데이터를 얻음. 데이터가 부정확할 수 있음.

- skeleton : 모션을 따기 위한 뼈대로, 각 부위는 계층 구조화 되어있으며 각 부위마다 이름이 있음.

- Kinematics : 수학적으로 관절의 위치를 계산

1. Forward Kinematics : 어깨->팔꿈치->손의 순서대로 위치를 구함

2. Inverse Kinematics : 로봇에서 많이 사용, 손->팔꿈치->어깨 순으로 위치를 역추적

 

Character Animation

: 캐릭터의 3D 모델, skeleton이 필요함

: Mixamo같은 사이트에서 캐릭터 모델링 데이터와 모션 데이터를 얻을 수 있다

Motion Capture 기반과 Kinect tracking 기반의 2가지 방식 존재

- Skeleton Embedding : 캐릭터 모델에 맞춰 관절 위치를 정함

- Skin Attachment : 위치에 기반해서 뼈대를 찾음

- SmartBody : AI를 활용하여 기존 데이터에 기반해 뼈대를 찾음

Motion Recognition : 정밀하게 동작을 측정하여 데이터를 얻는 것이 목적인 Motion capture와 비슷하나, 단순 게임이나 시뮬레이션에서 사용자가 어떤 동작을 취하는지 대충 파악하고 상호작용 하기 위해 간단한 모션 데이터를 얻는다는 것에 차이가 있음

1. Kinect(Kinetic + Connect)센서로 모션 파악, 보통 한계는 3~4m이며 측정이 잘되는 위치는 0.8~2.5m나 1.2~3.5m

2. 6명까지 모션 인식해서 데이터 추출이 가능

 

rigging : 뼈대를 만드는 과정

 

'전공 > 증강현실' 카테고리의 다른 글

Unity - Light  (0) 2021.10.10
VR/AR Gesture  (0) 2021.10.10
Metaverse 간단 키워드 정리  (0) 2021.10.09
Unity Intro  (0) 2021.10.09
VR/AR 기술  (0) 2021.10.08