bump
うーん、普通にbumpしたいだけなのにトラブル。
少しAdvanced RendermanのDisplacementmapの辺り中心に読んでみるか。
斜め読みでは達成できなそう。
(ちょっとした参考)http://www.fundza.com/rman_shaders/displacement/sl_displacement.html
—————————————————————————————
おーけー、出来た出来た。
ついでにdisplacementMap。
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値を直してあります。
Posted: 3月 13th, 2007 under Mayaman AIR.

