Вращающийся шар

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Вращающийся шар

Сообщение a1ewka-gal4onok » 31.10.2008 (Пт) 17:44

Доброго времени суток всем!

Программирую на VB6 относительно недавно.
Недавно была поставлена задача написать программу. Нужно сделать вращающийся шар -глобус. На шар нанести карту мира нашего..

Как это можно сделать? Где можно найти подробную информацию?
Огромнейшая просьба поделиться опытом :roll:

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 31.10.2008 (Пт) 17:56

Нашёл http://www.vbnet.ru/samples/download.aspx?id=363
Как это переделать под шар со своей текстурой?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вращающийся шар

Сообщение Debugger » 31.10.2008 (Пт) 20:32

Куда-то тебя не туда понесло. Юзай DirectX. А как - естьместная библия - viewtopic.php?f=6&t=34270

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вращающийся шар

Сообщение Debugger » 01.11.2008 (Сб) 15:43

О черт, опять промазал по "Цитате"
Последний раз редактировалось Debugger 01.11.2008 (Сб) 18:52, всего редактировалось 1 раз.

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 01.11.2008 (Сб) 17:13

Книга хорошая! Спасибо автору!

Но появился вопрос.. А если у меня DirectX 9.0c(4.09.0000.0904), то как быть в этом случае? Будет ли работать приложение? Не обязательно чтобы шарик очень плавно крутился, хотя это будет большим плюсом.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Вращающийся шар

Сообщение lellel » 01.11.2008 (Сб) 18:49

будет работать.. главное, это наличие библиотеки dx8vb.dll в директории windows/system32..
только учти, что под вистой ее уже тебе самому придется добавлять..

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 03.11.2008 (Пн) 0:58

Нет, приложение будет работать под WinXP максимум!

Спасибо ответы! :)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 03.11.2008 (Пн) 11:05

В Висте запусти под админом "Regsvr32 dx8vb.dll", и все заработает.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Вращающийся шар

Сообщение lellel » 03.11.2008 (Пн) 14:51

Mikle
у меня под вистой даже без регистрации работало.. просто добавлением..

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 03.11.2008 (Пн) 22:14

Что-то, товарищи, я так и не понял как шарик с текстурой сделать.. :(

Дайте хоть намёк :roll:

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вращающийся шар

Сообщение Debugger » 04.11.2008 (Вт) 10:54

D3DX.CreateSphere - создает сферу как Mesh
D3DDevice.SetTexture - устанавливает текстуру
Если не ошибаюсь, у сферы не установлены tv и tu - координаты текстур. Тогда есть 3 способа.
1) (если они установлены) Mesh.DrawSubset - прорисовывает сферу, по сути дела.
2) (если они не установлены) Mech.GetVertextBuffer - получает вертексный буффер, из которого можно достать и получить вертексы:
D3DVertexBuffer8GetData - получаешь массив вертексов
Устанавливаешь в них tu и tv. Хз как.
D3DVertexBuffer8SetData - ставишь в буффер вертексы. Как потом меш рисовать - см. способ первый.
3) (как сделал бы я). Сделал бы в трехмерном редакторе сферу, unwrap'ил ее и загрузил в меш. D3DX.D3DX.LoadMeshFromX(Путь, D3DXMESH_MANAGED,...) загружает меш. Как его рисовать - см. способ первый.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 04.11.2008 (Вт) 11:07

a1ewka-gal4onok
Проблема в том, каким именно образом рассчитать координаты текстуры, или вообще как их загнать в сферу? У тебя есть готовая текстура, которую нужно наложить?

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 05.11.2008 (Ср) 8:27

Да, текстура есть --прямоугольная картинка. Задача разместить ее на шаре. Просто люди делали на С уже такое, надо переписать на VВ.
Всем спасибо за ответы и советы! Если не трудно, выложите сам код, с графикой впервые работаю, очень сложно разбираться..
Последний раз редактировалось a1ewka-gal4onok 10.03.2009 (Вт) 19:42, всего редактировалось 1 раз.

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 05.11.2008 (Ср) 8:41

Ещё хотелось бы добавить полосы прокрутки(горизонтальную и вертикальную) для поворота шара..

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Вращающийся шар

Сообщение lellel » 05.11.2008 (Ср) 11:40

мне кажется, что "шар-глобус" есть в SDK..

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 05.11.2008 (Ср) 15:25

В книге в примерах 18 и 19 создается чайник, меняется формат вертекса (добавляются текстурные координаты), рассчитываются координаты для плоской, проективно наложенной, текстуры.
Чайник меняется на сферу одной строкой, как? Тоже есть в книге.

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 06.11.2008 (Чт) 0:55

С шаром разобрался! :)
Работаю над текстурой..

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 06.11.2008 (Чт) 1:58

Вкладываю файлик --текстура та самая.

У меня получается смена полюсов :)
У вас нет доступа для просмотра вложений в этом сообщении.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 06.11.2008 (Чт) 18:16

На сферу, сделанную с помощью CreateSphere, такую текстуру без шва по одному из меридианов не наложить. Нужно генерировать свою сферу.

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 06.11.2008 (Чт) 20:52

Mikle писал(а):На сферу, сделанную с помощью CreateSphere, такую текстуру без шва по одному из меридианов не наложить. Нужно генерировать свою сферу.

:?: а это как сделать-то? И почему всё же нельзя эту текстуру наложить?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 07.11.2008 (Пт) 13:47

На меридиане, где смыкаются левая с правой стороны текстуры, должна быть текстурная координата tu одновременно и 0 и 1. На одном вертексе это не сделать, нужно дублировать два вертекса на одной координате с разными текстурными координатами. А, например, на полюсе, как думаешь, какая должна быть tu координата, если там всего один вертекс?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вращающийся шар

Сообщение Debugger » 07.11.2008 (Пт) 17:00

:D Не мучай человека. Пускай он создаст шарик в любом трехмерном редакторе и натянет на него текстуру (в каждом редакторе есть такая функция).
Как грузить - есть в замечательном примере http://rusproject.narod.ru/games/pingpong.rar

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 08.11.2008 (Сб) 2:07

Так, господа..

Если я наложу данную текстуру на шар в 3D Max, я потом смогу в Visual Basic 6 подключить этот созданный файл с глобусом, смогу ли я потом управлять вращением его, смогу ли наносить точки на поверхность шара?

Читал про требуемые манипуляции в CBuilder.. Несколько проще, но совсем не хочется из-за этого CBuilder использовать..

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 08.11.2008 (Сб) 10:17

При чем тут вообще билдер? Все, что нужно делать там, нужно делать и тут, это действия не билдера или бейсика, это действия DirectX.
То, что шар будет сделан в максе, никак не ограничит его применение. Но я бы не парился с моделями, а сгенерировал шар сам, это математика за среднюю школу (в книге есть примеры генерации цилиндра и круга).
Чтобы вращать шар, нужно либо вращать мировую матрицу, либо вращать камеру вокруг шара (видовая матрица).
Чтобы ставить точки, нужно либо писать в текстуру (прямая запись через Lock либо рендер), либо делать точки через PointList (я бы делал так).

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вращающийся шар

Сообщение Debugger » 08.11.2008 (Сб) 11:42

А я бы нарисовал шарик в максе. Во-первых, все-таки мозги напрягать не надо, а во-вторых Земля не имеет точную форму сферы (скорее она напоминает грушу), хотя это не особо принципиально.
Расскажи про Lock текстуры, ибо в Книжке ничего не написано.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Вращающийся шар

Сообщение djalex777 » 08.11.2008 (Сб) 13:36

Мда.. Извиняюсь за небольшое отступление. Автору темы явно хотелось, чтобы ему скинули кодовый проект (и даже "добавили полосы прокрутки") :) Не думаю, что ему интересны советы (скорее нужны ссылки на готовый код или сам код (хотя бы для функции расчета текстурных координат шара)).
Теперь по теме:
1) В максе создай шар с текстурными координатами (с Майклом согласен по-поводу самому сгенирировать, но автору это не нужно (если только код дать))
2) Экспортируй шар в X формате
3) Загрузи шар с помошью функции LoadMeshFromX и вращай его мировой матрицей
4) Для точек используй POINTLIST и если нужна расстановка мышью - функцию Intersect для их расстановки на шаре

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращающийся шар

Сообщение Mikle » 08.11.2008 (Сб) 21:03

Debugger
Про Lock можно глянуть в демке воды, там на этом создается 3D текстура.
все-таки мозги напрягать не надо

Надо :)
Вот вариант:
У вас нет доступа для просмотра вложений в этом сообщении.

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 08.11.2008 (Сб) 22:58

Автору темы явно хотелось, чтобы ему скинули кодовый проект (и даже "добавили полосы прокрутки") :) Не думаю, что ему интересны советы (скорее нужны ссылки на готовый код или сам код (хотя бы для функции расчета текстурных координат шара))

Нет-нет, товарищи! Самому интересно разобраться! Просто начал делать....и у меня не очень правильно стала накладываться текстура.. Тут и задумался над 3D Max..

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 08.11.2008 (Сб) 23:00

Mikle, огромное спасибо за код!
Буду вникать в подробности(а именно почему текстура у меня не так наложилась.....)

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: Вращающийся шар

Сообщение a1ewka-gal4onok » 10.11.2008 (Пн) 20:38

Хм.. Делаю как написано в книге, а именно добавляю в функцию Main() строку: D3DXMatrixRotationY Mtrx, QTime * 0.5, при запуске ругается на переменную Mtrx

Где я ошибаюсь, подскажите, пожалуйста..

След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

    TopList  
cron