Dev:Source/Modeling/HeMesh

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

Half-Edge Mesh Structure

News

29 Mar 2005: HE mesh is now in tuhopuu!

Introduction

The Half-Edge Mesh Structure (HE Mesh) project aims to add a new Wings3D-style mesh type to Blender. It is meant as a secondary mesh object, and is NOT meant to completely replace the current Mesh object type.

The idea is to allow the two different modeling philosophies of 2-manifold and non-manifold meshes to coexist together. This may sound strange, but the restriction of each edge being limited to either 1 or 2 adjacent faces can result in a modeler that for a lot of people is much easier and more intuitive to use. But since this doesn't include everyone and every situation, it's important that the old mesh is left in Blender, so the two can coexist.

Feel free to post feature suggestions in the comments section. I find this really useful, and I've even dredged up suggestion people made two years ago for HE Mesh.

Features

HE Mesh currently supports the following features:

  • Mostly-Working Bridge Tool. Convert Mesh to HE Mesh with ALT-C* Convert HE Mesh to Mesh with ALT-C*
  • All the selection features of the old one.
  • Subdivide and Merge tools (WKEY)
  • Extrude face region tool (EKEY)
  • Extend loose (boundary) edges (EKEY)
  • Winged vertex extrusion (EKEY)
  • Full subsurf support
  • Collapse vert (DELKEY or XKEY)
  • Delete face (DELKEY or XKEY)
  • Tool Macro support
  • Mouseover highlights!

These features are on the todo list:

  • Winged edge extrude
  • Individual face extrude
  • Edge bevel
  • Loopcut
  • Vertex-coloring with multiple vertex maps.
  • UV-texturing stuff.
  • Deformations, like hooks, curve defrom, armatures, etc.
  • Eventual support for the eventual softbody project.

Documentation

This section here is for posting links to tutorials, etc. Anyone can post here, I would appriciate any documentation help anyone can give me. Mostly this will consist of mini tutorials and examples as the feature set and user interactivity of HE Mesh isn't set yet. -- JE

Names

Post any ideas for what to call this sucker here. HE Mesh sounds terrible.

  • nMesh (for ngon Mesh maybe). I like this one best. -- JE
  • NMesh (for New Mesh).
  • ManiMesh
  • Manifold Mesh
  • Monty's flying Mesh (read something about naming things like that in the original documentation) or
  • fly mesh for short (as it uses winged edges and works quicker like on the fly lol)

Development Info

UI Issues

See HeMesh UI Design.

Tool Macro

Each user tool in HE Mesh (with the exception all the unified transform functions such as grab/rot/size) is part of a generic tool API. This api allows for the recording and playback of each tool, in a macro.

To begin recording a macro, press CTRL-SHIFT-R and click on "Start". To end, press CTRL-SHIFT-R and click "Stop". To execute the tool macro, press T. To enter Tool Paint mode, press CTRL-T.

The following tools are part of the HE Mesh toolset and are macro-able:

Macro-Compatible Tools:

  • Subdive/all extrudes.
  • Merge tool.
  • Collapse vert and delete face tools. ALT-S (normal grab) has been rewritten specially for HE Mesh.* Edge sharpening (SHIFT-E) has also been rewritten specially for HE Mesh.*
  • Select more, less (CTRL-PAD+, CTRL-PAD-).
  • Macro "movers," written for proof-of-concept purposes (CTRL-ALT-S).

More Details on Tools

Prototypes and Arguments

Each tool in the tool api has the following prototype:

char Tool(char arg_string);

Notice how it uses an argument string? This is done in the interest of generic argument passing. Each tool, once exectuted, will return a argument string to be stored in, say, the macro recorder stack, or the contruction history stack.

User Interactivity

User interactivity inside of HE tools is done via a generic set of functions that I call the "drag interface." More info on this will be posted after I've revised the code :)

Suffice it to say, if a tool lacks the arguments it needs, it will enter user interactive mode, usually by performing it's task and then executing a different tool such as the Move-Along-Normal tool. Then, when the user interactivity is done, the tool will return the result of the operation (as a character string).

So, let's say we have the extrude function. It would work like this:

  • Step 1: Do the extrusion
  • Step 2: Set vert normals
  • Step 3: Execute move-along-normal tool, either with NULL if we need to enter user interactiviy mode, or an argument string if we do not.

So essentially, you have Normal Move returns an argument string to Extrude which returns it to whatever called the function.

Comments

great

Im using wings alongside blender and both mesh edeting styles have theire advatages and disadvantage so its good to see them both in.

  • Remember that bevel on an edge on a straight plaine gives another face isnt exactly beveling in the old sence but a great modeling trick.
  • Other toppers of wings are the bridge function,works fine in the newest tuhoopu version.
  • the connect command that connects vertices so a, or multiple new faces are created works great together with the cut tool.
  • the find similar that finds similar kind of group of faces or vertices as the one selected.
  • the intrude command that makes an object hollow and deletes the selected faces explained here:

http://www.renderosity.com/messages.ez?ForumID=12445&Form.ShowMessage=2201747

  • and last but not least the paste in place , were part of an object can be paste into a box with same scale and orientation as that box. (for example diffrent sized windows in a wall)

what i found (in the new 7 april version) is that if i delete a face i cant get it back on with the f key like in regular blender editing , could this be implemented again to fill up holes created with the delete face option? thx for the great work u did already on this project,its going along realy fast.

-- ysvry - 14 Mar 2005


I hope Python script programmers will get access to this new datastructure too. Being a modelling script programmer, I am very keen to get into it.

-- GertDeRoost - 26 Mar 2005

dev note

review of the current state of the code and small note about eulers operators

HeMeshReview.

EulerOperators

-- JLucPeuriere - 21 Mar 2005

-- JosephEagar - 11 Mar 2005