![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Dementor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 9.7.2007 Репутация: нет Всего: нет |
Всем привет!
Я сразу извиняюсь за возможно глупые вопросы, но перекопав кучу уроков в сети я так и не нашел на них ответов (либо просто не понял). Вопрос номер один - что вообще нужно сделать, чтобы нарисовать точку с координатами X=935929.50; Y=6638894.24; Z=850.55. Вопрос номер два - есть ли какая-то литература (книги или уроки), в которой есть описание как нарисовать что-то мышкой (например полигон). Буду очень признателен за любую помощь. P.S. Для учебы я использую C++ Builder 6. |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 1 Всего: 27 |
Вы перекопали кучу уроков и не поняли как нарисовать примитив? Не верю. Скорее всего вы ничего не перкапывали, а посмотрели один два примера про куб и освещение и на этом все.
Как на счет
Описание как нарисовать мышкой? Ну это кагбэ... берете мышку, берете форму или что там у вас, водите по форме мышкой и отлавливаете ее координаты, по которым рисуете линии. Вот вам и все описание. Это сообщение отредактировал(а) Bitter - 2.11.2013, 16:19 |
|||
|
||||
Dementor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 9.7.2007 Репутация: нет Всего: нет |
Как именно грузить точки, линии, полигоны и все остальное я в курсе. Я не понимаю как настроить вид так, чтобы я видел эту точку.
Во всех уроках указывается, что необходимо прописывать настройки OpenGL в FormCreate и FormResize, ну и плюс настройка пикселей и высвобождение при закрытии формы. У меня сейчас прописаны такие параметры:
|
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 1 Всего: 27 |
Вот у вас в формРесайзе написано
glFrustum ( -1 , 1, -1 , 1 , 1.25 , 100.0 ); Если бы вы прошли по первой попавшейся ссылке в гугле по запросу "glFrustum", то увидели бы, что первый и второй параметры это координаты левой и правой отсекающей. Это значит что левая чать окна у вас будет соответствовать мировой координате по Х = -1, а правый край окна (а точнее вьюПорта, который вы указали методом glViewport) будет соответствовать мировой координате по Х = 1. То же самое касается верхней и нижней отсекающей. Последние два параметра это ближняя к "камере" и дальняя отсекающие. То есть все что вы пытаетесь рисовать ЗА этими координатами на экран не попадет. Следующий фактор это позиция камеры, устанавливаемая функцией gluLookAt. Вбиваем в гугл и видим первые три параметра - eyeX, eyeY, eyeZ. то есть координаты камеры. Вы установили ее в 5 5 5. следующие три параметра это centerX, centerY, centerZ, то есть точка, в которую смотрит камера. Если вы рисуете точку в 935929.50, 6638894.24, 850.55, то вы ее не увидите, так как она выходит за границы вашей пирамиды видимости. Чтобы рисовать "как будто бы" на окне, нужно как минимум задать frustum равный размерам окна, после чего установить камеру на правильном расстоянии от нуля, и направить ее взгляд в 0, и не забыть про то что в таком случае вектор Up, который описывается тремя последними параметрами метода gluLookAt должен быть направлен вдоль оси Y, то есть быть 0, 1, 0, иначе у вас камера будет думать что у нее макушка на заднице. Но и этого может быть не достаточно, не забывайте что еще несть настройки материала и освещения Это сообщение отредактировал(а) Bitter - 2.11.2013, 19:54 |
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
||||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 1 Всего: 27 |
EgoBrain, этот вектор указывает куда направлен верх камеры. Например когда вы делаете фотки фотоаппаратом, вы можете снимать в обычном горизонтальном режиме (в этом случае верх фотоаппарата направлен в небо) и в вертикальном режиме (в этом случае верх камеры направлен в сторону), точно так же и тут.
![]() Если вектор Up будет указан не правильно, например указывать назад, то камера будет вести себя неадекватно, при перемещении камеры картинка может переворачиваться, крутиться и тд |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: нет Всего: 12 |
Богат и могуч русский язык. Автор хотел сказать что она будет смотреть не туда куда надо. В 3D графике есть такое понятие как мировое пространство. Также известная как сцена. Так вот в этом мире располагаются все объекты в том числе и камера. Так вот задав координаты точки вы задали их в мировых координатах. Но у нас есть ещё и камера. У которой есть свои координаты. Но помимо координат есть ещё и ориентация. Так вот если не направить, не нацелить камеру на точку, то мы её не увидим. Ориентация камеры задаётся системой координат. Т.е 3 векторами. Представти что эти вектора типа карандашей жестко прикрепили к камере. И когда вы вращаете камеру эти вектора вращаются с ней. Когда эти вектора крепили к камере один поставили сверху и направили вверх анг Up. Другой поставили прямо на окуляр (объектив) и направили в сторону глаз eye(один из вариантов в сторону съемки See). 3 вектор просто достроили до правой системы координат. Типо там где ручка у пленочной камеры. 3 вектор можно почти всегда получить имея 2 других. Замечания. Вектора UP и не EYE обязаны быть ортогональными. Математически gluLookAt приводит к ортогональным. Но для лучшего понимания, что куда направленно, при программировании их лучше сохранять ортогональными. Это сообщение отредактировал(а) Pavia - 5.11.2013, 12:18 |
|||
|
||||
Dementor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 9.7.2007 Репутация: нет Всего: нет |
Bitter, а вы не могли бы привести конкретные настройки для точек, которые находятся в пределах:
MinX=938059.99 MaxX=940978.32 MinY=6641968.24 MaxY=6646082.34 MinZ=840.12 MaxZ=912.11. |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: нет Всего: 12 |
Dementor, Это проще сделать в любом 3D редакторе а после экспортировать параметры.
Кстати точность цифр выходит за Single. Зачем вам такие большая точность? Это сообщение отредактировал(а) Pavia - 5.11.2013, 20:13 |
|||
|
||||
Dementor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 9.7.2007 Репутация: нет Всего: нет |
Pavia, Это реальные координаты точек на земной поверхности. Я просто решил попробовать нарисовать не сферы, которые по таймеру крутятся, а что-то реальное...
По поводу 3D-редактора я как-то не подумал. |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |