[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Panda3D - по русски » Panda3D » Общие вопросы » particles
particles
hawkfly2016Дата: Четверг, 12.07.2018, 10:25 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Чего хочу? Хочу дерево или группу кустов, которое сначала пререндерится в текстуру с разных углов (наверное с интервалом 5 градусов, где-то 64x64). Потом это дерево в большом количестве будет расставляться на поверхности в зависимости от угла. Появилось много вопросов: как лучше это сделать вообще (партиклы какие может ?), сколько мемори это съест, можно-ли хранить 8-битные текстуры, как заменять текстуру при повороте, через функцию типа update() и.т.д.

Сообщение отредактировал hawkfly2016 - Четверг, 12.07.2018, 10:26
 
ninthДата: Пятница, 13.07.2018, 10:15 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 1563
Награды: 5
Репутация: 46
Статус: Offline
Боюсь, что в том виде, в котором ты хочешь, это будет работать медленнее чем без всех этих извратов, надо учитывать что каждый дополнительный узел будет замедлять работу т.к. будет по-отдельности отправляться в видеопамять. Т.е. например 10000 кубов объединённых в одну модель и 10000 кубов по-отдельности это очень разные вещи по скорости. Если тебе нужно очень большое кол-во растительности, то это обычно делают через шейдеры. Если без шейдеров, то есть ещё такая штука как LODы
 
hawkfly2016Дата: Пятница, 13.07.2018, 10:42 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Да нет, же. Расставляться на карте будут партиклы с пререндренной текстурой. Мне только интересно много всяких мелких деталей реализации. В памяти будет приличный такой массив пререндеренных текстур, из него будет выбираться одна, соответствующая угловой позиции дерева на карте. Вот я и думаю как конкретно это реализовать. Надо наверное в какой то функции типа update последовательно перебирать все частицы и красить их в соответствующую текстуру. Есть ещё рубаночный вариант делать один пререндер дерева каждый кадр на все позиции, в зависимости от угла камеры.
 
ninthДата: Пятница, 13.07.2018, 10:55 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1563
Награды: 5
Репутация: 46
Статус: Offline
Я об этом и говорю - при таком подходе тебе придётся держать каждую "частицу", точнее биллборд в отдельном узле для того чтобы иметь к нему доступ, со всеми вытекающими из этого проблемами и объём текстур (которые при желании можно в один атлас загнать) будет меньшей из этих проблем, в общем на мой взгляд это будет неработоспособно. Обычно такое делается через шейдеры, посмотри на различные реализации травы.
 
hawkfly2016Дата: Пятница, 13.07.2018, 11:17 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Ну, да перед тем как это прочитать я пришел примерно к тому-же выводу. Шейдер... да чувствую даже что-то, наверное там что-то есть, но по мне шейдер- это пока ругательство :))) Оставлю пока эту блаженную идею и попробую реализовать топорный вариант, где на все биллборды рендерится каждый кадр одна текстура, тут-то все чисто?
 
ninthДата: Пятница, 13.07.2018, 12:34 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 1563
Награды: 5
Репутация: 46
Статус: Offline
1. зачем тебе каждый кадр текстуру рендерить?
2. не скажу на вскидку как будут работать билборды если их объединить в одну геометрию или использовать rigidbodycombiner, а без этого проблема никуда не уйдёт
 
hawkfly2016Дата: Пятница, 13.07.2018, 15:35 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
2. Чего-то торможу... Я могу вывести на экран несколько сот биллбордов на каждом из которых будет текстура и это должно тормозить? Или тормозят биллборды как таковые?
1.А текстуру рендерить каждый кадр, чтобы дерево на текстуре под нужным углом было (под которым камера повернута)...
А партиклы с биллбордом примеры где есть? И как сделать, чтобы они генерились на поверхности и лучше по маске?


Сообщение отредактировал hawkfly2016 - Пятница, 13.07.2018, 15:48
 
serg-kkzДата: Пятница, 13.07.2018, 23:38 | Сообщение # 8
Генерал-лейтенант
Группа: Модераторы
Сообщений: 700
Награды: 3
Репутация: 16
Статус: Offline
Пример биллборда.
Прикрепления: Demo.zip(154.6 Kb)


ООП  -  
 
hawkfly2016Дата: Воскресенье, 15.07.2018, 09:45 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Огр. спсб. сегодня посмотрю...

Добавлено (15.07.2018, 09:45)
---------------------------------------------
Да, все отлично, можно ходить и ездить, но я хочу еще и летать, для этого как я понял мне в billboard.egg надо написать вместо axis какой-то point, но я пока не понял какой... А ещё появилась проблема, когда я вставил строчки примера в bumpexample (граунд и биллбоард, и то и то добавляет падение фпс), фпс упал до 40, при максимальном разрешении. syncoff разгрузил порядка +5 кадров...


Сообщение отредактировал hawkfly2016 - Воскресенье, 15.07.2018, 10:09
 
serg-kkzДата: Воскресенье, 15.07.2018, 12:47 | Сообщение # 10
Генерал-лейтенант
Группа: Модераторы
Сообщений: 700
Награды: 3
Репутация: 16
Статус: Offline
Все просто   smile 

Код
<Billboard> { point }

По поводу падения, не совсем ясно что ты делаешь. Нужен код.


ООП  -  
 
hawkfly2016Дата: Воскресенье, 15.07.2018, 15:48 | Сообщение # 11
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Просто в то место в бамп экзэмл, где происходит расстановка объёктов вставляю строки из примера касающиеся граунд и биллборд, в результате посередине бамповой комнаты появляется земля с деревом (дерево зачетное :)))) Чтобы оценить падение на мощном компе наверное надо выключить синхронизацию.

Сообщение отредактировал hawkfly2016 - Воскресенье, 15.07.2018, 15:51
 
serg-kkzДата: Воскресенье, 15.07.2018, 17:45 | Сообщение # 12
Генерал-лейтенант
Группа: Модераторы
Сообщений: 700
Награды: 3
Репутация: 16
Статус: Offline
Проверил, у меня разницы нет ~340 фпс держит. Может у тебя комп слабый, раз он себя ведет, реагируя на незначительные изменения в сцене.

Попробуй текстуру дерева изменить размер кратный двойке, например 256X256


ООП  -  

Сообщение отредактировал serg-kkz - Воскресенье, 15.07.2018, 17:51
 
hawkfly2016Дата: Понедельник, 16.07.2018, 10:41 | Сообщение # 13
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Ну, ладно может это разрешение значимое для слыбых компов (1920x1080),я на самом деле в бубен забил, когда добавил штук 10 плоскостей в режиме 1024x768 и фпс просел градусов на 5, но на второй раз этого уже не было, наверное все в норме... Давно хочу подгрузить какой-нибудь хайполи для теста производительности, но банально не могу этого сделать сейчас потому, что сижу в хроническом аврале, и залезаю в панду и по своим нуждам на полчаса...
p.s. А с производительностью уже был вопрос на этом сайте при разрешении 1600x....
p.s.
1.У меня ультранотик с турбо режимом и ясссно он греется...
2.После добавления в сцену 3-10 верточайников и бокс робота фпс в режиме 1024x768 подлетел с 40-60 до 60-90...

Добавлено (27.07.2018, 15:44)
---------------------------------------------
А можно сделать мин. и макс. дальность прорисовки для конкретного объекта, для биллборда ?...

Сообщение отредактировал hawkfly2016 - Среда, 18.07.2018, 09:50
 
serg-kkzДата: Суббота, 28.07.2018, 00:15 | Сообщение # 14
Генерал-лейтенант
Группа: Модераторы
Сообщений: 700
Награды: 3
Репутация: 16
Статус: Offline
Тебе нужно просто пустой нод повесить как уровень детализации.

https://www.panda3d.org/manual/index.php/Level_of_Detail 


ООП  -  
 
hawkfly2016Дата: Суббота, 28.07.2018, 10:20 | Сообщение # 15
Сержант
Группа: Пользователи
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Отл., то, что надо... Спсб...

Добавлено (29.07.2018, 11:00)
---------------------------------------------
А ещё есть желание сделать, чтобы объекты становились прозрачными к горизонту. (Впервые вроде видел в фаллауте 3). Можно-ли сделать динамический анврап всех объектов каждый кадр по огромной горизонтальной плоскости, которая будет привязана к камере и по которой будет наносится альфа с градиентом?

Добавлено (30.07.2018, 09:57)
---------------------------------------------
В принципе можно легко сделать несколько полупрозрачных лодов. А как лучше сделать тогда прозрачность, чтобы не фотографировать каждый лод? Первое, что пришло на ум наложить второй текстурой на отрендеренную текстуру карту белого цвета с процентом прозрачности в альфа для дальних лодов и тогда мультитекстуринг сделает то чего мне надо...


Сообщение отредактировал hawkfly2016 - Понедельник, 30.07.2018, 09:58
 
Форум Panda3D - по русски » Panda3D » Общие вопросы » particles
  • Страница 1 из 1
  • 1
Поиск: