POV-Ray with Subdivision (POV-Sub)

Authors: Xiaobin Wu, Jianhua Fan
Newest version 0.03 ( Update List )
Last updated : Nov 22th, 2004
          subdivision{substep 3}
          mesh2.pov subdivided



Introduction

This is an expansion of POV-Ray (Persistence of Vision Raytracer), a very popular (and free!) ray-tracing software. We enhanced the POV-Ray rendering kernel with subdivision surfaces (Loop's Scheme). With this expanded version, you can easily create high-quality ray-tracing images using smooth subdivision surfaces.

Learn more about Subdivision surfaces and Ray-tracing.

Download

Before you download, please read the copyright of POV-Ray and our copyright. You need to have a full version of POV-Ray (3.6) installed before you download the following file.
Then copy the file bin/pvenginesub.exe into the bin/ sub-folder where POV-Ray is installed. (like C:\Program Files\POV-Ray for Windows v3.6\bin\). Executing the pvenginesub.exe will run POV-Ray with Subdivision.

Syntax and Examples

The mesh objects defined by mesh or mesh2 can be subdivided by adding the following syntax at the beginning:

    mesh (or mesh2) {
      subdivision{
        substeps n // n=steps of subdivisions
        [smooth on/off] // smooth or flat surface shading (default on)
        [subcrease value] // set the crease value for the non-smooth edges
        [discard_boundary] // discard the boundary triangles
        [tolerance value] // set the tolerance for matching shared vertices (for mesh object), default=1e-6
      }
      vertex_list ...
      ...
    }

The following examples are rendered using the POV-Ray with Subdivision.


  • Example 1 - flat and smooth shading

    none
    Original (source)
    subdivision{substep 1
 smooth off}
    n=1, flat (source)
    subdivision{substep 2
 smooth off}
    n=2, flat (source)
    subdivision{substep 3
 smooth off}
    n=3, flat (source)
    subdivision{substep 1}
    n=1, smooth (source)
    subdivision{substep 2}
    n=2, smooth (source)
    subdivision{substep 3}
    n=3, smooth (source)

  • Example 2 - UV mapping

    (note: the original mesh is from POV-Ray distribution: scenes/objects/mesh2.pov.)
    none
    Original (source)
    subdivision{substep 1}
    1-Step (source)
    subdivision{substep 2}
    2-Steps (source)
    subdivision{substep 3}
    3-Steps (source)

  • Example 3 - Boundary options

    none
    Before subdivision
    subdivision{substep 2}
    After 2-step subdivisions
    subdivision{substep 2
 discard_boundary}
    same (with discard_boundary)

    For more information about subdivision on the surface boundary, refer to subdivision literature such as:
    Towards Hardware Implemention of Loop Subdivision. by S. Bischoff, L. Kobbelt and H-P. Seidel. in Proceedings of the 2000 SIGGRAPH/EUROGRAPHICS Workshop on Graphics Hardware


  • Example 4 - Mesh object

    (note: the original mesh is from POV-Ray distribution: scenes/objects/chesmsh.pov.)
    none
    Before subdivision
    subdivision{substep 1}
    After 1-step subdivision
    subdivision{substep 2}
    After 2-step subdivision

  • Example 5 - Shadow line removed by Subdivision

    none
(render time: 4.0s)
    Before subdivision (source)
    subdivision{substep 1}
(render time: 5.0s)
    After 1-step subdivision (source)
    click the above pictures to see the difference.

  • Example 6 - Creases

    Note that crease value only has effects on sharp edges in the initial mesh.
    none
    Before subdivision (source)
    subdivision{substep 5}
    No crease value (source)
    subdivision{substep 5
subcrease 0.5}
    crease = 0.5 (source)
    subdivision{substep 5
subcrease 1.0}
    crease = 1.0 (source)
    subdivision{substep 5
subcrease 1.5}
    crease = 1.5 (source)
    subdivision{substep 5
subcrease 2.0}
    crease = 2.0 (source)
    subdivision{substep 5
subcrease 3.0}
    crease = 3.0 (source)
    subdivision{substep 5
subcrease 4.0}
    crease = 4.0 (source)

  • Example 7 - a composite scene, chessboard

    none
    Before subdivision
    subdivision{substep 1}
    After 1-step subdivision


  • Related websites:

    POV-Ray website.

    PovAnim for Blender patch 4 now can output POV-Sub mesh format from Blender.


    Contact: