2012-11-25 2 views
1

기본적으로 나는 세계에서 오브젝트를 그리기위한 C++ 프로그램을 작성 중이며 여러 오브젝트로 구성된 오브젝트를 회전/변환 할 때 조명에 어려움을 겪고 있습니다 (예 : a tree 객체는 트렁크의 실린더 객체와 잎의 피라미드 객체로 구성됩니다.오브젝트 내의 오브젝트에 대한 조명 처리하기

나는 현재 광원을 사용하고 있지만 개체의 하위 구성 요소 (예 : 부모, 트리 내부의 피라미드 개체)를 회전 할 때 몇 가지 문제가 발생합니다.

모든 조명/음영이 트리 객체에 회전을 적용 할 때 작동하지만 트리 내부에서 피라미드 객체를 회전하려고하면 조명이 불안정하고 무작위로 나타납니다. 나는 정말로 누군가가 내가 할 수있는 것에 관해서 힌트 나 힌트를 얻을 수 있기를 바라고있다.

편집 :이 프로젝트에는 많은 파일이 있으며 여기까지 전체 사진을 제공하기에 충분하지 않습니다. 기본적으로 내 단계는 다음과 같습니다.

  1. 작동하는 OpenGL 광원이있는 세상을 설정하십시오.
  2. 변환 매트릭스가 연결된 모양 오브젝트를 작성하십시오.
  3. 모양과 해당 행렬을 사용하고 음영에 사용할 법선을 계산합니다.
  4. 이제 다른 모양 개체로 구성된 새 모양 개체를 만들어 조명 효과를 적용하려면 세계에 던집니다.
  5. 이제 여기서 문제가 발생합니다. 부모 개체를 회전하면 조명이 좋지만 자식 개체를 회전하면 조명이 무작위가됩니다.
+0

일부 소스 코드를 보여줄 수 있습니까? – Aaron

+0

우키의 그림을 게시하십시오. StackOverflow에 바로 업로드 할 수 있습니다. 피라미드를 만들거나 GLUT 호출 또는 모델 하중입니까? – zero298

답변

0

내 코드에서 문제가 발견되었습니다. 법선을 너무 자주 업데이트했기 때문에 OpenGL 조명이 정상적으로 작동하지 못했습니다.

도움을 주신 모든 분들께 감사드립니다.

관련 문제