From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Name

Rohith B V

Email / IRC / WWW

Email: rohith291991@gmail.com
IRC: rohith291991

Synopsis

Given an input mesh, the surface is parameterized or a field is generated, and based on either a low-level or high-level method, remeshing is done which closely follows the overall topology of the input mesh, while maintaining good flow. The output mesh is then suitable for catmull-clark subdivision, sculpting, good deformations in animation etc.

Benefits to Blender

Some current 3D artists who sculpt, typically like to flesh out hi res prototypes starting with something as simple as a cube or sphere (similar to sculpting a piece of clay). However, this could cause problems further down the line, when actual detailing is required, as the topology of the mesh could be quite bad. There are also many models which are inherently badly modeled in the first place (bad topology flow). Also, the meshes created using boolean operations can benefit from this tool. In order to address these issues, a quad dominant remeshing solution would be quite helpful to Blender. It will help the workflow, as artists don't have to worry too much about the underlying mesh structure of what they are modeling. Prototype models can be quickly developed, and the meshes can be cleaned using this tool.

Deliverables

  • Basic remeshing tool, where automated remeshing/feature line and point detection is carried out.
  • Improvements upon this tool, providing additional functionality, such as ability to mark "feature lines", more control to the user to specify parameters. Also try to optimize the algorithm and test different data structures etc if necessary. Begin work on documentation.
  • Finish any things leftover from the previous deliverables. See if the user interaction with the tool can be improved. Final optimizations and wrap up, along with completion of documentation.

Project Details

Quad dominant remeshing has been quite important in proper representation of 3D surfaces. The meshes which are output from laser scanners, isosurface extraction etc typically have very poor mesh structure, possibly with unnecessary vertices and poor triangulation. Ultimately, the method I choose to implement will have to be decided, and my decision will be based on several factors, including interactions with the developers/artists. Many Papers have been published in this area. In order of importance, here are some of the papers I have checked out:

The mixed integer quadrangulation method seems to be the best option so far (thanks Brecht!).

Tool Mockup

Project Schedule

  • Mid April - Mid May: (Before the actual project start date) Get to know Blender's architecture better. Learn more about the problem at hand, and frequent IRC channels.
  • Mid May - Mid June: Start work on the tool. Complete the basic remeshing features.
  • Mid June - Mid July: Implement additional features, which could be useful. See if optimization of code is possible.
  • Mid July - Deadline date and beyond: Try adding automation to certain tool options as mentioned in the deliverables. Experiment with different automation methods, checking performance and quality of output.

Open Issues

What should be done with the vertex details of the old mesh? Should the UV coords, vertex colours etc be transported to the new mesh as well?

Bio

I'm a 19 year old student studying Computer Science and Engineering in IIIT Hyderabad, India. I have great interest in art and 3D graphics and would consider myself an artist as well. I am also very musically inclined and play the keyboard, compose music, and sing. I have been programming for 2 years now, and in this short time I have been able to learn a lot. I am proficient in C, C++, Python and have lesser skills in languages like Java, PHP, SQL etc. I have made small projects involving DirectX 9 and OpenGL and I have a higher level conceptual understanding of advanced 3D graphics algorithms/ideas, but have not coded anything very advanced in this domain. I also have extensive math knowledge which could be of help, including but not limited to areas such as graph theory, calculus (standard, vector, complex), trigonometry, fourier analysis etc., and also have interest in electromagnetism, quantum mechanics and Lagrangian mechanics, which involve these fields.

My Blender usage has been limited, presently I have just started to learn about the internals(code) of Blender, however I have used 3D software such as Blender/Anim8or to make 3d models/renders, and I am aware of the features/tools. I believe I am a quick learner and am eager to learn more about coding for Blender and Open Source in general.

Some contributions to Blender:
Some projects:
  • A zip file containing different OpenGL codes I made, including a 3d file format reader, and a replacement for the Modeling, Viewing, and Projection matrix stages of the OpenGL pipeline. (PA2new.cpp is the source code for a simple tetris game): http://www.box.net/shared/sypovlk0uf
  • A simple Client-Server based "Lens Simulator". The client has a modeling viewport, with ability to add 3D primitives, translation ,scaling etc. After a scene has been setup on the client end, a request is made to the server to "render" this scene file, given certain lens parameters/positions (radii of curvature/refractive index etc). The output render is actually rasterized using Java3D and DoF effects were added using depth information extracted using fog (it was difficult to extract the Z-buffer in Java3D). Users can create account on the server, and each of them has a database of their rendered images, their uploaded models and so forth. Several Clients can send requests at the same time, and these requests are handled in a round robin fashion. This project involved Java(mainly for the client end, done by a partner), PHP, Java3D, Python and SQL. Apache was used as the server. Link to server source + Design diagrams: http://www.box.net/shared/yjszsy9h9n
  • A fully featured web2py based software library website, where people can upload different software, keep up with the versions, search for the latest versions, provide comments etc. It was a 2 person project. You will need to place the folder swlib in the applications folder of web2py in order to run it. Source: http://www.box.net/shared/6ekbm31nt0