OpenGL/그래픽스 프로그래밍 기말 프로젝트

[OpenGL] 바닥 텍스처 문제 해결 및 라이팅 개념 정리

da_log 2023. 5. 27. 03:06

바닥 오브젝트를 생성하는데 텍스처가 안 입혀지는 문제가 생겼다.

 

오브젝트 생성해서 사용할 때 메서드에서

위치, 텍스처, 노멀 세 가지의 버텍스 속성값을 입력받는데

텍스처만 입힐거라 노멀은 지정을 안해준게 문제였다.

 

 

코드 상으로는 버텍스 속성을 저장하는 메서드에는 노멀 속성을 안 넣어도  문제 없는데,

fragment shader에서 노멀값이 없으면 텍스처를 지정해주는 loadDiffuseMap 메서드가 작동하지 않는 구조였다.

(왜 그런지는 교수님께 여쭤보고 와야할 듯...

텍스처와 라이팅이 무슨 관계가 있는건지? 왜 DiffuseMap을 사용해서 texture을 지정해주는 건지?)

 

 

추가로 라이팅 관련해서 개념이 항상 헷갈렸는데

어디가 문제인지 찾아보면서 조금 정리해봤다.

 

우선 강의에서 사용하고 있는 라이팅 모델은 Phong Lighting Model이고,

이 라이텡 모델에서 사용하는 요소는 다음과 같이 3가지다.


- Ambient: 전반적인 빛
- Diffuse: 명암(노멀 벡터를 사용해서 정면을 바라보는 정도를 구함)
- Specular: 하이라이트 빛

 

내가 놓치고 있던 부분이

Diffuse lighting을 사용하기 위해서는 노멀 속성을 지정해줘야 한다는 거!

 

사진은 조금 무섭게 나왔지만 아무튼 해결!