기본적으로 나는 세계에서 오브젝트를 그리기위한 C++ 프로그램을 작성 중이며 여러 오브젝트로 구성된 오브젝트를 회전/변환 할 때 조명에 어려움을 겪고 있습니다 (예 : a tree 객체는 트렁크의 실린더 객체와 잎의 피라미드 객체로 구성됩니다.오브젝트 내의 오브젝트에 대한 조명 처리하기
나는 현재 광원을 사용하고 있지만 개체의 하위 구성 요소 (예 : 부모, 트리 내부의 피라미드 개체)를 회전 할 때 몇 가지 문제가 발생합니다.
모든 조명/음영이 트리 객체에 회전을 적용 할 때 작동하지만 트리 내부에서 피라미드 객체를 회전하려고하면 조명이 불안정하고 무작위로 나타납니다. 나는 정말로 누군가가 내가 할 수있는 것에 관해서 힌트 나 힌트를 얻을 수 있기를 바라고있다.
편집 :이 프로젝트에는 많은 파일이 있으며 여기까지 전체 사진을 제공하기에 충분하지 않습니다. 기본적으로 내 단계는 다음과 같습니다.
- 작동하는 OpenGL 광원이있는 세상을 설정하십시오.
- 변환 매트릭스가 연결된 모양 오브젝트를 작성하십시오.
- 모양과 해당 행렬을 사용하고 음영에 사용할 법선을 계산합니다.
- 이제 다른 모양 개체로 구성된 새 모양 개체를 만들어 조명 효과를 적용하려면 세계에 던집니다.
- 이제 여기서 문제가 발생합니다. 부모 개체를 회전하면 조명이 좋지만 자식 개체를 회전하면 조명이 무작위가됩니다.
일부 소스 코드를 보여줄 수 있습니까? – Aaron
우키의 그림을 게시하십시오. StackOverflow에 바로 업로드 할 수 있습니다. 피라미드를 만들거나 GLUT 호출 또는 모델 하중입니까? – zero298