[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