Lecture 9
This presentation is the property of its rightful owner.
Sponsored Links
1 / 52

Lecture #9 PowerPoint PPT Presentation


  • 227 Views
  • Uploaded on
  • Presentation posted in: General

Lecture #9. 제 6장. 음영법( Shading). 개 요. 음영이 없으면 3차원 물체도 2차원 이미지로 보일 수 있다 빛과 면사이의 상호 관계를 모델에 추가 광원의 모형 광-재질 상호 작용의 모형 국지적 조명 모델만 고려  전역적 조명 모델. 강의 내용. 조명과 재질 광원 Phong 반사 모형 벡터의 계산 다각형 음영 OpenGL 의 광원 OpenGL 에서 재질의 지정 순환적 분할에 의한 구의 근사 구 모델의 음영 처리. 조명과 재질.

Download Presentation

Lecture #9

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Lecture 9

Lecture #9

제 6장. 음영법(Shading)


Lecture 9

개 요

  • 음영이 없으면 3차원 물체도 2차원 이미지로 보일 수 있다

  • 빛과 면사이의 상호 관계를 모델에 추가

    • 광원의 모형

    • 광-재질 상호 작용의 모형

  • 국지적 조명 모델만 고려

     전역적 조명 모델


Lecture 9

강의 내용

  • 조명과 재질

  • 광원

  • Phong 반사 모형

  • 벡터의 계산

  • 다각형 음영

  • OpenGL의 광원

  • OpenGL에서 재질의 지정

  • 순환적 분할에 의한 구의 근사

  • 구 모델의 음영 처리


Lecture 9

조명과 재질

조명과 반사를 물리적으로 완전히 모델링 하는 것은 불가능

단순화

전역적 방법으로 근사(광선 추적, 방사성 기법) : 그래픽스 파이프라인에 부적합

단순화

국지적 조명 모델(Phong 반사모형 등) : 물리적 정확성과 계산효율의 절충

  • A와 B 사이에 무수한 반사작용이 발생

  • 모델링 불가능

  • 단순화가 필요


Lecture 9

조명 모형

  • 전역적 모형

    • 광원과 표면 사이의 다중 상호 작용 고려

    • 방사성 기법, 광선 추적 기법 등

  • 국지적 모형

    • 광원과 표선 사이의 단일 상호 작용만을 고려

      • 표면상의 한 점과 광원 사이의 상호작용은 다른 표면상의 점들에 독립적

    • 두개의 모형으로 구성

      • 광원 모형 : 장면에서 사용하는 광원을 모델링

      • 반사 모형 : 장면의 반사면과 빛 사이의 상호작용을 모델링


Lecture 9

빛과 표면

  • 인간

광원의 색

객체 표면의 색


Lecture 9

빛, 표면과 컴퓨터 이미지

  • 컴퓨터

많은 광선들은 투영면의 절단 사각형을 통과하지 않음

관측자를 투영면으로 대치


Lecture 9

표면의 종류

전반사면

난반사면

반투명면


Lecture 9

광 원

  • 광원 : 위치 (x, y, z) , 방향 (,  ), 파장 

  • 조도함수 : I ( x, y, z, , ,  )


Lecture 9

 I ( x, y, z, , ,  )

광원에 의한 총 기여도 :

백열 전구 광원

계산이 어려움 : 단순화된 광원 모델이 필요


Lecture 9

색광원

  • 광원은 주파수 의 연속함수이지만 단순한 R-G-B모형을 사용한다.


Lecture 9

광원의 종류

1) 주변광(ambient light)

2) 점광원(point source)

3) 집중광선(spotlight)

4) 원거리 광원(distant light)


Lecture 9

주변광

  • 균일한 조명

    • 실내의 객체들간의 다중 상호작용에 의해 형성된 조명을 모델

    • 객체의 모든 점에서 동일한 세기의 빛을 받음

    • 주변광(Ambient Light)

      • 환경 내의 각 점에서의 주변 광도를 정의


Lecture 9

점광원 (1)

  • 모든 방향으로 균일하게 빛을 방사

조도는 거리의 제곱에 반비례


Lecture 9

암영부

반영부

점광원 (2)

  • 대비가 큰 이미지가 만들어진다

    • 실제의 광원은 유한한 크기를 가지고 있으므로 좀 더 부드러운 이미지가 만들어진다

    • 주변광을 사용하여 높은 대비 효과를 완화시킬 수 있다

    • 부드러운 조명을 위해 거리항을 수정


Lecture 9

Is

f

S

가 180이면 점광원이 됨

f

e

I

 cos

(

e

가 감쇄도를 제어)

집중광선 (1)

  • 작은 각도로만 빛을 방출

e : 집중광선 지수


Lecture 9

집중광선 (2)

  • 두 단위 벡터가 주어졌을 경우 cos 값 계산


Lecture 9

원거리 광원

  • 점광원

    • 표면상의 각 점으로부터 광원으로의 방향을 계산해야 함 (많은 시간 소요, 보다 좋은 화질)

  • 원거리 광원

    • 방향을 한번만 계산(빠른 계산, 화질이 떨어짐)

광원의 위치

광원의 방향

각 점에 대한 방향 동일

원거리 광원

점광원


Phong 1

법선벡터

관측자

광원

완전 반사 방향

Phong 모형에서 사용되는 벡터들

Phong 반사 모형 (1)

  • 물리적 정확성과 계산효율의 절충 모형

    • 그래픽스 파이프라인에 적합

      • 실시간으로 음영 효과를 생성

    • 사용자가 장면을 효과적으로 제어 가능


Phong 2

Phong 반사 모형 (2)

  • 세가지 광-재질 상호 작용 지원

    • 주변광 반사

    • 난반사

    • 전반사

  • 각 광원이 삼원색에 대하여 별도의 주변광 성분, 난반사광 성분, 전반사광 성분을 갖는다고 가정


Phong 3

Phong 반사 모형 (3)

  • 표면 점 p에서 i번째 광원에 대한 조도 행렬

  • 반사항 행렬 - 각 점에서 재질, 표면방향, 광원 방향, 관측자와의 거리에 의존


Phong 4

Phong 반사 모형 (4)

광원 i에 의한 점 p에서의 적색 세기

모든 광원의 기여도

전역적인 주변광

계산이 각 광원, 각 원색에 동일하므로 간단히 표현


Ambient reflection

주변반사(ambient reflection)

  • 주변광의 세기 는 표면의 모든 점에서 같다

  • 반사계수


Lecture 9

난반사

정오에 더 밝음

일출과 일몰에 어두움

  • 거친 표면

  • 관측각도에 무관

반사되는 양은 광원의 방향에 의존적


Lecture 9

난반사의 수학적 규정 (1)

  • Lambert 의 법칙


Lecture 9

난반사의 수학적 규정 (2)

거리 d에 의한 감쇄를 포함하면


Lecture 9

전반사 (1)

  • 매끄러운 표면

    • 반사가 일정 방향으로 됨

    • 관측자의 위치에 따라 반사량이 다름

전반사의 입사각과 반사각이 같음


Lecture 9

: 광택 계수

전반사 (2)


Phong

Phong 반사 모형 예

Phong 모형에 의한 렌더링

- 재질 특성을 이용하여 각 찻잔이 다르게 보임


Lecture 9

다각형 음영

  • 세 가지 음영법

    1) 평면 음영법

    2) Gouraud 음영법

    3) Phong 음영법

곡면을 다강형의 집합으로 렌더링 함으로써 속도 향상


Lecture 9

평면 음영 (균일 음영)

  • 가정

    • 원거리 관측자

    • 원거리 광원

  • n, l, v : 상수

각 다각형에 대해서 음영계산이 한번만 이루어짐


Lecture 9

평면 음영

  • glShadeModel (GL_FLAT)

    • 다각형의 첫번째 정점의 법선을 사용한다

문제점 : 다각형 경계선이 뚜렷하다


Mach band

Mach 띠(band)

  • 인간의 시각 시스템의 측면 금제(Lateral Inhibition) 특성

    • 빛의 세기 차이에 민감하게 반응

    • 눈의 추상체와 시신경이 연결되는 방법에 기인

    • 이러한 특성을 극복하기 위해서는 부드러운 음영 처리 기술이 필요


Gouraud

보간 음영과 Gouraud 음영

  • 다각형 내의 각 화소에 대한 음영을 개별적으로 계산하는 것은 많은 시간이 소요된다

  • 각 정점에 대해서

    • 인접한 다각형들을 찾아 다각형들이 공유하는 정점을 정의

    • 그 정점에서 법선(다각형들의 법선 평균)을 계산

    • 그 정점에서의 음영 계산

  • 다각형 내의 각 화소에 대해서

    • 음영을 보간

보간법 이용


Lecture 9

glShadeModel(GL_FLAT)

glShadeModel(GL_SMOOTH)

보간 음영과 평면 음영


Lecture 9

각 정점에서 법선의 계산


Lecture 9

보 간

  • 정점들의 광도를 보간

n1 => L1

n2 => L2

n4 => L4

n3 => L3

L = interpolate (L1, L2, L3, L4)


Lecture 9

메쉬 자료구조

  • 정점에 이웃한 다각형들을 찾을 수 있도록 하는 자료 구조


Phong1

Phong 음영법

  • 알고리즘

    • 각 정점에 대해서

      • 인접한 다각형들을 찾는다

      • 그 정점에서의 법선을 계산

    • 다각형 내의 각 화소에 대해서

      • 법선을 보간

      • 음영을 계산

  • 더 많은 계산량, 하드웨어 구현이 더 어려움


Lecture 9

법선의 보간


Opengl 1

OpenGL의 광원 (1)

  • 8개 까지의 광원을 허용

  • 각 광원별로

    • 광원의 위치 또는 방향

    • 주변광, 난반사광, 전반사 광원의 세기 지정

glLightfv(source, parameter, pointer_to_array);

glLightf(source, parameter, value);

광원의 위치

GLfloat light_0_pos[] = {1.0, 2.0, 3.0, 1.0};

GLfloat light_0_dir[] = [1.0, 2.0, 3.0, 0.0};

광원의 방향


Opengl 2

OpenGL의 광원 (2)

GLfloat light_0_pos[] = {1.0, 2.0, 3.0, 1.0};

GLfloat light_0_dir[] ={ 1.0, 2.0, 3.0, 0.0};

GLfloat diffuse_0[] = {1.0, 0.0, 0.0, 1.0};

GLfloat ambient_0[] ={ 1.0, 0.0, 0.0, 1.0};

GLfloat specular_0[] = {1.0, 1.0, 1.0, 1.0};

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glLightfv(GL_LIGHT0, GL_POSITION, light_0_pos);

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_0);

glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse_0);

glLightfv(GL_LIGHT0, GL_SPECULAR, specular_0);

각 광원 종류별 세기

조명 활성화

첫번째 광원 활성화


Opengl 3

의 상수값 설정

OpenGL의 광원 (3)

  • 전역적 주변광

    GLfloat global_ambient[] = 0.1, 0.1, 0.1, 1.0;

    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);

  • 거리항

    glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a);

    glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, b);

    glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, c);


Opengl 5

OpenGL의 광원 (5)

  • 점광원 지정 : 디폴트는 원거리 광원

    glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);

  • 전면과 후면 모두 렌더링

    glLightModel(GL_LIGHT_MODEL_TWO_SIDED, GL_TRUE);


Lecture 9

glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, int a)

전반사의 광택계수 지정

  • 전반사의 광택계수 지정

1 a  128

a = 2.0

a = 25.0


Lecture 9

전반사의 범위 지정

glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, float degree)

0 degree  90

degree = 10.0

degree = 30.0


Opengl 11

OpenGL에서 재질의 지정 (1)

  • 재질 지정 함수

    glMaterialfv(face, type, pointer_to_array);

    glMaterialf(face, value);

    예)

    GLfloat ambient[] = 0.2, 0.2, 0.2, 1.0;

    GLfloat diffuse[] = 1.0, 0.8, 0.0, 1.0;

    GLfloat specular[] = 1.0, 1.0, 1.0, 1.0;

    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient);

    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);

    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);

표면의 반사 계수


Opengl 21

OpenGL에서 재질의 지정 (2)

  • 표면의 광택 지수

    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 100.0);

  • 빛을 내는 표면

    GLfloat emission[] = 0.0, 0.3, 0.3, 1.0;

    glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission);


Opengl 31

Material

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_SHININESS

결과

Brass

0.32940.22350.02751.0

0.78040.56860.11371.0

0.99210.94120.80781.0

27.89

Bronze

0.21250.12750.0541.0

0.7140.42840.181441.0

0.39350.27190.16671.0

25.6

Chrome

0.250.250.251.0

0.40.40.41.0

0.77460.77460.77461.0

76.8

OpenGL에서 재질의 지정 (3)

  • 재질 예


Opengl 4

Copper

0.19130.07350.02251.0

0.70380.27050.08281.0

0.25680.13760.08601.0

12.8

Gold

0.24730.1995

0.07451.0

0.75160.60650.22651.0

0.0.62830.55580.36611.0

51.2

Pewter

0.10590.05880.11371.0

0.42750.47060.54121.0

0.33330.33330.52161.0

9.85

OpenGL에서 재질의 지정 (4)

  • 재질 예


Lecture 9

순환적 분할에 의한 구의 근사

  • 구는 그래픽스에서 중요한 기본 요소이다

  • GL 은 구를 지원하지 않는다

  • GLU -- 이차 곡면으로 지원

    GLUT -- 다각형 근사로 지원

  • 순환적 분할(recursive subdivision)

    • 정 사면체로 시작

    • 각 삼각형을 분할

    • 정점들을 단위 구에 맞춤

    • 16개의 삼각형이 됨

    • 위의 과정을 n회 반복


Lecture 9

구 모델의 음영 처리

  • 평면 음영법

    • 삼각형의 세 점으로 법선을 결정

    • 결정된 법선을 첫 번째 정점에 할당

  • 보간 음영법

    • 삼각형의 각 정점에 대해 법선을 결정

    • 삼각형의 각 정점의 음영을 계산

    • 보간법에 의해 삼각형 내의 점에 대해 음영 계산


  • Login