2. Agenda
INTRODUCTION
– PROCEDURAL TECHNIQUES AND COMPUTER GRAPHICS
• What Is a Procedural Technique?
• The Power of Procedural Techniques
– PROCEDURAL TECHNIQUES AND ADVANCED GEOMETRIC MODELING
BUILDING PROCEDURAL Textures
– INTRODUCTION
• Texture
• Procedural Texture
• Procedural versus Nonprocedural
• Implicit and Explicit Procedures
• Advantages of Procedural Texture
• Disadvantages of Procedural Texture
• The RenderMan Shading Language
• What If You Don’t Use RenderMan?
2
4. Procedural Techniques and Computer Graphics
역사적 흐름
– 컴퓨터 그래픽의 역사와 함께 사용
– 1980 년대 중반에서 후반 동안
• 현실적인 질감(나무, 돌, 대리석 등)을 표현
• 물, 연기, 증기, 행성
– 렌더맨의 Shading언어의 개발로 절차적 기법의 사용이 확대
– 현재 대부분의 상용 렌더링 및 애니메이션 시스템은 절차적 인터페이스도 제공
4
5. Procedural Techniques and Computer Graphics
Programmable
강력한 CPU Graphics
Processors
인터렉티브하고 복잡한 절차적 모델과 효과를
구상하고 실현할 수 있는 시대
5
6. What Is a Procedural Technique?
컴퓨터가 만든 모델이나 효과의 일부 특성을
지정하는 코드 세그먼트 또는 알고리즘
6
13. The Power of Procedural Techniques
추상화가 가능하다
– 적재적소에 만들어진 함수나 알고리즘을 평가한다.
데이터를 줄일 수 있다
– 디테일이 명시적 이진 않지만 암시적으로 절차적인 데이터를 얻을 수 있다
파라미터를 컨트롤 할 수 있다
– 파라미터의 추가로 디테일에 양을 늘릴 수 있다
절차적 기술에 내제하는 뜻밖의 재미를 얻을 수 있다
– 예기치 않은 동작 절차, 확률적 과정
유연성을 제공한다
– 물리학의 복잡한 법률에 제약되지 않고도 제작할 수 있다
정확한 예술적인 효과를 자연 법칙을 시뮬레이션하여 제작할 수 있다
13
14. Procedural Techniques and
Advanced Geometric Modeling
advanced geometric modeling은 본질적으로 절차적
Grammar-based models, graftals, L-systems 등 복잡한 모델을 시뮬레이션 할때 파라
미터 규격을 가짐
Implicit surface models (Meta-balls, Soft Object 등) 은 전통적인 기법으로 설명하기
어려운 물체
– electron density clouds의 이미지를 생성하기 위해 Blinn에 의해 도입
– parametric surfaces보다 soft objects를 모델링하거나 애니메이팅할때 뛰어 난 유연성을 제공
– 대표적인 예인 파티클 시스템의 생성, 위치, 소멸은 알고리즘에 의해 제어됨
advanced geometric modeling이 책의 주 목적은 아니지만 더 나은 기법으로 진화하기
위해서 이책에 설명되어 있는 기술과 결합할수 있음
주요 초점은 절차적 Texture, 절차적 모델링, 절차적 애니메이션
14
16. Building Procedural Textures
기하학적 계산이 절차적 텍스처링에선 필수적
2D 및 3D Point, Vector, 데카르트 좌표시스템, 내적, 외적 및 homogeneous
transformation matrices 등
RGB의 표현, Simple Diffuse과 Specular Shading Models
http://www.slideshare.net/tahersb/hearn-and-baker-2-d-transformations
16
17. Introduction
더 나은 렌더링을 하기위해 좀 더 나은 방법을 찾고 있으며 합성 영상의 리얼
리즘을 향상시키기 위해 노력
Shading
– 사용자 지정 Surface 속성과 셰이딩 모델에서 픽셀이나 음영 샘플의 색상을 계산하는 과정
Texturing
– Surface의 형상에 실제로 존재하지 않는 Surface의 세부 모양을 주기 위해 지점에서 지점으로
Surface 성질을 변화하는 방법
17
18. Introduction
Shading
– illumination models, lighting models, 또는 reflection models 등으로 불리는 재질과 빛의 상호
작용을 시뮬레이션
– 일반적으로 물리학을 기반으로 하지만 많은 단순한 가설을 만들어 냄
– 완벽하게 세부적인 물리 모델은 가공하기 어려운 계산을 포함
– Diffuse(Lambertian ) shading : 컴퓨터 그래픽에 최초로 사용한 것
– Specular Reflection shading : Phong, Blinn, Cook and Torrance,
– Anisotropic shading : Kajiya
– 1980년대 초반 대부분의 연구가 global illumination effects을 시뮬레이션하는 것으로 전환
– Reflection, refraction, scattering of light, Raytracing, radiosity
18
19. Texture
Catmull(1974) : 최초의 컴퓨터 그래픽 이미지를 만듬 “Futureworld”
서페이스는 파라미터 패치로 표현
– 패치에 대한 U, V 지점의 파라미터 값은 텍스텨 이미지의 해당 픽셀의 위치를 계산하는데 사
용
– Simple Point-Sampling 은 Aliasing artifacts의 확률이 높아짐 : 정교한 샘플링/ 필터링이 필요
Edwin Catmull
– Z-buffering
– texture mapping
– subdivision surface
– the fast rendering of bicubic patches
19
20. Texture
Texture 맵핑의 초기부터 다양한 연구자들은 다양한 텍스처 이미지를 생성하는 대신 스캔하거나 그
것을 그리는 데 합성 질감 모델을 사용
Blinn 과 Newell (1976) Fourier 합성을 사용
Fu and Lusy (1978) 는 문법 기반 Texture 생성 기법을 제안
Schacter와 Ahuja (1979)와 Schacter 비행 시뮬레이터를 위한 Texture 이미지를 생성하는 각종 푸
리에 합성 및 확률적 모델을 사용
Blinn 과 Newell (1976) 은 mirrorlike Surface의 반사를 시뮬레이션 하기 위해 반사 Mapping을 도입
– environment mapping
– RayTracing의 단순화된 형태
20
21. Texture
Blinn 과 Newell (1976) 은 mirrorlike Surface의 반사를 시뮬레이션 하기 위해 Reflection Mapping을
도입
– Environment mapping
– RayTracing의 단순화된 형태
– Normalized 된 vector R = (x,y,z) 의 Latitide 와 Longitude 각도를 사용하여 Texture 이미지에 억세스
Surface Normal
Point toward The Viewer
Reflection Direction
R = 2(N ⋅ V)N – V
Reflection mapping 절차는 음영 처리되는 지점에
카메라 또는 보는 사람의 ray로 반사 방향 R을 계산
Cube mapped reflection example
21
22. Texture
Blinn (1978) 은 Geometry의 수정 없이 Bump의 모양을 시뮬레이트 하기 위한 bump mapping 을 도
입
– Normal의 결과가 Shading 계산에 사용될 때 Surface는 Bum와 indentations을 가짐
– 실루엣에서 볼 수 있는 건 아닌 Shading Variations임
Cook (1984)은 Displacement Mapping을 소개
22
23. Texture
Reeves, Salesin, Cook (1987) : Light Source의 Position에서 렌더링된 장면의 Depth Image를 기반
으로 이미지 Texture를 사용하여 Anti-aliased shadows 를 생산하는 알고리즘을 제시
– Percentage Closer Filtering
Gardner (1984, 1985) : 나무, 지형 그리고 구름의 모델에 Texture를 추가하는
Sinusoidal Functions의 합계에 의해 생성된 Solid Textures를 사용
23
24. Texture
Peachey 과 Perlin : 2D Texture의 대안으로 Solid Textures (Space-Filling Textures) 을 소개
– Solid Texture Mapping : 공간 속에 가상적인 공간을 만들어 그 속에 오브젝트를 담아 둔다는 개념
24
26. Texture
Praun, Finkelstein, and Hoppe (2000) “lapped Textures”
– Swatches의 Orientation 과 Scale의 가이드에 의해 사용자 정의된 Vector Field 에 따라, Texture의 여러 작은 Swatches는 중복 방식
의 Surface에 위치함
26
27. Procedural Texture
Texture 맵핑의 초기부터 다양한 텍스처 이미지를 생성하는 대신 스캔하거나 그것을
그리는 데 합성 질감 모델을 사용
Blinn 과 Newell (1976) Fourier 합성을 사용
Fu and Lusy (1978) 는 문법 기반 Texture 생성 기법을 제안
Schacter와 Ahuja (1979)와 Schacter 비행 시뮬레이터를 위한 Texture 이미지를 생성
하는 각종 푸리에 합성 및 확률적 모델을 사용
27
28. Procedural Texture
Fournier, Fussell, and Carpenter (1982) and Haruyama and Barsky (1984)은 fractal을
사용하여 Texture를 생성하는 방법을 제안
Gagalowicz, Ma 1985; Garber 1981 는 Texture를 제현한 통계 Texture 모델을 개발
28
29. Procedural Texture
Cook (1984)은 Shader Tree를 소개 : 절차적 이미지를 생성하는 것에 가까운 첫번째
시스템중 하나
– 광원, atmosphere을 통한 감쇠 뿐 아니라 SurfaceSurface에 다른 Shading모델의 사용을 가능하게 함
– Shading모델에 대한 입력을 절차적으로 조절
– Color and transparency Textures, reflection mapping, bump mapping, displacement mapping, and Solid
texturing 등등 모든 쉐이드 트리를 사용하여 구현할수 있음
29
30. Procedural Texture
Perlin (1985) 은 절차적 Texture를 제작하는 Language를 설명
– 오늘날 사용하는 절차적 Texture의 더 대중적인 클래스의 토대를 마련
– 노이즈를 기반으로 초기의 확률적 Texture를 제작
Turk (1991)와 Witkin와 Kass (1991)은 동물의 껍질에서 착색 패턴을 만드는 생화확적
프로세스에서 영감을 얻어 합성 질감 모델을 설명
30
31. Procedural versus Nonprocedural
어떤 Texture가 절차적인가? :절차적인 Texture의 정의는 파악하기 힘들다
데이터 구조를 설명하는 Entities 와 구별하기 위해 컴퓨터 과학에서 사용
알고리즘을 변경하기 보다는 Parameters 나 Input 의 변경으로 이루어짐
디지털이나 페인트 이미지가 아닌 프로그램 또는 모델로부터 합성 생성함
때로는 디지털이나 페인트 이미지가 절차적 Texture 사이에 포함될 수 있음
좋은 절차적 Texture는 이미지 Texture의 절차적 조합 수정 또는 왜곡을 기반으로 할수
있음
31
32. Implicit and Explicit Procedures
Implicit Explicit
특정 지점에 대한 Query 에 직접 모양을 이루는 지점을 생성
절차적인 Answers를 주는 방식
Isocurve (in 2D)
Isosurface (in 3D)
32
34. Implicit and Explicit Procedures
Implicit Explicit
Ray tracers Depth buffer renderers
* Texture 절차가 아닌 렌더러에 의해 결정
자연적인 돌 질감, 구름, 안개 등 polygons / parametric curves patches
34
36. Disadvantages of Procedural Texture
Build 하고 Debug하기 결과를 예측하는 것이 어
어려울 수 있음 렵다
저장된 Texture 이미지를
억세스하는 것보다 느릴 앨리어싱의 문제
수 있다
36
37. The RenderMan Shading Language
Shading모델과 절차적 텍스처를 위한 프로그램 코드를 쓸 수 있는 특별한 용도의
Shading언어
Cook(1984)에 기술된 Shader Tree에서 유래한 것
문법은 C와 같지만 Shading언어가 포함
Shading언어는 렌더맨 Renderer에 의해 수행되는 음영계산을 프로그래밍할 수 있음
37
39. What If You Don’t Use RenderMan?
절차적 Texture에 관심이 있는 다양한 연령층을 대상
렌더맨은 절차적 쉐이더를 표현할 수 있는 편리한 방법
절차적 텍스처 빌딩 블록 함수 기능의 많은 C 언어 구현에 대해 설명
이미지 텍스처에 액세스하는 기능을 제공
– 다른 Renderer를 사용한다면 그것에 맞게 Texture 함수를 변환할 수 있어야 함
39