0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
1 | |
Вращение объекта вокруг своей оси25.11.2015, 02:53. Показов 13454. Ответов 15
Метки нет (Все метки)
Задаю вопрос впервые, так что попрошу не придираться к возможным ошибкам/недостатку инфы.
Начал учить opengl ~ неделю назад. Пишу первую игру на opengl, реализовал перемещение одного из обьектов (в дальнейшем это будет стрела) по формуле, которая каждый раз высчитывает в функции таймера координаты нашего обьекта. Зависят координаты от силы выстрела и угла под которым производится выстрел. По идее стрела эта, в полете должна поворачиваться в зависимости от того взлетает она вверх или уже падает. пытался реализовать через glrotatef(...); Кое-как получилось перевернуть, НО, поворачивает оно стрелу вокруг точки 0,0, а не вокруг оси самой стрелы. При этом все что высчитывал по формуле сбивается. (Слава Богу уже хоть не всю сцену поварачивает...) Если что либо описал криво, либо плохо задал вопрос - говорите, переспрашивайте, исправлюсь ^^
0
|
25.11.2015, 02:53 | |
Ответы с готовыми решениями:
15
Вращение планеты вокруг солнца, и вокруг своей оси C# OpenTK Вращение камеры вокруг своей оси Вращение фигуры вокруг своей оси за курсором мыши Вращение примитива вокруг оси z |
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
|
|
25.11.2015, 11:34 | 2 |
Никакого glRotatef "не существует". Мне кажется, вы изучаете какой-то старый OpenGL, версии 1 или 2.
В 2015 году вы должны использовать OpenGL версии 3.3 или старше, с VAO, VBO, матрицами Model, View, Projection и шейдерами. Вот начало серии туториалов, что помогут вам быстро разобраться в этом вопросе. Также на мой взгляд не следует начинать изучение OpenGL с написания игры, даже простой. Я бы советовал сначала изучить основы, путем написания небольших демок. Потом какие-то простенькие игры вроде змейки или тетриса. И потом, если получилось, уже что-то более сложное, например, со стрелами.
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
25.11.2015, 14:05 [ТС] | 3 |
Использую freeglut 2.0
Вы советуете бросить то, что уже начал делать и начать все заново?
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
25.11.2015, 16:00 | 4 |
вам нужно сделать translate "центра" стрелы в начало координат и только потом rotate
Добавлено через 9 минут никогда не понимал этого маниакального стремления по отпиливанию рук и замены их на нечто более производительное... что мешало им оставить все что было после прихода этих самых конвейеров? религия?
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
25.11.2015, 16:49 [ТС] | 6 |
т.е.
pushmatrix(); translate (); rotate() translate(); popmutrix(); Так? Это не возмонжо, ибо она постоянно перемещается и в зависимости от перемещения она должна вращаться. если нужно - могу показать код.
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
25.11.2015, 22:25 | 7 |
да. главное определитесь чего translate) в том смысле - плюс или минус)
это не просто возможно это должно быть и я немного удивлен что это не так. есть модель стрелы. я бы ее создал в начале координат так как это удобно. а когда нужно что бы эта стрела летела просто перед ее отрисовкой делаем translate. а если нужно что бы вращалась то делаем rotate и translate. а вот если у нее "летят" координаты модели тогда либо их по-честному вращайте либо через правое плечо translate rotate translate
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
25.11.2015, 22:52 [ТС] | 8 |
Ну вот... я запутался...
можно как либо с вами связаться что бы вы мне подробнее обьяснили про "правое плечо"?)
0
|
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
|
|
25.11.2015, 23:10 | 9 |
Anarez,
Можно в 2015 году и MS DOS конечно изучать. Но я лично ценю свое время, все-таки это ресурс не восполняемый и ОЧЕНЬ ограниченный. Так какой смысл тратить его на изучение давно устаревшей и нигде не используемой технологии?
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
25.11.2015, 23:51 [ТС] | 10 |
Разобраться как она работает, что бы потом не было вопросов по новым технологиям. Ведь новые всегда строятся на старом.
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
26.11.2015, 14:45 | 11 |
тут не совсем так. эти
0
|
26.11.2015, 15:10 | 12 |
Дык, потому что они более производительные... сами же об этом выше написали.
DX, кстати, тоже так делает. Код написанный под DX9 не подойдёт для DX10, 11, 12. В графике важна производительность и отказываться от неё в угоду совместимости с древними ф-иями никто не будет.
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
26.11.2015, 16:58 [ТС] | 13 |
vxg, А что по поводу что бы уделить мне минут 10 Вашего времени и попробовать обьяснить, что такое:
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
26.11.2015, 23:36 | 14 |
я бы понял если бы т.н. статический конвейер был бы не камильфо среди богемы и лица использующие его подвергались публичному осуждению, НО при этом статический конвейер БЫЛ бы в GL. но когда у человека навсегда забирают велосипед что бы он случайно не научился крутить педали (ведь это неэффективно) и дают истребитель напичканный электроникой по самые помидоры (ведь это так эффективно, пусть сразу учится на пилота) - это жесть...
а вы спрашивайте я отвечу) в данном конкретном случае я имел ввиду следующее: 1) можно иметь координаты элементов стрелы такими что центр стрелы получается в центре координат. тогда для того что бы она полетела нужно перед ее рисованием сделать translate. а что бы чуть чуть повернулась и полетела сделать rotate и translate 2) можно иметь координаты элементов стрелы такими что она уже будет висеть в нужной точке траектории. в этом случае ее достаточно просто нарисовать. однако, если мы хотим ее еще и повернуть придется либо пересчитывать координаты элементов что бы они уже оказались повернутыми либо заниматься жуткой фигней - при рисовании таскать стрелу в начало координат, поворачивать и возвращать обратно, т.е. translate / rotate / translate
0
|
64 / 17 / 3
Регистрация: 09.11.2013
Сообщений: 120
|
|||||||||||
27.11.2015, 22:09 | 15 | ||||||||||
Чтобы стрела двигалась от силы выстрела надо поставить изменяющуюся переменную:
0
|
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 7
|
|
27.11.2015, 22:33 [ТС] | 16 |
Либо мне показалось, либо Вы описали перемещение стрелы в трёхмерном пространстве. Мой первый проект - 2D, z у меня не меняется. Используется лишь как вектор для поворота
0
|
27.11.2015, 22:33 | |
27.11.2015, 22:33 | |
Помогаю со студенческими работами здесь
16
Вращать сферу вокруг центра координат, и одновременно вращать ее вокруг своей оси Поворот вокруг своей оси (blender) Не удается реализовать поворот елки вокруг своей оси по x и по у Поворот объекта вокруг оси Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |