Python Sketch and Toon Material

Introduction

Python code can be executed from a Sketch And Toon Material to control the Color, Thickness and the Opacity. In all of these three channels, it’s possible thick Python checkbox to enable it.

The Color channel expects a c4d.Vector to be returned while Thickness and Opacity channel expect a float.

See also

The important Threading Information.

Methods

main()

Override - Mandatory method, used to define the parameter value. It’s called for each sample of the c4d.plugins.ShaderData.

Variables

The following variables are defined in the main function of the Python Sketch and Toon (they are all read-only, modifying these values will have no effect):

  • op: BaseObject: The current object being sampled. It must be noted that it’s the BaseObject stored in the VolumeData, an optimized version of the BaseObject used by the render engine. Not all data are copied (e.g. UserData are lost).

  • sPosition: Float: Distance from LineStart to the current sampled point of the actual line sampled.

  • sNormalisedP: Float: Distance from LineStart to the current sampled point of the actual line sampled normalized between 0 and 1.

  • ToLine: Float: Distance from the original Line.

  • LineOff: Float: Percent of the point sampled depending on the total the total line.

  • thickness: Float: Line thickness at the sampling point.

  • StrokeLength: Float: Total length of the actual line sampled.

  • ScnPnt: Vector: Screen position currently sampled.

  • wPnt: Vector: World position currently sampled.

  • Time: Float: Current time rendered in seconds.

  • Frame: Int: Current frame rendered.

  • FPS: Int: Frame rate per second of the document rendered.

  • LineStart: Vector: Screen coordinates at the line starting point.

  • LineEnd: Vector: Screen coordinates at the line ending point.

  • JoinAngleA: Float: Angle of the current line and previous lines drawn.

  • JoinAngleB: Float: Angle of the current line and next lines drawn.

  • LineNormal: Vector: The normal of the line currently draw, defined by (A->B)%(0,0,1).

  • EdgeNormal: Vector: The normal of the line currently draw, defined from the polygon angles.

  • LinePosA: Float: Position of A from the actual line sampled.

  • LinePosB: Float: Position of B from the actual line sampled.

  • PntA: Int: Point id of the StartLine.

  • PntB: Int: Point id of the EndLine.

  • PolyA: Int: Polygon id of the StartLine.

  • PolyB: Int: Polygon id of the EndLine.

  • Color: Vector: Current color.

    Note

    Python Sketch and Toon layer is always evaluated after all others modifiers.
    Only available in the color channel of the Sketch and Toon material.
  • RayBits: Int: Ray information, these values are:

    RAYBIT_NONE None.
    RAYBIT_REFLECTION Ray chain contains a reflection ray.
    RAYBIT_TRANSPARENCY Ray chain contains a transparency ray (refractions are not contained).
    RAYBIT_REFRACTION Ray chain contains a refraction ray.
    RAYBIT_CUSTOM Ray chain contains a custom ray.
    RAYBIT_CURR_REFLECTION Current ray is a reflection ray.
    RAYBIT_CURR_TRANSPARENCY Current ray is a transparency ray.
    RAYBIT_CURR_REFRACTION Current ray is a refraction ray.
    RAYBIT_CURR_CUSTOM Current ray is a custom ray.
    RAYBIT_VOLUMETRICLIGHT Current ray is used to calculate a volumetric light.
    RAYBIT_ALLOWVLMIX Custom mixing of visible light sources allowed for the ray; bit must be deleted by shader if used.
    RAYBIT_GI Current ray is a Global Illumination ray.
    RAYBIT_BLURRY Current ray is a blurry ray.
    RAYBIT_SSS Current ray is a subsurface scattering ray.
    RAYBIT_AO Current ray is an Ambient Occlusion ray.
    RAYBIT_COMPOSITING Current ray is a compositing ray.
  • CosC: Float: The angle between ray vector and non-perturbed normal.

  • Normal: Vector: The surface phong normal.

  • BumpNormal: Vector: The surface phong and bump normal.

  • Dist: Float: Distance between SurfPnt and Ray.p, i.e. the ray length.

  • PolyHit: Int: The polygon index at the sampling point.

  • RayPos: Vector: The rays position.

  • RayDirn: Vector: The rays direction vector.

  • SurfPnt: Vector: The surface point.

  • RendLeft: Int: Left offset for the marquee render.

  • RendTop: Int: Top offset for the marquee render.

  • RendRight: Int: Right offset for the marquee render.

  • RendBottom: Int: Bottom offset for the marquee render.

  • ObjLeft: Int: Left object screen bounds.

  • ObjTop: Int: Top object screen bounds.

  • ObjRight: Int: Right object screen bounds.

  • ObjBottom: Int: Bottom object screen bounds.