mentalray において Contour を使用すると、きれいな輪郭線をレンダリングすることができます。
Ramp Shader などと組み合わせてトゥーンシェーダーとして利用すると良いでしょう。
ここでは Mentalray を使用するので、 プラグインの Mayatomr.so が読み込まれている必要があります。
contour1.mel を実行して、
// Warning: line 25: Unrecognized node type 'mentalrayFramebuffer'
などという警告が出る場合は
Window → Settings/Preferences → Plug-in Manager...
から Mayatomr.so をロードしてください。
オブジェクトをいくつか作成し、それらに Contour の設定をしたマテリアルをアサインするスクリプトです。
このスクリプトでは輪郭線のみをレンダリングしています。
global proc contour1()
{
string $sname[] = `sphere`;
string $coname[] = `cone`;
move 0 0 3;
string $cyname[] = `cylinder`;
move 3 0 0;
string $plname[] = `nurbsPlane -ax 0 1 0 -w 10`;
move 0 -2 0;
string $shname = `shadingNode -asShader lambert`;
string $setname = `sets -renderable true -noSurfaceShader true -empty`;
connectAttr -f ($shname + ".outColor") ($setname + ".surfaceShader");
select -r $sname[0] $coname[0] $cyname[0] $plname[0];
sets -e -forceElement $setname;
setAttr ($setname + ".miContourEnable") 1;
setAttr ($setname + ".miContourColor") -type double3 1 0 0 ;
setAttr ($setname + ".miContourRelativeWidth") 1;
setAttr ($setname + ".miContourWidth") 0.5;
if(! `objExists miDefaultFramebuffer`)
{
createNode mentalrayFramebuffer -n miDefaultFramebuffer;
}
setAttr "miDefaultFramebuffer.contourEnable" 1;
setAttr "miDefaultFramebuffer.contourClearImage" 1;
setAttr "miDefaultFramebuffer.contourClearColor" -type double3 0 0 0 ;
setAttr "miDefaultFramebuffer.contourSamples" 1;
setAttr "miDefaultFramebuffer.contourFilter" 0;
setAttr "miDefaultFramebuffer.contourFilterSupport" 1.0;
if(! `objExists miDefaultOptions`)
{
createNode mentalrayOptions -n miDefaultOptions;
}
setAttr "miDefaultOptions.contourInstance" 1;
setAttr "miDefaultOptions.contourInvNormal" 1;
}
global proc contour1()
string $sname[] = `sphere`;
string $coname[] = `cone`;
move 0 0 3;
string $cyname[] = `cylinder`;
move 3 0 0;
string $plname[] = `nurbsPlane -ax 0 1 0 -w 10`;
move 0 -2 0;
string $shname = `shadingNode -asShader lambert`;
string $setname = `sets -renderable true -noSurfaceShader true -empty`;
connectAttr -f ($shname + ".outColor") ($setname + ".surfaceShader");
select -r $sname[0] $coname[0] $cyname[0] $plname[0];
sets -e -forceElement $setname;
setAttr ($setname + ".miContourEnable") 1;
setAttr ($setname + ".miContourColor") -type double3 1 0 0 ;
setAttr ($setname + ".miContourRelativeWidth") 1;
setAttr ($setname + ".miContourWidth") 0.5;
if(! `objExists miDefaultFramebuffer`)
{
createNode mentalrayFramebuffer -n miDefaultFramebuffer;
}
setAttr "miDefaultFramebuffer.contourEnable" 1;
setAttr "miDefaultFramebuffer.contourClearImage" 1;
setAttr "miDefaultFramebuffer.contourClearColor" -type double3 0 0 0 ;
setAttr "miDefaultFramebuffer.contourSamples" 1;
setAttr "miDefaultFramebuffer.contourFilter" 0;
setAttr "miDefaultFramebuffer.contourFilterSupport" 1.0;
if(! `objExists miDefaultOptions`)
{
createNode mentalrayOptions -n miDefaultOptions;
}
setAttr "miDefaultOptions.contourInstance" 1;
setAttr "miDefaultOptions.contourInvNormal" 1;
miDefaultOptions のアトリビュートには以下の種類があります。
これらのアトリビュートを 1 つ以上 1 に設定することによって、
様々な方法で輪郭線を描くことができます。