插件学习-Shag:Hair(头发插件)
作者:网友整理For KWGT插件app2020.1Jul.13.10 7.96M / 简体中文
点击下载三星打印服务插件3.5.180907 29.39M / 简体中文
点击下载日期倒计时插件v2.0.8 7.80M / 简体中文
点击下载Shag:Hair是在Max中为数不多的优秀的头发插件之一
Shag:Hair的Model Hair修改器
当你不满意Shag:Hair提供的默认的直头发时,你可以使用Model Hair 修改器将你自己画的曲线(Spline)或是NURBS曲线作为你的头发模型曲线。如果你打算使用Shag:Hair模块时,你自己至少需要画一条曲线,然后加上Model Hair 修改器,再去渲染。
Model Hair修改器主要用于指定头发是如何从发射体表面生长出来的。通过Model Hair修改器创建的头发被作为“点指定发束”看待。Model Hair修改器主要功能是指定一根曲线(也就是一束头发)自身的固有坐标系,称为model hair coordinate system(HCSys),这个坐标系实质上是指定了特定曲线将以哪一个点作为起始点和以什么方向被贴到发射体上。通过将曲线的固有坐标系HCSys对齐到发射体上的每个顶点的坐标系Vcsys,点制定发束就被创建出来。对齐坐标系的工作是由Model Hair修改器自动完成的。
注意:如果你将一个包含许多不相联的曲线的对象(例如将多条曲线通过Attach生成的单个对象)加上Model Hair修改器时,其中包含的每条曲线将被作为分开的一束头发对待。这样做的好处是便于管理,但同时你也将不能单独调节其中每条曲线对发型的影响。
此修改器位于标准修改器下拉菜单中,它可以用于任何的Spline对象及NURBS曲线。如图:
加上修改器后,你可以在物体修改器堆栈的顶层见到它的参数面板:
以下是对面板上命令与参数的详细解释:
(Mesh Vertex, Normal).此选项被选择时,你所创建的曲线将以一种交互的方式指定发射体表面的头发如何生长,也就是说,你所放置的曲线所处的位置及方向将直接影响发束的生长。如果打算使用此选项,首先创建发射物或发射表面,然后再绘制发束曲线并加上Model Hair修改器,选择(Mesh Vertex, Normal),然后在Environment对话框中加上Shag:Hair atmospheric,此后,当你移动发束曲线时,你会看到所有的“点指定发束”位置将一起更新。
此选项中有两种计算发束的方法:Nearest Vertex和Selected Vertex。选择Nearest Vertex时,如果你移动发束曲线,发束曲线基点相对于最近的发射物顶点的相对位置及方向将决定发束的坐标系统。也就是说,当你移动发束曲线时,你相当于在移动“点指定发束”。而选择Selected Vertex时,以上的过程将基于你所选择的特定顶点。
为了有一个形象的认识,首先在Top视图中建立一个圆柱,Height Segment设为3,删去两个顶面,再画一条曲线,加上Model Hair修改器,选择(Mesh Vertex, Normal), 然后在Environment对话框中加上Shag:Hair atmospheric,移动曲线,有不同效果:
[page]
从这些图片中可以看出:(Mesh Vertex, Normal)使发束曲线自身所固有的坐标系完全被忽视,ShagHair简单的将发束曲线平移至最近的顶点,并将此顶点的坐标系赋予它,然后以此为模板复制发束曲线至所有的顶点。
理解了这一点后,(Curve Base, Tangent).的功能就很好理解了。如果选择了这个选项,Shag:Hair将在发束曲线的第一个点建立HCSys坐标系,这个坐标系的Z轴(有时称为Oz轴)是和曲线的起始点曲线相切的。此后发束曲线的第一个点(也就是建立了HCSys坐标系的原点)就作为附着点被粘贴到发射物体上。通过这个过程,可以保证发束曲线以垂直方向粘到发射物上。此时你再移动曲线对于头发是完全没有影响的。
头发曲线如图
将上面例子中的选项改为(Curve Base, Tangent),效果如下:
在这里可以清楚地看到,ShagHair 对于原曲线的坐标系完全进行了重排。
在此条件下如果想改变头发的方向只有改变X轴的指向,或者使用我们等会儿要提到的Absolute Direction选项。
Vector Base, Vector.这个选项将会把头发曲线的指向对齐到一个Shag辅助物体(vector helper)上,此选项一般是灰的,如果想使用此选项,则应该选定一个已有的Vector helper,或是创建一个。如果按下New按钮,则会在当前曲线的基部与Oz同向生成一个新的Vector helper。
提示:如果你打算使用此选项时:将曲线连接到Vector Helper上会是一个好主意,因为它们两者之间的相对位置相当重要。
[page]
Object’s Oz. :正如先前提到的,要改变你的发束的方向的办法不多,这个选项是你唯一的选择。按下这个按钮将会出现一个选择对话框,在这个对话框中选择一个Vector辅助物体将会使发束曲线的X轴指向那个辅助物体。这个选项只有在你选择了Hair-〉Vertex transform中的Xform时才起作用。
Hair -> Vertex Transform提供了两个选项:Xform以及Rotation。如果你选择了Xform,软件将会使用矩阵变换将发束曲线的X轴变换到发射表面的顶点坐标系的X轴,以此类推。如果你选择了Rotation,则软件会将发束曲线的Z轴旋转到发射表面的顶点坐标系的Z轴,再此情况下,只有Z轴被对齐。
注意:由于Rotation变换中使用了发束曲线的方向,因此将曲线放置在发射物附近并将其连接于发射物之上是重要的。
Gizmo Size.这个数值框以当前的Max单位定义了HCSys坐标轴的长度。这个选项并不太重要。
Options, Influence, Align涉及的命令如下:
Use Offset.这个选框使得发束能够对与其坐标中心有一定的位移。也就是说,你可以移动发束使之脱离发射物表面。在(Curve Base, Tangent)被选择时,此选项无作用。
Absolute Dir.此选项使得场景中的头发均向原始发束曲线方向旋转,1.0是完全对齐,0.0是不对齐,此选项对于时头发均朝向一个方向伸长是有用的。
Attraction.此选项是相当重要的一个曲线控制选项,它定义了发束曲线将如何吸引点约束发束,使用此选项时,发束曲线应该被放置于发射物表面附近,在它将影响的发束中间。
Attraction通过影响点约束发束上的点起作用,因此如果你想获得精确的结果的话,你需要使用更多的节点。当按下Attraction按钮时,将会出现以下的对话框。
其上的命令解释如下:
Reset. 重新设置
Copy. Paste. 这两个不用我说了吧
X. Y. 这两个框显示当前选择节点的坐标值。
Noise. 设置曲线上的躁波值使头发更自然
Size. 定义躁波值大小。
Density. 定义躁波密度。
Phase. 定义躁波相位,和MAX 2.0中的Noise Map 的phase 起的作用相似。
在曲线上点击可以加点,在拖动时按下Shift键使之仅在水平方向移动,按下Ctrl键使之仅在垂直方向移动。右键菜单很简单,不说了。
坐标轴上的数值意义如下:横轴0 = 发束曲线根部, 1 = 发束曲线发梢;垂直向的 0 到1则定义了吸引的大小。Attraction在做一束头发,或是辫子,或是一丛头发时,特别有用。
Influence. 此选项在使用多条发束曲线定义头发形状时有用。 它定义了多条曲线将如何混合决定发型。使用它,甚至可以制作发型改变的动画。
在它下面有两个选项:Auto和Vector.
选择Auto时,头发受影响的程度决定于它相对于作为模板的曲线的距离。
选择Vecor时,头发受影响的程度可以由Vector Helper定义,其下的New以及Select已经讲过了,不再复述
此时,只有Vector Helper的Influence 设置是重要的,其方向无关紧要。此外
Vector Helper中的face level influence设置是为了更精细的调节。
注意:负值将被作为0对待。
技巧提示:使用Slice修改器可以将一块平面划出边界。在平面的两个部分分别设置不同的ID号就可以做出从一块平面上长出完全相反头发的效果。当然,把平面复制后使之为NOT renderable也可以实现这个效果。
如果你选择了Local选项,在发束曲线的基部会出现两个同心球体,它们的直径分别由Near Range和Far Range定义。在Near Range内的头发完全受当前选择的发型曲线的控制,在Far Range外则完全不受控制。之间的自然会被作为中间值。使用这个选项,你可以相当精细的控制发型。
Vector to Hair. 将一个Vector Helper对齐到当前发束曲线的基部,同时对齐其方向。
Hair to Hair Coordsys.把当前的发束曲线的基部对齐到 hair coordinate system的坐标基部,并对齐Z轴。
Pivot to Hair Coordsys.将当前发束曲线的Pivot对齐到hair coordinate system的坐标基部,完全对齐。
[page]
Hair Lights:
在早期的1.0版的ShagHair中,要使头发被正确渲染,必须使用ShagHair专用的一类灯光,而在1.01版本中,Hair Lights被整合到了Max中,下面介绍的就是在Max6+Shag:Hair V1.01的情况:
首先,建立一盏你所需要的灯光,它可以是任何的标准灯光,然后在其参数面板中点击Shadow下拉条,选择Hair Shadows即可。如图:
在这里有一个问题:如果我们的场景中需要这盏灯不仅使头发被投影,而且需要它对其他物体投影,该如何操作呢?其实在上图下拉条的底部,还有一个Composite Shadow,它使这种需要得到满足。Composite Shadow是一个插件,它可以把不同的阴影生成器复合到同一个灯光中。在MAX中最为基本的阴影生成器有两种:shadow maps 和ray-traced shadows,任何一个阴影生成器要么可以通过shadow maps面板操作,要么可以通过ray-traced shadows操作。而Composite插件可以使用两种操作,选择shadow maps面板,则它可以将使用Shadow maps的阴影生成器效果混合,选择ray-traced shadows,它可以使Mapped生成器像Ray-traced生成器一样工作,从而混合两种效果。下图是其参数面板:
Shadow Type:此选项有两个选择:Mapped和Ray-tarced,当选择Mapped时,你可以使用柔和边界阴影和体积光;选择Ray-tarced时,你可以使透明物体产生投影。如果你选择让Mapped阴影生成器在Ray-traced工作方式下工作,则它们不能支持体积光。(注意:由于在MAX中spot 和directional lights有bug,以上叙述仅对omni光有效。)
选择一种投影并点击Add To List就可以方便的将它添加到下面的Active列表中。Active列表列出了当前可用的阴影生成器,Remove Selected按钮可以清除Active列表中你所选择的部分。注意,当你改变Shadow Type时,Active列表将会被自动清空。
Shag:Hair Helper
下图所示的就是一个Shag:Hair Helper物体:
在创建面板中的“辅助物体”菜单栏中,有如下的下拉菜单:
[page]
选择此项,再在视窗中点击并拖动,就可以创建一个Helper,创建完成后,可以见到如下的参数面板:
在Influence 框中:
Near Range:定义了Vector Helper影响的最近范围,它的最大值可以设到100,000个单位。
Amount定义了最小范围内辅助物体的影响度,它的取值范围是-1.0到1.0。
Near Range:定义了Vector Helper影响的最远范围,它的最大值可以设到100,000个单位。
Amount定义了最远范围内辅助物体的影响度,它的取值范围是-1.0到1.0。
Random Factor 这个选项的设置可以对远近值加以随机要素。
Disable Influence:
Before Near Range:如果钩选此项,则在Near Range范围内的头发均不受影响。
After Far Range:如果钩选此项,则在Far Range范围外的头发均不受影响。
按下Face Level Influence按钮,会出现以下对话框:
其中:Whole Object:把整个物体作为影响范围。
Current Face:把当前选择的物体的面作为影响范围,当然,必须是Mesh物体或是Polygon物体,或者加上了Mesh Select修改器的物体。
Sub-Material:按材质ID号选择影响范围。
Mutiple:同将具有不同ID号的面一并选择。
Select Faces In Vector’s Influence按钮:顾名思义,当然是选择在Vector Helper影响范围内的面啦。
Show Influence:钩选此选项,则无论Vector Helper是否被选中,代表其影响范围的两个球体均被显示。
Icon Size: 如果你觉得代表Helper的图标大小不便观察,这里可以调节。
选择Rendering菜单,点击Environment菜单项,出现对话框后,选择Add按钮,有如下的对话框:
(由于插件安装的不一样,对话框内容可能不是完全相同,但没关系)
安装Shag:Hair后,至少你会有
Shag:Render
Shag:Fur
Shag:Hair
这三项,其中,Shag:Render是必须加到Effects中,没有它,头发是不会出现的,也无法被渲染。所以渲染前你所作的第一步是把它加入Effects中。
Shag:Fur和Shag:Hair分别用于短毛和长毛的创建:-),事实上,他们的绝大部分选项都是一致的。Shag:Fur有一些特别的选项。
当你把Shag:Hair加入Effects中后,Enviorment对话框下会出现下面将会提到的的四个下拉条。
1. Objects, Copy/Paste, Load/Save下拉条:
Emitters下拉条:这个下拉条中包括了已被选择起作用的所有发射物。你可以在此选择你要设置的发射物。
Pick:按下此按钮,则可以把场景中的物体作为发射物体选入Emitters下拉条中。
Remove:删除当前选择的发射物,把它从Emitters下拉条中删掉。
Select: 出现一个对话框,允许你选择已被选入Emitters下拉条中的特定的发射物。
单箭头按钮:按下此按钮,则会选定当前显示在下拉条中的物体。
双箭头按钮:按下此按钮,则会选定Emitters下拉条中包含的所有物体。
Face Level按钮:按下此按钮,则会出现与前面所提到的Pick Face Selection对话框,其中的每个选项的作用也是一致的。不再复述。
Allow assignment to ShagViews:选择这个选项,则允许你选择一个ShagView物体作为发射物,这个选项默认是关闭的。
ShagView : 所谓的ShagView物体,就是你在窗口中见到的由ShagHair所创建的那些“点约束发束”。
Sync Names:这个按钮会把连接到当前发射物上的ShagView物体名称同步化,如果你有许多个连接到发射物上的ShagView物体,则它会提供很大的方便。
单箭头按钮:按下此按钮,则会选定当前显示在场景中的ShagView物体。
双箭头按钮:按下此按钮,则会选定Emitters下拉条中包含的所有ShagView物体。
Model Hairs下拉条:这个下拉条中包括了已被选择起作用的所有发束样条曲线。你可以在此选择你要设置的发束样条曲线。
Pick:按下此按钮,则可以把场景中的加了Model Hair修改器的曲线作为发束样条曲线选入Model Hairs下拉条中。
Remove:删除当前选择的发束样条曲线,把它从Model Hairs下拉条中删掉。
Select: 出现一个对话框,允许你选择已被选入Model Hairs下拉条中的特定的发束样条曲线。
单箭头按钮:按下此按钮,则会选定当前显示在下拉条中的发束样条曲线。
双箭头按钮:按下此按钮,则会选定Emitters下拉条中包含的所有发束样条曲线。
Save按钮:此按钮允许你把所有的发束样条曲线保存到一个单独的Max场景文件中,此项功能用于在不同场景间交换头发。
Auto Influence Mixing:当你在建立发束样条曲线时在Model Hair中选择了Auto选项,这里就可以控制各束头发的混合程度。取值范围是0~1,0代表不混合,1代表全混合,0.5是默认值。
Modeling Cutters;发剪,是指你用来定义头发长到哪里为止的物体,它可以是任何可以被转换为三角面多边形的物体。
Enable: 只有钩选此项,你才能使用发剪。
Selecte:按下此按钮,会出现一个对话框,让你选定你用做发剪的物体。
Cut:只有按下此按钮时,Shag:Hair才真正开始计算如何剪头,如果头发很多,可能会花去几分钟的时间。此按钮可以被重复使用:如果你觉得头发太长,你可以把发剪移动到更靠近头皮的地方,再剪一次:你如果觉得头发被剪得太短了,可以按下Reset,把发剪移动到远离头皮的地方再试一次。
Reset:使所有头发回到没被剪的状态。
按比例放缩或是剪断按钮。如下图
如果你选了剪断按钮,则发剪会像真正的剪刀一样,把头发剪断;选了按比例缩小按钮,则发剪只会使超出其范围的头发按比例缩回范围内。
All Emitters. 选了这个选项,所有的场景中的头发都被剪
Current Only. 选了这个选项,则只有当前选择的发射物上的头发才被剪。
Restricting Cutters Enabled/Disabled. 所谓的Restricting Cutters,是指另一种类型的发剪,与前面提到的发剪不同,他只有在渲染时才起作用。需要用这种发剪的场合比如:你在人物头上戴了一顶帽子,却发现有的地方头发穿过了帽子。此时使用这一种发剪就可以使这种错误被纠正,同时,如果人物摘下帽子,他的头发还是原来你设计的形状,而不会是帽子的形状。注意:这种发剪只对单面物体有效,而且只在法线朝向的方向有效,双面物体得不到正确结果。
Selecte:按下此按钮,会出现一个对话框,让你选定你用做“限制性”发剪的物体。
Copy: 把当前的设置参数全部拷到粘贴板中。
Paste: 把当前粘贴板中的设置参数全部复制到当前参数面板上。
这两个功能联用可以把多个头发系统中的参数统一。
Load: 从*.HR文件中读取头发设定参数,或是从*.FUR文件中读取毛皮设定参数。
Save: 把头发设定参数保存至*.HR文件中,或是把毛皮设定参数保存至*.FUR文件中。
注意:无论是在Copy,Paste,或是在Load,Save中,Hair与Fur之间不可通用。
[page]
2.The Parameters下拉条:
面板上的所有参数的作用如下:
Length Multiplier:此项是头发长度总的控制项。
Maximum:头发长度最大值:此项代表了使用的实际头发占你所给出的发型样条曲线的长度比例。在Shag:Hair中,此项的取值是从0到1.0,即作为比例因子占总长度的比例。 Shag:Fur中此项则是以Max中的距离单位为绝对值的长度下面的两个图给出了此项为0.75和0.25的不同效果:
Random Factor:此项允许你在头发长度中加入随机的改变。0代表没有随机改变。下图演示了效果,(第一个茶壶有了鸡窝头:-)
Sub-Mat ID:别看这个选项小小的不起眼,实际上它是一个非常有趣的选项。在指定了一个材质ID号后,在这个ID号上的贴图就作为头发长度的控制图起作用。其灰度作为比例因子起作用。白的地方作为1,黑的地方作为0。也就是说,白的地方长出的头发是全长,黑的地方则没有头发。注意下图,第一个图没有使用Sub-Mat ID,第二个图则使用了Sub-Mat ID:在使用了的图上,黑的地方则没有头发长出来。
注意:要使用此项,你必须手动为物体加上一个UVW Mapping 修改器,物体的内建UVW贴图坐标在此项中不被支持。
Density (# Strands Per Face).这个控制项下的设置控制了头发的密度或者是发射物每个面的头发数。
Absolute.此项以绝对数定义了头发生长的密度。比如你的模型有5000个面,然后你把这个选项设为30,这样你的模型就会有150000根头发。如果你把此项设为分数,比如10.5,那么有一半的面会长出10根头发,另一半的面会长出11根头发。
Per Area. 这个选项以面积定义了头发的密度。再此选项下,Shag:Hair将计算你的模型的每一个三角面的面积,然后把这个面积乘上你在此项中设置的值,作为这一个面上生长的头发。这样的好处是,你会得到生长相当均匀的头发,和面的形状和大小无关。
Sub-Mat ID:这个选项和上面的那个选项基本上相似,就是用Diffuse中的灰度图来规定头发的密度。白的地方作为1,黑的地方作为0。
注意:每一个面都是把其中心的灰度作为其密度值。如果你有一个很大的面,这个面上的头发密度都是相同的。也就是说,如果面上的贴图有灰度变化,但是头发密度还是其中心点决定的,在面上头发密度不会变化。
Thickness.在此选项栏下的参数定义了每束头发在渲染时的厚度。介绍如下:
Maximum. 此选项以Max中使用的单位定义了头发的直径。右击右边的按钮则会弹出如下的对话框:
横坐标代表了头发的长度,纵坐标代表了头发的直径。此曲线控制了头发厚度随着长度的变化。关于上面命令的细节,请参照前面讲过的Model Hair修改器中曲线控制对话框的具体操作。以下的图片展示了设为0.5,0.2,0.02时各自的效果。
Sub-Mat ID:这个选项和上面的那个选项基本上相似,就是用Diffuse中的灰度图来规定头发的厚度。白的地方作为1,黑的地方作为0。
注意:要使用此项,你必须手动为物体加上一个UVW Mapping 修改器,物体的内建UVW贴图坐标在此项中不被支持。
Random Factor:此项允许你在头发厚度中加入随机的改变。0代表没有随机改变。
Link to Length Random钩选此项,则头发直径的改变会和长度上的随机因子偶连起来。这样两者的效果就可以统一,而不至于很短的头发很粗,而长头发又很细(如果你要的就是这种效果,当然不用选这项)
Cross Section.在这一项下面定义了头发的横截面形状。Round是一般的选择。Flat是用来做草的。
Curliness. 这一项下面定义了有关于卷发的参数。注意:这一个选项中使用了发型曲线上的bezier点,因此如果你想获得正确的结果的话,在设置这一项之前你应该先视你要求的精度增加发型曲线上的bezier点。
Enabled. 这一项不用我说了,不Enable你就不能用这项。
Radius:定义了头发卷曲的直径。需要注意的是右边的按钮。按下它出现如下的对话框:
横坐标代表了头发的长度,纵坐标代表了沿着头发的发卷的直径。对话框详细的使用参见前面讲过的Model Hair修改器中曲线控制对话框的具体操作。下图演示了不同的Radius值的影响:
Turns. 这个选项定义了在头发的全长上,头发会转多少圈。没有使用下面的曲率控制对话框时,此选项起的作用和Helix中的参数很相似。取值范围是0到10000。旁边的按钮会出现下面的对话框。
这一回,横坐标代表了头发的长度,纵坐标代表了沿着头发长度头发转圈的分布。这有一点不好懂,所以我详细解释一下:例如上图中的那条直线。首先,如果把turns设为10时,头发将会均匀的绕轴心10周。假如把直线右边的点移到0.5时,由于此时曲线的最大值是0.5,曲线将均匀绕轴心5周,这和不设置曲线,直接把turns设为5时的效果是一样的。如下图:
[page]
但是更有意思的设置是把中间再添一个点。这个点的不同就使曲线旋转不同,如下图:
当然,把中间点设为Smooth,可以得到下图的效果。
总之,头发上局部螺旋的密度就是这个曲线控制的真正作用(原ShagHair参考手册中还有个计算公式,我就不翻了)
SubMat ID. 和上面的差不多,就是用灰度图控制弯曲的选项。
Clumping.:这个选项是用来控制头发成缕的效果,这可以用来模拟头发很久没洗,或是湿了,或者是抹了发胶的效果。它是对渲染时才产生的发束才起作用。它以面为单位,将一面上的某些发束作为吸引发束,因此,对于面数特别多的模型(实际上是指一个面上的头发很少的模型),他的效果不会很明显。
Amount. 这个选项控制了头发向发束中心靠近的程度。如下图
SubMat ID. 和上面的差不多,就是用灰度图控制向中间聚拢的选项
Radius.用于控制每一个吸引器的影响半径。如下图:
[page]
SubMat ID. 使用灰度图控制特定的区域中头发聚拢半径的选项。
Attractor选项下:
Vertex Strands.如果选了这项,则把每个顶点上的头发(也就是你在视窗中所见的头发)作为吸引器。
Absolute. 如果选了这项,则旁边的数值框中指定了每个面上的吸引器的绝对数。
Per Area. 如果选了这项,则旁边的数值框中指定特定面积内的吸引器的数量,这可以使吸引器分布很均匀。注意:这和前面的density很相似,要使Clumping 的结果比较正确,建议使用5-20%范围内的值。
Fix Hair.这一栏下的参数是与头发随时间的变化有关的。这和动画有相当的关系:
Fix. 在此选项下,头发只在特定的帧被计算,在其他的帧,头发都是随着发射物体表面的运动而运动。这主要用在骨骼变形动画,比如Physique或者BonesPro,用Bend修改器时也可以用这个选项。
注意:如果你钩选此项,那么你就不可能对头发形状的参数进行动画了。比如,你不能移动Vectror Helper辅助物体,或是通过改变发型样条曲线来做动画。Vertex Strands Random里面的参数不可能用于动画,但是在Hair中的Length Percent还是可以用的,但在Fur中的涉及到长度,倾斜,弯曲的选项都不能用。
特别提醒一下,在Fix下,如果发射物有定点数改变的动画,比如一个球段数改变,再比如用了Bomb修改器的物体,在每帧顶点数改变时,头发都会消失。
Fix Hair Density.这个选项会使头发密度不随时间改变,注意,这项必须和Density中的Per Aver联用。否则:。。。。。。。
Fix Hair Reference Frame.这个就是用来指定Fix中的关键帧的。
Orientaion栏下允许你制定头发从发射物表面发射出来的方向,这些选项在模拟草的生长等方面比较常用。注意,此选项的参数都只影响最终渲染的头发。
Axis: 定义了头发将在那个轴向上被调整。默认是头发自身坐标系的Z轴。
Angle.这个选项定义了头发沿着以上的轴旋转的角度,取值范围是-180至180。
Random Factor允许你对旋转的方向加上一些随机因子。
Random栏下允许你对头发加上一些格外的随机因子。
Middel Strands:对渲染时可见头发的生长方向加上随机因子。它的效果如下:
Vertex Strand:对从发射物表面的定点生长的头发加上随机因子。
Seed:对当前所有头发系统中的随机效果都有影响。通过对它设置不同的值,可以对发型有不同的影响。
The Shading, Geometry, Quality 展开栏
此展开栏下的选项控制头发的材质和着色,以及头发的几何参数设置和总体的渲染质量。
Color栏:此栏下控制单独的发束的材质以及着色,所有的选项都简单解释如下:
Tip:旁边的颜色框指定了头发末梢的颜色。此颜色会在整个头发的长度上逐渐和头发基部指定颜色互相混合。
Base:旁边的颜色框指定了头发基部的颜色。此颜色会在整个头发的长度上逐渐和头发末梢指定颜色互相混合。
注意:你可以通过对Shag:View物体指定Hair材质来指定头发的材质。在1.01以后的版本中,头发材质不再是单独的材质,而是在Material Editor中Shader卷展栏下的一个Shader。指定头发材质固然可以达到很好的效果,但是如果你有特殊的需要,比如你希望头发在穿过发射物表面是改变颜色,那么这两个选项就会有用。
SubMat.还是前面的选项一样,如果你在发射物上赋予多重材质,那么头发的颜色就会从发射物的材质中得到继承。
注意:如果你打算让那些只有在渲染时才可见的头发也受此项的影响,那么你必须钩选下面将要提到的Shade Middle.否则就只有那些从发射物顶点发出的头发会受影响。此外,发射物必须有单独的UVW Mapping修改器,默认的UVW坐标不被支持。
Bias.此选项指定头发受基部颜色影响的程度,取值范围是-1.0到1.0。如果是-1.0,则头发完全受基部颜色控制。下面的三个图演示了它不同取值的效果。在图中,基部是黑色,顶端是黄色。
[page]
Random Factor.此选项允许你在头发的颜色方面加入一些随机的效果.
Fixed Mtl ID.此项允许你对头发指定特定的Material ID.
Get Emitter’s Material Id’s.如果你选了这项,那么头发就会继承发射物表面的Sub MatID,即从哪个面发出,就继承哪个面的SubMatID,不选的话,头发默认的Sub Mat ID是0。
Shading.此栏下定义了在头发系统中的头发有那些被着色。
Shade Bezier Segments. 如果选了这项,对于头发曲线中的每个Bezier段,程序都会进行单独的着色计算。不选的话,头发的着色只是在曲线的转折点被计算。
Shade Middle Strands. 在默认的情况下,Shag:Hair只是对每个顶点上的头发做着色计算,然后按一个半径给与周围的头发。如果选了这项,对于在视图中不可见的头发,程序也一样会进行着色计算。
Width Samples.宽度取样选项。如果你钩选了Shade Middle Strands,在这个选项下,你就可以控制头发在宽度上的取样值。这只是在你打算渲染比较厚的头发时才有用。在此选项下,你可以使比较粗的发束看起来真的是圆的。推荐使用的值是你渲染后单独发束的可见宽度,举例来说,如果发束在屏幕上的可见宽度是5个像素,推荐使用的值就是4,5或者是6。把这个值设得很小将导致头发上锯齿的出现,设得太高会增加渲染时间,还有可能出现锯齿。如果真的是设了太高的值引起了锯齿,可以使用Filtering选项部分的补偿。
Filtering.这个选项只有在屏幕中你有不同厚度的头发,而且你按最大宽度设了Width Sample,又出现了锯齿时有用(好像有点钻牛角尖的意思),如上所述,这个选项会部分补偿锯齿。钩了它会增加渲染时间,所以只有必要的时候你才应该用它。
UV Mapping.这个选项控制了当你直接对ShagHair View物体给予材质时,材质将如何贴到头发上。
UV Mapping for Hair.这个下拉条中允许你制定是使用UVW的贴图通道还是是用定点着色的贴图通道。
Apply Mapping Based On. 这个下拉条中允许你对特定的贴图通道指定不同的贴图方式。简要解释如下:
No Mapping.对特定的贴图通道不指定贴图坐标
Strand Cyl MappedBased. 这正是ShagHair中默认的贴图坐标,很像是圆柱样的贴图。U坐标方向就是包围头发的横向坐标,而V则是沿着长度的坐标。
Strand Color. 这是内建的Shag Color,默认是在Channel2上,可以通过Vertex Color Map访问。
Emit Map Channel. 选了此项,则系统会从发射物读取贴图坐标作为头发的贴图坐标。
Emit Vert Color Channel. 选了此项,则系统会从发射物读取定点着色坐标作为头发的贴图坐标。
Geometry.此选项下的控制项允许你将头发转化成为真正的几何物体。简要介绍如下:
Enable. 钩选此项后,所有的头发都会被转化成真正的几何物体。在转化之后,头发可以直接被3DS MAX的渲染引擎渲染,这会提供更好的抗锯齿效果和运动模糊效果。当然,这会使用大量的系统资源(想一想都可怕,建议哪位机器够劲的朋友试试,反正我是不想试;-()
Smooth. 钩选此项后,产生的头发将被自动平滑。
Thinner Than.在转化时比这一个选项直径小的头发将被区别对待。这是你真的想用时的折衷选项。它有两种不同的工作方式:
Ignore. 所有直径小于此项的头发将被忽略。
Shag Render. 所有直径小于指定值的头发将不被转化,而是仍然由Shag:Render渲染器进行粒子效果渲染。
Sides. 指定产生头发的侧面有多少面。这和圆柱中的Sides设置是相似的。
Estimate Size. 按下这个按钮,Shag:Hair会给出一个转化后有多少面和顶点的估计。(如果头发很多,这个值会吓你一跳)
Picture Quality.此栏下的设置控制了最终渲染的图像质量。
Quality/Memory. 此选项控制了在当前的设置中的头发渲染质量,而Shag:Hair则另有一个全局的Quality/Memory.设置。这个值设得越高,使用的内存越多,渲染的时间越长,当然最后的效果也越好。它的最大值是10.0
Viewport Density.此选项控制了有多大比例的顶点发束会在视图中显示。
Knots. 此选项控制了头发上有多少插值点,设的高,动力学模拟的效果就会比较真实。平时,设得尽量低些以节省内存。
Bezier Steps. 这个选项指定了头发插值点之间的步数,和Spline中定点间的Step相似。设的高可以是头发更圆滑,当然代价是有更高的内存使用和更多的渲染时间。
The Dynamics 卷展栏
此卷展栏用于控制如何模拟真实世界中的各种力对头发的影响。包括风力,重力,附着物移动引起的头发的摆动,弹跳等。如下图所示。
General栏:此栏包含了动力学总体控制,解释如下:
Display栏:控制Shag:Hair何时计算动力学效果。
Non-Dynamics:不计算。
On The Fly:在动画中渲染每一帧时计算动力学效果.如果你在渲染时用video-post加入帧动态模糊效果(Scene Motion Blur),那么不要用这项,否则max会崩溃.
Pre-caculated:在所有动画之前就先计算动力学效。这是推荐的方法,如果你是先算好了动力学的结果,那么改动场景其他部分,再次渲染时就可以节省时间。
Method: Weighted.这是现在在1.1版本中唯一的计算方法,另外两种先前的方法因为稳定性问题已被去掉了,这个算法在1.1中被改进了,因此完全可以胜任计算工作。
None (just calc velocity for IMBlur).这个选项是你只想渲染单帧,但又想加入动态模糊的选择。钩选此项,shag会计算速度通道信息。你必须用G-Buffer渲染效果或使用Video-Post来拷贝速度通道信息,此后必须使用Velo MBlur render effect来加入动态模糊效果。
Multi-Threading.钩选此项,你会在多处理器系统上获得大的性能提升。注意:只有你采用线性关键帧时此项才可用。
Load,Save不用多说,用来载入及保存动力学设置。Hair文件的后缀是*.HR,Fur文件后缀是*.FUR.
Pre-Calculation:控制动力学计算的相关项。
Calculate:按下此按钮,Shag:Hair就开始计算,并把动力学计算结果以关键帧的形式予与存储,它可能产生成千上万的关键帧。
Reduce:在计算完成后,用于精简关键帧。精简到什么程度由Reduce Threshold控制。
Calc+Reduce:计算同时也进行精简。
Toss删除之前的动力学设置。
All/Current:钩选前一个则对所有Hair物体进行计算。后者只对当前选定者计算。
Reduce Threshold控制精简的程度,此值越大,最后的帧数越少,就越节省空间。
Key Type.有两个选项可供选择,Linear线性关键帧,不是特别精确,但计算很快,可以节省大量空间,并且支持并行处理。Bezier是标准的max贝塞尔控制器提供更精确的控制,但是不支持并行计算。
Load,Save现在允许你把实现计算好的动力学效果导入外部文件,你可以用它创建同一个场景的不同动力学效果。改动动画时,把现有的动力学导出可以防止丢失。
Common Properties. 这里是设置对所有头发动力学效果都有影响的属性的地方
Start Frame. /End Frame用于定义开始及结束的关键帧
Mass.定义头发的质量及惯性。取值范围0.0001 到 1,000,000。
MAX Velocity. 用于防止头发在帧之间跳跃的现象。设为0就是禁止该选项。最大值为1000
在进入碰撞检测部分之前,首先在这里给出对1.01中碰撞检测的有用信息。默认状态下,shag只对头发的节点进行碰撞检测。这种算法可以保证较快的计算速度,并防止头发的跳动和颤动。但是这种算法也有它的缺点:首先它不够精确,另外有些情况下头发节点会被模型的尖锐边界“挂住”。此种情况发生时,即使是到下一个节点的头发中的节段(segment)穿过了模型,shag也不会察觉。要避免这种情况的发生,试着调低摩擦系数,并且消除待检测模型的“尖锐边”。推荐使用的用于碰撞检测的模型包括:球体,胶囊体,导角立方体,导角圆柱。使用MeshSmooth也可以在一定程度上减少尖锐边。如果节点仍然发生“黏附现象”,打开节段碰撞检测(segment collisions).由于这种算法会导致头发的颤动,你应该只在出问题的一两帧打开这种算法.
以下是使用碰撞检测的一些建议:
·请尽量减少用于碰撞检测模型的面数.过多的面会花费大量的计算时间.你可以使用Optimize修改器减少面数.
·计算前将模型塌陷为Editable Mesh或Editabel Poly
·尽量避免过于尖锐的边界.
·用于计算的模型应尽量避免拓扑错误.这包括两个以上的面共享一条边,同一面多次使用同一个点,无面积的面,法线方向翻转的面,网格上的破洞,等等.最好的创建用于检测的模型的方法是用球体,胶囊体,导角立方体,导角圆柱变形后使其包住你的模型.当然,你的模型如果没有上面提到的那些“有趣”的特性的话,你可以直接把它作为碰撞检测模型.(布林运算正是一种会产生以上有趣特性的好工具)
·尽量避免再进行碰撞检测的同时对待检测模型给一个变形动画,虽然在多数情况下不会出问题,但是有时会发生头发与检测物相交的情况
Sliding Friction.滑动摩擦力,定义了头发沿表面滑动时的摩擦系数。这个参数是由1.01之前版本中的General Friction继承而来的。
这个参数可以对每个单独的物体单独设置。设置方法是在物体属性对话框中加入一个用户自定义参数。加入的方法是在对话框的用户自定义标志中加入如下的一行:
ShagCollisionFriction=value
取值范围是0到1.0.
Static Friction. 静止摩擦力,定义了要多大的力才能使头发沿表面滑动。他与滑动摩擦系数的区别就不用我说了,初中的物理课本中有讲。这个参数一般比滑动摩擦系数稍大一点。
这个参数可以对每个单独的物体单独设置。设置方法是在物体属性对话框中加入一个用户自定义参数。加入的方法是在对话框的用户自定义标志中加入如下的一行:
ShagCollisionStaticFriction=value取值范围是0到1.0.
Segment Collisions. 请参照上面讲过的内容。
Get Out Of Colliders At Start Frame.当关闭Segment Collisions.时,在起始帧时此选项可以将所有的头发从碰撞检测物体中排除出来。注意:此选项使用的是Segment Collisions算法。另外,一根头发上至少要有一个节点已经在检测物体之外。如果钩选Segment Collisions.此选项不起作用。
Collision Distance. 允许你定义一个头发与待检测物体之间必须保持的距离。如果你在Random Factor中定义了随机值,那么可以模拟头发之间的摩擦。
注意:此项属性可以针对每个物体分别设置。打开一个物体的物体属性对话框,点击 User Defined Properties按下列格式加入一行:
ShagCollisionDistance=value
Value就是你打算用的值。
Random Factor. 允许你对collision distance加入随机因子。
注意:此项属性可以针对每个物体分别设置。打开一个物体的物体属性对话框,点击 User Defined Properties按下列格式加入一行:
ShagCollisionDistanceRandomFactor=value
Value就是你打算用的值。
加载全部内容