一半君的总结纸

听话只听一半君

#26 如何在渲染多边形的时候不显示 material/texture 的影响,只显示lighting的效果?

在GDC 2000的Alias|wavefront展台演示 H2O 工具的时候,我演示了 H2O的 “Polygon Apply Color” UI界面,其中包含一个我称为 “Neutral Prelight” 的功能. 下面是他的原理:

通常当你 prelight 已经有materials 和 textures的geometry 的时候, Prelight 操作使用的是vertex的 “emission” value — 这个值包括了 material/texture的颜色.

A|w 的 Scott Hamilton 给我们演示了如何得到 “neutral” prelight的效果.

Common Material Attributes(此图已挂)

打开任何一个Material的 Attribute Editor ,展开 Common Material Attributes section. 在 “Color” swatch的label上右击鼠标. 最后一个菜单是 ‘Ignore when Rendering’. 把这个选项勾上.

然后你会发现 material 的预览swatch 现在显示的是灰色( neutral gray) (或者是你在file node里设置的Default Color的颜色). 现在任何使用这个texture的面在渲染时将会只有灯光的影响,而不受texture的影响.

我们在 GDC 的演示展示了如何使用 MEL 来简化这个操作,其实就是对所有场景中的materials应用这个 Ignore when Rendering flag , 然后进行 Prelight, 最后在把这些Ignore when Rendering flags设回默认值.

Ignore when Rendering flag 可以通过 ‘shadingConnection’ MEL command来设置和清除; 比如.:

// 禁止 shading connection, 比如. check ON Ignore when Rendering
shadingConnection -e -connectionState false lambert1.color;

H2O的 ‘polygonApplyColor’ script 使用下面的procedure来设置/清除这个flag:

proc enableRendering( int $enable )
{
  string $materials[] = `ls -materials`;

  for ( $mat in $materials )
    shadingConnection -e -cs $enable ( $mat + ".color" );
}

我不能放出 polygonApplyColor script的下载, 但是下面这个UI的截图可以给你们些他是如何工作的提示:

polygonApplyColor(此图已挂)

Related Articles

Alias|wavefront’s Assistant Online: How to Prelight a Scene(连接已挂)

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: