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

Gergely Klár

Email / IRC / WWW

Email: shinjin@CreativeReboot.hu

Usual IRC nick: cr_shinjin

Homepages

Old homepage of courses taught by me: http://tremere.web.elte.hu/cg/ (There's a barely visible menu on the left! :)

The page includes my university courses on OpenGL, DirectX and XNA in Hungarian.

My new homepage, that is currently not-so-full-of-content: http://cg.ambitiouslemon.com/

Synopsis

The aim of my project to introduce finite element method (FEM) based softbody simulation to Blender. FEM techniques have been used in productions graphics, for example in WALL-E, to produce high quality simulations of elastic and plastic materials.

This project would only create an initial FEM simulator, implementing the essential structures and algorithms for a basic method. This could be improved upon later by including more features and techniques that have been developed by researchers in the past years.

Benefits to Blender

The benefits of the project are twofold: both the end users and Blender as a product would be enriched by this project.

End user point of view

FEM based softbody simulations produce higher quality simulations than mass-spring models. FEM softbodies are simulated as a volume, therefore undesired effects, such as collapsing are avoided by nature (as in this video). FEM simulations also build upon the physical properties of the materials, thus they avoid the use of unintuitive and hard to gasp parameters.

Developer/feature set point of view

Finite element methods for physically based animations is a vast field with amazing results. The use of these methods can range from softbody simulations to object destructions, while most of them rely on the same set of concepts. Once the foundations set, further algorithms are much easier to implement, such as biphasic materials, fractures, and crackings. See [1] and [2] for a list of applications with videos.

Deliverables

To the end user

The results of the project would appear as a new modifier (say FEM Softbody) in the Physics tab of the user interface. The properties available to the user would fall into three categories: the physical properties of the material such as the Young's modulus and Poisson's ratio, the solver type, and the tetrahedralization technique.

An accompanying Blender wiki-style documentation would be provided to to the user community.

To developers

The underlying simulation system would be composed of as independent components much as possible to support further reuse or additions. The computed physical properties such as strain and stress are the very same that are used in fracture simulations. Having a mesh composed of tetrahedral elements along with these informations greatly ease the implementation of other statics and continuum mechanics based algorithms.

To support these future endeavours, a detailed developer documentation will be created as well.

Project Details

FEM based simulations provide an ample of advantages over mass-spring systems. While the later is ideal for the simulation of cloth and other thin objects, it fails to accurately simulate the behaviour of volumes. Direct use of surface meshes results in their collapses. Auxiliary methods exist to correct this, but they result in the use of rather black magic like parameters and constants, and the behaviour of the object will always depend on the structure of the springs.

In contrast FEM simulations work on physically based foundations, using only a few (also physically based) parameters. All FEM simulations work on primitive elements, which is a tetrahedron in our case. To this end the model to be animated have to be transformed to a tetrahedral mesh. Forces acting upon this tetrahedral mesh are defined by constitutive laws, which computed using a numerical method of choice. The animation evolves in time by applying displacements generated by these forces.

  • Tetrahedral mesh generation will happen using one of the following algorithms:
  • For now, Hookean materials will be target, whose behaviour are described by Hook's law.
  • Explicit Euler method and further on Newton-Raphson method will be employed to compute the deformations.

Project Schedule

Schedule

  • ongoing - Research on softbody simulation techniques, evaluation of the mentioned tetrahedral mesh generation algorithms
  • week (-1) - Getting familiar with Blender sources, identifying hook points for my project, such as point for UI integration. Surveying the relevant source files for reusable and related code, such as existing collision detection and response techniques, or 3D triangulation algorithms.
  • 24th May - Kick off, hard work starts
  • 3wks: Hooking up to the UI, and implementation of the chosen tetrahedral mesh generation algorithm
  • 2wks: FEM simulation using explicit Euler method.
  • 3wks: Collision detection, response and constraints.
  • 2wks: Implementing the Newton-Raphson solver.
  • 2nd August - Feature pen down: fixes of unresolved issues, documentation enhancements
  • 9th August - Last minute fixes, completing the documentation

Milestones

  • Hello Blender - getting started with Blender, adding the placeholder for the new FEM softbody modifier
  • Tetrahedralization - implementing the selected tetrahedral mesh generation algorithm
  • FEM simulation - implementing the simulation on basic Constant Strain Tetrahedral Meshes, using the explicit Euler's method
  • Collisions - adapting a present collision detection and response techniques for the new softbody models
  • Implicit methods - implementing the Newton-Raphson solver

Availability

My teaching duties will be over before the start of the coding period. During the summer my obligatory research work would be this project itself. I plan to have about one week of holiday in the summer, during this time I would not be able to proceed with the project.

Bio

I am a PhD student at ELTE University, Budapest, Hungary. I have received my MSc degree in Computer Sciences in 2008.

Softbody simulation is the research topic of my PhD. I have been reading on FEM based techniques for a year. I have started working on my own softbody simulations software in February, but I have been wondering since long if I should use Blender as the work environment for my research.

Since 2007 I am a member of the Computer Graphics Group of BUTE University.

I have been teaching DirectX, OpenGL and C++ for students of ELTE University since 2007, and XNA as a voluntary course since the same year.

During autumn of 2008 I have worked for Tata Consultancy Services in New Delhi, India for three months. My work was creating additions to the open source project Mumble to make it suit the company's needs.

I have started using Python around 2005 and ever since I am using it daily to create tools and prototypes. I have been using C++ for more than ten years. I rarely use C, but I am familiar with the language.

Experiences with Blender

I have been using Blender for about 4 years. Being a real programmer, I have only used it to create simple models for my 3D applications.

I have written a Python export script for a custom file format of one of projects.

I have successfully compiled Blender for Win64, but only peeked into its sources so far.

Last notes

See my English CV for more details.

References