一半君的总结纸

听话只听一半君

#07 如何在渲染时关闭一个场景中的所有 textures ?

proc enableMaterials( int $enable )
// Usage:
//   enableMaterials( 0 );  -- 关闭所有的 Materials.  渲出来所有东西都是灰色
//
//   enableMaterials( 1 );  -- 打开所有的 Materials (正常渲染)
{
   string $materials[] = `ls -materials`;

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

如果想手动完成上面的操作, 你可以打开 Hypershade 然后双击任何一个 Material ,让他显示在 Attribute Editor 里.

在 ‘Color‘ 属性的标签(label)上右击鼠标. 弹出菜单里有一个是 “Ignore When Rendering.” 上面的 script 其实就只是选了这个菜单而已 — 这个菜单以前是 ‘-connectionState’ 属性 — 可以关或者开.

如果想完全禁止所有 texture, 你可以对 ‘.transparency,’ ‘.ambientColor,’ 等属性做同样操作.

注意: 如果你想在Maya里右击鼠标改”Ignore When Rendering” 这个选项,他仅在已经贴了图的属性( mapped attributes)上才有, 改完之后右侧的箭头会变红. 如果一个属性没有贴图,而你又把他的 -connectionState 设为disabled了,那至少在UI上是看不出来的. ‘connectionState’ 只影响已经贴了图的属性.

如果你把 ‘−connectionState‘ 设成false之后,如果你再对这个属性贴图,那他的 ‘−connectionState‘ 依然是disabled状态, 除非你再次把他设成enabled状态.

本方法由 A|W 的Scott Hamilton提供.

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 博主赞过: