[Bf-committers] GSoC 2009 Application (draft)

Jingyuan Huang jingyuan.huang at gmail.com
Sun Mar 22 18:43:53 CET 2009


       Google Summer of Code: Blender Illumination Brush using
                                       Spherical Harmonics
                                             Jingyuan Huang
                                       jingyuan.huang at gmail.com
                                    www.cgl.uwaterloo.ca/~j23huang
                           David R. Cheriton School of Computer Science
                                          University of Waterloo
                                              March 22, 2009
1     Synopsis
Creating the desired lighting effect in 3D modeling tools can be
time-consuming. Inspired by Illumination
Brush [1], this project aims to create an interactive tool for Blender
to preview and modify image-based
lighting effects. This tool will be integrated with the existing
image-based rendering routines in Blender in
order to help artists determine the final renderings. Since the
algorithm uses Spherical Harmonics, the tool
is named as ShLight.

2     Benefits to the Blender Community
With such an interactive tool in place, artists can select a part of
the scene and apply the desired colours to
it without manually changing objects’ BRDF or locating another high
dynamic range image that can achieve
better rendering results. The tool will facilitate the rendering
process, which matches the goal of Blender:
to help artists design and create content effectively.

3     Deliverables
A separate editor space will be added to Blender to allow users to
view and manipulate the lighting en-
vironment. The editor space will allow users to specify an HDR image
as lighting environment or use the
HDR image specified as the environment map in the rendering options.
Since the algorithm uses spherical
harmonics, the editor space will also provide widgets to allow users
to change some of the parameters.
Users can rotate the models in ShLight space to examine lighting
without changing actual transforms, but
they still have the option to set the transforms if they find a better
orientation. The tool will also provide
two ways to change the lighting environment. First is to pick a colour
in the brush colour panel and click
on the window to select the vertices to apply the colour to. The tool
will update the HDR data to best
match the desired colour. The second way is to drag the shadows to
rotate the lighting environment. The
tool will estimate the rotation and update the HDR data. These changes
will be stored and applied for the
final rendering.

4     Project Details
4.1    Spherical Harmonics
Precomputed radiance transfer using Spherical Harmonics was first
introduced by Sloan et al. [2]. Spherical
Harmonic Lighting: The Gritty Details by Robin Green offers good
explanations of the basic concepts [3],
however the implementation provided in the tutorial is naive and slow
since it aims for explanation rather
than performance. A faster algorithm was proposed by Ian G. Lisle and
S.-L. Tracy Huang [4], and is the
base of my implementation.
4.2    Estimating Colour Change in Lighting Environment
Algorithm described in Illumination Brush [1] will be used for
calculating lighting environment changes after
users specify colours on the scene. The new light coefficients will be
calculated by solving a least square
problem for the linear system. The constraints described in [1] will
be applied as well.
4.3     Lighting Environment Rotation
Ian G. Lisle and S.-L. Tracy Huang’s implementation [4] already
provides Wigner matrices for scenes rotating
relative to the lighting environment. The same matrix can be used to
rotate the lighting environment
relative to the scene. The amount of rotation is calculated based on
mouse movement, which is described in
Illumination Brush [1].

5   Project Schedule
  • March 23 – April 15
    Implement basic features with minimum dependence on Blender. This
means that I won’t use the
    existing Blender routines for HDR image loading and writing, or
ray trace routines for shadow inter-
    section. My goal in this period of time is to quickly get
something to show up on the screen and work
    out the core algorithms.
  • April 16 – April 26
    This is my yearly vacation in China. I will be around Chengdu and
Tibet for these days with my mom
    so I won’t be able to code.
  • April 27 – May 22
    This is Google’s community bounding period. I plan to continue
developing some of the algorithms
    that I may not be able to finish in the first period and listing
out the parts that shall be integrated
    with Blender. I’d also like to get some suggestions on the overall
design and UI layout at the end of
    this period. I will be in Shanghai from April 27 to May 6 and fly
back to Waterloo on May 6. I will
    be able to work on the project when I’m in Shanghai.
  • May 23 – July 6
    This period is the main iterative cycle. Work involved in this
period includes Blender integration,
    improvements based on previous reviews and suggestions, and
testing. Google’s midterm review will
    be done at the end of this period.
  • July 7 – August 1
    Midterm review shall be submitted by the beginning of the period.
This period is another iteration
    cycle, including minor design changes (no big changes should
happen at this point), integration, testing,
    and documentation.
  • August 2 – August 9
    SIGGRAPH! I applied for student volunteer but I won’t know the
results till the end of April. For
    now let’s assume that I won’t be available during this period.
  • August 10 – August 21
    This period is dedicated to bug fixing and documentation. Proper
Wiki pages should be added to
    explain the work flow and UI controls. Problems and issues shall
also be documented.

6   Extensions after GSoC
many possibilities (I'm still writing)

7      Bio
I’m a Master’s student in The David R. Cheriton School of Computer
Science at University of Waterloo. I
completed my Bachelor degree in Software Engineering at University of
Waterloo as well. I’m very comfort-
able with C/C++ development, and I’ve used Python quite often since
2006 (my baby Ada compiler was
written in Python). You can find my resume and some of my past
projects on my website.
I used Blender for my ray tracer project in 2007
(www.cgl.uwaterloo.ca/ ̃j23huang/projects/fray/fray.html)
and I’ve been following the dev mailing list since. I understand
Blender’s basic code structure, however, I
haven’t been able to make real contributions to the Blender community yet.
My thesis topic is image-based relighting. This project is partly
related to (or might be a part of) my
research work. I hope that my research can bring some thoughts to the
development of this project (and
maybe benefit from it as well). I will focus on my thesis topic this
summer and not take any courses. Since
this project is related to my research, I will be able to work on both
as a unity instead of two separate
projects.


References
[1] M. Okabe, Y. Matsushita, T. Igarashi, and H.-Y. Shum,
“Illumination brush: interactive design of image-
    based lighting,” in SIGGRAPH ’06: ACM SIGGRAPH 2006 Research
posters, (New York, NY, USA),
    p. 141, ACM, 2006.
[2] P.-P. Sloan, J. Kautz, and J. Snyder, “Precomputed radiance
transfer for real-time rendering in dynamic,
    low-frequency lighting environments,” ACM Trans. Graph., vol. 21,
no. 3, pp. 527–536, 2002.
[3] R. Green, “Spherical harmonic lighting: The gritty details.”
http://www.research.scea.com/gdc2003/
    spherical-harmonic-lighting.html, 2003.
[4] I. G. Lisle and S.-L. T. Huang, “Algorithms for spherical harmonic
lighting,” in GRAPHITE ’07: Pro-
    ceedings of the 5th international conference on Computer graphics
and interactive techniques in Australia
    and Southeast Asia, (New York, NY, USA), pp. 235–238, ACM, 2007.


Best Wishes
Jingyuan Huang
------------------------------------
Computer Graphics Lab
University of Waterloo


More information about the Bf-committers mailing list