색을 보는 원리 모르면 검색


머티리얼 구조체

머티리얼 : 각 물체에 빛이 닿았을 때 물체의 표면으로부터 반사되는 색상을 설정

Diffuse: 빛이 물체에 닿았을 경우에 반사하는 색상 설정

Ambient: 방향성이 없는 빛에 대한 반사색을 설정한다.(방향성(Direction Light) 빛에 의한 반사색에는 영향을 주지않음.)

Specular: 빛에 의한 밝은 부분의 반사색보다 반짝이게 하는 색상을 설정(HighLight의 색상을 설정)

Emissive 재질이 스스로 특정 색을 방출하는 옵션

Power: 스펙큘러 하이라이트의 선명도를 지정하는 부동 소수점 값이 높아짐에 따라 하이라이트 부분이 보다 선명하게 되어짐.


라이트 구조체


Type들

Diffuse = Light가 방사하는 색상.

Specular = Light가 방사하는 반사색.

Ambient = Light가 방사하는 주변색.

Direction = 빛의 방향을 D3DVECTOR 구조체로 지정하며 이속석은 디렉션 라이트와 스포트 라이트만 적용됨.


라이트의 종류

- 주변광 엠비언트 라이트(Ambient Light)

모든 장소에 동일한 세기로 비추어지는 빛 

위치나 방향이 없고 색상과 강도만 있으므로 음영 효과가 생기지 않음.


- 포인트 라이트(Point Light)

라이트의 위치와 멀어지면 멀어질수록 표면에 닿는 빛의 강도가 약하게 표현되는 특징


- 방향광 디렉션 라이트(Directional Light)

생상과 뱡향은 가지지만 라이트 위치는 가지지 않는다.

거리와는 상관없이 일정하게 비추는 효과


- 스포트 라이트(Spot Light)

색상, 위치, 빛에 대한 방향을 가짐

계산량이 상당히 많아서 게임에서는 거의 사용되지 않고 시뮬레이션 분야와 같이 사실감을 극대화해야 하는 그래픽스 분야에서 사용됨.


라이트의 속성

- Ambient: 빛을 직접 받지 않는 곳의 주변색을 설정하는 속성

빛을 직접 받지 않는 곳의 주변색을 설정하는 속성


- Diffuse: 라이트가 비추는 빛의 색상

라이트가 비추는 빛의 색상

Material Diffuse(1,0,0)에 Diffuse(1,1,1)백색 광을 쏘면 color(1,0,0)빨강색 출력

Material Diffuse(1,0,0)에 Diffuse(0,1,1)백색 광을 쏘면 color(0,0,0)검은색 출력


라이트 사용법

디바이스 함수를 이용함.

번호 지정하고 라이트를 등록

등록한 번호를 지정해서 트루 펄스로 사용 유무를 결정함


법선벡터와 라이트

법선 벡터(또는 평면에 수직인 벡터)는 메쉬 생성, 경로 탐색 및 기타 등이 자주 요구되는 상황 에서 유용할 수 있습니다.

평면상의 세 점( 예를 들면 메쉬 삼각형의 꼭지점)을 얻으면 법선을 찾기 쉽습니다.

3가지 방법 중 하나를 임의로 선택하고 남는 두 개에서 각각 뺄셈하여 두 개의 벡터를 얻을 수 있습니다.


SIde1 = b - a

Side2 = c - a

D3DXVec3Cross(), D3DVec3Normalize()를 Side1, Side2를 외적한후 노멀라이즈 이용해 정규화된 법선 벡터를 구한다.



피라미드에 법선벡터 만들기

외적을 이용해 정점마다 법선벡터의 방향을 표시해봤다.


머티리얼 + 라이트를 이용해 피라미드 색 바꾸기

재질을 흰색으로 설정하고 빛에 색을 바꿔서 보내봤다.

아 빛의 색이 내 마음대로 안 됨 ㅠㅠ 간단한 거 같은데 어렵다.


무지개 색이 더 이쁜듯.



반응형