|
楼主 |
发表于 2006-5-4 23:15:14
|
显示全部楼层
google夏日代码,半边结构(half edge)n-go
Proposal For a Half-Edge Implementation in Blender
在Blender中实现半边结构(half-edge)的建议
Introduction
The half-edge mesh structure is a manifold boundary representation, useful for writing tools that rely on quick adjacency queries and a uniform orientation. This structure can be used to write retopolizing tools, advanced beveling tools (including vertex/edge extrude), an efficient mesh decimator, and a more efficient CSG implementation.
介绍,
半边网格结构是一个多能的边界表示法,在编写快速边界邻接查询和统一定位方面的工具非常有用。
这种结构对编写重拓扑工具,高级bevel工具(点/边挤压),有效的网格优化,更有效的csg实现。
This proposal is for the addition of a half-edge utility to Blender. During initial development, it will be a separate object type, but the goal is to achieve a level of integration where a normal mesh could convert to/from a half-edge mesh as needed, to provide support for high-level tools. The current fgon support of Mesh would be utilized for this.
这篇建议是对blender半边工具的额外附加支持。经过了最初的开发阶段后,它已经成为一类单独的物体类型,但是我们想要达到目标是,在需要的情况下,可以将普通的网格同半边网格互换,为更高层次的工具实现提供支持。现在的网格fgon可以通过这样实现。
Advantages of Half-Edge
The half-edge data structure stores explicitly-orientated mesh geometry. The structure allows extremely fast adjacency queries to be carried out, making many high-level modeling tools (such as vertex/edge extrude and beveling) both easier to write and fast to run. Queries on edges surrounding a vertex, faces adjacent to a face, and others are all done in real and constant time.
半边的优点
半边结构存储了非常明确的朝向信息在网格几何体中。可以实现非常快的邻接查询,从而发展出一些高级的建模工具(比如点/边的挤压和倒角)很容易的写出他们,而且运行也相当迅速。包围一个顶点的边的查询,面面相临,所有这些都能够实时的完成耗时也只是常数时间。
User Impact
From a user point of view, fgons would become more important. Various modeling tools would now be fgon-aware, including beveling, extruding, and even (possibly) subdivision.
The most visible and important changes, though, would be addition of several highly useful mesh tools, including:
Face/Vertex/Edge beveling and extrusion tools, most of which cannot be implemented using the normal mesh structure.
Collapse vertex tool (collapse edge/face could be recoded to work with the half-edge implementation).
Ngon/fgon-aware mesh tools.
However, other changes might be substantially-improved boolean and decimate tools, along with the possibility to write a retopolizing tool as used in silo.
对用户的好处
从用户的角度,fgons变得越来越重要。很多的建模工具都开始变得fgons化了。包括倒角,挤压,甚至(可以实现的)细分。
更实际和更重要的改变就是很多高级的非常有用的工具可以做出来:
面/点/边 倒角和挤出工具,这些基本上是在普通的网格结构上不能实现的。
坍塌点工具(坍塌边/面工具会在半边结构实现后重写代码)
多边形/伪多边形网格工具
更多,可以更充分的增强布尔工具和优化工具,如果按照在silo里面实现的那种retopolizing工具做出来的话。
Details of Supported Half-Edge Features
半边实现的细节
Basic Information
Basic half-edge only supports closed and fully manifold meshes. The proposed implementation will support the open mesh and vertex-hole (also called incident vertices) extensions of half-edge, along with support for multiple shells. The term vertex-hole refers to the situation where two mesh solids are joined by one vertex (imagine two pyramids, one upside down, joined by their tips). This implementation will support query operations for iterating over the mesh solids surrounding a vertex. It will use the circular vertex method to "unglue," or separate, solids connected this way (but will hide this from both a tool and user point of view).
There will also be support for "ghost" boundary edges, which will allow circulators (iterators that operate on circular linked lists) to be used for virtually every query operation.
Note that this implementation will not support edges that share more then two faces, and as such invalid meshes will only have access to the normal mesh structure's user tools.
Euler Validation
欧拉验证
This half-edge implementation will support validation of the underlying mesh structure using the Euler-Poincaré formula. The validation system will automatically detect half-edge mesh corruption, and revert the mesh to a previous state (using a backup that will be automatically created before any user tool is executed).
就是要验证这个公式:V - E + F - (L - F) - 2(S - G) = 0
Coding Goals
The specific goals of this project are:
Achieve a stable half-edge implementation, with full support for boundary edges, vertex-holes (also known as incident vertices), and multiple shells/meshes.
Have full support for converting to/from a normal mesh structure, including awareness of fgons.
Have a fully-working euler validation system.
Implement a full set of mesh tools, including a set of extrude tools, a subdivide tool, and a set of collapse tools.
Implement a full query system, based on circulators (this includes edge and face loops).
Implement a full set of Euler operators, including collapse-vertex, collapse-face, collapse-edge, split-vertex, split-edge, and split-face.
Retrieved from "http://mediawiki.blender.org/index.php/User:Joeedh/Hemesh_SOC_Proposal" |
|