Render.ru

можно ли обьект сделать источником света

#1
можно ли обьект сделать источником света ?

т.е. сделать так чтобы обьект излучал
также как источник света

ну и желательно исключительно средствами rat

че-то доку порыл вроди ничего не нашел
 
#2
Rib
AreaLightSource
Ri
RiAreaLightSource(RtToken name, ...),
RiAreaLightSourceV(RtToken name,
RtInt n, RtToken tokens[], RtPointer parms[]);
Esli ne budet implementation v RM, to rabotaet kak LightSource.
 
#3


а можно это всё на примере типа
:: кубик в нем шарик который излучает :>>

а если не можно то тогда хотябы намекните куда всё это так запихнуть
чтоб ещё всё и засветило

p.s.

кхе кхе сложновато как-то всё ето понять

опыта пока ещё маловато
 
#5
Для произвольного объекта - indirectdiffuse и т. д.
Источники сферической, цилиндрической, дисковой, прямоугольной формы -
C:\Pixar\prman-11.3.1\lib\shaders
spherelight.sl
cylinderlight.sl
disklight.sl
rectanglelight.sl
 
#7
Kak proverish skorost' renderinga, ne polenis', zapost' :)
P.S.
v ruchnuu:

#rib
Format 700 700 1

Display "none" "it" "rgb"

ShadingInterpolation "smooth"
ShadingRate 1
PixelSamples 2 2
PixelFilter "mitchell" 3 3

Option "limits" "bucketsize" [32 32]
Option "limits" "gridsize" 1024


Projection "perspective" "fov" 30

WorldBegin
Attribute "visibility" "trace" 1
Attribute "visibility" "transmission" "shader"
Translate 0.0 2. 10.

Attribute "grouping" "string membership" "lightsource"
Color 0.0 20.0 0.0
Surface "constant"
Sphere 1 -1 1 360

Translate 0.0 -1. 0.
Attribute "grouping" "string membership" "geometry"

surface "wire" "D" 0.1 "r" 0.01
Patch "bilinear" "P" [-5 -1.5 -5 5 -1.5 -5 -5 -1.5 5 5 -1.5 5]
"Cs" [0 0 0 1 0 0 0 1 0 0 0 1 1 1 1]
Color 1 1 1
Surface "objlighted_rts" "samples" 64
Patch "bilinear" "P" [-5 -2 -5 5 -2 -5 -5 -2 5 5 -2 5]
WorldEnd

surface
objlighted_rts (uniform float samples=1)
{
Ci=0;
varying color hitc=0;
varying point hitp=0;
gather ("illuminance", P, faceforward(N,I), PI/2, samples,
"subset", "lightsource",
"distribution", "uniform",
"surface:Ci",hitc,"primitive:p", hitp)
{
Ci+=hitc*transmission(P,hitp,"subset","geometry");
}
Oi = Os;
Ci = Ci * Cs / samples * Os;
}

surface wire (uniform float D=1, r=0.25)
{
uniform float R=D/2, h=R-r;
varying float un=abs(mod(u,D)-R);
varying float vn=abs(mod(v,D)-R);
if (un>h || vn>h)
{
Oi=Os;
if (N.I<0) Ci=Cs;
else Ci=color(1)-trace(P,I);
}
else Oi=0;
}
 
#8
забавный примерчик

вроди похоже даже на то
чего и хотелось собственно получить :)

теперь осталось только малость разобраться
что там и как
это по ходу уже гораздо проще:)
 
#9
Nadeus' pomozhet,
eto ne sovsem indirectdiffuse (ne polnii obhod luchami vseh poverhnostei, a tol'ko svetyashihsya)
i eto ne ray-messaging, nado vstavit' blok osvesheniya tol'ko v osveshaemie poverhnosti.
no naskol'ko eto bistree ya poka ne vrulil.
glavnoe: svetyashayasya poverhnost' dolzhna davat' cvet i bez osvesheniya.
 
#10
Tol'ko chto proveril indirectlight (tot, chto iz korobochki s indirectdiffuse'om)...
pri 256 rays.. i "maxerror" 0.0.... tormozit strashno...
no moi ne sglazhennii:(
 
Сверху