Render.ru

хорошее дело курвой не назовут ..

sergey toktarov

Активный участник
Рейтинг
10
#1
проблема в следующем. после того как натравливаешь на кривульку MtorCurveAttribute в риб генерится что-то вроде
====
Curves "cubic" [9] "nonperiodic" "P" [0 0.0219941 0.02199410 0.0219941
0.0219941 0 0.0219941 0.0219941 0 0.967742 0.483871] "constantwidth" [0.1]
====
естественно рендерится кривая с постоянной толщиной 0.1.после исправления ручками "constantwidth" на "width" и прописывания параметров толщины все нормально . рендерится кривулька с переменной толщиной.
так вот. каким макаром генерить риб из майи с кривой переменной толщины ?

P.S. передача атрибута "width"через риббокс прманом благополучно игнорируется.
P.P.S. я допускаю, что разгадка где-то на поверхности ибо умного человека de_billом не назовут :))
 
#2
Если человеческого решения сей проблемы нет то
вкрайняк можно это зафэйкать это дело на уровне шейдера.
Поскольку u - ползет вдоль курвы а v - поперек то соответственно
путем бесхитростных манипуляций можно просчитать прозрачность
по v в зависимости от u. Кстати так будет даже лучше ибо кривизну можно
занойсить.
 

sergey toktarov

Активный участник
Рейтинг
10
#3
наверное я так бы и сделал, но проблема носит исключительно экспериментально-лабораторный характер :)
 
#6
Типа залезть в .mll-ку и расхакать ее нафик :) Вообще-то рулить в шейдере Oi - самый тазик, так что я сильно сомневаюсь, что им есть смысл имплементить "честную" переменную толщину...
 
#7
В прмановских доках приведен шейдер для того, чтобы плоские курвы изображать в виде циллиндров - ну типа для волос.. Вот он:

surface hair (float Ka = 1, Kd = .6, Ks = .35, roughness = .15;
color rootcolor = color (.109, .037, .007);
color tipcolor = color (.519, .325, .125);
color specularcolor = (color(1) + tipcolor) / 2;
)
{
vector T = normalize (dPdv); /* tangent along length of hair */
vector V = -normalize(I); /* V is the view vector */
color Cspec = 0, Cdiff = 0; /* collect specular & diffuse light */
float cosang;

/* Loop over lights, catch highlights as if this was a thin cylinder */
illuminance (P) {
cosang = cos (abs (acos (T.normalize(L)) - acos (-T.V)));
Cspec += Cl * v * pow (cosang, 1/roughness);
Cdiff += Cl * v;
/* We multipled by v to make it darker at the roots. This
* assumes v=0 at the root, v=1 at the tip.
*/
}

Oi = Os;
Ci = Oi * (mix(rootcolor, tipcolor, v) * (Ka*ambient() + Kd*Cdiff)
+ (Ks * Cspec * specularcolor));
}

Однако я так и не смог понять, какой смысл в этом: вроде как интенсивность обратно зависит от разницы между значениями углов: между направлением вдоль курвы и на источник света и направлением вдоль курвы и вектором "на камеру"... Это что получается, берем вертикальный "волос", смотрим строго горизонтально и источник тоже строго горизонтально, тогда яркость будет максимальной... несмотря на то, что источник может быть хоть сбоку от наблюдателя, хоть вообще "за волосом"?..

Переписал сам, так чтобы нормали кривить, картинки прилагаются:
http://www.r-m-c.ru/alex/PixHair.jpg - "их" шейдер
http://www.r-m-c.ru/alex/MyHair.jpg - мой

Вот теперь сижу и думаю, а может у них там мысль какая глубокая есть, а я так ее и не просек :-(
 

sergey toktarov

Активный участник
Рейтинг
10
#8
привет, земляк :)
незнаю что имел ввиду пиксар, но твой шейдерок правильней имхо . был бы раз увидеть его тут .
Общая идея по поводу кривых разных толщин такова. коль скоро мы не можем назначить аттрибут курве, мы можем кинуть риббокс на кубик какой-нить :) осталось только написать выгружалку рибов ( по типу пререндера фура) . дело за малым встало :)) Если получится , то Нитисара Монстрович обещал поэксперементировать в этом направлении.

Кстати. Майямен вроде как умеет вешать этот атрибут. Возможный выход ..генерить рибы майяменов и запихивать их в мтор через риббокс.

P.S. "Салават Юлаев" - чемпион :)))
 
#9
> привет, земляк :)

Здаров! :)

> незнаю что имел ввиду пиксар, но твой шейдерок правильней
> имхо . был бы раз увидеть его тут .

Шейдер ниже, а с пиксаровским я тоже разобрался. Рульный результат проявляется на общем плане и густых волосах примерно параллельных друг другу - и он мне сильно напоминает волосы у ТойСторевских девочек/мальчиков :) Хотя для полной рульности его надо доводить, конечно, ну типа все же учитывать направление источника и backlight...

surface hair (float Ka = 1, Kd = .6, Ks = .35, roughness = .15;
color rootcolor = color (.109, .037, .007);
color tipcolor = color (.519, .325, .125);
color specularcolor = (color(1) + tipcolor) / 2;
)
{
vector T = normalize (dPdv); /* tangent along length of hair */
normal Nf = faceforward( normalize(N), I);
normal Nn = rotate(vector(Nf), (u - 0.5) * PI, point(0), point(T));

Oi = Os;
Ci = Os * (mix(rootcolor, tipcolor, v) * (Ka*ambient() + Kd*diffuse(Nn)) +
specularcolor * Ks * specular(Nn, -normalize(I), roughness));
}

> Общая идея по поводу кривых разных толщин такова. коль скоро
> мы не можем назначить аттрибут курве, мы можем кинуть риббокс
> на кубик какой-нить :) осталось только написать выгружалку
> рибов ( по типу пререндера фура) . дело за малым встало :))

А нужно ли все это?..

> P.S. "Салават Юлаев" - чемпион :)))

Дык всяко! :) Приходи знакомиться кстати :))
 

sergey toktarov

Активный участник
Рейтинг
10
#10
> Дык всяко! :) Приходи знакомиться кстати :))
рад бы, да четвертый год уж живу в столице. хотя..не факт, что мы не знакомы :)
 
#12
А что Вам мешает пропарсить рибы Perl'ом (или чем Вам больше нравиться) после RIB - генерации и прописать нужные атрибуты?
 
#13
Идея такова ....

По видимому нужно два типа шейдеров для волос

1. Котрые дают хороший вариант на нормальной крупности ..Тоесть когда толшина волоса в кадре меньше чем 1-3 пикселя.. Это файковый римлайт и подобные идеи такогоже толка..

2. И втрой тип для супер крупных планов .... С явно выраженным изврашение нормали .... Как у alex'a .. Конечно можно предположить что это будут работать вседа ..Но чесно пионерское ... Такого не произойдет ..Блик нафиг уйдет в небытие ... Что видно в средней и левой чести картинки ...(даже если ставить очень большие самплы..) (http://www.r-m-c.ru/alex/MyHair.jpg) Еще лучше сделать тест псрото с преью волос и все станет на свои места .... :)


Вообшем тут как раза иглок (это тоже "волосы") вар. 2, а для нормального фура вар. 1 ...Обе реализации шейдеров от JinnDos (Женька Барулин), Моделинг + Лайтинг + настройки этих шейдеров - Тема

http://www.dream.com.ua/viagra/teko/012_Bird_PROCESS/
(ежики :) )
 
#14
Картинки - супер!!! Браво!!! Костик, Женя, а можно подробнее? Что за проект, что за шейдеры, чем курвы генерили? Ну если не секрет, конечно :)
 
#15
Да ни чекрет вообшем .... Ну точнее сказать частично не секрет ...

Вон сейчас женька слева сидит ..Типа не спавши хрен знает сколько, работу дляелет для сдачи первого этапа ... :)
Ладно это все не важно ... Проект короткометрыжный фильм на 15 минут ... Там есть совмешенка + чистая CG ...

Чистой CG около 5 -6 минут ... Ну вообшем там персонажи и они тусуются в парке в сумеречное время (есть много деревьев - будет доклад наверно на виагре)... Вообшем все .. Все это для кино ...

Кое о чем я вобшем расказывал на семинаре ..Ну на виагре ...
+ наверное раскажу и в ее инет версии ... Когда блин допишу... :)

Так генерили волосы + еголки ...Досточно сильно переписаным Mtor Utra Fur Generator'ом (Женька + вовчик - програмист ) Дописанным в сторону клампирования (тобиш свалявшиеся волосы - см. стуар литтл) + подекржка более быстрой (бинарный файл вместо текствого) и более правильной выгрузки волос (возможность вставки при помощи "функции density" по поверхности) + с подеркой специально обученного шейдера для волос ....

Скоро возможно можно будет показать: кота и крысу ....
 
#16
Костик как всегда скромно о себе умолчал. А сколько он мне мозги... мял по поводу фура - и так надо и этак...., что Костик не уже забыл? ;))

Идея взята, понятное дело, у Стюарта Л. (в личной беседе выведал;)) Только наши клампы с волосами лучше (стоооолько настроек, вот Тема уже несколько недель меня переспрашивает за что какой коэффициент отвечает... а я уж и не помню:)
 
#17
> Кое о чем я вобшем расказывал на семинаре ..Ну на виагре ...
> + наверное раскажу и в ее инет версии ... Когда блин
> допишу... :)

Скорее бы :)

> Дописанным в сторону клампирования (тобиш свалявшиеся волосы
> - см. стуар литтл) + подекржка более быстрой (бинарный файл
> вместо текствого) и более правильной выгрузки волос
> (возможность вставки при помощи "функции density" по
> поверхности) + с подеркой специально обученного шейдера для
> волос ....

То есть - это плагин писали под майку или мел?.. А скомканная бумага - суперская? Процедурный шейдер или все же текстуры?
 
#18
1. Есть плагин под мтор (он немного отличается от плагина под майку) - он для создания вызова в рибе + для иницилизанции выдачи волос и т.д - Женька

2. Есть плагин под Maya - для работы функций выгрузки волос с денсити и без нее ну у оригинального плагина от пиксара - Вовчик

3.Типа процедурный DSO (уже прман) - Женька


Так бумажка .... Ну там вообшем много всего ... И то и другое в перемежку ...

Стоп ты так говориш будто остальные матерьялы не видел ...
Ну там форд + азазель + "hdri" + ...
http://www.dream.com.ua/viagra/teko/

А вот тут "плагинов" и скриптов хоть одним местом жуй ...
http://www.dream.com.ua/viagra/teko/05_tree/ -деревья + трава
 
#19
Блин, и точно не видел ведь :( Елки-палки, заработался совсем, надо все бросать и на следующую виагру приезжать обязательно! А HDRI - это как - DSO или шейдер?
 
#20
Да нет ..Я там вобшем больше расказывал ..Что собсвенно про сьемку Ref. шарики + ит.д..

А про то как это использовать в реальности я приводил примеры просто рефлекшен мап ... Ну и простые шейдеров ... Чесное слово...

Ну мультик вообшем с часами... Модель для рекламы SVLux..

http://www.dream.com.ua/viagra/teko/21_hdri/9_ClockTest.avi
 
Сверху