美文网首页Arnold 教程Arnold 渲染器
Arnold for C4D 28 【Toon Shader 0

Arnold for C4D 28 【Toon Shader 0

作者: 卜噪大仙 | 来源:发表于2019-07-09 12:40 被阅读0次

    该说的废话上一篇已经说过了,这里就直接上干货。
    前部分讲解参数,后部分演示实例。

    Edge


    敲黑板!要显示Edge,务必启用contour_filter。属性栏也提示了,务必注意这种关键小细节。

    默认处于启用状态,关闭时当然就是不显示Edge。


    Edge

    • 【Edge】控制是否启用Edge;

    • 【Color】控制Edge颜色,允许连接贴图(比如使用渐变贴图制造断断续续的描边赶脚);

    • 【Tonemap】使Edge颜色根据对象的着色变化而变化,比如:暗部Edge颜色深,亮部颜色浅;通常配合Ramp节点使用:

      右图默认效果,左图tonemap连接ramp节点
    • 【Opacity】控制Edge透明度;

    • 【Width scale】控制Edge粗细;
      渲染设置中countor_filter的Width控制的是全局Edge粗细,这里的Width Scale控制使用该材质的Edge,这俩参数相乘,最终得出具体Edge粗细;
      允许连接贴图控制;
      增加数值会增加渲染时间,慎用;


      此参数还可以避免Edge过于混乱,尤其是结构复杂的对象,可以通过连接facing_ratio节点实现:
      左图为使用facing_ratio调节后效果
      Width Scale还可以基于摄像机镜头距离控制Edge粗细;

    P.S.做动画时,Width Scale数值小于1,可能会出现“闪烁”,启用Sampling render setting(位于Samping render setting属性中)可解决此问题。


    Edge detection

    • 【ID difference】默认启用,启用时,Edge检测使用临近像素ID差;
      右图启用,左图禁用;其他数值为默认值;启用时,手和球被认为是两个shape,因此拥有两个ID
    Curve, Point, Shape IDs

    ID difference 是根据curves(线),point(点),shape(面)来绘制描边的。每条线,每个面都有不同ID,每个点也会拥有不一样的ID。以下示例除用到的属性外,其他参数均为默认值。


    使用Utility着色

    下图示例中,大球只有一条Edge,大球上的小球有各自的Edge,这是因为小球使用粒子效果生成,每个粒子都可以视作一个Point,有不一样的ID,所以每个小球都有Edge,而中心的大球使用C4D原生模型球体,所有的原生基础模型(多边形)以及异形,只要是“整体的一个对象”,都只能算是一个shape(可以想象成一个模型外面包裹着的是一整个面),中间的点线面都属于这同一个shape,也就是说只有一个ID,因此大球只有最外面一条Edge:


    使用Utility着色
    • 【Shader difference】Edge检测使用临近着色器差异;例如,当多个着色器分配给单个多边形时,这非常有用:

      还有一点需要注意,务必确保【Angle threshold】的值足够小,否则看不出Shader difference启用/禁用差异。
    • 【Mask color】Edge检测使用临近像素颜色差;mask color可连接贴图,从而绘制任意线条;
      也就是,利用此参数可以在对象表面任意位置绘制线条;

    • 【UV threshold】启用后,Edge检测使用临近像素UV差;

    • 【Angle threshold】当小于180°时,Edge检测使用临近像素角度差;

      180°到10°效果变化
    • 【Edge detection】Edge检测模式选择,有三种模式:Shading Normal /Smooth Normal /Geometric Normal;


    Advanced edge control

    • 【Priority】更改Edge的排序优先级;

      说白了就是调节哪条Edge在前,哪条在后
    • 【Ignore throughput】默认情况下,轮廓颜色(contour color)受光线吞吐量影响,如果反射或折射对象需要特定颜色,就需要启用Ignore throughput并使用ray_switch着色器;

    • 【Use toon ID】可以指定名为Toon ID的String类型用户数据来控制Edge检测;不做特殊指定时,检测到的Edge使用对象自己的驱动名称toon-specific ID;
      利用指定ID,可以将对象进行分组,指定需要进行Edge检测的部分;可配合【Priority】设定Edge优先级;

    Silhouette


    Edge检测使用Object/Shader ID差异检测到的线称为Silhouette,可以理解成“轮廓化描边”;
    启用该选项后,将使用Silhouette的属性替代与Edge重合的部分属性;

    文字可能有点说不明白,但是效果显而易见👇




    下面将进行一个简单的实例演示:

    用到的场景如下图所示,对场景中模型统一添加Toon Shader,渲染设置Ray Depth:0,这里用不到全局光照效果,关闭Ray Depth提高渲染效率,默认渲染效果如下:

    已启用contour_filter,其他一切参数均为默认;光线使用Arnold Sky

    接下来进行一些调整:

    • 将Edge属性中Base WeightSpecular Weight的值减少为0,Emission Weight:1,效果如下:
    • 减少Edge Angle Threshold值到10左右(数值根据场景大小自行设定),以显示更多细节:
    顺便演示一下Edge Detection不同模式效果
    • 继续增加细节,这里将用到Mask color;
      创建一个Utility Shader,连接到Toon Shader > Main > Edge > Edge detection > Mask Color,Utility Shade mode:metalRoughtness:0.01,效果如下:

      线条还是太乱了,下面继续调整
    • 减少Edge Width的值,差不多0.5左右:

    嗯,效果还不错
    • 调整Utility的各项属性,会有很多不一样的效果:
    其他参数请自行尝试
    • 或者改变一下线条颜色什么的,多多尝试:



    接下来...........可以开始点赞、打赏什么的了
    嘻嘻


    以上,Over。

    Reference:
    1.Solidangle Support & Documentation


    禁止私自转载,转载需征得老夫同意。
    否则,必追究。


    相关文章

      网友评论

        本文标题:Arnold for C4D 28 【Toon Shader 0

        本文链接:https://www.haomeiwen.com/subject/abqaqctx.html