Метод шаблонов

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

Модератор: Mikle

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Метод шаблонов

Сообщение Хакер » 19.01.2006 (Чт) 14:09

Хочу узнать мнение опытных людей, которые хорошо разбираются с Д3Д и, возможно, пытались сделать такое.

Использую TrueVision3D. Думал я думал и надумал следующее. Вот есть у меня в мире лес, к котором 1500 деревьев. Зачем создавать массив моделей
и 1500 раз загружать Tree.Oak.3ds, если можно загрузить один раз, но 1500 раз поменяв позицию и вращения отрендерить дерево. Поэтому я решил сделать класс сObjectTemplate, в котором будет храниться "шаблон". Т.е. в классе объявлены переменные, содержащие одинаковые для всех объектов мира свойстав (Имя шаблона, сама модель (геом.), масса, упругость ...). А для объекта сделать класс cObject, в котором будет имя шаблона, позиция (XYZ), ротация (XYZ), сумматор сил, скорость и тд.). Т.е. для отрисовки всей сцены нужен был такой код:

Public World as cObject_Collection 'коллекция элементов класса cObject
Public Templates as cObjectTemplate_Collection 'Коллекция шаблонов

Код: Выделить всё
Sub RenderWorld
For Each obj in World
Templates(obj.TemplateName).Mesh.SetPosition Obj.GetPosition
Templates(obj.TemplateName).Mesh.SetRotation Obj.GetRotation
...
Template(obj.TemplateName).Mesh.Render

Next Obj
End Sub


Но не всё так просто... Дело в том, что стандартный предоставляемый движком метод RenderAllMeshes делал альфасорт. Т.е. чтобы за прозрачными объектами были видны объекты находящися за ними нужно рендерить сначала сначала дальние, потом ближние объекты. Пришлось в RenderWorld добавить алгоритм сортировки объектов по дальности от камеры. Но и это ещё не всё. 3дмакс почему-то не экспортирует в 3ds файлы анимацию, а анимацию всё-таки хочется. Поэтому придётся к каждому объекту приделать многомерный массив, в котором будут находиться позиции и нормали всех вертексов модели в определённый кадр. И при каждом рендеринге модели нужно будет переместить каждый вертекс. А если вертексов 10000 а моделей 500 + нужно сделать альфа-сорт + подсчитать физику + куча математики + расчёт путей и проч. деятельность АИ... И так каждый кадр... А не будет ли 2-5 FPS?

Вот и хочу узнать на чём лучше экономить на процессорном времени или бросить заниматься фигнёй и отвести каждому объекту по переменной с мешью и поломать голову и сделать скелетную аниму.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 19.01.2006 (Чт) 14:58

3дмакс почему-то не экспортирует в 3ds файлы анимацию


3дмакс экспортирует анимацию в 3дс файлы, просто её нужно уметь прочитать.. а в данном случае твой движок должен уметь это сделать.

А если вертексов 10000 а моделей 500 +


Вот это будет тормозить в любом случае. Какой бы способ ты не выбрал твоей видеокарте нужно будет отрисовать 5 000 000 вертексов, наложить на каждый текстуру, рассчитать освещение т.д.

Поэтому придётся к каждому объекту приделать многомерный массив, в котором будут находиться позиции и нормали всех вертексов модели в определённый кадр.


а вот это пожалуй увеличит кол-во фпс... тока со знаком минус

попробуй вставить в основной цикл программы цикл от 1 до 10000*500 (пройтись по массиву с вертексами для 500 моделей) - и оставь этот цикл просто пустым. Даже при этом фпс будет не больше 50 я думаю.. потом попробуй вставить в этот цикл рисование одной точки. просто примитив, прорисованный такое кол-во раз. Фпс упадёт где то до 10..
Ну а вставив в цикл обработку вертексов - получишь диафильм, а не игру.. :twisted:

Деревьев должно быть мало. На фоне должны быть плоскости с нарисованными деревьями. А деревья только рядом с игроком. И сами деревья должны состоять из ствола и плоскостей на которых нарисованы ветки (не обязательно 4ёх, как в гта.. :lol: :lol: )

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.01.2006 (Чт) 16:30

nekeda писал(а):3дмакс экспортирует анимацию в 3дс файлы, просто её нужно уметь прочитать.. а в данном случае твой движок должен уметь это сделать.


Неа, я пробовал экспортировать файл с 10 кадров анимации и 100 кадров, с 5 установленными ключиками и 45, во всех случаях объем файла был одинаковым.

nekeda писал(а):Деревьев должно быть мало. На фоне должны быть плоскости с нарисованными деревьями. А деревья только рядом с игроком. И сами деревья должны состоять из ствола и плоскостей на которых нарисованы ветки (не обязательно 4ёх, как в гта.. :lol: :lol: )


Деревья это пример... Например это будут враги или обломки или просто объекты (консервные банки на дорогах, мусор всякий) - их же нельзя сделать частицами.

-------------------------------------------------
И всё таки меня очень интересует стоит ли делать метод шаблонов или сделать как принято Если что, потом передалать будет ооооооооооочень трудно...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 19.01.2006 (Чт) 17:48

Этот метод, как ты его называешь, метод шаблонов, делать стоит, он и память, и FPS экономит (причём очень сильно). Для анимации попробуй пользоваться Milkshape.
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.01.2006 (Чт) 21:03

А вот вопрос как будет расчитываться освещение для одного и того же объекта в разным местах разной освещённости.

Кто ещё как думает? Хотелось бы узнать мнение d3drm например.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 20.01.2006 (Пт) 9:26

Освещение рассчитывается нормально. А вообще, переходи лучше на движок DXManiac'a (rRenderer, или как он там), хороший саппорт гарантирован, + можно в исходниках покопаться!
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.01.2006 (Пт) 12:33

Не хочу обидить DXManiaca, но его движок пока очень слаб для поставленной передо-мной задачей. Я сначала выбрал iRender но и он неподошёл. (Кстати могу выложить демку, что у меня получилось с IRENDEROM. А вообще на iR у меня получилось много хороших игрушек, но то что мы пишем сейчас... ему пока не по зубам) а потом наткнулся на TrueVision3d. Но если честно и его мне тоже нехватает.


----------------------------
Пока я получил только 1 полезный ответ от mdx. Неужели никто больше ничего не может посоветовать
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 20.01.2006 (Пт) 13:01

Тогда жди, когда я свой двиг закончу :D . И изучай VB.NET
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

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

Сообщение Mikle » 20.01.2006 (Пт) 15:32

Хакер
Зачем создавать массив моделей
и 1500 раз загружать Tree.Oak.3ds, если можно загрузить один раз, но 1500 раз поменяв позицию и вращения отрендерить дерево.

Я не пользовался сторонними движками, скажу с точки зрения D3D.
1500 раз сменить матрицу (еще и рассчитать!) - это уже тормоза. Но даже если матрицу не трогать, то вывод 1500 деревьев за 1500 вызовов займет в несколько раз больше времени, чем за 1 вызов, больше на столько, что это не оправдает экономию памяти. Я проводил эксперименты, выводя поэлементно ландшафт, пришел к тому, что максимально эффективность достигается при выводе его полосами (например 256 полос по 256 клеток). То есть, в применении к деревьям, я бы предположил загонять в "шаблон" кол-во деревьев, приблизительно равное Sqr(nTree). И анимировать их все скопом, а не по одному, примерно так:
http://bbs.vbstreets.ru/viewtopic.php?t ... highlight=
Обрати внимание, ветки движутся не синхронно, хотя дерево рисуется за один проход, точно так же и деревья будут двигаться не синхронно.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.01.2006 (Пт) 16:12

Но если честно и его мне тоже нехватает.

http://soft.goohoo.ru/program_3207.htm
Morfit 3D Engine SDK for VisualBasic
SDK для разработки 3Д игр и т.п программ, беспрецедентно простой в использовании и быстрый движок. Software и 3DAccelerator render. Доступны также Визуальный редактор под формат движка, конверторы из *.3DS и *.MAX,TerrainBuilder, SDK для Вorland C++ Builder, для Borland C++, для VisualC и для Delphi...большое количество примеров и код игры.
:roll: может оно кому-нибудь нужно...
Лучший способ понять что-то самому — объяснить это другому.

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 20.01.2006 (Пт) 17:35

а мне нравится Revolution3D (http://revolution3d.de)

Очень богатый функционал(модельки 3ds ms3d md2 dxe, просчёт физики (столкновение лучей с объектами и т.д.), зеркала, различные "Blendmodes", примитивы, бамп, скелетная анимация, set/getpixel, рендер в текстуру.. чего ещё желать?:)), и при этом вполне логичное и понятное построение кода, нормальный СДК с туториалами, хороший форум, правда англоязычный.. тру! :D

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.01.2006 (Пт) 22:07

Вы мне предлагаете перейти на другой движок. Во-первых изучение нового движка потребует время, которого у меня мало :D Во вторых мне захочется и туда сделать метод шаблонов и вопрос сохраняется.

Morfit я как-то раз пробовал скачивать. Графика нормальная но спэшскрин отбил всякое желание его использовать. Я так понял что сплеш не зависит даже от того, лицензионная версия у тебя или демо. А вот TrueVision рисует только маленькое лого в углу. Причём лого не пропорционально размеру экрана и при 1280*1024 оно вообще мало заметно. А потом я научился лечить лого не платя 500 УЕ. Правда это сказалось на некоторых возможностях. Но это не важно. Если проект не рухнет, а будет доведён до конца и будет конкурентноспос. затраты на лицензирование окупятся. Что касается возможностей: скоро выйдет TV3D-8-Beta работающая с DX9 (а не с DX8.1) и поддерживающая кучу новых возможностей (в т.ч. и физику, которой так нехватает).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.01.2006 (Пт) 22:17

Mikle а почему 2фпс у твоих деревьев?

Вот, господа, какие новости: Я попробовал выводить все частицы через одну. Для каждой менять позицию и текстуру. Нифига! Получается у всех частиц текстура как у последней отрендериной.[/b]
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Mikle » 21.01.2006 (Сб) 11:28

Хакер
а почему 2фпс у твоих деревьев?

Это на какой машине? Или ты включил REF device?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.01.2006 (Сб) 22:57

Машина такая:
CPU 3000 MHz P4
RAM 1Gb
Video nVidia 6200 [128MB]


А REFMode я не включал, если конечно оно не стоит по умолчанию.

--------------------------------------------------------------------------------

Так "делать" или "не делать"? - вот в чём вопрос.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Mikle » 22.01.2006 (Вс) 12:08

Хакер
Тут что-то не то. На Athlon3200, GF6600 около 1300 fps.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.01.2006 (Вс) 12:55

fps дофига.

Я вот пока дрова видюхе родные не поставил, в worms world party было слайд-шоу...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 0:38

Это я проект запускал. А запустил EXE - всё нормально. Проект - опять 2-5 фпс. А WWP у меня тоже слайд-шоу и дрова стоят вроде бы родные...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 23.01.2006 (Пн) 2:23

Нужны родные-последние

На такой машине WWP слайд-шоу... звучит дико)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 3:06

Звучит дико, а выглядит ОЧЕНЬ ДИКО :D

А теперь вопрос "Стоит или не стоит"
И ещё один вопрос "Сколько сейчас в Москве стоит лицензионный VB.NET")


А кстати, была такая передача "Весёлые баксы" называлась, так вот там все звуки были из WWP.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.01.2006 (Пн) 7:32

Сейчас в Москве он стоит $100...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 11:52

GSerg писал(а):Сейчас в Москве он стоит $100...


Спасибо, большое.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

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

    TopList