2012-11-09 3 views
0

GLUI를 사용하여 OpenGL에서 "Arcball"컨트롤을 사용하여 빛의 위치를 ​​입력하는 기능을 구현하려고합니다. arcball에 의해 주어진 회전 행렬이 4x4 차원 인 반면, light position은 3 차원 좌표의 1-D 배열이므로이 방법에 대해서는 잘 모릅니다.아크볼로 빛의 위치 입력

답변

1

장면 주위의 빛은 방향성 조명 (즉 무한대의 위치)에서만 의미가 있습니다. 그래서 당신은 한 지점을 회전시키지 않고, 한 방향, 보통의 것과 같습니다. 쉬운 일 : 회전하지 않은 빛이 방향 (0, 0, 1, 0)을 갖도록하십시오. 그런 다음 장면 주위를 회전하려면 주어진 행렬의 전치 - 역행렬을 곱합니다. 그러나 여러분이 알고 있듯이,이 행렬은 회전만을 포함합니다. 이것은 transpose-inverse가 원래의 행렬과 같은 특별한 경우입니다.

그래서 처음 라이트 방향 (0,0,1,0)에 매트릭스를 곱하면됩니다.

우리는 이것을 더욱 단순화 할 수 있습니다. 곱셈을 보면 원래의 빛 위치 벡터가 0이 아닌 행렬의 (가중치가 적용된) 열을 추출한다는 것입니다. 그래서 우리가 (0,0,1,0)의 가벼운 방향으로 시작한다면, 여러분은 arcball 회전 행렬에서 3 번째 열을 가져옵니다.

+0

개념을 설명해 주셔서 감사합니다. 그것은 효과가있다! –

관련 문제