Объемы: дым, огонь и жидкости
Объем — это параллелепипед из вокселей, а не поверхность: шлейф дыма, пламя, взрыв, вода. Pixor читает файлы .vdb из Blender, EmberGen и Houdini и имеет несколько собственных объемов на случай, если у вас нет инструмента для симуляций.
У объема нет геометрии. Он рисуется проходом луча сквозь него для каждого пикселя на процессоре, и результат попадает в то же изображение, что и модель, — поэтому пламя оказывается перед рукой, персонаж стоит внутри дыма, а полосы, линии и очистка обращаются с ним точно так же, как со всем остальным.
Добавление
На шаге Сцена в меню + панели «Структура», в разделе Объем:
| Клубы | круглый клуб дыма |
| Пламя | горячее и узкое внизу, холодное и широкое вверху |
| Облако | широкий, плоский снизу, бугристый сверху |
| Туман | тонкий, низкий и ровный |
| Из файла .vdb… | симуляция из Blender, EmberGen или Houdini |
Объем — это узел «Объем» графа сцены, и его строка в Структуре — тот же узел: «Ряд» после него — это ряд объемов, каждый из которых размещен своей копией, а объем, ни к чему не подключенный, в сцену не попадает. Его параметры тоже на узле (pxr project scene game.pixor --set flame.voxels=48, по имени объема).
В командной строке: --volume flame:0.5,0.8,0.5:0,0.55,0, где числа — размер, а затем положение, в метрах. На том же месте работает путь к .vdb: --volume smoke.vdb:1.2.
Крепится к кости — объем следует за костью в каждом клипе (пламя факела в руке) и остается вертикальным, как огонь; его положение тогда отсчитывается от кости. В командной строке — @BONE в конце: --volume flame:0.25:0,0.05,0@hand.r.
Объем, который несет эмиттер эффекта, — часть этого эффекта: он рисуется на собственных строках эффекта, с первого кадра эффекта, где бы ни был эмиттер, — на своей кости или там, куда его двигают ключи клипа, — и ни на какой другой строке. Дым взрыва, огонь заклинания. Его положение тогда отсчитывается от эмиттера. В командной строке — @effect:N для N-го эффекта проекта: --effect explosion --volume puff:1.5@effect:1.
Как это нарисовано
Они находятся в разделе Как это нарисовано в Инспекторе объема.
- «Толщина» — сколько объема нужно пикселю, чтобы он вообще был нарисован. Выше — более плотная и жесткая форма; ниже — более призрачная.
- «Мягкий край» — ширина рваного края. Край растворяется дизерингом с упорядоченным узором, привязанным к самому объему, без смешивания, поэтому каждый пиксель остается в палитре, а узор не ползет, когда объем поворачивается.
- «Самозатенение» — насколько объем темнеет там, где свету приходится проходить сквозь него.
- Цвет — собственный цвет объема, и из него строится его рампа. Цвет жара — цвет горящей части; если задать его равным цвету, ничего не горит — то, что нужно дыму. Порог свечения задает, насколько горячей должна быть часть, чтобы принять цвет жара при любом освещении.
- «Воксели» — насколько мелко объем нарезается вдоль самой длинной стороны. Пикселю спрайта нужны один-два вокселя: больше дает только мерцание, потому что каждый кадр пиксель выигрывает другой воксель. Симуляция 256³ при загрузке уменьшается до этого значения, поэтому шлейф размером 32 px остается неподвижным.
- «Примеры» — сколько точек луча проверяется на воксель. На размерах спрайтов хватает двух; больше — плавнее и медленнее.
Объемы не получают отблеска: у облака его нет, а плотность, по которой они затеняются, достаточно неровная, чтобы искриться, если бы отблеск был разрешен.
Последовательности: приводим в движение
Один .vdb — это один неподвижный объем. Симуляция записывает по файлу на кадр — fire_0001.vdb, fire_0002.vdb и так далее, — и если указать Pixor на первый из них, он проиграет остальные.
В разделе Последовательность объема:
| Кадры | сколько файлов проигрывать, считая от открытого |
| Каждый | брать один файл из N: симуляция обычно записывается с большим числом кадров, чем нужно спрайту |
| Замкнуть цикл за | плавно перевести столько кадров от конца обратно в начало, чтобы спрайт проигрывался по кругу без скачка. Эти файлы становятся переходом и не проигрываются: пять файлов с переходом в один дают четыре кадра |
В командной строке последовательность идет после размера и места: --volume fire_0001.vdb:1.5::24,2,4 — 24 файлов, каждый второй, последние четыре плавно переходят обратно в первый.
Последовательность воспроизводится вместе с любым движением, которое уже есть в листе: поставьте огонь рядом с циклом ходьбы — и кадры огня будут кадрами ходьбы. Если больше ничего не движется, последовательность и есть движение и получает собственное действие с именем volume.
Каждый кадр размещается одним и тем же преобразованием, взятым из рамки, которую заполняет вся последовательность, поэтому растущий шлейф не сжимает изображение обратно в каждом кадре. Это также значит, что Размер — это размер всей последовательности, а не ее первого кадра.
Последовательность никогда не находится в памяти целиком: каждый файл читается один раз, чтобы найти этот ограничивающий параллелепипед, а затем снова, когда лист или превью доходит до его кадра, причем последние три сохраняются. Длинная симуляция стоит времени на чтение, а не памяти.
Что читает Pixor
Файлы .vdb с сетками float или vector в обычном дереве, со значениями, хранящимися как есть, сжатыми zip или упакованными Blosc-LZ4 (с разбиением на поток по байтам или без, как пишет Blosc 1.14 и новее), все или только активные — то, что пишут Blender, EmberGen, Houdini и собственные инструменты OpenVDB. Пикселизуется сетка с именем density, smoke, fog или d, затем temperature, flame, heat или fire для горячей части, затем velocity для движения, которое использует проход против мерцания. Поверхность жидкости (level set) читается как толщина с резким краем, сплошная насквозь.
Все, что Pixor не может прочитать, называется по имени, а не выходит неправильным: другой компрессор, другой тип дерева, трансформация со скосом. pxr inspect fire.vdb выводит сетки файла, их размер и размер вокселя.
Чего пока нет
- Жидкости читаются и рисуются как объем, без пены и без отражения. Водная гладь с тем и другим — это узел мира Вода (Миры).
То, что описано на этой странице, есть в полной версии; бесплатное демо в браузере ограничено обликом по умолчанию и PNG-листом.
Попробовать в браузере Получить Pixor