вот что у меня на текущий момент получилось:
out 11
... он немного грязный просто проверь что получиться ...
... выложи отдельно маску, matcap1 и matcap2 (ну и модель если не сложно) ...я разобрался. выложить рабочий файл, я, к сожалению, не могу, но я сделал пример и прикладываю файл. в файле мартышка, 2 маткапа, маска. смотреть в ноды файл тут http://www.sendspace.com/file/fqnwwd
#include "stdosl.h"
shader simple(
vector Vi = 0,
output vector Vo = 0
){
float x = Vi[0];
float y = Vi[1];
x = (2 * x - 1) * 2;
y = 2 * y - 1;
if(x>1) x = 2 - x;
if(x<-1) x = -2 - x;
float theta = M_PI_2 + x * M_PI_2;
float phi = y * M_PI_2;
float px = cos(phi) * cos(theta);
float py = cos(phi) * sin(theta);
float pz = sin(phi);
theta = atan2(pz,px);
phi = atan2(sqrt(px*px+pz*pz),py);
float r = phi / M_PI_2;
float us = (1 + r * cos(theta)) / 2;
float vs = (1 + r * sin(theta)) / 2;
Vo = vector(us,vs,0);
}
// name: matcap_emul_for_cycles
// author: sungreen
// version: (0, 1, 2)
// blender: (2, 6, 9)
// description: matcap for cycles
// url: [url]http://blender-3d.ru/forum/index.php/topic,602.msg6155/topicseen.html#msg6155[/url]
#include "stdosl.h"
#include "node_color.h"
vector to_fish(vector Vi)
{
float x = Vi[0];
float y = Vi[1];
float z = Vi[2];
float u = -atan2(y, x) / (M_2PI) + 0.5;
float v = atan2(z, hypot(x,y)) / M_PI + 0.5;
x = (2 * u - 1) * 2;
y = 2 * v - 1;
if(x>1) x = 2 - x;
if(x<-1) x = -2 - x;
float theta = M_PI_2 + x * M_PI_2;
float phi = y * M_PI_2;
float px = cos(phi) * cos(theta);
float py = cos(phi) * sin(theta);
float pz = sin(phi);
theta = atan2(pz,px);
phi = atan2(sqrt(px*px+pz*pz),py);
float r = phi / M_PI_2;
float us = (1 + r * cos(theta)) / 2;
float vs = (1 + r * sin(theta)) / 2;
return vector(us,vs,0);
}
shader node_environment_texture(
vector Vi = N,
output vector Vo = 0.0)
{
vector p = Vi;
p = transform("world","camera",p);
p = rotate(p, M_PI_2, vector(0,0,0), vector(1,0,0));
p = rotate(p, M_PI_2, vector(0,0,0), vector(0,0,1));
p = normalize(p);
p = to_fish(p);
Vo = p;
}
... все три метода работают, из них два последних работаю в "Cycles" ...
... на мой взгляд, последний метод очень красивый, даже шедевральный ...