본문 바로가기
게임 프로그래밍/컴퓨터 그래픽스 (CG)

컴퓨터 그래픽스(cg) :: 4강 - 가시면 결정, 조명 모델

by udeserveit1 2024. 8. 5.

눈에 보이는 곳

 

가시면 결정이란?

관찰자에게 보이는 표면을 식별하는 기술

 

 

대부분 이미지 공간 비법 이용

 

 

객체공간기법  - 실시간성이 중요한데 계산이 오래걸림

화가의 알고리즘

누가 더 가까운지 판단한 다음에 한다

-먼 곳의 물체부터 색을 덮어 씌워 그림 

 

 

깊이 정렬 기법

 

1. 깊이 값의 내림차순으로 표면을 정렬

2. 가장 큰 깊이 값을 갖는 표면부터 차례로 주사변환

 

중첩은 - 물체 분리  nlogn (실시간성 확인 어렵)

 

이미지 공간 기법

- 대표적인 알고리즘 

- 현재 z값(눈에서 물체까지 거리)(=깊이값)

- 2차원에서 계산 

- 2개의 버퍼 사용   그림을 그리는 버퍼 : 프레임버퍼(도화지)  깊이 버퍼

 

 

깊이 정렬 알고리즘 (깊이 버퍼) depth buffer

* 프레임에 대한 개념

 960x1280 0~255

큰 값을 멀리

흰색 1111

(프레임버퍼) 도화지는 배경 셋팅, z값은 무한대

그리고 픽셀별로 z값 계산 

 

z에는 z값이 기존값보다  작은 값들이 업데이트 (크면 업데이트 안함) 그리고 도화지에는 색값이 업데이트

 

 

 

for all (x, y) ∈ Viewport {
 FrameBuffer(x, y) = BACKGROUND_COLOR;
 DepthBuffer(x, y) = 1.0;
}
for i=1 to nPolygon {
    for all (x, y) ∈ Polygon[i] {
      깊이 값 z 계산;
    if (z < DepthBuffer(x, y)) {
        색상 값 P 계산;
        FrameBuffer(x, y) = P;
       DepthBuffer(x, y) = z;
    }
  }
}

 

 

 

 

 

 

프레임 버퍼 

F1, F2

 

하나만 쓰면 single

두 개 쓰면 double(GLUT_DOUBLE)

 

임시저장장소 -buffer라고 하는겨

 

버퍼는 메모리 

1바이트(8비트)

 

rgb는 3바이트(24비트)  

-->

960X1280 하나에 3MB 램에 잡힌다 

 

F1에 그림을 그린다 (픽셀에 색을 채운다) 다그리고 모니터나 티비에 보낸다

싱글 버퍼는 그림을 

1초 

 

메모리 락 (MEMORY lock) - 그림을 못그려 한장을 보내야 볼 수 있다

한 장에 2초 

그래서 f2 까지 하면 빨리 걸린ㅁ

 

조명 및 표면 렌더링

 

색을 결정하는 프로세스 가 렌더링

 

두 개의 값이 다르면 선이 있는 듯해 마하밴드(Mach band) 효과

실제는 10이 차이 나지만 사람에게는 14,15로 보임

 

 

 

부드럽게 만들면 메쉬를 늘리면 됨 -> 속도가 엄청 오래걸린다

 

 

 

 

그림자를 넣지 않으면 떠있는지 테이블 위에 있는지 모름 ->그림자 효과

 

 

 

조명 모델

전역 조명 모델

-물체에 직접 도달하는 빛뿐만 아니라 다른 물체에 반사되어 도달하는 빛까지 고려한 모델

-정교한 조명 효과를 표현할 수 있음

 -물체에 반복적으로 반사되는 빛을 추적하기 위해 많은 계산을 해야 함

-사실적, 시간 오래걸림

 

지역 조명 모델 

 - 광원으로부터 물체에 직접 도달하는 빛만 계산

 - 전역 조명 모델에 비해 빠른 처리가 가능함

 

 

 

정반사

-매끄러운 

 

난반사 

 

 

 

 

균일 음영법

 

법선과 빛의 각도 계산 하면 색을 알 수 있다. 

 

구로 음영법( Gouraud shading)

- 다각형의 꼭짓점 색을 구한 후 이를 보간하여 다각형 내부 픽셀을 결정하는 음영법

- 꼭짓점 색의 결정

- 꼭짓점을 공유하는 다각형의 표면 법선벡터 평균을 계산

- 조명 모델을 적용하여 꼭짓점에서의 색을 결정  다각형 내부 색 결정

- 모든 꼭짓점 색을 결정

- 쌍선형 보간(bilinear interpolation)을 통해 각각의 내부 점들에 대한 색을 결정

 

그라데이션 (r-g)

 

꼭짓점을 공유하는 점 평균그라레이션을 줘라

 

 

 

 

 

 

 

 

퐁음영법

- 구로는 색을 결정한 다음에

- 법선벡터를 그라레이션 한 다음에 색 결정

- 시간이 좀 더 걸림

 

 

 

 

 

 

 

 

 

 

 

 

구로에서 퐁 에서 시간 10배 차이는 1.5배 

속도는 구로가 더 빠름