Transforming Normal Vector
페이스(face)를 하나 생성했을 때, 페이스에 대한 법선 벡터(normal vector)는 여러모로 유용하게 쓰인다. 만약, 페이스에 어떤 변환 행렬 A를 적용했을 때, A의 법선 벡터에도 이 변환 행렬을 적용할 수 있을까? 즉, A의 변환 뒤의 법선 벡터와, 변환 전의 페이스에 A를 적용한 결과가 같을까? 이것은 명확하게 정의되지 않는다. 왜냐하면, 컴퓨터에서의 부동 소수점은 그 자체가 정확하지 않기 때문이다. 단순히 같은 변환을 적용하여 원하는 정도의 정밀도의 값을 얻을 수 있는 경우도 있겠지만, 미묘하게 값이 맞지 않는 경우도 있을 수 있다. 그래서, 단순히 같은 변환을 적용하는 것보다, 변환 행렬이 적용된 페이스의 법선 벡터를 다시 계산하는 것이 좋다. 그러나, 법선 벡터를 재계산하는 것은 비교..
더보기
Stanford Bunny / Happy Buddha / Dragon
Stanford Bunny, Only wireframe, 69451 faces Stanford Happy Buddha, Only wireframe, 1087716 faces Standford Dragon, Only wireframe, 1132830 faces 이들 파일들은 스탠포드 CG 연구실에서 배포하는 ply 파일을 읽은 것이며, OpenGL을 사용하여 렌더링 했다. 드래곤과 붓다는 상대적으로 폴리곤이 많은 편이라, 쉐이딩을 적용하지 않으면 제대로 모습을 알아보기 힘들다. 쉐이딩을 적용하지 않은 와이어프레임만으로는 대단히 허전해 보인다. 위의 ply 파일을 구하려면, 아래의 스탠포드 CG 연구실에 대한 링크를 참조하라. 모델링 파일에서 데이터를 읽어들일 때 비디오 메모리에 페이스를 생성하지 않는다면,..
더보기
Global Illumination : Ray Casting and Ray Tracing
지역 조명 모델에서는 광원에서 빛이 방출되고, 표면에 충돌했을 때 관찰자에게 빛이 도달할 때까지 다른 빛의 영향을 받지 않는 것으로 가정한다. 하지만, 실제 자연 현상은 이보다 복잡하다. 전역 조명 모델은 표면에서 반사되는 빛에, 다른 물체에서의 반사, 굴절 따위를 반영한 빛을 고려한다. 보통, 전역 조명 모델에서는 빛이 표면과 부딪히는 순간, 반사, 굴절, 흡수, 자체 발광의 4가지 요소를 사용하여 근사한다. 그리고 빛이 입사하는 순간, 자체 발광을 제외한 방출되는 빛의 총량은 들어온 빛의 총량보다 많아질 수 없다. 즉, 입사되는 빛 중 반사되는 빛의 양이 60%라고 했을 때, 굴절되는 빛이 입사된 빛의 40%를 넘을 수 없다. 표면에서 방출되는 빛이 그대로 관찰자에게 도달한다고 가정하는 지역 조명 모..
더보기