From BlenderWiki

Jump to: navigation, search

Summary Of Work for 3½ Months from October-3rd-2011 to Jan-6th-2012

Heres a summery of what I've been doing over the past months,

For details see (week 59 - 72):

Summary of BMesh Improvements

For BMesh its difficult to summarize since many of the changes were to enable specific features from trunk or fix bugs in the BMesh implementation.

There were some areas which I sped up since they were clearly working inefficiently.


  • made mirror functional (was broken in a number of tools, smooth, mirror vgroups).
  • fix shape key offset on editmode exit.
  • fix 'Tri to Quad' tool not using the limit properly.
  • fix Select linked in face select mode not stopping on seams
  • fix VBO's were not being rendered correctly
  • fix new face added with "F" were flipped wrong way.
  • fix dissolve so it removes a vert between 2 edges.
  • fix faces having invalid origins calculated when `rotate about origins` was selected.
  • replace BMeshe topo-mirror function with the one from trunk (which is more comprehensive).


Modifiers can currently use 2 data structures for faces (MFace's and MPoly's), where only MPolys can store NGons. it isnt essential that every modifier be updated to use polygons before merging into trunk, but using polygons at least means that NGon's wont be triangulated and converted back into polygons.

This an an area I'm currently working on and plan to make some bigger changes.

  • mirror modifier wasn't mirroring UV mirror at all.
  • fix for crash in explode modifier
  • fix invalid UV's with rim faces with solidify modifier.
  • update UV-Project modifier to use polygons.
  • update mask modifier to use polygons.
  • update screw modifier to use polygons.
  • enabled subsurf UV's
  • enabled ocean sim modifier
  • enabled remesh modifier
  • enabled basic bevel modifier and improved some calculations for the bevel shape and add support for fixed width bevel.


  • flag vert/edge/face arrays as having valid index values, this avoids a lot of looping over mesh data just to assign indicies.
    This saves time when drawing since they were previously assumed to be invalid on every editmode redraw.
  • speedup tesselation for editmode, object mode and editmode conversion - gives approx [3x - 6x] speedup depending on the case.
  • make edge split modifier more efficient, loop on edges not face edges.
  • Utility function used for some bmesh allocations - BLI_array_growitems was looping and growing 1 by 1, now do in a single allocation.
  • minor optimization on BLI_mempool_iterstep(), but worthwhile since its used to loop over all mesh data.
  • mirror modifier was duplicating the input mesh when it didnt need to and re-tesselating NGons twice.
  • remove re-tesselation after each constrictive modifier to avoid calculating tessfaces between multiple constructive modifiers.


  • compatibility for BMesh to save as `Legacy Mesh Format` so BMesh can save files for 2.61 or older.
  • compatibility for 2.62 to load BMesh files *(sans NGons).
  • enabled weight paint mirror
  • enabled sample weight.
  • enable multires baking code
  • fix dupliface to use NGons not tesselated faces.

Summary of General Improvements

  • Ability to edit python source code for UI in the buttons context menu.
  • Make duplicates real keeps parent relationships
  • Image Save aoi refactor - so the UI and data API for image format options is shared across (render/save-operator/compositor-image-node) bit depth can now be selected when the format allows.
  • Weightpaint api refactor - weight paint panel buttons now work in wp-vertex-sel mode, remove duplicate code, improve blur calculation.
  • Theme Import/Export script (uses generic XML <> RNA module which can be reused elsewhere).

Summary of Addons

For addons I mainly just did maintanance.

  • FBX export: added shape key support r2392
  • FBX export: added camera sensor width and height support r2587
  • FBX export: fix [#28889] only exports action with action groups r2426
  • 3DS export: workaround for error writing large arrays r2387
  • X3D export: fix [#29228] mesh SURFACEs not converted r2611

Summary of Documentation

Wrote new sections to our API docs.

Summary of Review Work

Noteworthy addons and patch review.


  • Nuke camera import/exporter (made some fixes)
  • Motion Capture Importers - ASF and C3D (made some fixes)
  • After-Effects Camera Exporter.
  • [#23566] PDB Chemical Files importer
  • Milkshape3d addon (approved for contrib)


  • Generalize path manipulation (path visitor patch)
  • [#27708] API for adding mesh propertiespatch
  • [#28094] equirectangular world texture mapping.
  • Mathutils: support for arbitrary sized vectors
  • [#29534] Mathutils: Change Matrix Representation and Access in Python to Conform with Standard Notation

... most reviews didnt take long however the matrix row/column switch ended up taking some days, and I also ended up adding some new functionality because of it


  • Bugfix stats* (from weekly reports / commit logs)
  • 61 - fixed reported bugs
  • 94 - fixed unreported bugs
  • 155 - total.

note: doesn't include fixes for own recent mistakes :), also doesn't include fixes to the buildsystem.