top of page

 Real-time Charcoal NPR 

  Logan Zhou

A. Project Summary

    Until now not many people have tried charcoal style rendering, that's the main reason I want to conduct research about it. Sketch rendering can be realized by using cross hatching technique. Cross Hatching NPR is quite close to charcoal NPR, but there are still lots of differences between these two techniques.

     

 

        Charcoal Strokes 

     Crossing Hatching

    As we can see from the above images, the greatest difference between charcoal stroke and cross hatching is their continuity. In the charcoal strokes, the color is noisy and there exists very strong white and black contrast. However, in cross hatching, the color of each line is continuous and there does not exist any noisy color.

     The main goal of my project is to find a method that can automatically create the charcoal stroke textures with controllable parameters, and use these generated textures for texture mapping. 

B. Previous Work

    To the best of my knowledge, only Aditi Najumder and YuXiao Du tried charcoal NPR until now. Aditi mainly focus on brightness contrast of charcoal rendering, and he utilized contrast enhanced operator to process a existing noise texture and shading model. YuXiao implemented Barycentric blending function to blend several hand-drawn charcoal control images. The real-time hatching method quite relates to my project. Emil Praun and Hugues Hoppe implemented tonal art map method for real-time hatching rendering, and they can obtain various styles of hatching rendering.

     However, Aditi's work did not consider stroke effect and YuXiao only used hand drawing image as control images. Emil's work focus more on hatching style not charcoal style.

​     I borrowed several ideas from their works. I borrowed Barycentric blending method for texturing objects from Yuxiao, and I created charcoal textures with strokes by keep rotating and copying strokes together, which Emil Praun implemented to create tone art map.

C. Description of Work

    My main works can be summarized as following steps:

  • Choose a Source Image

    Find a proper source image, which is used to create charcoal stroke.

  • Create Charcoal Stroke 

 ​  Translate the source image and combine the translated image with original image to increase the number or the thickness of strokes;

  Implement Gaussian Random function to create the noisy effect of stroke, several parameters can be used to control the darkness of stroke and brightness contrast of stroke.

       

  • Create Single Charcoal Texture

      Strokes are further rotated, translated and blended together to create charcoal texture;

       The crossing section of multiple strokes is darkened to obtain more natural blending effect.

  • Create Multiple Charcoal Textures with Different Brightness

  Multiple parameters (stroke number, Gaussian random multiplier, stroke thickness, stroke translation and rotation interval) can be adjusted to obtain different textures with different brightness.

    A filter is added to finalize the texture since artists usually use their finger to blend and blur charcoal color before finishing their work.

  • Texture Mapping and Final Rendering

    Diffuse, shadow and silhouette edge ​are considered to build up Barycentric function to blending textures;

    Implement Cubemap for texture mapping.

D. Results of Work

        Source Image

        Charcoal Strokes

        

        Charcoal textures

        (control images)

        Final Rendering

E. Analysis of Work

     

  • New Results

    In this project, I implement Gaussian Random function to create charcoal noisy stroke. Also, when different strokes are crossed with each other, instead of finding the minimum color value, I decrease the minimum color a little bit and darken the crossed section.

  • Meeting Goals

     My final work meets most part of my goal;

  • Future Work

   The source image can also be generated automatically to make the whole process more controllable and flexible;     

     Different random function can be used to created different styles of charcoal strokes, and the direction of stroke can be further considered;

     An user interface can be created to control the parameters easier and better generate charcoal texture.​

Reference:

[1] Praun,E., Hoppe, H., Webbo,M., and Finkelstein, A. 2001. Real-Time Hatching. Proceedings of SIGGRAPH 2001.

[2] Du, Y., and Akleman, E. 2016. Charcoal Rendering and Shading with Reflections. Proceedings of SIGGRAPH 2016.

[3] Majumder, a., and Gopi, m. 2002. Hardware accelerated real time charcoal rendering. In Proc. NPAR 2002, 59–66.

      

bottom of page