Добавлена Галерея

В правом верхнем углу блога уже довольно давно располагается кнопочка на галерею моих последних работ, но вот только сейчас я довел последнюю до презентабельного состояния. Без лишних разглагольствований – приглашаю надавить на упомянутую кнопочку или проследовать по этой ссылке – Галерея 🙂

Posted on August 10, 2009 at 22:05 by Ark · Permalink · Leave a comment
In: Misc

Initial значения партикловых атрибутов

Предположим, мы установили частицам initial state или попросту создали их с определенными значениями атрибутов кропотливо вымученным скриптом, а потом захотели изменить некоторые из этих значений… Допустим, спрайты дыма имеют разный начальный скейл и увеличиваются относительно него со временем, и мы хотим их сделать в два раза меньше… Или попросту изменить в несколько раз массу осколков разлетающегося объекта (которая, предположим, предварительно высчитана с учетом объема осколка), но не производя заново вычислений, сетапов и т.п.

Particles with inital mass for each shard

Particles with initial mass for each shard

Read the rest of this post »

Posted on August 9, 2009 at 22:02 by Ark · Permalink · Leave a comment
In: FX · Tagged with: , , , , , ,

Новые старые статьи

Я закрываю свой старый сайт (теперь http://www.sigillarium.com/ ведет прямо в этот блог) и, в связи с этим, переношу сюда задним числом несколько старых статей, которые еще содержат ценную информацию (а так же для сохранения работоспособности линков на них с других ресурсов). За неоценимую помощь в технической стороне дела хочу поблагодарить Rastler, чей блог по фотографии можно посетить тут – Rastler Blog

Posted on July 10, 2009 at 5:08 by Ark · Permalink · Leave a comment
In: Misc

Тайлинг процедурных текстур и Placement mapping

Небольшой трюк, вполне простой, но возможно не совсем очевидный. Для создания шероховатостей, детальной фактуры и прочей высокочастотности обычно используется какой-нить fractal или noise с большим числом repeat, что приводит к явному тайлингу:

Fractal with high repeat value reveals tiling

Fractal with high repeat value reveals tiling

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

Read the rest of this post »

Posted on July 5, 2009 at 3:15 by Ark · Permalink · 12 Comments
In: Render · Tagged with: , , , , , , , , ,

Проверка Нахождения частицы внутри объема и Влияния поля

Довольно часто возникает задача – определить находится ли частица внутри объекта и в зависимости от этого что-то с ней сделать (обычно убить 🙂 )

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

Решение заключается в следующем – так как различные volume fields влияют на частицу, когда та попадает в их объем, если представить объект набором таких полей и проверять действует ли хоть одно из них на частицу, можно узнать внутри ли она объекта. Разумеется, для сложных форм результат будет неточным, но можно создать стопку полей, достаточно аккуратно их передающую. В любом случае, это будет сильно быстрее 🙂

Read the rest of this post »

miLabel для контроля mib_amb_occlusion

В шейдере mib_amb_occlusion имеются два уродливых, но полезных атрибута: id_inclexcl и id_nonself. Вкупе с кастомным атрибутом miLabel они позволяют определять какие именно объекты могут затенять, а какие нет, а так же определять затеняет ли объект сам себя. Ключевой для понимания момент – речь идет только о способности затенять, а не о способности принимать затенение.

Disabling self-occlusion with miLabel attribute

Disabling self-occlusion with miLabel attribute

Read the rest of this post »

Posted on June 6, 2009 at 23:24 by Ark · Permalink · 2 Comments
In: Render · Tagged with: , , , , , , , ,

Равномерные трейлы частиц

Когда возникает задача получить партиклами какие-то гладкие линии, трейлы или струи, обычно надежды возлагаются на Blobby Surface или новый Output Mesh для nParticles. У обоих есть свои достоинства и недостатки, общий из которых – как добиться ровного трейла – при минимуме использованых частиц получить максимально гладкий результат.

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

Read the rest of this post »

Posted on May 24, 2009 at 21:37 by Ark · Permalink · 13 Comments
In: FX · Tagged with: , , , , , , , , ,

decomposeMatrix plugin

В стандартной поставке майи (как минимум начиная с 8.5), есть плагин с наверняка туманным для многих названием decomposeMatrix. Плагин добавляет довольно полезную ноду с одноименным названием, предназначенную для разложения стандартной 4×4 transform matrix на translation, rotation, scale и shear.

decomposeMatrix Interface

decomposeMatrix Interface

Read the rest of this post »

Posted on May 23, 2009 at 3:33 by Ark · Permalink · 4 Comments
In: Rigging · Tagged with: , , , , , , ,

Совокупление mip_matteshadow и IBL

Недавно немало помучался с тем как же заставить mip_matteshadow шейдер отображать сквозь себя текстуру IBL. В примерах повсеместно используется mip_mirrorball и mip_cameramap, но чего делать с обычным latlong изображением – ничего не нашел. Хотя видел предложение воспользоваться mib_lookup_spherical, но по-моему синхронизировать этот шейдер с вращениями IBL – большое западло. Сейчас опишу наденное мною простое и полезное решение.

IBL and ground plane to catch shadows

IBL and ground plane to catch shadows

Read the rest of this post »

Before/After Runtime Expressions

Довольно долгое время различия между runtimeBeforeDynamics и runtimeAfterDynamics партикловыми экспрешенами оставались для меня делом довольно смутным. Ну т.е. из названий в принципе все понятно – первые исполняются до динамики, а вторые после… Но что, черт возьми, на практике это означает и зачем оно надо, как можно полезно применить?! 🙂

Постараюсь ответить на этот вопрос и в качестве примера сделать сетап, при котором частица формально коллайдится с поверхностью – возвращает время, координаты и другую информацию о столкновении – но продолжает лететь как ни в чем не бывало дальше, будто не сталкивалась вовсе (к примеру, пуля проходит сквозь объект, оставляя отверстие в точке входа и в точке выхода).

Read the rest of this post »