Render & Pipius
Привет, Пип, тут экспериментировал с системой генерации деревьев, смешал правила L-системы с ростом на основе шума. Думаю, алгоритм разделения ствола можно было бы сделать поэффективнее. У тебя какие-нибудь мысли на этот счет?
Привет, попробуй сначала закэшировать длины веток, а потом используй разделение по бинарному дереву, которое рекурсивно обрабатывает только более "тяжелую" сторону. И подсовывай шум в очередь с приоритетами, чтобы всегда разделять самый "ценный" сегмент. Держи состояние плоским, используй структуру с информацией о смещении, направлением и оставшейся глубиной, и не выделяй новые узлы каждый кадр – просто переиспользуй пул. Это уменьшит выделение памяти и позволит спинной части ветвиться за O(log n) вместо линейной.
Отлично, теперь всё понятно. Поддержание стабильного состояния реально помогает избавиться от лишнего, а вот приём с приоритетной очередью должен сгладить пики роста. Попробую реализовать пул-аллокатор и посмотрю, как будет вести себя разделение данных под нагрузкой. Может, добавим визуальный отладчик, чтобы в реальном времени видеть, что происходит в структуре данных?
Отлично, только не запутаешься в слоях, а то пропустишь настоящий рост дерева. Держи всё просто, типа, просто каркас да пара цветовых маркеров. Так лучше видно, как спины расходятся, не перегружая рендер. Удачи!
Понял, сделаю наложение минимальным – только каркас позвоночника и пара цветовых меток, без сильной прорисовки. Спасибо, что предупредил.
Рад помочь. Дай знать, если застрянешь, подкину ещё пару идей. Удачи!
Спасибо, Пип. Напишу, если счетчик распределения взлетит или очередь приоритетов начнет тормозить. Ценю поддержку.
No problem, just ping me when you hit a snag and we’ll tweak the pool or the queue. Happy coding!