Dev:Source/Modeling/NM Proposal

提供: wiki
移動先: 案内検索

Proposal For Half-Edge Modelling, by Joe Eagar

Abstract

Blender's modelling tools are widely considered to be too limited to be used in a comercial setting. For all its power, the modelling code suffers from a too-simple data structure and the well-known lack of NGons. The solution is to write a totally new and seperate set of modelling tools, comparable to Wings3D. The tools would operate on an underlying half-edge BRep implementation, done entirely in C for speed.

The problem with this is that two seperate modelling "environments" would have to be maintained in Blender, as to prevent loss of functionality on the onset. Maintaining two similar (yet totally different code-wise) parts of a program can be fairly difficult. The answer to this, in my opinion, is to simply deal with it for a while, then phase out the old Mesh.

A decision to pursue a new half-edge modelling environment (which is essentially what it would be) would be a fairly serious one. As already shown through HE Mesh (which I intend to rewrite from the ground up) user support for such a thing is high. The benefits of a better modelling system would be well appreciated, as would having full NGon support.

But while a project of this size can be coded entirely by one person (me, joeedh) the very nature of it means that cooperation would be needed between virtually all maintainers as different parts of Blender are genericized and modified. So for this project to go ahead, everyone would have to agree to a set development roadmap.

Proposed Roadmap

Pre-CVS:

  • Do initial DNA object type code.
  • Do initial saving code
  • Do initial drawing code
  • Do initial editmesh code
  • Do basic selection code.
  • Review and stabalize code.
  • Code abstract usertool interface.
  • Code all euler functions for writing user tools.
  • Code all drawing routines.
  • Do ghost-mesh code.
  • Code initial View3D menu
  • Code functions to convert Mesh to Half-Edge and Half-Edge to Mesh.
  • Code one user tool.
  • Commit to CVS

Post-CVS:

  • Code modifyer support
  • Review tool interfaces, and finally method for writing user tools.
  • Encourage people to write new tools.
  • Code basic material and rendering support.
  • Kill all compiler warnings on all platforms/compilers.
  • Finish any remaining holes in the basic user interface.
  • Code a core set of modelling tools.
  • Do user testing.
  • Review user interface design.
  • Refactor/fix/clean up any code that needs it.