[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Panda3D - по русски » Panda3D » Общие вопросы » particles
particles
hawkfly2016Дата: Четверг, 12.07.2018, 10:25 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 26
Награды: 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
Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Репутация: 0
Статус: Offline
Да нет, же. Расставляться на карте будут партиклы с пререндренной текстурой. Мне только интересно много всяких мелких деталей реализации. В памяти будет приличный такой массив пререндеренных текстур, из него будет выбираться одна, соответствующая угловой позиции дерева на карте. Вот я и думаю как конкретно это реализовать. Надо наверное в какой то функции типа update последовательно перебирать все частицы и красить их в соответствующую текстуру. Есть ещё рубаночный вариант делать один пререндер дерева каждый кадр на все позиции, в зависимости от угла камеры.
 
ninthДата: Пятница, 13.07.2018, 10:55 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1563
Награды: 5
Репутация: 46
Статус: Offline
Я об этом и говорю - при таком подходе тебе придётся держать каждую "частицу", точнее биллборд в отдельном узле для того чтобы иметь к нему доступ, со всеми вытекающими из этого проблемами и объём текстур (которые при желании можно в один атлас загнать) будет меньшей из этих проблем, в общем на мой взгляд это будет неработоспособно. Обычно такое делается через шейдеры, посмотри на различные реализации травы.
 
hawkfly2016Дата: Пятница, 13.07.2018, 11:17 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 26
Награды: 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
Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Репутация: 0
Статус: Offline
2. Чего-то торможу... Я могу вывести на экран несколько сот биллбордов на каждом из которых будет текстура и это должно тормозить? Или тормозят биллборды как таковые?
1.А текстуру рендерить каждый кадр, чтобы дерево на текстуре под нужным углом было (под которым камера повернута)...
А партиклы с биллбордом примеры где есть? И как сделать, чтобы они генерились на поверхности и лучше по маске?


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


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

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


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

Код
<Billboard> { point }

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


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

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

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


ООП  -  

Сообщение отредактировал serg-kkz - Воскресенье, 15.07.2018, 17:51
 
Форум Panda3D - по русски » Panda3D » Общие вопросы » particles
  • Страница 1 из 1
  • 1
Поиск: