Вращение OpenGL

Это может кому-то помочь.

Я создал новый тестовый проект с базовыми данными под названием «CoreData». Вскоре у меня есть «Использование необъявленного типа» для классов NSManagedObjectContext и других классов Core Data. После нескольких попыток импорта, добавления фаз сборки и т. Д. Я удалил проект и начал новый, называемый «TestingCoreData», и все это работало хорошо.

Не называйте (тестировать) проекты, такие как имя Классы

10
задан Yeldar Kurmangaliyev 14 July 2015 в 07:48
поделиться

6 ответов

Вы получаете 1 прямую линию единицы? Это кажется той гнилью на 90 градусов. вокруг Y будет иметь Вас смотрящий со стороны треугольника без глубины.

Необходимо попытаться вращаться вокруг оси Z вместо этого и видеть, получаете ли Вы что-то, что имеет больше смысла.

OpenGL имеет две матрицы, связанные с дисплеем геометрии, ModelView и Проекции. Оба применяются к координатам, прежде чем данные станут видимыми на экране. Сначала матрица ModelView применяется, преобразовывая данные из образцового пространства в пространство представления. Затем матрица Проекции применяется с преобразованиями данные из пространства представления для "проекции" на Вашем 2D мониторе.

ModelView используется для расположения нескольких объектов в их местоположения в "мире", Проекция используется для расположения объектов на экран.

Ваш код кажется прекрасным, таким образом, я принимаю от чтения документации, Вы знаете, какова природа функций как glPushMatrix (). Если вращение вокруг Z все еще не имеет смысла, проверяет редактирование матрицы ModelView путем вызова glMatrixMode.

6
ответ дан 3 December 2019 в 18:37
поделиться

Удостоверьтесь изменение modelview матрицы путем помещения следующего перед вызовом glRotatef:

glMatrixMode(GL_MODELVIEW);

Иначе можно изменять или проекцию или матрицу структуры вместо этого.

7
ответ дан 3 December 2019 в 18:37
поделиться

"Принятый ответ" не полностью корректен - вращающийся вокруг Z, не поможет Вам видеть этот треугольник, если Вы не сделали некоторые странные вещи до этого кода. Удаление glOrtho (...) звонит, возможно, исправил проблему в этом случае, но у Вас все еще есть несколько других проблем.

Две основных проблемы с кодом, как записано:

  • Вы расположили камеру ранее? В OpenGL камера расположена в источнике, выглядя вниз ось Z, с положительным Y как. В этом случае треугольник оттягивается в той же плоскости как Ваш глаз, но и направо. Если у Вас не будет очень странной матрицы проекции, Вы не будете видеть его. gluLookat () является самой легкой командой, чтобы сделать это, но любая команда, которая перемещает текущую матрицу (который должен быть MODELVIEW) может быть сделана работать.

  • Вы тянете треугольник в предназначенном для левой руки, или по часовой стрелке метод, тогда как значение по умолчанию для OpenGL является предназначенным для правой руки, или против часовой стрелки система координат. Это означает, что при отборе задних сторон (который Вы, вероятно, не, но вероятно переместится на то, поскольку Вы становитесь более усовершенствованными), Вы не видели бы треугольника как ожидалось. Для наблюдения проблемы поместите правую руку перед поверхностью и, предположив, что это находится в плоскости X-Y, пошевелите пальцами в порядке, Вы тянете вершины (1,1) к (3,2) к (3,1). Когда Вы делаете это, Ваш ползунок отворачивается от Вашей поверхности, означая рассмотрение задней стороны треугольника. Необходимо выработать привычку рисования поверхностей в предназначенном для правой руки методе, так как это - распространенный способ, которым оно сделано в OpenGL.

Лучшая вещь, которую я могу рекомендовать, состоит в том, чтобы использовать учебные руководства NeHe - http://nehe.gamedev.net/. Они начинают путем показа Вам, как настроить OpenGL в нескольких системах, перейти на рисование треугольников и продолжать медленно и конечно к более усовершенствованным темам. За ними очень легко следовать.

5
ответ дан 3 December 2019 в 18:37
поделиться

Когда у меня был первый взгляд на OpenGL, учебные руководства NeHe (см. левое меню), были неоценимы.

1
ответ дан 3 December 2019 в 18:37
поделиться

Я хотел бы рекомендовать книгу:

3D компьютерная графика: математическое введение с OpenGL Samuel R. Шина

Это дает очень четкие объяснения, и математика широко применима к неграфическим доменам. Вы также найдете полное описание ортогональных проекций по сравнению с перспективными преобразованиями.

1
ответ дан 3 December 2019 в 18:37
поделиться

Относительно матрицы Проекции можно найти, что хороший источник запускается со здесь:

http://msdn.microsoft.com/en-us/library/bb147302 (По сравнению с 85) .aspx

Это объясняет немного о том, как создать один тип матрицы проекции. Ортогональная проекция является очень простой / примитивной формой такой матрицы и в основном что, делает берет 2 из этих 3 координат осей, и спроектируйте их на экран (можно все еще зеркально отразить оси и масштабировать их, но нет никакого эффекта деформации или перспективы).

преобразование матриц является наиболее вероятной из самых важных вещей при рендеринге в 3D и в основном включает 3 матричных этапа:

  • Transform1 = Объектная система координат к Миру (например - возражают вращению и масштабу),
  • Transform2 = система Мировых координат к Камере (помещающий объект в правильное место)
  • Transform3 = система координат Камеры для Экранирования пространства (проектирующий для экранирования)

Обычно 3 результата умножения матриц упоминаются как матрица WorldViewProjection (если Вы когда-нибудь врезаетесь в этот термин), так как это преобразовывает координаты от Образцового пространства до Мира, затем к Камере и наконец к экранному представлению.

Весело провести время

1
ответ дан 3 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: