Site search

RSS wiki

Comments

Recent Articles

bump

うーん、普通にbumpしたいだけなのにトラブル。

少しAdvanced RendermanのDisplacementmapの辺り中心に読んでみるか。

斜め読みでは達成できなそう。

(ちょっとした参考)http://www.fundza.com/rman_shaders/displacement/sl_displacement.html

—————————————————————————————

おーけー、出来た出来た。

f:id:hajimeN:20070314172701j:image

ついでにdisplacementMap。

f:id:hajimeN:20070314172649j:image

bumpのコード

surface
bumpyShader(
float amp =1.0;
string texname="";
){
extern point P;
N = normalize(N);
float texVal=1.0;
if(texname != "")
texVal = float texture(texname, s, t);
P = P + N * (amp * texVal/length(ntransform("shader",N)));
N = calculatenormal(P);
N = faceforward(normalize(N),I);
Ci= diffuse(N);
Oi= 1;
}

displacementMapのコード

displacement
displacementMap(
float amp =1.0;
string texname="";
){
extern point P;
N = normalize(N);
float texVal=1.0;
if(texname != "")
texVal = float texture(texname, s, t);
P = P + N * (amp * texVal/length(ntransform("shader",N)));
N = calculatenormal(P);
N = faceforward(normalize(N),I);
}

で、どうやってdisplaceの方はsurfaceじゃなくてdisplacementで始まってるし

返り値はnormal。どう使うのかなぁと思ったけど、surfaceShaderとは別にMayamanCustomShaderを作り、それをSGのDisplacementMatに突っ込んだらとりあえず動きました。

objectにはあらたにMayamanAttributeを追加し、BoundingBox値を直してあります。

Write a comment