![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Здравствуйте, объясните как перемещать объекты в opengl. Какими способами можно это делать? Если можно выложите пример(часть кода) с перемещением хотя бы точки.
Это сообщение отредактировал(а) Prolss - 1.6.2011, 11:47 |
|||
|
||||
5kill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Основной способ перемещения - перемещение системы координат и изображение объекта в этой новой системе координат.
Этот код нарисует повернутый на 90 градусов относительно оси Х и смещенный по Х на 60 и по Z на -24 конус.
|
|||
|
||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
5kill, ни чего не движется...
|
|||
|
||||
Vetos |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Чтобы запрограммировать движение объекта (пусть это точка, выпуклый объект, загруженная модель) нужно ввести 3 переменные X,Y,Z. Чтоб его вращать - еще три угла по осям X,Y,Z;
Представим координаты объекта в ввиде структуры
Имея такую структуру, перепишем код отрисовки объекта:
Вводим новую переменую перемещения Move и перед отрисовкой изменяем позицию объекта:
На экране ты должен увидеть как объект плавно отдаляется от тебя. Существует много способов перемещения объектов, это самый простой Это сообщение отредактировал(а) Vetos - 1.6.2011, 20:27 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||||
|
|||||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Vetos, всё сложно.. не понимаю.. не чего не выходит..
Скажите кто нибудь, что не так.. чёрный экран и всё.. вот код:
Это сообщение отредактировал(а) Prolss - 1.6.2011, 23:14 |
|||
|
||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Пробывал вот так, тоже чёрный экран.. помогите, вот:
|
|||
|
||||
5kill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Не понятно как у тебя происходит инициализация, можешь привести весь код, много у тебя быть не должно.
|
|||
|
||||
Prolss |
|
||||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
5kill, Ну например вот:
PS: это простой урок от NeHe, а как передвинуть например в право этот треугольник.. Это сообщение отредактировал(а) Prolss - 2.6.2011, 14:37 |
||||
|
|||||
Vetos |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Преписываешь так:
Move делаешь глобальной
Это сообщение отредактировал(а) Vetos - 2.6.2011, 16:49 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||
|
|||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Vetos, 5kill, спасибо вам что подсказали алгоритм движения.. У меня получилось когда я уменьшил скорость движения до 0.0007, после этого увидел как на экране промелькнул объект
![]() PS: кто ещё, какие знает способы перемещения? Это сообщение отредактировал(а) Prolss - 2.6.2011, 17:50 |
|||
|
||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Vetos , Если я тебя ещё не "достал", ты говорил: Ну это можно сделать обычными glRotate, просто вначале нужно перенести центр координат в точку другого объекта вокруг которого ты будешь вращать, если по сферическим координатам, т.е. 2 угла то через синус и косинус. Пожалуйсто если можно, чуть-чуть по-подробней, а то мне эта запись не даёт покоя
![]() |
|||
|
||||
Vetos |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Ну смотри, допустим один объек стоит у тебя в точке 2,3,2.
Далее ты крутишь второй еще не нарисованный объект на какойто угол вокруг оси Y:
Далее ты смещаешь второй объект относительно первого, допустим влево(хотя если ты поворачиваешь на угол 180, то объект фактически будет находится справа):
Вот и все! Если ты неможешь понять как это работает, то тебе остается только эксперементировать ![]() Это сообщение отредактировал(а) Vetos - 3.6.2011, 20:17 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||||
|
|||||||
Prolss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 16.4.2011 Репутация: нет Всего: нет |
Vetos, Благодарю в 102 раз, я разобрался... |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |