1
15장. 그래픽스 응용
학습목표
• 쿼드트리, 옥트리 등 공간 자료구조를 이해한다.
• 쿼드트리, KD 트리, BSP 트리의 차이점을 이해한다.
• 로프팅, CSG, 매스-스프링 모델, 마칭 큐브 등의 모델링 방법을 이해한다.
• 프랙탈 시스템, 파티클 시스템 등의 모델링 방법과 모핑의 기본원리를 이해한다.
• 애니메이션의 기본원리를 이해한다.
• 사원수, 그래픽 사용자 인터페이스, 가상현실 등의 개념을 이해한다.
• GLSL의 필요성, GLSL과 지엘 파이프라인과의 관계를 이해한다.
쿼드 트리(Quad Trees)
공간 자료구조(Spatial Data Structure)
• 저장 공간을 적게 차지하면서도 빠른 연산을 가능하게 하는 자료구조 쿼드 트리
• 연속적으로 4 개의 사각형으로 분할
• 사각형 내부가 모두 동일해져 단일 색이 될 때까지 반복
• 링크가 4 개라는 점에서 쿼드트리(Quad Tree)
• 공간적 응집성(Spatial Coherence)을 이용
3
옥트리(Octrees)
공간분할(Spatial Subdivision, Spatial Partition)
• 옥트리(8진트리, Octree, Octal Trees)는 3차원 공간을 분할
▪ cf. 쿼드트리: 2차원 공간을 분할
• x, y, z 방향 8개의 육면체로 분할
• 분할: 물체의 종류, 내부 색 등 여러 가지 속성을 기준으로 함.
가변 공간분할(Adaptive Spatial Subdivision)
• 일정 크기로 분할하지 않고, 필요한 부분만 지속적으로 분할
• 필요 부분만 작은 단위로 표현. 기타 부분은 큰 단위로 표현.
복셀(Voxel: Volume Element)
복셀
• 물체 자체를 표현. cf.옥트리는 물체를 포함하는 전체 장면
• 3차원 물체를 작은 크기의 육면체(복셀)의 집합으로 표현
• 복셀의 크기는 고정. cf. 옥트리의 육면체 분할
• 물체 표면보다는 내부구조를 모델링: 복셀 단위로 속성을 저장 경계부피(Bounding Volume)
• 주어진 물체를 둘러싸는 최소 부피의 육면체
• 경계부피에 대해 복셀 크기가 될 때까지 연속적으로 분할
5
공간분할(Spatial Subdivision)
기하 근접성 질의(Geometric Proximity Queries)
• 물체간의 교차, 이격 등을 판단
균등 공간분할(Uniform Spatial Subdivision)
• 일정 크기의 셀(Cell)로 분할. 셀 별로 물체정보를 저장
• A를 중심으로 점차로 주변의 모든 셀을 검색
차등 공간분할(Non-uniform Spatial Subdivision)
• 쿼드트리 또는 옥트리
• 트리 검색
트리의 균형성
쿼드 트리, 옥트리
• 불균형으로 인한 검색시간 증가
7
KD 트리와 BSP 트리
물체의 분포를 기준으로 분할
• KD: 수직, 수평 분할
• BSP(Binary Space Partition): 임의 방향 분할 BSP 트리
• 더 좋은 균형이므로 트리 높이 저하. 빠른 검색
• 사선을 기준으로 하는 상하판단에 시간을 소요
물체 모델링
로프팅
• 물체 단면과 경로를 지정함으로써 물체 표면을 모델링.
CSG
• 기본 물체의 조합에 의해 새로운 물체를 모델링 물리적 모델
• 물체 사이에 교환되는 힘의 상호작용을 물리적으로 표현한 모델
• 예: 매스-스프링 모델(Mass-Spring Model) 부피 가시화 모델
• 물체 표면은 물론 물체 내부를 포함하여 하나의 부피로서 표현 프러시져 모델
• 프로그램에 의해서 물체 정점 좌표를 계산하는 방법
9
로프팅(Lofting)
2차원 형상(Shape)과 3차원 경로(Path)를 제시
형상을 경로를 따라 끌고다님 = 스위핑(Sweeping: 쓸고 지나가기)
p(u) 곡선의 제어점을 q(v)를 따라서 일정 간격으로 이동 형상 오리엔테이션은 경로에 수직 또는 변화
로프팅(Lofting)
회전표면(Surface of Revolution) 또는 레이드(Lathe)
• 형상 = 프로파일(옆모습, Profile), 경로 = 회전
11
로프팅(Lofting)
회전표면
• 경로를 따라가며 크기변화
CSG(Constructive Solid Geometry)
집합 연산에 의해 새로운 물체를 만들어 냄• 합집합(Union), 교집합(Intersection), 차집합(Subtraction)
• 기본물체(Primitive Object)의 조합 = 불리언 복합물(Boolean Compound).캐드(CAD: Computer Aided Design)에 주로 사용
13
CSG 트리
CSG 트리(CSG Tree)
• 내부 노드(Internal Node)에는 연산의 종류
• 외부 노드(External Node)에 기본 물체를 표시한 이진트리 네스트 구조(Nested Structure)
• 트리의 루트(Root)로 갈수록 더 상위 레벨의 복합물
매스-스프링 모델
매스-스프링 모델(Mass-Spring Model)
• 물리적 모델링(Physically-based Modeling)의 일종
• 힘의 상호작용을 감안한 모델. 천의 각 부분사이에 당기는 힘이 존재한다고 간주 하고 스프링의 탄성계수 값을 조정
15
매스-스프링 모델
매스 사이에 정지 상태의 스프링 길이를 보존
• 정점 사이의 간선(Edge)의 길이를 보존
• 인근 매스로 힘이 전파됨.
부피 가시화 모델 부피 가시화(Volume Visualization)
• 또는 부피 재구성(Volume Reconstruction)
• 주어진 3차원 데이터로부터 동일한 스칼라 양을 지닌 등고면(Iso-Surface, Equi-potential Surface)을 다각형의 집합으로 표현
예: CT 영상의 재구성
• 2차원 편면 영상(Slice Images)을 조합하여 3차원 부피로 재구성
• 1-5mm 간격으로 촬영된 50 개 정도의 2차원 편면 영상
17
마칭 스퀘어(Marching Square)
2차원 등고선 추정
• 어떤 점에서의 밀도가 구하고자 하는 등고선 밀도보다 작다면 이는 추정하고자 하는 등고선보다 바깥쪽.
• 영상일 경우 회색도(灰色度, Gray Level)가 밀도에 해당
• 동일 회색도를 지닌 부분의 등고선을 추출
마칭 스퀘어(Marching Square)
내부점에서 외부점으로 나가는 선분의 중앙을 등고선이 지나간다고 가정 둘째그림: 좌하단 모서리만 내부점이고 나머지 모두 외부점일 경우
4 개의 모서리 각각이 내부점 또는 외부점일 수 있으므로 24 = 16 가지 경우가 존재
19
마칭 큐브(Marching Cube)
두 개의 편면 영상 사이 간격을 채우는 육면체
큐브의 8 모서리에서 밀도가 등고면의 밀도보다 큰지 작은지를 판단
• 28 = 256 가지가 존재. 대칭적인 경우를 감안하면 15개의 경우
프랙탈 이론(Fractal Theory) 프랙탈 차원(Fractal Dimension)
• 1967년 만델브로트(Mandelbrot) “영국의 해안선 길이는 얼마인가?”
• 스페인과 포르투갈의 국경선의 길이: 스페인 사전- 616 마일, 포르투갈 사전- 758 마일
해안선 길이측정
• 정밀히 측정할수록 더욱 늘어남. cf. 인위적 경계선
21
프랙탈 이론(Fractal Theory)
프랙탈 차원
• 소수차원(Fractal Dimension): 1.3차원, 2.2차원
• cf. 유클리드 기하학의 정수차원(Integer Dimensions)
• 수많은 선의 굴곡이 모여서 마치 면과도 유사. 1차원보다 크고 2차원보다 작은 소수 차원
•
측정 복잡도(Measurement Complexity)
• 측정 결과 길이가 늘어나는 비율
• 굴곡이 심할수록 크기가 커짐
• 유클리드 차원 + 측정 복잡도 = 프랙탈 차원
반복 시스템(Iterative System) 변환 결과에 또다른 변환을 가하기를 반복
• 변환은 결정적(Deterministic) 또는 비결정적(Non-Deterministic)
• 예: 코흐곡선(Koch Curve)
▪ 변환규칙, 변환과정, 최종결과
• 하나의 선분이 4 부분으로 나뉘었으므로 Number of Parts = 4. 나뉜 선분 의 길이는 원래 선분의 길이의 1/3이므로 Scale Factor = 3. 코흐 곡선의 차 원 = 1(직선) + D(0.26) = 1.26 차원
23
카오스 게임(Chaos Game)
중점의 궤적(Locus)이 어떤 모습일지를 예측하라.
카오스 이론 = “무질서(Chaotic, Random)하고 불규칙적(Irregular)으로 보 이는 현상이 지속적으로 가해질 때 최종 결과는 결코 무질서하지 않고, 오히려 질서 정연한(Orderly, Regular) 규칙을 지닌 결정적(Deterministic) 모습이 된다”
유인체(Attractor)
다중 축소복사(MRCM: Multiple Reduction Copy Machine) 이론
• 원래의 영상을 축소복사. 예를 들어 삼각형 형태로 조합
유인체(Attractor) = 최종모습
• 초기영상을 점차로 끌어 당겨 최종적으로 자기 모습을 닮도록 함.
• 예: 시어핀스키 가스켓(Sierpinski Gasket)
25
다중 축소복사
어파인 변환
자기 유사성(Self-Similarity)
자기유사성: 자기 자신의 모습을 축소하여 자신의 부분 부분에 반복하여 적용함으로 써 더욱 세부적인 모습을 생성
다중 축소복사 = 반복함수 시스템(IFS: Iterative Function System)
식물문법(Plant Grammar)
• 1. S -> a
• 2. S -> [ S[b]S]
• 3. S -> [ S[c] S[c] S]
• 예:
• S ➝ [ S[c] S[c] S ] ➝ [ [S[b]S] [c] [S[b]S] [c] [S[b]S] ] ➝
27
프랙탈 영상압축
영상 내부의 자기 유사성을 활용
부분간의 크기조절 인수나 회전각 등 선형 변환 계수만을 저장 최대 200 - 2000배의 압축을
• cf. JPEG 압축: 최대 20 - 50배
• 예: 마이크로소프트 사의 엔카르타 사전(Encarta Dictionary)의 정지영상과 동영상
프랙탈 산(Fractal Mountain)
터레인 모델링(Terrain Modeling)
Rand(0, 1) 함수: 0에서 1 사이의 난수. 산의 높이가 비 결정적(Non- deterministic)
29
프랙탈 패턴 복소수에 대한 변환함수
프랙탈 패턴
• 유인체가 수렴하는 초기점 위치와 발산하는 초기점 위치 사이의 경계
• 예: 변환함수 = 제곱 함수, 변환함수 = 임의함수
만델브로트 프랙탈(Mandelbrot Fractal)
수렴 또는 발산의 속도를 기준으로 컬러링 순차적 부분확대 모습
31
줄리아 프랙탈(Julia Fractal)
파티클 시스템(Particle System)
불꽃, 연기, 구름, 분수, 반사된 물결 등 비정형(Amorphous) 물체를 여러 개의 작은 입자를 사용하여 근사적으로 표현
33
파티클 시스템(Particle System)
점묘법을 사용: 물체 윤곽이 뿌옇게 보이기에 Fuzzy Object 입자 속성
• 모습(Shape), 위치(Position), 속도(Velocity), 색(Color), 온도 (Temperature), 수명(Lifetime), 질량(Mass)
입자의 생명주기(Life Cycle)
• 생성(Generation), 활동(Movement), 소멸(Death) for each frame { 프레임 별로
generate new particles; 새로운 입자 생성 remove old particles; 오랜 입자 소멸
for each particle { 개별 입자에 대해
resolve forces by vector addition; 여러 힘의 합력을 구함 calculate a, v, x; 가속도, 속도, 위치를 구함 apply rendering algorithm; 렌더링
} }
파티클 시스템(Particle System)
집단 시스템(Flocking System)
• 하나의 입자 속성이 다른 입자의 행위(Behavior)에 영향
(a) 나머지 모든 새가 날아가는 속도의 평균 속도를 취함
• 모든 새들이 같은 방향으로 날아야 함.
(b) 전체 새 무리의 중심을 향함
• p가 무리를 벗어나지 않아야 함.
35
파티클 시스템(Particle System)
단순화된 렌더링
• 입자 수가 많아 정밀한 렌더링에 한계
• 은면제거를 가하지 않음
• 앞물체가 뒷 물체를 가리면 블렌딩을 사용
• 에일리어싱을 방지하기 위해 여러 입자를 겹쳐서 칠함.
스프레이 렌더링(Spray Rendering)
플래쉬 렌더링(Flash Rendering), 프로우브 렌더링(Probe Rendering)
• 렌더링을 적용하는 방법
• 보고자 하는 부분만을 골라서 가시화하는 기법
• 스프레이를 뿌린 부분만 렌더링을 가함.
• 파티클 시스템과 결합되어 사용
• 자연과학 분야의 데이터 가시화(Scientific Visualization)
37
모핑(Morphing)
상호 혼합(Cross Dissolving)
• 두 영상의 화소 컬러를 보간
• 두 화소 색이 서로 섞여 중간 프레임을 만들냄.
• 형상의 구조적인 특징이 변해 가는 모습을 파악하기 어려움.
• 두 개의 얼굴의 중간 프레임은 전혀 얼굴같지 않을 수 있음.
모핑(Morphing)
메쉬 워핑(Mesh Warping)
• 형상의 특징적인 위치를 제어점으로 정의. 형상이 변화
• 4개의 제어점으로 구성된 사각형 메쉬가 사변형 메쉬로 변환
• 화소가 변하는 것이 아니라 제어점이 이동
제어점의 이동
• 선형 보간법: A = (1, 1)에서 A' = (5, 5)로 변환될 때 중간에 하나의 프레
39
모핑(Morphing)
제어점 A(1, 1)가 A'(5, 5)로 갈 경우 A에 인접한 화소 B(2, 2)는 어디로?
워핑 함수(Warping Function)
• A와 B 사이의 거리에 가중치를 부여해서 B'을 A' 부근에 위치시킴.
• 가중치 적용방식을 결정하는 함수.
▪ 예: 거리에 비례, 거리 제곱에
• 주어진 화소와 제어점간의 결합력을 표시
• 워핑 함수의 종류에 따라 모핑 결과가 달라짐.
모핑(Morphing)
16개의 정점 쌍(Vertex Pair)을 명시
41
애니메이션(Animation)
애니메이션
• 애니메이션(Animation)= Bringing to Life
• 프레임(Frame, Still Frame): 정지된 상태의 그림
• 약 1/16초 동안의 잔상
• 영화: 초당 약 24 프레임(동일 프레임을 2번 반복), 비디오 필름:초당 30 프레 임. TV: 초당 60개의 반 프레임(Half Frame).
수작업 애니메이션(Hand-Drawn Animation) 개별 프레임을 카메라 필름으로 캡쳐
• 프레임 비율(Frame Rate): 느린 속도를 요할 때는 단위 시간에 더욱 많은 프 레임을 보여주어야 함
• 레지스트레이션(Registration): 프레임 간에 상대적인 위치를 고정하는 작업.
페그(Peg)를 사용. 조명 테이블(Light Table) 에 의해 이전 물체의 상대적인 위치를 확인
셀 애니메이션(Cell Animation)
• 셀로판지(Celluloid Plastic Sheets).별도의 레이어를 최종적으로 중첩시 킴. 변하지 않는 부분을 그릴 필요가 없음.
• 애니메이터(Animator): 스케치, 잉커(Inker): 셀에 윤곽선 추적, 컬러리스 트(Colorist): 색칠
43
로토 스코우핑(Rotoscoping)
“애니메이션을 위해 실제 움직임을 추적하는 작업”
• 비디오 카메라를 사용한 동작 캡쳐(Motion Capture)
• 캐릭터의 윤곽을 추적(Tracing)
“실제 움직임과 애니메이션을 소프트웨어에 의해 결합하는 작업”
애니메이션
프레임 기반 애니메이션(Frame-Based Animation)
• 미리 생성된 정지영상. 배경과 객체가 서로 섞여서 하나의 정지영상
• 그래픽 객체(Graphical Object)라는 개념이 없음.
캐스트 기반 애니메이션(Cast-Based Animation)
• 레이어에 의해 배경과 그래픽 객체를 별도로 취급.
• 스프라이트(Sprite): 캐스트(배우, Cast)에 해당하는 객체. 위치, 속도, 가시 성 등의 속성과 상호 작용에 관한 메쏘드(Method)를 지님.
• 페이스(Face): 상황 별로 서로 다른 모습의 스프라이트
45
키 프레임 애니메이션
키 프레임(原畵, Key Frame)
• 특징적인 프레임. 동작이나 표정 등에서 급격한 변화가 일어나는 곳 인 비튄 프레임(動畫, Inbetween Frame)
• 키 프레임을 채우는 중간 프레임. 컴퓨터에 의해 생성 가능 동작 경로(Motion Path)
• 물체나 인물의 동선.동선을 따라가되 움직임의 중간 중간에 가장 중요한 포인트 가 되는 위치에 키 프레임을 그림.
트위닝
트위닝(Tweening)
• 원화로부터 동화를 채우는 작업. 일종의 보간작업
• 데이터 압축효율을 높이기 위해서 원화는 그림 전체를, 동화는 직전 원화와의 차 이만을 저장하기도 함. 벡터 그래픽 형식으로 표현하는 것이 유리(정점에 대한 보간)
• 예: 플래쉬 애니메이션
47
트위닝
색, 크기, 회전각 가속과 감속 제어
스토리 보딩(Story Boarding) 애니메이션의 요소
• 전달하고자 하는 스토리
▪ 조직적이고 또 그물같이 얽혀진 시나리오
• 중요 장면을 스케치한 스토리 보드
▪ 장면(Scene), 행동(Action), 장면의 전환(Scene Transition) 등의 관점에서 볼 때 중요한 부분으로 나눔.
▪ 빠른 속도로 진행. 몇 커트의 스케치로 흐름을 표현
• 액션, 음향효과 등을 위한 스크립트
▪ 예: 1) 도입 장면. 주인공이 절벽 위에 멈춰 선다. (0초에서 4초간, 프레임 1-60) 2) 비가 내린다. (4초에서 9초간, 프레임 61-120)
49
물체의 회전 애니메이션에서 물체의 오리엔테이션
• 위치뿐만 아니라 오리엔테이션이 변화
• 이동 경로는 스플라인에 의해 제어 가능
• 오리엔테이션은 회전변환. 적절한 보간이 이루어져야 함
4가지 표현방법
• 회전행렬 (Rotation Matrix)
• 오일러 각 표현 (Euler Angle)
• 축-각 표현 (Axis-Angle)
• 사원수 (Quarternion)
회전행렬 표현 예: (3차원 회전. 동차좌표 생략)
정규직교성(Orthonormality)
• 정규성(定規, Normality): 컬럼 벡터 = 단위 벡터
• 직교성(直交, Orthogonality): 컬럼 벡터 간의 내적은 0 자유도(DOF: Degree of Freedom) 3
• 3 ☓ 3 행렬에 모두 9 개의 계수.
• 정규직교성으로 인한 6 개의 제약조건
• 3의 자유도를 9개의 계수로 나타냄. 비효율
51
회전행렬 표현
우변 행렬은 더 이상 회전행렬이 아님.
• 정규직교성을 만족하지 못함.
• 크기조절이나 전단변환이 가해져 강체모습을 상실 표류(Drift)
• 각도를 조금씩 증가하면서 연속된 회전
• 새로운 회전행렬을 이전행렬에 곱해서 새로운 복합행렬 생성
• 부동소수 연산으로 인한 오류로 인해 정규직교성 상실
오일러 각 표현
3개의 각도만으로 회전을 표현
• z 축 기준의 회전각을 롤(Roll), x 축 기준의 회전각을 피치(Pitch), y 축 기준 의 회전각을 요(Yaw)
• 자유도 3에 3개의 계수를 저장하므로 저장 공간 면에서 유리
• 회전각 자체를 그대로 저장하므로 표류의 문제 없음.
• 최종적으로는 회전행렬로 변환
회전각 α, β, γ일때 x, y, z 축을 기준의 순차적 회전결과
53
오일러 각 표현
오일러 각에 의한 회전
• 항상 현 시점에서의 모델 좌표계를 기준으로 회전.
• 회전의 결과 좌표축 방향이 바뀐다는 점에 유의
• 처음 z 축 기준 회전 결과 모델 좌표계의 x, y 축 방향이 이전과는 달라짐.
• 회전을 적용하는 순서가 중요함. 교환법칙이 성립하지 않음
오일러 각 표현
단점 1. 복합 변환의 결과를 예측하기 어려움.
• 오리엔테이션을 보간하기 위해서 오일러 각 자체를 보간
• 오일러 각 (10, 20, 30)에 의해 회전하고 회전결과를 기준으로 (40, 50, 60) 에 의해 회전하면, 원래 물체를 (50, 70, 90)에 의해 회전한 것과는 다름. 첫 번째 회전 결과 좌표축 방향이 변해 버리기 때문
단점 2. 김벌락(Gimbal Lock) 현상
• x 축 기준으로 그림에 표시된 방향으로 일정 각도를 회전. 이어서 z 축을 기준으 로 90도 회전하면 x 축과 y 축이 나란해 짐
• 현재 상태에서 y 축을 기준으로 회전을 가하면 이전에 x 축 기준으로 이미 회전 한 각도에 영향을 미침. 회전결과 x, y, z 축이 독립성을 잃을 수 있음
55
오일러 각 표현
단점 3: 오리엔테이션이 변하는 경로가 유일하지 않음
• y축을 기준 180도 회전
▪ z축을 기준으로 180도 회전 + x축을 기준으로 180도 회전
• 회전각을 직접적으로 보간해서는 오리엔테이션이 변하는 경로를 예측하기 어려 움.
축-각 표현
회전축과 회전각을 사용: 회전축은 단위벡터로 나타냄
57
사원수(Quaternion)
축-각 표현을 수학적으로 개선
• 축 관련 변수 3개와 회전각 관련 변수 1개를 하나의 4차원 변수로
• w = 스칼라 부(Scalar Part) 또는 실수 부(Real Part), v = 벡터 부 (Vector Part) 또는 허수 부(Imaginary Part). 단위 4원수: 벡터의 길이 (노름, Norm) = 1
• 단위 사원수(Unit Quaternion)만이 회전에 사용됨.
축각 표현과의 관계
사원수 연산
단위 사원수 노름 값은 1이므로 공액 사원수 자체가 역 사원수
59
사원수 연산
공액 곱셈(Conjugate Product)
• 사원수 q를 사용하여 실제로 회전을 가하는 작업
• 원점으로부터 물체 위의 점 p를 향한 벡터 P
• P 앞쪽에 q를 곱하고 뒤쪽에 q의 공액 사원수를 곱하여 계산
• P는 3차원 벡터. 이를 사원수로 만들려면 스칼라 부분인 w를 0으로
사원수에 의한 보간
사원수 q1, q2 에 의해 연속적으로 회전하였다면 그 결과는 원래의 물체에 대해 사원 수 q1*q2 으로 회전한 것과 동일
예:사원수 q에 의해 회전하고 그 결과를 다시 에 의해 회전
61
4차원 가상원구(Hypersphere)
사원수 q는 물체 위치가 아니라 물체 오리엔테이션을 의미 물체 오리엔테이션의 보간
• 원구면을 따라가면서 사원수를 선택
• 오일러 각에 의해 보간할 경우 그림 (a)와 유사.
▪ 오리엔테이션의 변화가 매우 부자연스러움.
LERP
러프(LERP: Linear intERPolation)
63
SLERP
슬러프(SLERP: Spherical Linear intERPolation)
• LERP의 경우 오리엔테이션이 바뀌는 속력이 변화함
• 중심각 θ를 일정하게 증가시키면서 보간 .
사원수의 보간
중복성
• 완전히 동일한 회전을 의미함.
원구 표면을 따라가면서 최단경로를 택했을 때 가장 자연스러움
• 그림의 경우 q2을 선택
• 벡터 내적에 의해 선택가능
65
가상현실
Virtual Reality — a three dimensional, computer generated
simulation in which one can navigate around, interact with, and be immersed in another environment
(John Briggs - The Futurist) 가상현실 - 컴퓨터에 의해 생성된 3차원 시뮬레이션. 사람은 또 다른 환경에 몰입하 여 돌아다니거나 상호작용을 할 수 있음.
(존 브릭스 - 미래학자)
Virtual Reality — the use of computer technology to create the effect of an interactive three-dimensional world in which the objects have a sense of spatial presence.
(Steve Bryson - NASA Ames) 가상현실 - 컴퓨터 기술을 사용하여 상호작용이 가능한 3차원 세계를 생성하는 것.
생성된 세계의 내부 물체는 마치 현실공간에 존재하는 느낌을 줌.
(스티브 브라이슨 - 미 항공 우주국 에임즈 연구센터)
가상현실
가상현실(VR: Virtual Reality) 또는 가상환경(Virtual Environment)
• 원격 조작에서 출발
• 방사능에 오염된 지역의 폐기물을 처리
• 작업자는 현장에서 멀리 떨어져 있음.
• 실제 현장 작업은 로봇이나 자동제어 기계가 처리
• 조작자가 마치 현장에 있는 것처럼 느끼면서 작업을 제어 현실감(Reality) 또는 원격 현장감(Tele-presence)
• 가상현실의 핵심
• 작업자가 정말로 현장에 있는 것과 똑같이 느끼게 하는 것이 중요
• 현실감이 증폭될수록 인간의 인식이나 직관 또는 판단이 제대로 동작
67
현실감 증폭
HMD(Headmount Display)
• 입체영상, 넓은 시야각, 경량
전방향 입체음향
• 360도 원구의 모든 방향에서 분리된 소리 데이터 글로브
• 출력장치: 촉각
• 입력장치: 제어부피 내에서 사용자 움직임을 지정
가상현실
가상현실 = 감각환경(Sensory Environment)
가상현실 = 합성환경(Synthetic Environment, Artificial Environment)
• "실제로 존재하지 않음“
가상현실 = 대화환경(Interactive Environment)
• 끊임없이 사용자와의 상호작용을 하면서 변화.
▪ cf. 일반적 시뮬레이션
• 가상보행(Virtual Walkthrough)
69
GLSL
"오픈지엘은 프로그램 언어가 아니다. 어떤 작업을 활성화/비활성화 하거나 작업의 파 라미터를 명시하는 정도이지 렌더링 알고리즘은 본질적으로 고정되어 있다. 이렇게 하 는 이유 중 하나는 효율이다. 그래픽 하드웨어는 일반적으로 어떤 작업을 정해진 순서 에 따라 실행함으로써 효율 향상을 기한다. 따라서 이러한 작업 과정을 임의의 알고리 즘으로 대체하기는 어렵다. 결국 프로그램 가능성(Programmability)은 하드웨어 를 최대한 활용하는 API와는 서로 모순된다."
Seal and Akeley,
"The Design of the OpenGL Graphics Interface," 1994
GLSL(GL Shading Language)
지엘• 파이프라인마다 고정된 알고리즘을 그래픽 처리의 속도를 향상
• 그래픽 카드가 지원하는 한 지엘 확장 기능(ARB Extension)을 사용가능. 지 엘의 설계목적인 프로그램의 이식성(Portability)을 저해
지엘 셰이딩 언어(GLSL: GL Shading Language)
• 사용자 프로그램에 의해 파이프라인 일부를 대체
• 호환성을 확보하기 위해 셰이딩 언어는 하드웨어에 무관한 고급언어
• 지엘 코드와 섞여서 동작
• 고정된 파이프라인을 사용치 않기 때문에 속도 면에 유의. 셰이딩 언어 또는 컴파 일러는 병렬처리를 최대한 활용
ARB-GL2 워크 그룹
• 2003년초 드래프트 오픈지엘 셰이딩 언어
• 새로운 컴파일러에 의해 "C" 언어와 유사한 고급언어로 코딩
71
파이프라인 프로세스의 대체
정점 셰이더(Vertex Shader)
프래그먼트 셰이더(Fragment Shader)
정점 셰이더와 프래그먼트 셰이더
정점 셰이더
• 입력: 정점의 위치, 색, 법선벡터 등
• 델뷰 행렬과 투상행렬을 사용하여 정점의 위치를 변환하거나 법선벡터를 변환하 고 재 정규화
• 지엘의 상태변수를 접근할 수 있기 때문에 텍스쳐와 조명에 활용
• 텍스쳐 영상을 직접 이용할 수 있음.
프래그먼트 셰이더
• 입력: 정점의 위치, 색, 법선벡터 등을 보간한 값
• 안개효과, 컬러 섬, 화소 확대, 텍스쳐 접근 등의 기능을 대신
• 시저 테스트, 알파 테스트, 깊이 테스트, 스텐실 테스트, 디더링 등 파이프라인 기능은 대체할 수 없음.
73
openGL ES
openGL ES
openGL ES의 특징
• 1) 기본요소 렌더링에 있어서 openGL에서 사용하는 glBegin...glEnd를 없 애는 대신 정점 배열(Vertex Array)를 사용하였다.
• 2) 대부분의 임베디드 프로세서가 부동소수 연산 기능이 없는 점을 감안하여 정 점의 좌표를 표현하는데 있어서 고정소수 타입(Fixed Point Type: 예를 들어 GL의 경우 0.05=0.5e-1, ES의 경우 0.05=0.05)을 사용하도록 하였다.
• 3) 경량 인터페이스를 제공하기 위해 쿼드(Quad)/폴리곤(Polygon) 기본요 소, 폴리곤 모드, 앤티에일리아스를 적용한 다각형 렌더링, 폴리곤 스티플
(Polygon Stipple), 프런트 버퍼 드로잉(Front Buffer Drawing), 이밸 류에이터(Evaluator), 비트맵, 3D 텍스쳐, A 버퍼, 화소 복사, 디스플레이 리스트(Display List), 사용자 정의 절단 다각형(User-defined Clipping Plane), 컬러 인덱스 모드 등 많은 기능을 제거하였다.
• 4) GLshort, GLbyte, GLubyte, 함수 접미어를 사용하지 않으며 float, short, byte 자료형만 사용이 가능하다.
75
openGL ES
OpenGL ES 1.1
• 1) 멀티 텍스쳐링(Multitexturing)
• 2) 자동 밉맵 생성(Automatic MipMap Generation)
• 3) 고정소수 연산 및 부동소수 연산(Fixed Point and Floating Point Profiles)
• 4) 사용자 정의 절단 다각형(User-defined Clipping Plane)
• 5) 점 렌더링 기능(Point Rendering)
현재로서 구글 운영체제인 안드로이드(Android 1.6)가 OpenGL ES 1.1을 지 원한다.
openGL ES
OpenGL ES 2.0
• 렌더링 파이프라인에 의한 대부분의 고정 렌더링 기능을 제거하는 대신 지엘의 셰이딩 언어에 해당하는 GLSL ES를 사용하여 이를 프로그램 할 수 있도록 한 것이다. 예를 들어 조명에 있어서 물체 정의 및 광원 파라미터 등을 정의하는 대 신 프로그래머가 작성한 셰이더가 작동하도록 한 것이다.
• 1) 정점/프래그먼트 셰이더(Vertex/Fragment Shader) 사용
• 2) 고급 언어(GLSL ES) 지원
• 3) 광원 속성(Light Attributes) 사용
• 4) 텍스쳐(Texture), 의존 텍스쳐(Dependent Texture), 큐브 맵(Cube Maps)
• 5) 프레임 버퍼 오브젝트(Frame Buffer Object) 사용
77
openGL ES
Fixed Function Pipeline
openGL ES
Programmable Pipeline