glTranslate(), glRotate(), glScale() - изменяют положение объекта в мировой системе координат или вид на него, то есть положение камеры?
Читая умные книжки я обнаружил, что там говорится о первом. А именно Gl.glTranslate(), Gl.glRotate(), Gl.glScale() изменяют именно сам объект, а за обзор на него (а точнее - на всю сцену) ответственна функция Glu.gluLookAt(). Потому что первые три преобразуют видовую матрицу, домножая её на соответствующую матрицу преобразований (автоматически внутри этих функций), а потом уже при визуализации координаты каждой точки домножаются на модернизированную видовую матрицу, поэтому эти функции изменяют положение, поворот и масштаб объектов, рисуемых при использовании модернизированной ими видовой матрицы. Glu.gluLookAt() - определяет именно положение камеры наблюдателя: первые три параметра - координаты точки наблюдения (КАМЕРЫ), вторые - центр сцены ВСЕЙ, которая будет проецироваться в центр области вывода, а третие - задают вектор положительного направления оси "У" у ВСЕЙ сцены при проецировании. Таким образом эта команда как бы совершает преобразование всех объектов сцены в целом. Её целесообразно использовать до определения и преобразования всех объектов сцены, пока видовая матрица единичная.
Какие мысли? Просто в уроках OpenGl+C# написано наоборот, вот я и задался вопросом)))
Какие мысли? Просто в уроках OpenGl+C# написано наоборот, вот я и задался вопросом)))
Я тоже читал, что Glu.gluLookAt() используется для установки положение камеры, и так ее и использовал.
Таким образом эта команда как бы совершает преобразование всех объектов сцены в целомДа это 100% true
Перефразирую выше сказанное Divanario: В принципе концепция проста, Вы двигаете(преобразуете) всю сцену и создается эффект движения камеры.
То есть мы совершаем преобразование наблюдения.
Вот вырезка из книги OpenGl супер книга
Это подтверждает
Её целесообразно использовать до определения и преобразования всех объектов сцены, пока видовая матрица единичная.Хотя камера это тоже просто для удобства:
Может просто перефразировал, но все же, че, то выразил по этому поводу)))
Но главный вопрос: целесообразно ли для команд glTranslate(), glRotate(), glScale() говорить, что они управляют обзором на объект? Моё мнение, что лучше писать, что они управляют положением самого объекта…
Так, что в целесообразности и не сомневайся!!))