/ / Объркване на OpenGL LookAt - opengl, glulookat

OpenGL LookAt Confusion - opengl, glulookat

Прочетох онлайн, че ако искаме да изчислим директнов света, за да видите матрицата, можем да използваме функцията на OpenGl LookAt Ако имате позицията на фотоапарата, позицията, в която се намира камерата, и един възходящ вектор.

Въпреки това, тук е моето объркване, функцията се състои в следното:

lookAt(const Vector3& vEye, const Vector3& vAt, const Vector3& vUp)

Какъв ще бъде векторът "vAt", ако камерата ми епросто погледнете в положителната z ос с някаква произволна стойност z-буфер? Знам, че това е всичко, което посочва камерата гледа, но ако гледам точно надолу по оста z и не в нито един определен момент какво ще бъде вектор?

Отговори:

0 за отговор № 1

Струва ми се, че се обърквате за системите на осите. Кратко обяснение:

Тъй като се нуждаете от камера (или от очите, както предпочитате), за да видите света, всичко трябва да бъде дефинирано в координатите на камерата (или View Space, отново както предпочитате).

Обикновено светът се дефинира в система с дясна ръка. Това означава, че вектор в оста Z е кръстосан продукт на векторите в X и Y ос: Vz = Vx x Vy, Ако промените реда (Vz "= Vy x Vx), тогава ще получите система с лявата ръка, т.е. Vz" = - Vz

Разстоянието на изгледа обикновено се определя и в негодясна ръка координатна система. Определянето на оста X в посока надясно и на оста Y нагоре, прави оста Z да расте към гърба ви (или зад камерата, както предпочитате). Това означава, че всичко, което виждате, е пред вас, с отрицателна координатна координатна система Z в координатната ви система за космически изгледи, а не в света.
Всичко, от което се нуждаете, е добра трансформационна матрица, която взема предвид това.

За да се изгради типичната "lookAt" матрица,Вие се нуждаете от позицията на камерата (защото всичко трябва да бъде преведено там), "цел", за да определите посоката на зрение (вектор към отрицателната ос Z) и горния вектор за определяне на наклона, ъгъла на главата свързани с раменете ви. Членовете на матрицата се изчисляват, като се използват кръстосани продукти от тези вектори. Тя може да се получи и чрез ротации, но кръстосаните продукти включват ротации и са по-евтини.

Начинът, по който се създава тази типична матрица "lookAt", се нуждае от тези три данни (позиция, цел, нагоре) дефинирана в световната координатна система.

ЗАКЛЮЧИТЕЛНО ВАШИЯТ ВЪПРОС: Фотоапаратът ви е в (xc, yc, zc) и гледа в точка в положителната ос Z. Това не е достатъчно.Всяка точка на оста Z е (0,0, zp). Изберете "zp", свързана с "zc": Ако искате камерата да гледа световно положителна посока на оста Z, тогава ви е необходима zp > zc, Не е важно колко е голям "пе". Е, освен числени въпроси.

Запомнете: всичко в световната координатна система.