Render.ru

Умный вопрос :)

#1
Необходимо реализовать displace несколько иным способом.
Нужно чтобы точки смещались не одинаково по формуле alpha*scale,
а относительно одной центральной точки, т.е. на ту же величину но в разные
стороны. Кажется такой алгоритм реализован в DigitalFusion.
Просто при применении IDisplace, если displacement map представляет
из себя пятно, то на выходе мы получаем в этом пятне просто сдвинутую вправо и вверх картинку.
Во как ! :) Делитесь мыслями...
 
#2
Если на "вскидку", то может пригодится DisplaceX, там же, рядом... Позволяет настраивать произвольные экспрешены для модификации картинки с доступом к пиксельной информации трансформирующего нода. А если завести local variable для точки привязки, то, вычисляя и используя расстояние до нужного пикселя от "центральной точки", можно получить тот результат, о котором ты говоришь...
 
#4
Checker1 = Checker(720, 486, 1, 32, xSize);
QuickShape1 = QuickShape(720, 486, 1, 0, 0, 0, 1, 1, xScale,
width/2, height/2, 0, 0.5, 0, 128, 180, 376, 1, 0, 1, 0,
1, 1, 388, 365, 1, 0, 1, 0, 1, 1, 557, 281, 1, 0, 1, 0, 1,
1, 515, 139, 1, 0, 1, 0, 1, 1, 247, 74, 1, 0, 1, 0, 1, 1,
28, 72, 1, 0, 1, 0, 1, 1, 28, 178, 1, 0, 1, 0, 1, 1);
Blur1 = Blur(QuickShape1, 134.5, xPixels, 0, "gauss", xFilter,
"rgba");
DisplaceX1 = DisplaceX(Checker1, Blur1, 0, {{ float nX = ((x-.5)/(width-1))-.5;((-1+(AMOUNTX*r))*tan(atan((-(nX*(width-1))))))+((width)/2) }},
{{ float nY = ((y-.5)/(height-1))-.5;((-1+(AMOUNTY*r))*tan(atan((-(nY*(height-1))))))+((height)/2) }},
0, xDelta, float AMOUNTX = 0.543, float AMOUNTY = 0.415);


// User Interface settings

SetKey(
"nodeView.Blur1.x", "244.375",
"nodeView.Blur1.y", "257.041",
"nodeView.Checker1.x", "115.375",
"nodeView.Checker1.y", "257.041",
"nodeView.DisplaceX1.x", "170.375",
"nodeView.DisplaceX1.y", "188.041",
"nodeView.QuickShape1.x", "224.375",
"nodeView.QuickShape1.y", "326.041"
);


Математику я взял у Dona Pierre из его макроса glAss. Единственное что добавил ради шутки - раздельное регулирование варпа по X и Y
 
#5
А ччерт, вместе c Interface settings запостил :))) Они, как ты понимаешь, лишние.
 
Сверху