Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 23:45   #1
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
По умолчанию Создание трехмерной интерактивной модели местности

Здравствуйте!
Эту тему можно считать неким тематическим продолжением вот этой

Вот нашел ещё прогу с очень интересным и довольно удобным, а для меня главное - красивым интерфейсом, для управления (просмотра) трехмерными сценами (картинка внизу). Эта прога называется Bryce. Основная её цель - создание ландшафтов

Давно думал сделать прогу, что-то вроде трехмерной интерактивной карты (с всякими разными панорамами) собственной местности. Так как я человек сельский, а село, к сожалению, в настоящий момент стареет Между прочим, именно эта сила заставила меня заняться программированием, фотошопом и т.п. И вот, думаю, пришел тот момент, когда я смогу реализовать свои идеи

Так вот, я решил сделать в своей проге управление камерой, сходное с управлением камеры в программе Bryce. Думаю разместить эти элементы на обычной панели, а эти кнопочки - это будут обычные TImage (Так как тут ничего не крутится, не вертится, а только нажимается) Но здесь возник небольшой подводный камень. Когда мы нажимаем на изображение и двигаем мышкой, то курсор в Bryce уходит за границы этой кнопки. Это что нужно тогда и на форме делать мне событие OnMouseMove? (если я не точно выразился, то вот процесс: мы нажимаем на кнопку и ведем мышь (например вправо), хоть до конца экрана, а в трехмерной сцене объект перемещается. То есть не должно получиться, чтобы объект перемещался только тогда, когда курсор на кнопке). Как посоветуете это реализовать?

Можете скинуть ссылку на исходник или сам исходник, где можно водить мышкой (например по TPanel или TImage), а какой нибуть GLDummyCube в этот момент передвигался по осям X или Y - зависимо от этих координат. То есть нажал на TImage, дернул мышаком по оси X и GLDummyCube (к примеру) переместился тоже по оси X также быстро (или медленно), как дернул мышкой. Я сам тут разберусь, только дайте кто-ниб ссылку, пожалуйста.

Теперь о самом ландшафте. Я нашел по своим каналам хорошую карту местности (с горизонталями) и по ней делаю в фотошопе карту высот. Процесс жутко муторный, но я уже где-то за 4 дня 50 % осилил. А цветовую карту я решил сделать из фотографий из космоса. Для моей местности самое крупное увеличение я нашел только на сайте kosmosnimki.ru. Ни Google Maps ни Yandex не дали особо хороших результатов Может кто-ниб знает, где можно скачать космоснимки ещё более крупного масштаба?

А, чуть не забыл... Может у кого ещё завалялась ссылка на исходник/статью, где есть вращение 3D объектов мышкой. Дайте, пожалуйста

P.S. А в какой программе лучше сделать фон, в стиле Red Alert 3, как в главном меню, чтобы был анимированный? Лучше использовать FLASH или ещё что?
P.P.S. Кстати, это я делаю на движке GLScene
Изображения
Тип файла: jpg панель.JPG (7.0 Кб, 129 просмотров)
Вложения
Тип файла: rar bryce.rar (120.0 Кб, 56 просмотров)

Последний раз редактировалось NSV; 02.07.2009 в 14:26.
NSV вне форума Ответить с цитированием
Старый 02.07.2009, 00:05   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так в наборе GLScene есть же все...
GLUserInterface
GLNavigator
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.07.2009, 13:29   #3
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
Радость

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так в наборе GLScene есть же все...
Спасибо! Буду пробовать!
А как лучше ландшафт сделать?
В 3DS Max и сохранить в *.3ds или собрать по трем текстурам (карта высот, карта освещения, визуальная шкурка) как в этом уроке

Где будет работать лучше? И почему? (может быстрее в каком-то случае и т.д.)
NSV вне форума Ответить с цитированием
Старый 02.07.2009, 13:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может у кого ещё завалялась ссылка на исходник/статью, где есть вращение 3D объектов мышкой. Дайте, пожалуйста
В пакете к ЖЛСкене есть примеры. Там в часности и вращения мышой.
Цитата:
А как лучше ландшафт сделать?
Я бы в 3DStudio сделал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.07.2009, 13:58   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

соглашусь с Веталием!
создай модель и загрузи её в GL3dsFreeForm

Цитата:
Специально для загрузки .3ds моделей был создан наследник GLFreeForm - GLFile3DsFreeForm. Для работы с ним необходимо подключить модуль GLFile3DSSceneObjects. Создать GLFile3DSSceneObjects можно только в режиме runtime. Вот пример:

Uses GLFile3DSSceneObjects

Var FreeForm:TGLFile3DSFreeForm;
procedure TForm1.FormCreate(Sender: TObject);
begin
FreeForm := TGLFile3dsFreeForm.CreateAsChild(GL Scene1.Objects);//Создаём TGLFile3dsFreeForm
FreeForm.LoadFromFile('a.3ds'); //Загружаем модель
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(FreeForm); //И не забывайте освобождать память
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.07.2009, 14:11   #6
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
Хорошо

Большое спасибо!

(Напугали как! Создали новую тему. У меня чуть сердце не остановилось!)
Хорошо, только вот название темы мне кажется не оч.(Лучше бы что-то типа "Создание трехмерной интерактивной модели местности"), ну да прибудет с нами сила! Пойдет
И это сообщение (#6) тож удалить, плиз

Последний раз редактировалось NSV; 02.07.2009 в 14:18.
NSV вне форума Ответить с цитированием
Старый 06.07.2009, 20:59   #7
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
По умолчанию Управление объектом при помощи мыши

Что-то не получается управлять объектом мышью (При помощи GLNavigator и GLUserInterface). Не знаю почему, вроде делал всё согласно этой статье.

Цитата:
Воспользуемся стандартным способом работы с мышью. Переместим из вкладки GLScene Utils на форму GLNavigator. Очистите у камеры свойство TargetObject, чтобы мы могли сами управлять направлением взгляда камеры. У GLNavigator1 в свойстве MovingObject выберите GLCamera1 (это объект, который будет перемещаться).

Добавим на форму GLUserInterface1 из вкладки GLScene Utils, в его свойстве GLNavigator выберем GLNavigator1. Свойство MouseSpeed – это скорость реакции мыши, сделаем его равным 10.

Теперь нужно скрыть курсор мышки. В событии OnCreate формы добавим такую строчку:
Код:
GLUserInterface1.MouseLookActive:=true;
А в событии OnProgress Cadencer’а добавить строчки:
Код:
GLUserInterface1.Mouselook;
GLUserInterface1.MouseUpdate;
Всё. Запускайте проект и смотрите, что получилось.
Может я что-то пропустил или там что-то не дописано. Или я что-то не понимаю. Может кто-ниб помочь, кто этим занимался? Спасибо!
Вот проект:

P.S. Я в некоторых источниках читал, что лучше не использовать GLNavigator, а делать вручную. Так ли это? Ответ желательно обосновать
NSV вне форума Ответить с цитированием
Старый 06.07.2009, 21:03   #8
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
По умолчанию Управление объектом при помощи мыши

Что-то не получается управлять объектом мышью (При помощи GLNavigator и GLUserInterface). Не знаю почему, вроде делал всё согласно этой статье.

Цитата:
Воспользуемся стандартным способом работы с мышью. Переместим из вкладки GLScene Utils на форму GLNavigator. Очистите у камеры свойство TargetObject, чтобы мы могли сами управлять направлением взгляда камеры. У GLNavigator1 в свойстве MovingObject выберите GLCamera1 (это объект, который будет перемещаться).

Добавим на форму GLUserInterface1 из вкладки GLScene Utils, в его свойстве GLNavigator выберем GLNavigator1. Свойство MouseSpeed – это скорость реакции мыши, сделаем его равным 10.

Теперь нужно скрыть курсор мышки. В событии OnCreate формы добавим такую строчку:
Код:
GLUserInterface1.MouseLookActive:=true;
А в событии OnProgress Cadencer’а добавить строчки:
Код:
GLUserInterface1.Mouselook;
GLUserInterface1.MouseUpdate;
Всё. Запускайте проект и смотрите, что получилось.
Может я что-то пропустил или там что-то не дописано. Или я что-то не понимаю. Может кто-ниб помочь, кто этим занимался? Спасибо!
Вот проект:
GLScene.rar

P.S. Я в некоторых источниках читал, что лучше не использовать GLNavigator, а делать вручную. Так ли это? Ответ желательно обосновать
NSV вне форума Ответить с цитированием
Старый 06.07.2009, 21:28   #9
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Кстати, в Максе есть возможность генерации ландшафта по линиям высот! Подробнее поищите на Render.ru
Levsha100 вне форума Ответить с цитированием
Старый 06.07.2009, 21:43   #10
NSV
Форумчанин
 
Аватар для NSV
 
Регистрация: 27.05.2009
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Levsha100 Посмотреть сообщение
Кстати, в Максе есть возможность генерации ландшафта по линиям высот! Подробнее поищите на Render.ru
В #3 есть ссылка на статью из учебника по GLScene, вот там написано как сделать карту освещения в 3DSMax по карте высот - вот если там кое-что подкорректировать, то можно сделать 3D модель местности. Самое трудное - это сделать карту высот. Я могу сделать рельеф в максе и без карты, я уже так делал в своих фильмах, но с картой высот рельеф получается более точным и правдоподобным. Жаль, что нигде нельзя скачать хорошие (крупномасштабные) карты высот. Вот в google maps там больше похоже на карту освещенности, но по ней наверное сделать карту высот ещё трудней. Спасибо за Render.ru
NSV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык прогарммирования лучше учить (имея конкретную цель) cujo Помощь студентам 26 16.06.2010 18:10
ЕСТЬ ЦЕЛЬ ПОМОГИТЕ ДОСТИЧ ЕЁ тёмный Фриланс 2 03.05.2009 01:28
Direct3D: создание карт и ландшафтов challengerr Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 02.05.2009 02:15
цель игры - управляя корабликом стрелками, пройти дистанцию за наименьшее время. Lazzy Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 18.12.2007 23:51
Создание таблиц MAcK Общие вопросы Delphi 4 07.11.2007 15:51