SKETCH-BASED MODELING INTERFACE FOR BLENDER Proposing student name: Pablo Diaz-Gutierrez Nationality: Spanish School: University of California, Irvine * Synopsis I propose developing a sketch-based input interface for Blender. It will provide a quick and dirty approach to the initial stages of 3D modeling, as opposed to the current, more rigid method. Once the project is completed, it will be easy to use a drawing pad or Tablet-PC system to draw a few defining lines of the desired model, and have the program automatically generate the surface that fits the drawing. Subsequently, a more experience Blender user can refine the model as desired. * Motivation and benefits to the Blender community Blender is an excellent piece of software, comparable in power to the leading products in the 3D modeling market. Furthermore, its recent release as a GPL licensed program has accelerated the addition of new features, through the creation of a vibrant developer community. However, as with many complex tools, the learning curve for new users to obtain satisfactory results is considerably steep. Having a simpler, alternative modeling system might bring new users to the program, which would undoubtedly turn into a higher quality product, as other open software projects have experienced. Although the main focus of my project is new comers, experienced Blender users will also benefit by viewing the sketching interface as a way to produce quick model prototypes, which will be refined later on. This way, the creative power of traditional drawing and the current flexibility of Blender can be combined to allow faster and simpler work. Another scenario where this tool will be a valuable help can be during the early stages of an animation movie. Storyboards are used by the artists to describe the desired look of each scene in the movie before rendering it. Unfortunately, there is always a mismatch between what is drawn in the storyboard and what the final product becomes, altering the original idea of the moviemaker. A way to reduce this distortion would be to rapidly produce a rough prototype of the scene, and let the traditional artist interact with it to further explain the desired result to the dedicated modelers. Last, but non least, I am personally interested in sketch-based modeling from a research point of view. Automatically generating a 3D shape from a set of 2D sketchings is a fundamentally underconstrained problem. Deep understanding of the creation process and of the expectations of the artist while drawing is required before attempting to provide an appropriate solution. I have worked on a similar problem for a research project, and in the process I developed an in-house tool to test the surface generation algorithms. My implementation of this project in Blender would utilize some of the algorithms described in that paper, and serve to experiment with further improvements. * Project description As indicated before, I intend to program modifications to the Blender source code that allow sketch-based modeling. Being as this is a highly experimental field, I can only guarantee to have the most basic functionalities that such a system is expected to provide in order to be able to create simple 3D shapes. Fine detailed models like products of CAD tools are out of the scope of the tool. The form of interaction with the Blender team is through submission of C patches to the experimental branch of the system, Tuhopuu, since this is the preferred way for new developers. By the end of the summer, I plan to have a system capable to do the following: - Register free-hand drawing on an arbitrary plane in the 3D space. - Register free-hand lines connecting two points. These two types of lines form what is called as a network of curves. - Calculate the 3D path corresponding to the drawn 2D curves. - Determine which sets of drawn lines identify surface patches, or allow the user to explicitly indicate this. - Generate surface patches covering the network of curves. - Interactive modification of the surfaces by changing the generation parameters, such as normals at the vertices, material stiffness, etc. Additionally, there is a number of features I would like to work on, but I cannot be sure to finish on time, so I will indicate them as optional tasks: - Surface edition by cutting and stretching created patches. - Interactive edition of the generated 3D lines - Pencil gesture recognition to permit a more comfortable use of the system, reducing the complexity of the interface. - Sketching of the articulation of models (skeleton systems). - Improvement of the existing surface painting module. * Project schedule and deliverables I am organizing the development of my project in four periods of two weeks each. The first one consisting of system design and becoming familiar with the code base. The second and third will see the development of the core of the system, and the creation of the first usable prototype. I am saving the last period for testing, debugging, integration with other parts of Blender, and experimenting with different surface generation algorithms and their parameters. Specifically, the plan for submission of deliveries is as follows: - July 15th: System design document. First substantial, but private code modifications. - July 29th: Generation of a network of curves with correct normals at vertices and interpolation of normals along curves. - July 31st-August 4: Meet at SIGGRAPH'05 with the Blender team. Evaluate progress. - August 19th: Surface patch generation. - September 1st: Final submission. Debugged code committed. All possible extra features (see project description) completed. * About the student I am 26 years old, and a second year Ph.D. student at the University of California in Irvine. Before that, I completed my B.S. in Granada, Spain. I have industry experience on development of large pieces of graphics software, for I worked a whole year at ESPELSA, in Madrid, writing GIS software just before joining graduate school. There I reinforced my C/C++ skills and most important, I learned how to work in a big team. Regarding Blender itself, I have looked through the source code and read the developer manuals and the description of the system architecture. Before the start of the project I will be learning about it, changing small parts and building my modifications. I've done some simple modeling before, following tutorials and some chapters of "The Blender Book". Although I can't call myself a frequent Blender user, I'm very interested on learning the ropes of Blender modeling and scripting to be able to do my scientific and schematic visualizations with it. I think there's no better way to do so than doing a serious contribution to Blender itself. Sincerely, -Pablo Diaz-Gutierrez