Понедельник, 25 Ноября 2024, 20:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Как создать LOD, изменяющий число подчиняемых объектов?
HightpolygonДата: Суббота, 27 Ноября 2010, 19:48 | Сообщение # 1
был не раз
Сейчас нет на сайте
В каком 3d редакторе или другой программе, или обязательно придется прибегнуть к помощи языка программирования, сделать так чтобы вблизи дерево автоматически выстраивалось из большого числа объектов, а при удалении от него, то же самое дерево состояло только из одного объекта?
Обычно LOD меняет только сложность объекта, но не его количественность, то есть мне нужен процесс, который от просто LODa отличается тем, что по мере приближения на пустых поверхностях ветвей, генерирует раннее созданные кроны (загружает геометрические объекты) из файлов по случайному алгоритму распределения по поверхности, или по текстуре растрового изображения, то есть чтобы ветви вдалеке понимались программой как один несложный объект (предок), запрограммированный на генерацию потомков по вышеприведенным алгоритмам в случае приближения, а не как объект с дополнительными, приделанными к нему и скрытыми от глаз ветками, так как в последнем случае лес будет состоять из огромного количества групп объектов, которые в свою очередь будут состоять из немалого числа более мелких объектов, а мне нужно чтобы вблизи дерево выстраивалось из большого числа объектов, а вдали то же самое дерево состояло только из одного.
Желательно конечно, чтобы объекты с присущими им свойствами могли бы экспортироваться в игровой движок, например в cryengine 2 sandbox 2 editor/
ezhickovichДата: Суббота, 27 Ноября 2010, 20:29 | Сообщение # 2
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Hightpolygon, Лучше напиши это руками...


Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
HightpolygonДата: Суббота, 27 Ноября 2010, 20:42 | Сообщение # 3
был не раз
Сейчас нет на сайте
ezhickovich, может и хорошая ссылка твоя, не в обиду, но не нужно предлагать людям поклоняться себе: слишком нескромно, и люди этого не любят. Если ты умеешь давать дельные советы, это не означает что тебе должны поклоняться. Поклоняться можно только всевышнему.

Какая разница, и зачем руками? Не понял.

Сообщение отредактировал Hightpolygon - Суббота, 27 Ноября 2010, 20:58
ezhickovichДата: Суббота, 27 Ноября 2010, 22:09 | Сообщение # 4
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (Hightpolygon)
Какая разница, и зачем руками? Не понял.

Мне кажется такое будет проще реализовать самому - меньше головной боли...
По сути, это простая процедурная генерация, с небольшими отличиями...

Добавлено (27.11.2010, 22:09)
---------------------------------------------

Добавлено (27.11.2010, 22:09)
---------------------------------------------
Ладно, не будем разводить оффтоп...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
FlowДата: Суббота, 27 Ноября 2010, 22:41 | Сообщение # 5
-=[.FSProduction.]=-
Сейчас нет на сайте
Quote (ezhickovich)
Я: О великий повелитель этой ничтожной вселенной... СОКРАЩЁННО ЁЖ... - Научись Поклоняться Ежам!

Hightpolygon, это подпись к профилю, а не часть сообщения!)))
HightpolygonДата: Суббота, 27 Ноября 2010, 23:15 | Сообщение # 6
был не раз
Сейчас нет на сайте
))) а я то думаю, что еще за пользовательская иерархия, оказывается "это подпись к профилю, а не часть сообщения!)))"

"Мне кажется такое будет проще реализовать самому - меньше головной боли..." - что значит самому и в какой программе лучше это сделать?

"По сути, это простая процедурная генерация, с небольшими отличиями..." - можно по подробнее о процедурной генерации? Как раз это самая больная тема, так как с программированием я на "вы", но мне хотелось бы создать собственную процедурную генерацию.

Пытался в Sandbox 2 создать лес такого же качества: как делал в 3Ds max + indigo render, но на том же самом компе, Sandbox и близко не тянет объекты подобной сложности, тогда я решил проэксперементировать уже в самом Sandboxе: из множества ветвей склеил дерево, примерно такого же уровня сложности, но когда сделал из них небольшой парк, система стала тормозить, так как количество объектов при этом стало превышать приблизительно раз в 10 чем в привычной ситуации, даже когда скрыл эти объекты, потому что Sandbox хоть уже и не трудится над их передачей, все же учитывает как объекты, пусть это даже будут кубы, при таком их количестве торможение неизбежно. Дело в том, что для передачи дальних деревьев, достаточно одного объекта, обычного уровня сложности, но чтобы при прохождении через заросли сохранить такое же качество передачи, требуется многообъектное создание дерева.

ezhickovichДата: Суббота, 27 Ноября 2010, 23:28 | Сообщение # 7
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (Hightpolygon)
что значит самому и в какой программе лучше это сделать?

Ну к примеру:
Создать класс дерева со списком веток и/или прочей лажи...
Динамически во время игрового цикла проверять положение плейера и в зависимости от него заполнять список веток/лажи...
Отправить на рендеринг все объекты находящиеся в списке...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
HightpolygonДата: Воскресенье, 28 Ноября 2010, 14:00 | Сообщение # 8
был не раз
Сейчас нет на сайте
"Создать класс дерева со списком веток и/или прочей лажи...
Динамически во время игрового цикла проверять положение плейера и в зависимости от него заполнять список веток/лажи...
Отправить на рендеринг все объекты находящиеся в списке..." В какой программе это делается, в 3d maxe или в какой то другой? Хотелось бы конечно посмотреть video tutorial, или хотя бы просто инструкцию с этим.
ezhickovichДата: Воскресенье, 28 Ноября 2010, 14:04 | Сообщение # 9
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (Hightpolygon)
Хотелось бы конечно посмотреть video tutorial, или хотя бы просто инструкцию с этим.

Видео туториалов на данную тему точно нет... wink



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
HightpolygonДата: Воскресенье, 28 Ноября 2010, 14:08 | Сообщение # 10
был не раз
Сейчас нет на сайте
Повторюсь в вопросе: Для меня важно знать, в какой программе это делается, может в 3d maxe или в какой то другой?
ezhickovichДата: Воскресенье, 28 Ноября 2010, 14:11 | Сообщение # 11
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (Hightpolygon)
Для меня важно знать, в какой программе это делается, может в 3d maxe или в какой то другой?

Это делается на ЯП... (к примеру на C++)

Добавлено (28.11.2010, 14:11)
---------------------------------------------
Насколько я понял тебя интересует именно реализация сего в рыдательном моторе, с которым я не работал... (советую спросить это на его форумах)



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
HightpolygonДата: Воскресенье, 28 Ноября 2010, 14:20 | Сообщение # 12
был не раз
Сейчас нет на сайте
Рыдательный мотор - потешно звучит, раньше я задавал на другом форуме вопрос: C++ позволяет изменять возможности любой программы? Например, Рыдательного мотора sanbox 2, или пресловутого 3ds maxа. Ответа до сих пор нет.
WXZRWДата: Воскресенье, 28 Ноября 2010, 14:28 | Сообщение # 13
Thousand faces conspiration
Сейчас нет на сайте
В большинстве случаев LOD модели содержится в файле с самой моделью и загружается движком при необходимости. Геометрия ЛОДа, также как и геометрия модели, делаются заранее в каком-либо 3д редакторе, кроме случаев когда движок способен подавлять количество геометрии самостоятельно, то есть, что-то вроде Triangle Reduction.

В любом случае движок Крайзиса поддерживает ЛОДы, как этот функционал использовать - об этом должно говориться либо в описании движка, либо в СДК.

Вообще помню что я пробовал выдирать модели из Крайзиса, в том числе и деревья, так вот - ЛОД содержится в файле модели.

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

WXZRWДата: Воскресенье, 28 Ноября 2010, 14:33 | Сообщение # 14
Thousand faces conspiration
Сейчас нет на сайте
Quote (Hightpolygon)
C++ позволяет изменять возможности любой программы?

С++ дает возможность изменить все что угодно в такой программе, к которой у вас есть исходный код, написанный на языке С++, это в принципе. Вы не сможете изменить что-либо, например в 3д макс, поскольку у вас нет исходников этого редактора. Тем не менее, можно написать на языке С++ подключаемый модуль для 3д макс, например используя Макс СДК. Кроме того, также возможно внести изменения в практически любую программу, путем ее взлома, для чего потребуется написать перехватчик или патчер, на любом (почти, тут зависит от условий) из ЯП. 2 предыдущие фразы - это условные данные, поэтому к словам не придираемся, здесь все зависит от обстановки.

HightpolygonДата: Воскресенье, 28 Ноября 2010, 15:11 | Сообщение # 15
был не раз
Сейчас нет на сайте
"перехватчик или патчер, на любом (почти, тут зависит от условий) из ЯП", можно с этого по подробнее? Кстати я хотел усовершенствовать некоторые свойства/возможности Рыдательного мотора Sandbox 2 и соответственно выходного результата (игры).

Сообщение отредактировал Hightpolygon - Воскресенье, 28 Ноября 2010, 15:16
AkyltistДата: Понедельник, 29 Ноября 2010, 04:10 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
для примитивов в виде деревьев и тд. вполне сойдет снятие импостера и после этого геометрию деревьев в далеке, переносим например на билбоарды (ну или срайты) и засовываем в vbo, отрисовываем за один dip.
ezhickovichДата: Понедельник, 29 Ноября 2010, 09:06 | Сообщение # 17
[Великий и могучий хозяинъ]
Сейчас нет на сайте
ЗЫ: ему нужен не совсем ЛОД...
Он хочет чтобы модель генерировалась динамически в зависимости от расстояния до игрока... (если я правильно понял...)

Hightpolygon, этот двиг создавали сотни квалифицированных людей, отлично разбирающихся в поставленной задаче...
Скорее всего твои изменения просто нарушат его работоспособность... wink
=> в этом нет смысла...
+ ты не имеешь понятия о том как он устроен изнутри...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
Serg1971Дата: Понедельник, 29 Ноября 2010, 10:14 | Сообщение # 18
Весёлый программист
Сейчас нет на сайте
Hightpolygon, как неоднократно уже тебе говорили WXZRW и ezhickovich, тут невозможно что-то сделать без исходников твоего "Рыдательного мотора" smile Кроме того, ты должен быть просто асом и гуру в программировании, что бы легко читать чужой код, тем более такой сложности... Твоё желание - это то же самое, что и - "Ой, я посмотрел телевизор, он так клёво показывает! Но я хочу, что бы было стереоизображение! Что и куда мне припаять, для этого!?".
Алгоритмы такого рода - существуют. Для твоего случая, подойдёт фрактальный алгоритм построения меша. Только не надо просить, поподробней обьяснить, что это такое... Невозможно в топике, уложить несколько лет высшей математики, теорию комплексных чисел, множества Жулиа...
В кратце, можно применить следующий метод построения... Начнём с самого большего расстояния. Берём отрезок, вычисляем его вектор. При приближении - бьём отрезок, предположим на три части. Делаем нормали к отрезку, причём разной длинны (с рандомным разбросом по длинне). Случайно поворачиваем их вокруг родительского отрезка, и смещаем конечную точку в направлении родительского вектора. Всё, мы получили ствол и три ветки к примеру... При дальнейшем приближении - снова вычисляем вектор каждой дочерней ветки, бьём каждую дочернюю ветку на три части, и повторяем весь алгоритм... И так далее... Но это, придёться делать самому ручками в ЯП-е, как тебе и советовали во втором посте...


HightpolygonДата: Понедельник, 29 Ноября 2010, 15:31 | Сообщение # 19
был не раз
Сейчас нет на сайте
ezhickovich, моя цель повысить качество визуализации деревьев за счет, как я уже говорил генерации ближнего дерева из множества объектов, так как из одного объекта в Sandbox не создать качественного дерева в ближнем расстоянии, даже на самом крутом домашнем компе, а для дальнего дерева хватит и одного. Почему генерация вблизи камеры наблюдателя и delete объектов, по мере удаления в расстоянии должны нарушить работоспособность?
Специалисты этой настройки не сделали, видимо потому что посчитали, что школогеймеры будут рады и этому качеству, так и есть. Я проверял, Sandbox без лишних тормозов может вблизи отображать шикарное дерево, склеенное в нем из множества крон (объектов), и дальние из одного прекрасно смотрятся, после этого как раз и пришла идея, по вопросу которой я сюда обратился.

Serg1971, выходит что легче самому организовать создание нового игрового движка, чем переделывать чужой?

З.Ы. фрактальный алгоритм знаком мне не сегодня. Если честно: то, что обсуждается в данной теме, это далеко не все, что я хотел бы изменить, говорю это как проводивший не первый год опыты с особенностями зрительного восприятия человека, а не с точки зрения программиста, но сложность в том, что для осуществления замыслов требуется, как я понял, создание новой программы/движка. В одиночку, скорее всего, это мало вероятно, но должен быть выход, решение непростой, с технической стороны задачи, но уже решенной экспериментами, со стороны психологии и свойств зрительного восприятия? Возможно я, как только начавший изучать C++, думал что проще переделывать уже созданный движок, не зная о сложностях, связанных с исходным кодом:(

Сообщение отредактировал Hightpolygon - Понедельник, 29 Ноября 2010, 17:43
TLTДата: Вторник, 30 Ноября 2010, 14:22 | Сообщение # 20
Сейчас нет на сайте
Зачем это нужно? Ведь это мера оптимизации, а не красивая фича. Неужели делается игра, которая пожирает ресурсы, что требует немедленной оптимизации? Сомневаюсь. Тем более в современных движках оптимизация моделей предусмотрена изначально: работа с памятью и геометрией.

Реализовать можно всё. Для этого нужно на языке, который предусмотрен редактором скриптов используемого игрового движка, написать соответствующую систему. Ты же программируешь игру, например, на управление? Тут же программируется и визуальная часть, если знаешь, как работать с функциями.


Дао, выраженное словами, не есть истинное Дао.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг