Войти
ПроектыФорумСобираю команду

Редактор и библиотека растительности: Требуется программист

#0
17:58, 15 янв 2007

Всем привет!

Суть вот в чем: я несколько месяцев начал разрабатывать редактор растительности. Сделал уже довольно много, но еще больше планирую::)
Сейчас я уже довел проектик до такого состояния, что мне уже требуется помощь.
Я буду заниматься непосредственно редактором. Тот, кого я ищу, будет делать библиотеки для real-time отображения растительности в играх.
Отсюда требования (тут пояснение: мне не нужен рак на безрыбье, уж тогда лучше я своими силами, что все-таки нежелательно::)):
- Хорошее знание C++, возможно, C#, если надумаем портировать также на XNA;
- Знание OpenGL и DirectX;
- Соответственно GLSL и HLSL;
- Естественно, знания алгоритмов, применяемых в играх :)
(Лучше оба API, но пока можно обойтись одним. Если это будет DX, то нужно, чтобы в любом случае была возможность создать какие-никакие тормознутые шейдеры на GLSL для редактора:))

Тут еще пояснение: не подумайте, что я мега-программер, или что-то вроде того, я сам, к примеру, совершенно не знаю C++, DirectX, HLSL, GLSL. Т.е. тот, кого я ищу, как программист должен быть намного сильнее меня. Просто тех навыков, которые у меня есть, мне хватает для разработки редактора, к библиотекам же требования выше::) На роль руководителя-тирана я также не претендую :)

Теперь немного о редакторе: разрабатывается на платформе .net на языке Boo.
Основные приоритеты и возможности, которые учитываются при разработке:
- Удобный интерфейс, простой, но при этом многофункциональный;
- Предсказуемость результата (т.е. возможность точно представлять, как отразится на модели изменение определенного параметра);
- Богатые возможности по оптимизации геометрии и созданию LOD;
- Множество параметров, использование которых не всегда обязательно, но которые позволят делать самые разные модели.
- и др. и пр.

Что из этого выйдет, зависит только от нас ::) Так что можно и нужно попробовать

Сейчас пару скринов кину, чтоб не быть голословным :)

#1
18:05, 15 янв 2007

Тестовое дерево, на нем я эксперименты провожу, так что не ищите в нем какого-то высокого смысла ::)
Изображение удалено

Оно же, но в режиме отображения нормалей
Изображение удалено

И совсем уж абстрактное что-то, тестировал управление расчетом нормалей для листьев, будет еще и автоматический расчет, а также их комбинирование
Изображение удалено

#2
18:11, 15 янв 2007

excid
Скажи пожалуйста сколько у тебя треугольников в первом дереве?

#3
18:17, 15 янв 2007

Tagir
Много, я точно и не знаю, т.к. общее количество не подсчитывал (еще не сделал почему-то :))
В стволе около 5000. Но здесь специально очень завышенное количество, т.к. делать алгоритмы приходится не только на малодетализованные модели.

#4
18:43, 15 янв 2007

excid
спасибо.

#5
23:03, 15 янв 2007

Дерево классно выглядит!
я так понимаю демку редактора не собираетесь выкладывать?
Такие деревья генерит! очень бы хотелось посмотреть =)

#6
9:28, 16 янв 2007

Chertov
Спасибо!
Извини, пока выкладывать нет смысла, он даже сохранять пока в виде, пригодном для использования, не может:)

#7
10:33, 16 янв 2007

Дерево понравилось, красиво выглядит.
Можешь еще скрины выложить? =)
Планируется как коммерческий или некоммерческий проект?

#8
19:01, 16 янв 2007

gexogen
Я тут небольшой оптимизацией занялся, рендеринг пока отключил вообще:) Так что скринов пока не могу сделать, но постараюсь через пару дней.
Зато уже соптимизировал генерацию более, чем в два раза::) (В основном за счет более правильного исполльзования памяти). И еще немного выжму:)

Планируется как коммерческий (постепенно, конечно же), но с гибкими условиями для некоммерческих проектов. Посмотрим, что из этой затеи выйдет :)

#9
6:17, 17 янв 2007

Расскажи по подробнеее, что тебе нужно и в чем программить(.Net или Borland C++ Builder подойдет?)
Я так понимаю, что ты генеришь модель, и сохраняешь в треугольниках, как модель. Нужно средство это отобразить?

Самый простой вариант - прога, которая в командной строку принимает файл который нужно отобразить.

  а насчет отбражения Реал тайм растительности в игре-сомнительно. Мало кто захочет подключать ЧУЖУЮ функцию рисования, которую чел не сможет оптимизировать под собств нужды, как то сортировка по одинаковым текстурам(рисуем рощу из 10 деревьев -сначала 10 стволов потом все нижние ветки с одной текстурой, верхние с другой...). кроме прочего, в DX есть така фитча, как уменьшение количестве полигонов для удаленных обьектов и дополнительная тесселяция ближних...(Progressive Mesh).

За то это можно оформить как плагин к максу или майе и продавать буржуям ! :)

Могу обеспечить кривыми и поверхностями Эрмита в плане рисования и исходников, и возможно, другими сплайнами, как пойму что они делают

#10
21:35, 17 янв 2007

excid, мне тоже понравилось, красиво так выглядит.
Меня тема деревев интересует, давай потолкуем на эту тему с тобой
1)нужно рисовать дерево несоколькими вызовами - по вызову на каждый тип листев и ствол, хотя можно дойти и до одного вызова, если текстурки сделать атласные.
2)при множестве деревев нужно рисовать по куче деревев сразу, однако тут тоже нужна мера так как чем больше обединение тем больше источников света будут действовать на лес. тоесть надо разбивать на патчики.
3)анимация деревев.. травы.. тут два подхода
а) Scelet
б) просчитываем вершины на CPU(через 20 кадров расчеn) а на GPU используем VertexBlend.
если на кость приходится одиндва квадв то лучше юзать этот метод, думаю так.
Теперь по Архитектуре встраемого в движок модуля растительности.(для мошного движка),  класс растительности полноценно встраеваемый модуль к движку, а не проппихиваюшейся во все сферы деятельности движка, такие как рендеринг, отрисовку, загрузку итд...
1) деревя должны обединятся в группы, а эти группы должны образовывать меш движка, тоесть теперь движок бутет определят какие источники света светят на этот меш и вообше видим ли он или просто отбрасывает тень.
2)отрисовка и шейдеры тоже дело движка, так как нельзя предугадать как рендетить каждый конкретный движок. если в моем движке ктото попытается прорендерить за меня то ничего хорошего не получится, т скорее всего получится неприемлимо плохо. например не будит тени от облаков теней, тумана, и др
3)деревья должны грузить-создавать свою геометрию, текстуры через интерфейсы движка.
Тоесть проблемы писать под GL or DX снимаются автоматически, если появляется такой код значит гдето плохо спроектировали.
Архитектура для простенького движка:
прямая противоположность всем пунктам, однако это тупиковый путь.

#11
23:38, 17 янв 2007

excid, можеш описать как архитектурно построен твой генератор деревев, и как ты планируеш хранить описание дерева в файле. и каково представление готового дерева ? если не секрет конечно. И подумай еше о траве и кустах. :D

#12
8:13, 18 янв 2007

Mehg
> а насчет отбражения Реал тайм растительности в игре-сомнительно. Мало кто захочет подключать ЧУЖУЮ функцию рисования, которую чел не сможет оптимизировать под собств нужды, как то сортировка по одинаковым текстурам(рисуем рощу из 10 деревьев -сначала 10 стволов потом все нижние ветки с одной текстурой, верхние с другой...). кроме прочего, в DX есть така фитча, как уменьшение количестве полигонов для удаленных обьектов и дополнительная тесселяция ближних...(Progressive Mesh).

Вот именно, что библиотека должно предоставлять базовые возможности (загрузку, отсечение, сортировки, шейдеры, редеринг и т.п.) и позволять без особых трудностей эти самые действия заменить на свои/дополнить/оставить стандартными.
ЛОДы будут генерироваться в редакторе. Это по-любому будет качественнее, чем Progressive Mesh. Благо, редактор позволяет изменять детализацию без изменеия формы (пока только для ствола и веток, листья еще не делал)

Arxon
1) В любом случае минимум два вызова по типу геометрии: листья и стволы. Атласные текстуры планируются, но пока у меня нет времени, так как есть на данный момент более приоритетные дела (например, генерация ЛОД)
3) Ну тут можно разделить на 2 части: микроколебания листвы и наклоны веток вместе с листвой. Первая часть реализуется несложно, а про вторую еще не думал. Но этим тоже займусь позже:)

Про архитектуру все правильно, но как я уже сказал выше, должны быть базовые реализации, на которые можно опираться (кого-то, к примеру на первое время они устроят, а позже они их немного изменят под свои нужды). Естественно, что API-зависимость должна быть минимальной.

Arxon
На данный момент генератор является частью редактора, результатом его работы будут готовые вершинные и индекстные буферы (в файле). Возможно, в будущем, генератор будет вынесен из редактора (что позволит генерировать при загрузке уровня, к примеру, или при установке игры, тоже вариант). Но сейчас это не планируется, и так делов много::)
А представление модели редактор хранит в xml.

#13
8:52, 19 янв 2007

excid,
>>>Естественно, что API-зависимость должна быть минимальной.
Я считаю что ее не должно быть вообше.
И советую тебе генератор сразу отделить от редактора, сформировав при этом интерфейс генератора дерева.
да сделай интерфейс таким чтоб можно было подключить генератор как статическую библиотеку с минимальным включением твоих собственных типов данных, чтоб там не пришлось твою математику подключать ко всему проекту.
например для пользователя генератора будет важен метод создания модели дерева по шаблону который описывается файликом с твоим только тебе известным форматом. Нaример я себе вижу это так:
TTreeFullDescription * generateTree(void * pTemplateFileData, uint nTemplateFileSize, uint nRandomSeed=0);
Сохранение геометрии для рисовния в твой собственный формат(будь то xml,txt,bin или что другое) бесполезно, нужно сохранять описание-шаблон дерева.
Сохранять геометрию для рисовния дерева имеет смысл только в известные форматы.
Должны быть сформированны понятия: Template(опсание как генератору растить дерево),
Mesh(геометрия для рисования),Model(физическая модель креплений ветки к вети, хотя совсем не обязательно что она будет обрабатыватся физ движком)
[/b]
Выделить эти понятия и начать с ними оперировать лучше сразу, хотя это сильная нагрузка на мозг и месяц(не меньше) раздумий над обшей картиной.
Хотя раздумывать месяц не пробуя реализовать какие-то моменты не выйдет.
Вот собственно некоторые мои мысли об деревьестроении :).
Жаль нет времени занятся деревьями, травкой :((. Хотя рано или похно придется :))

#14
8:59, 19 янв 2007

Нет особого смысла генерить дерево чтоб записать его в тот же 3ds, только генерация в движке в реальном времени понастояшему полезна.

ПроектыФорумСобираю команду

Тема в архиве.