Region-based 3D Mesh Compression Using an Efficient Neighborhoodbased Segmentation

Region-based 3D Mesh Compression Using an Efficient Neighborhoodbased Segmentation
Region-based 3D Mesh Compression Using an Efficient Neighborhoodbased Segmentation

Region-based 3D Mesh Compression Using an Efficient Neighborhood-

based Segmentation

Lijun Chen, Nicolas D. Georganas

School of Information Technology and Engineering

University of Ottawa

Ottawa, Ontario, K1N 6N5, Canada

{lchen, georganas}@discover.uottawa.ca

Abstract

Due to the popularity of polygonal models in the Virtual Reality applications, 3D mesh compression and segmentation are two active areas of 3D object modeling. Most existing 3D compression algorithms compress the whole object to reduce the local storage requirement and the delays in transmitting objects over the Internet. However, in some interactive applications, the client may be interested in particular section(s) of the object. The server needs to segment the object into parts and send them individually or sequentially. This paper presents a segmentation based

3D mesh compression scheme that can meet this requirement. We propose an efficient eXtended Multi-Ring neighborhood (XMR) based 3D mesh segmentation algorithm that decomposes the object into meaningful regions. Then we compress them separately and put them into one stream. The common boundary triangles that will be used for adhering the regions together are processed and appended to the end of the stream. We call this a region-conquer-and-stitch scheme.

Keywords: 3D mesh, segmentation, XMR neighborhood, compression, region-conquer-and-stitch. 1. Introduction

3D polygonal models are increasingly being deployed in a wide range of Virtual Reality (VR) applications, including scientific visualization, collaborative design, entertainment, e-commerce, and remote education, etc. These models, produced by the

3D laser scanning systems, are often represented as complex polyhedral meshes with hundreds of thousands or millions of vertices and triangles. They usually demand a huge amount of storage space, computer power and network bandwidth. Thus, it is essential to compress the 3D models efficiently. Over the last decade this research area has been very active. Many coding algorithms, including lossy and lossless, single resolution and multi-resolution, have been proposed [2, 4, 6, 11, 14]. Among them, the Rossignac’s Edgebreaker [11] method is an efficient and simple one. It can handle manifold meshes with multiple boundary loops and handles. There has been a significant progress in 3D mesh coding performance; however, most of these existing methods compress and transmit the 3D object as a whole. In some interactive or selective applications, such as Internet gaming, collaborative CAD design, or remote learning, the client may be interested in particular section(s) of the object. Therefore, before transmission the server needs to segment the object into parts and send them individually or sequentially.

Segmentation is also one of the main areas of 3D mesh modeling. It is useful for managing data in applications, such as object registration, object retrieval and indexing, feature modeling, etc. Segmentation is more common in the image processing area, and has been recently introduced into the 3D mesh area [1, 3, 7, 8, 9, 15, 16]. Among the existing algorithms, the watershed-based approach has received more attention. It uses the discrete curvature at each mesh vertex as the height field that drives the watershed segmentation. The curvature estimation for 3D meshes is computationally expensive [7, 8, 9], as it is mathematically defined for a smooth surface only. Zhang [16] proposed a simple segmentation algorithm using Gaussian curvature analysis. It is efficient for certain 3D models. However, similar to the other existing methods, this algorithm is defective when processing a high-resolution 3D model, as the geometric characteristics of the adjacent polygons in such a model are too close to be differentiated. Therefore, an efficient and robust algorithm is needed for 3D mesh segmentation.

In this paper, we present an efficient 3D mesh watershed-based segmentation algorithm using both

Gaussian curvature and concaveness estimation. To capture more accurate geometric features of polygon vertices for densely distributed meshes, we enlarge the normal 1-ring neighborhood to an eXtended Multi-Ring (XMR) neighborhood [17, 18] during the estimation. This way we can successfully segment any mesh into meaningful parts. After segmentation, a 3D object is divided into multiple regions and the boundary triangle strips that connect those regions. We compress each region individually using an Edgebreaker algorithm and put them into one stream. Finally we encode the boundary strips and append the data to the end of the stream. The decoder can then get each individual region and restore the whole object using the boundary strips.

The remainder of this paper is organized as follows. In section 2, the proposed XMR neighborhood based segmentation algorithm will be described. Section 3 presents a segmentation based compression scheme. Experimental results will be given in section 4. And section 5 is the conclusion.

2. Efficient and Robust XMR

Neighborhood based Watershed Segmentation In this section, we propose an efficient and robust XMR neighborhood based watershed segmentation algorithm using Gaussian curvature and concaveness estimation. 2.1. Gaussian Curvature and Concaveness Estimation

Curvature estimation is a fundamental tool for

analyzing and describing a surface’s behavior. However, it is computationally costly as it is mathematically defined for a smooth surface. Zhang [16] uses the Gaussian curvature analysis, as it is simple to calculate and has a nice feature to describe

the geometric behavior of a surface. A point p on a

surface can be recognized as: Elliptic if K > 0; Hyperbolic if K <0; Parabolic if K = 0. From this

definition, we can decompose a 3D mesh into distinct components by detecting the boundaries with hyperbolic behavior. Each component has elliptic or

parabolic behavior, and is connected by the boundaries

that have hyperbolic behavior. As we only care about

the sign of the discrete Gaussian curvature K (v ) of a

given vertex v , it can be defined as:

K (v ) = ∑=?n

i i 12απ (1)

where αi denotes the angle between two successive edges. However, hyperbolic behavior only is not reliable when there are concave corners on the polygonal mesh. As illustrated in Figure 1, the three regions R 1, R 2 and R 3 share a concave corner C , which possesses elliptic behavior. The boundary lines will be broken at C and these three regions will become one region R ’ if we do not fill this hole. Zhang [16] removed the isolated vertices by replacing their labels with their neighbor vertices’ labels. If the broken corner is one single vertex, this method can fix up that corner. However, if the faces are densely distributed on a mesh, the concave corner area is not a single vertex. Therefore, the corner vertices are not isolated; and the regions will be merged together and break the segmentation integrity.

hole.

To repair the boundary hole at the concave corners, we estimate concaveness and convexity of the vertices. In [12], Schroeder defined the average plane P of a vertex v by the normal vector N v of v and a center point v c , and the distance d from v to P . ∑∑===n

i i n

i i i v A A n N 11, ∑∑===n i i n i i i c A A v v 11, d = (2)

where A i and n i are the area and the normal of the

adjacent face around v respectively, and v c denotes the vector from v c to v (Figure 2). In this paper, we define the signed distance from v to P as: v c s N v d ?=

(3)

Figure 2. Convex vertex vs concave vertex. Based on the signed distance, we can define that the

vertex v is concave if d s < 0, and v is convex if d s ≥ 0. This can be shown in Figure 2. If a vertex v is

concave, the vectors v

c

and N v are in roughly opposite directions, whereas if v is convex, these vectors are in roughly the same direction. With the Gaussian curvature and concaveness estimation obtained, we define the metrics for boundary detection as follows.

Definition 1: A vertex v is a boundary vertex if K v < 0 or v is concave; otherwise it is an inner region vertex.

By this definition, both the hyperbolic and the concave vertices are set as the boundary vertices. This way improper segmentation can be prevented from the concave corner holes.

2.2. Robust Feature Extraction based on E Xtended Multi-Ring (XMR) Neighborhood

Using the Gaussian curvature and concaveness estimation, we can extract boundary points that are used for future segmentation. This works well for the relatively small size 3D models. However, if a model has a large number of faces, the faces and vertices are so close that the discrete geometric characteristics are not accurate to reflect the real behavior of the model. More specifically, the Gaussian curvature K v of a vertex v may represent wrong behavior for the vicinity of v; or the concaveness of v may be convex even if v is in a concave area or vice versa. These vertices can be scattered on the surface, which will result in serious over-segmentation; or they can break the boundaries, which will lead to undesired region merging. In this section, we propose an algorithm that estimates the Gaussian curvature and concaveness based on an extended neighborhood of a given vertex.

Figure 3. (a) XMR neighborhood at level 3 of vertex v; (b) simplified XMR neighborhood of

vertex v.

Definition 2: Given a vertex v, we define the 0-ring adjacent vertices of v: V0 = {v}; the 1-ring adjacent vertices of v: V1 = Adj(V0), where Adj(V) denotes the adjacent vertices of V. Then we extend the neighbor area of v to multiple rings, and define the L-ring adjacent vertices of v: V L = {v i | v i∈Adj(V L-1) and v i?V L-2} (L≥ 2). After the extension, we connect v and vertices from V L to create updated adjacent faces F L of v. V L and F L construct the eXtended Multi-Ring (XMR) neighborhood of v at level L.

This definition can be illustrated in Figure 3 (a). The XMR neighborhood of v at level 3 is composed of the bold lines.

Most of the existing 3D modeling algorithms are based on 1-ring neighborhood, as we described in the above sections. In this paper, we use the XMR neighborhood method to enlarge the neighborhood area of the given vertex v to catch more relevant information for v. As the XMR neighborhood covers more area, for the densely distributed mesh, the geometric behavior of v can be better captured by this new neighborhood, i.e., the Gaussian curvature and concaveness estimation of v is more accurate.

As shown in Figure 3 (a), the number of the adjacent vertices of v within the XMR neighborhood is approximately a linear function of the level number L as follows:

N L≈ L* N1 (4)

where N L and N1 are the numbers of the adjacent vertices at level L and level 1 respectively.

Obviously, the computational cost for the XMR neighborhood is more expensive than the 1-ring neighborhood. For simplification, we take the factor-L decimation onto the adjacent vertices after XMR neighborhood extending, which means we only keep the n*L th vertex after decimation, where n = 0, 1, 2, …. In Figure 3 (b), the circled vertices are the remaining ones after the factor-3 decimation. The new XMR neighborhood is constructed by the remaining adjacent vertices. The number L can be specified by the user as an input. For a low-resolution model with thousands of faces, L = 1 is enough; for a high-resolution model with a large number of faces, we can get a good segmentation result with L in the range of [2, 5]. The 3D feature extraction algorithm is outlined in the following pseudo code:

Algorithm 1: 3D feature extraction using XMR neighborhood.

input: a mesh M, neighborhood level n l

for all vertices, edges and triangles ∈M

build links

endfor

for all f i∈M

calculate face area and normal vector

endfor

initialize a adjacent vertex vector V a

for all v i∈M

for level from 0 to n l-1

update V a of v i

endfor

for all v j∈V a

form faces in counter-clockwise manner

compute αi , face area, face normal

endfor

calculate Gaussian curvature K of v i

calculate signed distance d s of v i

endfor

2.3. 3D Segmentation Using a Fast Marching Watershed Scheme

The watershed scheme is a primary method for image segmentation. The algorithms can be classified into two categories. One is the top-down flooding approach, which simulates that water floods from the ground to the local minima. Another is the bottom-up immersion-based approach. Imagine that basins fill up with water from the local minima, and, at points where water coming from different basins would meet, watersheds are built. Mangan and Whitaker [7] first introduced the watershed method on a polygonal mesh, and their approach falls into the first category. In this paper, we use the second approach. Our algorithm is described as follows:

Figure 4. (a) Minima thresholding; (b) Plateau

erosion.

1.Minima detection. Find the local minima

(basin) and mark each minimum with a unique

label. The rest areas are then plateaus.

2.Plateau erosion. Erode plateaus to their

neighbor minima starting from the boundaries

between plateaus and minima.

3.Region merging. Merge the less important

regions to their neighbor regions. 2.3.1. Minima Detection and Plateau Erosion

The watershed algorithm first finds the local minima. Normally the local minima are detected based on a height map at each vertex. We use the feature extraction algorithm proposed in previous sections to construct the height map. In section 2.1, we already defined the criteria for boundary detection. Now we define the height values of the boundary vertex and the non-boundary vertex as 1 and 0 respectively. Then the non-boundary regions are the local minima. The boundary regions are the plateaus. Because of the complexity of the polygonal surface, the criteria in Definition 1 may create too many local minima. Minima thresholding can merge a lot of small areas and make the segmentation much easier. In Figure 4(a) two local minima are merged together as region R1. The thresholding metric is defined as:

Definition 3: A vertex v is a plateau vertex if K v < δ1 or d s < δ2, where δ1 = 0.01·min(K v) and δ2 = 0.01·min(d s).

Here min() is a minimum finding operation.

After minima detection, the basins are the core areas of the final regions. The next step is to segment the plateaus. We use a fast marching method to erode the plateau and convert them to their neighbor basins as illustrated in Figure 4(b). Erosion starts at the boundaries between plateaus and minima. Step 1 denoted by 1 is to erode the level 1 boundary and find the level 2 boundary. And similarly, each following step i will erode the i th level boundary and find the i+1th level boundary until all the plateau vertices are processed. The pseudo code for this algorithm is as follows:

Algorithm 2: Fast marching plateau erosion

input: a mesh with minima and plateaus labeled define a double-ended queue P bound

for all v i∈ plateaus

if an adjacent vertex v adj of v i is a minimum

P bound.push_back(v i)

label of v i← label of v adj

endif

endfor

while P bound is not empty

v = P bound.pop_front()

for v i∈ adjacent vertex of v

if v i is plateau vertex

P bound.push_back(v i)

label of v i← label of v

endif

endfor

endwhile

2.3.2. Region Merging

Figure 5. Region merging.

Due to small details and/or noise on the polygonal surface, the watershed transformation always yields an over-segmented result. Thus, region merging is an essential stage for watershed-based segmentation. For 3D mesh watershed segmentation, there are a variety of metrics that may define insignificant regions [7, 10]. But they are either only suitable for the cortical surface or rather complicated for implementation

In this paper, we propose a simple yet efficient region merging algorithm with 2 region saliency criteria. The first criterion is region size. Apparently, the region with a bigger size is more important than the region with a smaller size. Though area is more suitable to accurately represent the region size, the area-based metric penalizes small areas too aggressively, as described in [11]. We simply use the vertex number as the region size. The region merging is then a process that iterately combines the merge-needed regions to one of their adjacent regions until the vertex numbers of all the regions are more than a pre-defined threshold. The difficulty is how to determine the destination adjacent region to which the small region will merge. This is solved by the second criterion: boundary length of the adjacent region. We use boundary length to define the saliency of the neighbor regions of a merge-needed region. As shown in Figure 5, for a merge-needed region C , we compute the boundary length of the adjacent regions (A and B ) of C . Since B has the longest boundary with C , we merge C to B . Note that the boundary length is expressed by the number of vertices of the boundary interval. The principle of this metric is straightforward. If a negligibly small region is mostly embraced by another adjacent big region, then merging them together is acceptable and will not degrade the overall segmentation quality. The region merging algorithm can be described in the following pseudo-code:

Algorithm 3: Region merging algorithm

Input: a mesh segmented with minima detection and plateau erosion

define R [N r ][ N r ], NV [N r ] // N r is the number of // regions; NV is the vertex numbers of regions for v i ∈ V

NV [label of v i ]++ endfor

for e i ∈ all boundary edges get 2 end vertices of e i

update R [N r ][ N r ] with row elements are boundary lengths, 0 indicates this is not a adjacent region endfor while(1)

merging ← 0

for all i from 0 to N r if NV [i ] < thershold

find target adj region with longest boundary change label of region i to target region update array R [N r ][ N r ] merging ← 1 endif endfor

if merging == 0 break endif endwhile

2.3.3. Post-processing ? Branch Pruning

(a) (b)

Figure 6. Branch pruning. (a) edge uv is a

branch; (b) after branch pruning.

After the region merging step, a 3D object has been partitioned into meaningful regions. The vertices and triangles inside a region are assigned with the region number. Within a region, the region numbers of a triangle’s three vertices are the same. If a triangle has different vertex region numbers, then this triangle is defined as a boundary triangle. Between each pair of adjacent regions, there is a boundary triangle strip. The boundary triangle strips glue these individual regions together as a whole model. Within a boundary triangle,

A B

C

the edge whose two edge vertices have the same region number is defined as the boundary edge. The boundary edges must construct the closed loops that wrap the segmented regions. However, exceptions always exist. There might be one-edge branches after the plateau erosion as demonstrated in Figure 6. In Figure 6(a), edge uv is a branch sticking out from the boundary of region 1. This results in all the adjacent triangles of vertex v are boundary triangles. We call this a boundary strip knob. To thin the knobby boundary strip, the branch pruning is necessary. In the example shown in Figure 6, we need to change the region number of the end point of the branch to its neighbour region number, and merge the corresponding triangles (t1, t2, t3, t4) to its neighbour region. The following pseudo-code demonstrates the branch pruning algorithm:

Algorithm 4: Branch pruning algorithm

Input: a segmented mesh after region merging

for v i∈V

determine whether v i is a bounder vertex

endfor

for v i∈ all boundary vertices

N← number adjacent triangles of v i

N b← 0

for t j∈ all adjacent triangles of v i

if t j is boundary triangle

N b++

else

break;

endif

endfor

if N b == N

region number of v i← its neighbour region number

merge affected triangles with same vertex region

number to corresponding region

endif

endfor

3. Segmentation-based 3D Compression ?

Region-conquer-and-stitch

After the segmentation as mentioned above, a 3D mesh is partitioned into multiple meaningful regions. Between these regions, there are boundary triangle strips that connect the adjacent regions together. In this section, we propose a segmentation-based 3D compression scheme, which is called region-conquer-and-stitch. At first, we encode each individual region separately using the famous Edgebreaker method, and place the compressed data into one stream sequentially. Then we encode the boundary triangle strips and add them to the end of the data stream. Thus, the decoder can get each individual region and glue all the regions together using the boundary strip data. The overall format of the data stream is shown in Table 1.

Table 1. Overall data stream format. Header Region 1 … Region n Boundary

strips

3.1. Region Compression using Edgebreaker

The Edgebreaker, proposed by Rossignac [11], is a popular algorithm used to encode and decode the connectivity of a simply connected triangular mesh. It guarantees a worst-case coding cost of 4 bits per vertex (bpv). King and Rossignac [5] and Gumhold [4] improved this upper bound to 3.67 and 3.522 bpv respectively. But the real attractiveness of Edgebreaker lies in the efficiency and simplicity of the algorithm. It has been recently enhanced to support meshes with multiple boundary loops or with multiple genus. This fits fairly well to our case, as after segmentation an individual region often has multiple boundary loops that connect to different neighbor regions.

Because we will use the similar idea for boundary strip encoding, we give a brief description of the Edgebreaker here. The Edgebreaker is a state machine. At each state it moves from a triangle Y to an adjacent triangle X and marks all visited triangles and their bounding vertices. Let X.l and X.r denote the left and right triangle that are incident upon X. Let v be the vertex common to X, X.l and X.r. Five situations are distinguished when it traverses the triangles as shown in Figure 7:

1.C: if v, X.l and X.r are not visited.

2.L: if v and X.l are visited and X.r is not.

3.R: if v and X.r are visited and X.l is not.

4.S: if v is visited and X.l and X.r are not.

5.E: if v and X.l and X.r are all visited.

Figure 7. Edgebreaker “CLERS”cases.

With these five cases, the Edgebreaker compression

is a recursive procedure that transverses the mesh along a spiraling triangle-spanning-tree. The recursion starts only at the triangles that are of type S and compresses the branch adjacent to the right edge of such a triangle. When the corresponding E triangle is reached, the branch traversal is complete and the routine returns from the recursion to pursue the left branch. The encounter of an E that does not match an S terminates the compression process. The decompression is a reverse operation.

We can use the Edgebreaker to compress each region separately. In our case we also need to encode a little bit more information that will be used for boundary strip coding. Those are the number of boundary loops and the coordinates of the first vertex

of each boundary loop. Details will be described in the next section. Therefore, we will add an extra header in the data stream for each region as shown in Table 2. Table 2. Data stream format for each region.

Region number Number of

boundary loop(N)

List of first vertex of

every boundary loop

Connectivity information

(CLERS sequence)

Geometry information

3.2. Boundary Triangle Strips Encoding ?

Region Stitching

We have all the regions compressed and placed into the data stream. The decoder can decompress them independently. But there are gaps between the regions. To restore the whole model, we will need to encode the boundary triangle strips that connect each region together. As described in section two, after the fast marching watershed segmentation followed by a region merging and a branch pruning, it can be ensured that there is only one single triangle strip between two adjacent regions. In other words, if we define the edge as the geodesic distance unit, then the geodesic distance between each boundary vertex and its adjacent region is one. This also implies that all the vertices have been visited. Thus, the region compression would have traversed all the vertices and encoded their geometric information. For the remaining boundary strips, we only have to encode the connectivity information. As the geometry data of the boundary strips have been stored in the compressed regions, what we need is to encode the boundary vertex indices. The Edgebreaker decompression does not guarantee the same vertex and triangle orders as the original, but we can easily get the boundary loops of each region and store the boundary vertex in the same order. Hence, as long as we know which vertex is the first one of the boundary loop, we can reorder the boundary vertices to be the same as the original. That is why we need the first vertex information of each boundary loop, as shown in Table 2. Therefore, the vertex in boundary strips will be expressed as a region number and a boundary vertex index. Figure 8 illustrates the expression of a boundary triangle t1 as ((1, 0), (1, 1), (2, m)).

Figure 8. Boundary triangle is expressed as a (region number, boundary vertex index) tuple.

Triangle strips are supported by software and hardware for efficient rendering. The triangle strip primitive is supported in many graphics libraries such as IRIS-GL or OpenGL. In Figure 9 a sequential triangle strip is shown on the left. It is called sequential because it turns alternating to the right and to the left. The order of vertices is (v0, v1, v2, v3, v4, v5, v6), and the triangle can be described as {(v i, v i+1, v i+2)} for even i and {(v i+1, v i, v i+2)} for odd i. Using the sequential strip, the transmit cost of n triangles can be reduced from 3n to n+2 vertices. The strip on the right is not sequential because it contains consecutive turns in the same direction. Such a strip is called a generalized strip. In order to describe the triangle (v5, v3, v6), vertex v3 needs to be inserted after v4. Thus the order of vertices for this strip is (v0, v1, v2, v3, v4, v3, v5, v6, v7). The decoder will delete the degenerate zero-area triangle (v4, v3, v3).

Figure 9. Sequential and generalized strips.

In our case, if a region has only one adjacent region, then the boundary strip between them is a generalized strip. However, if a region has multiple neighbors, then its boundary strip is a complex one with multiple loops. If we can decompose a complex boundary strip

v

4

v

3

v

1

v

v6

3

v

v

1

v

into a number of generalized triangle strips, then we can represent it as a number of vertex sequences. The problems are how to cut the complex strip and how to form the vertex sequence in the right order.

The solution is that we utilize the Edgebreaker-like method to traverse the boundary strips. Instead of producing the “CLERS” symbol, we store the tip vertex of the visited triangle. For a boundary triangle, we define the edge property as follows:

Definition 4: If the two end vertices of an edge in a boundary triangle belong to the same region, it is a boundary edge; otherwise, it is a bridge edge.

A boundary triangle has one boundary edge and two bridge edges. This is depicted in Figure 10. On the right of the Figure, v is the tip vertex of triangle T that is being processed; v.n and v.p denote the next and the previous vertices of v, and we are assuming the counter-clock-wise orientation. In the boundary strips, there will be only the “LERS” type of triangles because all the vertices have been visited during the region conquest. When the encoding process starts, we select an initial boundary triangle and find the first bridge edge in that triangle. Two end vertices and the corresponding tip vertex are stored as v0, v1 and v2. Then we start to traverse the boundary strips from this initial triangle and store the tip vertices into the vertex sequence. The encoding proceeds if the triangle is L or R type and splits at an S triangle. When there is an S triangle it branches to the right triangle and pushes the left edge into a stack that are shown in Figure 10 as steps 1 and 2. When we encounter an E triangle, a generalized triangle strip is generated. Then we pop up the stack and start another one. If the stack is empty we start from another un-visited triangle. The process stops when all the boundary triangles are traversed. Normally the generated triangle strips are generalized

strips. Special care needs to be taken for inserting vertices in the vertex sequence as described above. The

vertex insertion algorithm is defined as follows:

if (T’s type = last T’s type) && (type=R)

insert v.n before v

if ((T’s type = last T’s type) && (type=L)) || (type=S) insert v.p before v

In our example shown in Figure 8, the triangle list is (LRRLRLSRLLR…), and the vertex sequence after insertion will be (v0, v1, v2, v3, v2, v4, v5, v6, v7, v6, v8, v9, v10, v9, v11, v12…). The inserted vertices are v2, v6 and v9. The encoded data for boundary triangles is then a

combination of a number of generalized strips. The

data format of each strip is shown in Table 3.

Table 3. Boundary strip data stream format. Number

of strips

Number of

vertices of strip 1

Number of

triangles of strip 1 Vertex sequence of strip 1 Next strip …

The boundary strip encoding algorithm is outlined

in the following pseudo code:

Algorithm 5: Boundary strip encoding algorithm Input: a boundary strip, select an initial triangle t Recursive procedure compress(t)

while (1)

mark t as visited

find the first bridge edge and store its end

vertices.

if right triangle t.r was visited

if left triangle t.l was visited

return

else

t.type = R

store the tip vertex v

if(t.type= t last.type)

insert v.n before v

t←t.l (left neighbor triangle)

endif

else if left triangle t.l was visited

t.type = L

store the tip vertex v

if(t.type= t last.type)

insert v.p before v

t←t.r (right neighbor triangle)

else

t.type = S

store the tip vertex v

if(t.type= t last.type)

insert v.n before v

v v

compress(right t .r )

t ← t .l (left neighbor triangle) endif endwhile

The boundary triangle traversal looks like stitching multiple patches together. Therefore, we call this step region stitching.

4. Experimental Results

We have implemented the above methods on an Intel P4 platform under a Windows XP environment, using Visual C++ with an OpenGL library. In this section we give the experimental results.

Zhang [20] proposed a simple segmentation algorithm using the Gaussian curvature only. This method works well for the low-resolution models but may fail to detect concave corners for the high-resolution models. Our algorithm combines Gaussian curvature and concaveness estimation and can effectively detect the whole boundaries. In Figure 11, a high-resolution Waterneck model with 58,784 vertices and 117,564 faces is used. In this figure, clearly there is a hole at the concave corner that breaks the boundary line for Zhang’s algorithm. This results in an unfair segmentation. In contrast, our method can fix this problem and produce a meaningful segmentation.

(a) (b) Figure 11. Feature extraction for a Waterneck model. The first row shows the boundary areas in blue; the second row shows the segmentation result before region merging. (a) Zhang’s method; (b) our method using 1-ring

neighborhood.

The proposed XMR neighborhood based method can successfully segment the densely distributed model

while the 1-ring neighborhood based method may not. The comparison of these two methods is demonstrated in Figure 12. The first column is the segmentation results before region merging; the second column gives the results after region merging. The three rows are based on 1-ring, 2-ring and 3-ring neighborhoods respectively. As we can see, using the XMR neighborhood can significantly improve the accuracy

of segmentation.

Figure 12. 1-ring neighborhood vs. XMR neighborhood. The left and right columns are before and after region merging respectively.

(a)

(b)

(c ) (d) Figure 13. (a) Waterneck (117k faces); (b) Toilet (46k faces); (c) Bunny (69k faces); (d)

Teapot (2k faces).

In Figure 13, we give more segmentation. As mentioned above, for simple models like Teapot, the segmentation algorithm that is based on 1-ring neighborhood is efficient enough; for high-resolution models like Toilet, Bunny and Waterneck, using a XMR neighborhood with level 2 or 3 can produce satisfactory results. Our algorithm is efficient and fast.

It can process a simple object like Teapot within one second and can segment a large model like Waterneck with 117k faces using XMR level 3 within 50 seconds.

The output of the segmentation step is a series of independent patches and the skeleton-like boundary triangle strips. We compress them separately and place the compressed data into a stream. In a client-server environment, the client can ask for particular part(s) or the whole object. If all data has been received, the client can stitch the parts together using the final boundary strips and restore to the original object. Figure 14 is a simulation of this part-by-part transmission. The model we used is the high-resolution Waterneck. The receiver gets one region at each step

until the full object has been resumed.

Figure 14. Part-by-part object transmission.

Compared with the original Edgebreaker algorithm for compressing a whole object, our algorithm only has minor extra information, which are some headers and the final boundary vertex sequence. With similar compression ratio, we have the nice part-by-part feature.

5. Conclusion

In this paper, we have proposed a segmentation-based 3D mesh compression. Our contributions lie in two aspects. Firstly, the XMR neighborhood-based segmentation, which can partition any resolution models, is efficient and robust. Secondly, we compress the object into independent regions and a boundary strip, so that the decoder can get each individual part and restore the original object. This is especially useful in some interactive virtual environment applications, such as Internet gaming and remote training. The user

can get the particularly interested part(s) or the whole object step by step. In the future, we will focus on predictive geometry compression and error resilience during the transmission.

6. References

[1] L. Chevalier, F. Jaillet, and A. Baskurt, “Segmentation

and Superquadric Modeling of 3D Objects”, Journal of WSCG, Vol. 11, No.1, WSCG2003, Feb. 2003. [2] M. Deering, “Geometry compression”, ACM

SIGGRAPH, 1995, pp. 13-20.

[3] M. Garland, A. Willmott, and P. S. Heckbert,

“Hierarchical Face Clustering on Polygon Surfaces”, ACM Symposium on Interactive 3D Graphics, pp. 49-58, March 2001.

[4] S. Gumhold and W. Stra?er, “Real time compression of

triangle mesh connectivity”, ACM SIGGRAPH, pp. 133-140, 1998.

[5] D. King and J. Rossignac, “Guaranteed 3.67v bit

encoding of planar triangle graphs”, Proc. of 11th CCCG, pp. 146-149, 1999.

[6] J. Li, and C.-C. J. Kuo, “Embedding coding of 3D

graphic models”, ICIP’97, Vol. 1, pp. 57-60.

[7] A. Mangan, and R. Whitaker, “Partitioning 3D Surface

Meshes Using Watershed Segmentation”, IEEE Trans. Visualization and Computer Graphics, Vol. 5, No. 4, pp. 308-321, Oct.-Dec. 1999.

[8] S. Pulla, A. Razdan, and G. Farin, “Improved Curvature

Estimation for Watershed Segmentation of 3-Dimensional Meshes”, Submitted to IEEE Trans. Visualization and Computer Graphics, 2002

[9] A. Razdan, and M. Bae, “A Hybrid Approach to Feature

Segmentation of 3-Dimensional Meshes”, Computer-Aided Design, Apr. 2002. [10] M. E. Rettmann, X. Han, C. Xu, and J. L. Prince,

“Automated Sulcal Segmentation Using Watersheds on the Cortical Surface”, NeuroImage, No. 15, pp. 329-344, 2002.

[11] J. Rossignac, “Edgebreaker: Connectivity compression

for triangle meshes”, IEEE Trans. Visualization and Computer Graphics, vol. 5, no. 1, pp. 47-61, 1999.

[12] W. Schroeder, J. Zarge, and W. Lorensen, “Decimation

of Triangle Meshes”, Computer Graphics, Volume 25, No. 3, (Proc. SIGGRAPH `92), July, 1992, pp. 65-70. [13] G. Taubin, W.P. Horn, F. Lazarus, and J. Rossignac,

“Geometry coding and VRML”, Proc. of the IEEE vol. 96(6):1228-1243, 1998. [14] C. Touma and C. Gostman, “Triangle mesh

compression”, Proc. GI’98, pp. 26-34.

[15] K. Wu, and M. D. Levine, “3D Part Segmentation Using

Simulated Electrical Charge Distributions”, IEEE Trans. Pattern Analysis and Machine Intelligence, Vol. 19, pp. 1223-1235, Nov. 1997.

[16] Y. Zhang, J. K. Paik, A. Koschan, M. A. Abidi, and D.

Gorsich, “A Simple and Efficient Algorithm for Part Decomposition of 3D Triangulated Models Based on Curvature Analysis”, Proc. Int. Conf. Image Processing, Rochester, New York, Vol. III, pp. 273-276, Sep. 2002.

[17] L. Chen, N. D. Georganas, “3D Mesh Compression

Using an Efficient Neighborhood-based Segmentation”, Proc. 9th IEEE International Symposium on Distributed Simulation and Real-time Applications (DS-RT 2005), pp. 78-85, Montreal, Oct. 2005.

[18] L. Chen, N. D. Georganas, “An Efficient and Robust

Algorithm for 3D Mesh Segmentation”, Multimedia Tools and Applications, Vol. 29, pp. 109-125, June 2006.

ANSYS网格划分总结大全

有限元分析中的网格划分好坏直接关系到模型计算的准确性。本文简述了网格划分应用的基本理论,并以ANSYS限元分析中的网格划分为实例对象,详细讲述了网格划分基本理论及其在工程中的实际应用,具有一定的指导意义。 1 引言 ANSYS有限元网格划分是进行数值模拟分析至关重要的一步,它直接影响着后续数值计算分析结果的精确性。网格划分涉及单元的形状及其拓扑类型、单元类型、网格生成器的选择、网格的密度、单元的编号以及几何体素。从几何表达上讲,梁和杆是相同的,从物理和数值求解上讲则是有区别的。同理,平面应力和平面应变情况设计的单元求解方程也不相同。在有限元数值求解中,单元的等效节点力、刚度矩阵、质量矩阵等均用数值积分生成,连续体单元以及壳、板、梁单元的面内均采用高斯(Gauss)积分,而壳、板、梁单元的厚度方向采用辛普生(Simpson)积分。辛普生积分点的间隔是一定的,沿厚度分成奇数积分点。由于不同单元的刚度矩阵不同,采用数值积分的求解方式不同,因此实际应用中,一定要采用合理的单元来模拟求解。 2 ANSYS网格划分的指导思想 ANSYS网格划分的指导思想是首先进行总体模型规划,包括物理模型的构造、单元类型的选择、网格密度的确定等多方面的内容。在网格划分和初步求解时,做到先简单后复杂,先粗后精,2D单元和3D单元合理搭配使用。为提高求解的效率要充分利用重复与对称等特征,由于工程结构一般具有重复对称或轴对称、镜象对称等特点,采用子结构或对称模型可以提高求解的效率和精度。利用轴对称或子结构时要注意场合,如在进行模态分析、屈曲分析整体求解时,则应采用整体模型,同时选择合理的起点并设置合理的坐标系,可以提高求解的精度和效率,例如,轴对称场合多采用柱坐标系。有限元分析的精度和效率与单元的密度和几何形状有着密切的关系,按照相应的误差准则和网格疏密程度,避免网格的畸形。在网格重划分过程中常采用曲率控制、单元尺寸与数量控制、穿透控制等控制准则。在选用单元时要注意剪力自锁、沙漏和网格扭曲、不可压缩材

网格划分实例详细步骤

一个网格划分实例的详解 该题目条件如下图所示: Part 1:本部分将平台考虑成蓝色的虚线 1. 画左边的第一部分,有多种方案。 方法一:最简单的一种就是不用布置任何初始的2dmesh直接用one volume 画,画出来的质量相当不错。 One volume是非常简单而且强大的画法,只要是一个有一个方向可以 mapped的实体都可以用这个方法来画网格,而事实上,很多不能map的单元也都可以用这个命令来画,所以在对三维实体进行网格划分的时候,收件推荐用one volume来试下效果,如果效果不错的话,就没有必要先做二维单元后再来画。 方法二:先在其一个面上生成2D的mesh,在来利用general选项,这样的优点是可以做出很漂亮的网格。

相比之下:方法二所做出来的网格质量要比一要高。 2. 画第二段的网格,同样演示两种方法: 方法一:直接用3D>solid map>one volume 方法二:从该段图形来看,左端面实际上由3个面组成,右端面由一个部分组成,故可以先将左端面的另两个部分的面网格补齐,再用general选项来拉伸,但是,问题是左面砖红色的部分仅为3D单元,而没有可供拉伸的源面网格,故,应该先用face命令生成二维网格后,再来拉伸,其每一步的结果分见下:

在用general选项时,有个问题需要注意:在前面我们说过,source geom和elemes to drag二选一都可以,但是这里就不一样了,因为source geom选面的话,只能选择一个面,而此处是3个面,所以这里只能选elemes to drag而不能选择source geom.

ANSYS网格划分的一些例子

虽然做出来了.但是我还是有一个问题想请教大家: vsweep和mapp分网后形成网格各有什么规律?如何结合两种方法划分出整齐规则的网格呢. 比如:为什么图中的(1)部分用MAPP划分,(2)部分用SWEEP划分呢就可以出现上图中的那种整齐规则的网格?反过来(1)部分用SWEEP,(2)部分用MAPP划分就不会出现整齐规则的网格呢? 部分(1)和部分(2)不可看成一个整体划分吗? 我试了一个,如果把两个部分看成整体,可以分网但是不会出现那种整齐的网格. 只有掌握了生成网格规律才容易得到合理,整齐,规则的网格,总不能分网时把各种方法都试一遍吧. 恳请各位谈点自己的在分网方面的经验.谢谢 1的三个边如果都设了分段数则sweep和map是一样的 et,1,42 et,2,45 cyl4,,,20 lsel,all lesize,all,,,10

esize,,10 vext,1,,,,,20 aclear,all amesh,1 不过好象中间不大好的!!!还望高手指点! 命令流; et,1,42 et,2,45 blc4,,,10,5 lesize,1,,,5 lesize,2,,,10 mshape,0,2d mshkey,1 amesh,1 esize,,5 vrotat,1,,,,,,1,4 aclear,all

用map也可以,,取其四分之一,单元大小可控制!做了一个!

/PREP7 CYL4, , ,5 RECTNG,-1,1,-1,1, FLST,2,2,5,ORDE,2 FITEM,2,1 FITEM,2,-2 AOVLAP,P51X wpro,,90.000000, wpro,,,45.000000 ASBW, 3 wpro,,,-45.000000 wpro,,,-45.000000 FLST,2,2,5,ORDE,2 FITEM,2,1 FITEM,2,4 ASBW,P51X wpro,,,45.000000 wpro,,90.000000, ET,1,PLANE42 ESIZE,1,0, AMAP,6,12,9,7,8 WPSTYLE,,,,,,,,0 AMAP,7,12,10,5,8 AMAP,3,10,11,6,5 AMAP,5,6,7,9,11 AMAP,2,8,5,6,7 TYPE, 1 EXTOPT,ESIZE,10,0, EXTOPT,ACLEAR,0 EXTOPT,ATTR,0,0,0 MAT,_Z2 REAL,_Z4 ESYS,0 ET,2,SOLID45 TYPE, 2 EXTOPT,ESIZE,10,0, EXTOPT,ACLEAR,0 EXTOPT,ATTR,0,0,0 MAT,_Z2 REAL,_Z4 ESYS,0 VOFFST,2,5, , VOFFST,6,5, , VOFFST,7,5, ,

ANSYS结构有限元分析中的网格划分技术及其应用实例

一、前言 有限元网格划分是进行有限元数值模拟分析至关重要的一步,它直接影响着后续数值计算分析结果的精确性。网格划分涉及单元的形状及其拓扑类型、单元类型、网格生成器的选择、网格的密度、单元的编号以及几何体素。从几何表达上讲,梁和杆是相同的,从物理和数值求解上讲则是有区别的。同理,平面应力和平面应变情况设计的单元求解方程也不相同。在有限元数值求解中,单元的等效节点力、刚度矩阵、质量矩阵等均用数值积分生成,连续体单元以及壳、板、梁单元的面内均采用高斯(Gauss)积分,而壳、板、梁单元的厚度方向采用辛普生(Simpson)积分。辛普生积分点的间隔是一定的,沿厚度分成奇数积分点。由于不同单元的刚度矩阵不同,采用数值积分的求解方式不同,因此实际应用中,一定要采用合理的单元来模拟求解。 CAD软件中流行的实体建模包括基于特征的参数化建模和空间自由曲面混合造型两种 方法。Pro/E和SoildWorks是特征参数化造型的代表,而CATIA与Unigraphics等则将特征参数化和空间自由曲面混合造型有机的结合起来。现有CAD软件对表面形态的表示法已经大大超过了CAE软件,因此,在将CAD实体模型导入CAE软件的过程中,必须将CAD 模型中其他表示法的表面形态转换到CAE软件的表示法上,转换精度的高低取决于接口程序的好坏。在转换过程中,程序需要解决好几何图形(曲线与曲面的空间位置)和拓扑关系(各图形数据的逻辑关系)两个关键问题。其中几何图形的传递相对容易实现,而图形间的拓扑关系容易出现传递失败的情况。数据传递面临的一个重大挑战是,将导入CAE程序的CAD模型改造成适合有限元分析的网格模型。在很多情况下,导入CAE程序的模型可能包含许多设计细节,如细小的孔、狭窄的槽,甚至是建模过程中形成的小曲面等。这些细节往往不是基于结构的考虑,保留这些细节,单元数量势必增加,甚至会掩盖问题的主要矛盾,对分析结果造成负面影响。 CAD模型的“完整性”问题是困扰网格剖分的障碍之一。对于同一接口程序,数据传递的品质取决于CAD模型的精度。部分CAD模型对制造检测来说具备足够的精度,但对有限元网格剖分来说却不能满足要求。值得庆幸的是,这种问题通常可通过CAD软件的“完整性检查”来修正。改造模型可取的办法是回到CAD系统中按照分析的要求修改模型。一方面检查模型的完整性,另一方面剔除对分析无用的细节特征。但在很多情况下,这种“回归”很难实现,模型的改造只有依靠CAE软件自身。CAE中最直接的办法是依靠软件具有的“重构”功能,即剔除细部特征、缝补面和将小面“融入”大曲面等。有些专用接口在模型传递过程中甚至允许自动完成这种工作,并且通过网格剖分器检验模型的“完整性”,如发现“完整性”不能满足要求,接口程序可自动进行“完整性”修复。当几何模型距CAE分析的要求相差太大时,还可利用CAE程序的造型功能修正几何模型。“布尔运算”是切除细节和修理非完整特征的有效工具之一。 目前数据传递一般可通过专用数据接口,CAE程序可与CAD程序“交流”后生成与CAE 程序兼容的数据格式。另一种方式是通过标准图形格式如IGES、SAT和ParaSolid传递。现有的CAD平台与通用有限元平台一般通过IGES、STL、Step、Parasolid等格式来数据

各种网格划分方法

各种网格划分方法 1.输入实体模型尝试用映射、自由网格划分,并综合利用多种网格划分控制方法 本题提供IGES 文件 1. 以轴承座为例,尝试对其进行映射,自由网格划分,并练习一般后处理的多种技术,包 括等值图、云图等图片的获取方法,动画等。 2. 一个瞬态分析的例子 练习目的:熟悉瞬态分析过程 瞬态(FULL)完全法分析板-梁结构实例 如图所示板-梁结构,板件上表面施加随时间变化的均布压力,计算在下列已知条件下结构的瞬态响应情况。 全部采用A3钢材料,特性: 杨氏模量=2e112/m N 泊松比=0.3 密度=7.8e33 /m Kg 板壳: 厚度=0.02m 四条腿(梁)的几何特性: 截面面积=2e-42m 惯性矩=2e-84m 宽度=0.01m 高度=0.02m 压力载荷与时间的 关系曲线见下图所示。 图 质量梁-板结构及载荷示意图 0 1 2 4 6 时间(s ) 图 板上压力-时间关系 分析过程 第1步:设置分析标题 1. 选取菜单途径Utility Menu>File>Change Title 。 2. 输入“ The Transient Analysis of the structure ”,然后单击OK 。 第2步:定义单元类型 单元类型1为SHELL63,单元类型2为BEAM4 第3步:定义单元实常数 实常数1为壳单元的实常数1,输入厚度为0.02(只需输入第一个值,即等厚度壳)

实常数2为梁单元的实常数,输入AREA 为2e-4惯性矩IZZ=2e-8,IYY =2e-8宽度TKZ=0.01,高度TKY=0.02。 第5步:杨氏模量EX=2e112/m N 泊松比NUXY=0.3 密度DENS=7.8e33 /m Kg 第6步:建立有限元分析模型 1. 创建矩形,x1=0,x2=2,y1=0,y2=1 2. 将所有关键点沿Z 方向拷贝,输入DZ =-1 3. 连线。将关键点1,5;2,6;3,7;4,8分别连成直线。 4. 设置线的分割尺寸为0.1,首先给面划分网格;然后设置单元类型为2,实常数为2, 对线5到8划分网格。 第7步:瞬态动力分析 1. 选取菜单途径Main Menu>Solution>-Analysis Type-New Analysis ,弹出New Analysis 对话框。 2. 选择Transient ,然后单击OK ,在接下来的界面仍然单击OK 。 3. 选取菜单途径Main Menu>Solution>-Load Step Opts-Time/Frequenc> Damping , 弹出Damping Specifications 窗口。 4. 在Mass matrix multiplier 处输入5。单击OK 。 5. 选取菜单途径Main Menu > Solution > -Loads-Apply > -Structural- Displacement>On Nodes 。弹出拾取(Pick )窗口,在有限元模型上点取节点232、242、252和262,单击OK ,弹出Apply U,ROT on Nodes 对话框。 6. 在DOFS to be constrained 滚动框中,选种“All DOF ”(单击一次使其高亮度显示, 确保其它选项未被高亮度显示)。单击OK 。 7. 选取菜单途径Utility Menu>Select>Everything 。 8. 选取菜单途径Main Menu>Solution>-Load Step Opts-Output Ctrls>DB/Results File ,弹出Controls for Database and Results File Writing 窗口。 9. 在Item to be controlled 滚动窗中选择All items ,下面的File write frequency 中选择Every substep 。单击OK 。 10. 选取菜单途径Main Menu>Solution>-Load Step Opts-Time/Frequenc> Time – Time Step ,弹出Time – Time Step Options 窗口。 11. 在Time at end of load step 处输入1;在Time step size 处输入0.2;在Stepped or ramped b.c 处单击ramped ;单击Automatic time stepping 为on ;在Minimum time step size 处输入0.05;在Maximum time step size 处输入0.5。单击OK 。 12. 选取菜单途径Main Menu>Solution>-Loads-Apply>-Structure-Pressure>On Areas 。弹出Apply PRES on Areas 拾取窗口。 13. 单击Pick All ,弹出Apply PRES on Areas 对话框。 14. 在pressure value 处输入10000。单击OK 15. 选取菜单途径Main menu>Solution>Write LS File ,弹出Write Load Step File 对 话框。 16. 在Load step file number n 处输入1,单击OK 。 17. 选取菜单途径Main Menu>Solution>-Load Step Opts-Time/Frequenc> Time – Time Step ,弹出Time – Time Step Options 窗口。

hypermesh六面体网格划分指导(含实例)

1. 网格划分 1.1 Hypermesh 中六面体网格划分的功能介绍 ?六面体网格划分的工具主要有: ?Drag ?Spin ?Line drag ?element offset ?solid map ?其中solid map集成了部分其它功能; 1.1.1:drag 面板 此面板的功能是在二维网格接触上沿着一个线性路径挤压拉伸而形成三维实体单元。要求: 1)有初始的二维网格; 2)截面保持不变:相同尺寸,相同曲率和空间中的相同方向; 3)线性路径。 1.1.2:spin 面板 -1-

此面板的功能是在二维网格基础上沿着一个旋转轴旋转一定角度形成三维实体单元。要求: 1)有初始的二维网格; 2)界面保持不变; 3)圆形路径; 4)不能使用在没有中心孔的实体部件上。 1.1.3:line drag 面板 此面板的功能上在二维网格的基础上沿着一条线拉伸成三维实体单元。 要求: 1)初始的二维网格; 2)截面保持不变; 3)有一条定义的曲线或直线路径。 1.1.4:element offset 面板 此面板的功能是在二维网格的基础上沿着法线方向偏置挤压形成三维实体单元。 要求: 1)初始的二维网格; 2)截面可以是非平面的; -2-

-3- 3) 常厚度或者近似常厚度。 1.1.5:soild map 面板 此面板的功能是在二维网格基础上,首先挤压网格,然后将挤压的网格映射到一个由几何要 素定义的实体中,从而形成三维实体单元。 1.2 drag 面板网格划分指导 导入几何,drag 实体之前必须先生成2D 网格,如下图 拉伸的距离 定义方向 需要拉伸的层数

有限元网格划分方法与基本原理

结构有限元分析中的网格划分技术及其应用实例 结构有限元分析中的网格划分是否直接关系到解算的效果。本文简述了网格划分应用的基本理论,并以空间自由曲面覆盖件和大型整体网络钢筋壳体产品的有限元分析中的网格划分为实例对象,详细讲述了空间自由和三维实体的网格划分基本理论及其在工程中的实际应用,非常具有现实意义和借鉴价值。 一、前言 有限元网格划分是进行有限元数值模拟分析至关重要的一步,它直接影响着后续数值计算分析结果的精确性。网格划分涉及单元的形状及其拓扑类型、单元类型、网格生成器的选择、网格的密度、单元的编号以及几何体素。从几何表达上讲,梁和杆是相同的,从物理和数值求解上讲则是有区别的。同理,平面应力和平面应变情况设计的单元求解方程也不相同。在有限元数值求解中,单元的等效节点力、刚度矩阵、质量矩阵等均用数值积分生成,连续体单元以及壳、板、梁单元的面内均采用高斯(Gauss)积分,而壳、板、梁单元的厚度方向采用辛普生(Simpson)积分。辛普生积分点的间隔是一定的,沿厚度分成奇数积分点。由于不同单元的刚度矩阵不同,采用数值积分的求解方式不同,因此实际应用中,一定要采用合理的单元来模拟求解。 CAD软件中流行的实体建模包括基于特征的参数化建模和空间自由曲面混合造型两种 方法。Pro/E和SoildWorks是特征参数化造型的代表,而 CATIA与Unigraphics等则将特征参数化和空间自由曲面混合造型有机的结合起来。现有CAD软件对表面形态的表示法已经大大超过了CAE软件,因此,在将CAD实体模型导入CAE软件的过程中,必须将CAD模型中其他表示法的表面形态转换到CAE软件的表示法上,转换精度的高低取决于接口程序的好坏。在转换过程中,程序需要解决好几何图形(曲线与曲面的空间位置)和拓扑关系(各图形数据的逻辑关系)两个关键问题。其中几何图形的传递相对容易实现,而图形间的拓扑关系容易出现传递失败的情况。数据传递面临的一个重大挑战是,将导入CAE程序的CAD模型改造成适合有限元分析的网格模型。在很多情况下,导入CAE程序的模型可能包含许多设计细节,如细小的孔、狭窄的槽,甚至是建模过程中形成的小曲面等。这些细节往往不是基于结构的考虑,保留这些细节,单元数量势必增加,甚至会掩盖问题的主要矛盾,对分析结果造成负面影响。 CAD模型的“完整性”问题是困扰网格剖分的障碍之一。对于同一接口程序,数据传递的品质取决于CAD模型的精度。部分CAD模型对制造检测来说具备足够的精度,但对有限元网格剖分来说却不能满足要求。值得庆幸的是,这种问题通常可通过CAD软件的“完整性检查”来修正。改造模型可取的办法是回到CAD系统中按照分析的要求修改模型。一方面检查模型的完整性,另一方面剔除对分析无用的细节特征。但在很多情况下,这种“回归”很难实现,模型的改造只有依靠 CAE软件自身。CAE中最直接的办法是依靠软件具有的“重构”功能,即剔除细部特征、缝补面和将小面“融入”大曲面等。有些专用接口在模型传递过程中甚至允许自动完成这种工作,并且通过网格剖分器检验模型的“完整性”,如发现“完整性”不能满足要求,接口程序可自动进行“完整性”修复。当几何模型距 CAE分析的要求相差太大时,还可利用CAE程序的造型功能修正几何模型。“布尔运算”是切除细节和修理非完整特征的有效工具之一。 目前数据传递一般可通过专用数据接口,CAE程序可与CAD程序“交流”后生成与CAE 程序兼容的数据格式。另一种方式是通过标准图形格式如IGES、 SAT和ParaSolid传递。现有的CAD平台与通用有限元平台一般通过IGES、STL、Step、Parasolid等格式来数据交

有限元网格划分

本文讨论了有限元网格的重要概念,包括单元的分类、有限元误差的分类与影响因素;并讨论分析结果的收敛性控制方法,并由实例说明了网格质量及收敛性对取得准确分析结果的重要性。同时讨论了一些重要网格控制的建议及其他网格设定的说明。 一、基本有限元网格概念 1.单元概述 几何体划分网格之前需要确定单元类型。单元类型的选择应该根据分析类型、形状特征、计算数据特点、精度要求和计算的硬件条件等因素综合考虑。为适应特殊的分析对象和边界条件,一些问题需要采用多种单元进行组合建模。 2.单元分类 选择单元首先需要明确单元的类型,在结构有限元分析中主要有以下一些单元类型:平面应力单元、平面应变单元、轴对称实体单元、空间实体单元、板单元、壳单元、轴对称壳单元、杆单元、梁单元、弹簧单元、间隙单元、质量单元、摩擦单元、刚体单元和约束单元等。根据不同的分类方法,上述单元可以分成以下不同的形式。 3.按照维度进行单元分类 根据单元的维数特征,单元可以分为一维单元、二维单元和三维单元。 一维单元的网格为一条直线或者曲线。直线表示由两个节点确定的线性单元。曲线代表由两个以上的节点确定的高次单元,或者由具有确定形状的线性单元。杆单元、梁单元和轴对称壳单元属于一维单元,如图1~图3所示。

二维单元的网格是一个平面或者曲面,它没有厚度方向的尺寸。这类单元包括平面单元、轴对称实体单元、板单元、壳单元和复合材料壳单元等,如图4所示。二维单元的形状通常具有三角形和四边形两种,在使用自动网格剖分时,这类单元要求的几何形状是表面模型或者实体模型的边界面。采用薄壳单元通常具有相当好的计算效率。 三维单元的网格具有空间三个方向的尺寸,其形状具有四面体、五面体和六面体,这类单元包括空间实体单元和厚壳单元,如图5所示。在自动网格划分时,它要求的是几何模型是实体模型(厚壳单元是曲面也可以)。 4.按照插值函数进行单元分类 根据单元插值函数多项式的最高阶数多少,单元可以分为线性单元、二次单元、三次单元和更高次的单元。 线性单元具有线性形式的插值函数,其网格通常只具有角节点而无边节点,网格边界为直线或者平面。这类单元的优点是节点数量少,在精度要求不高或

Gambit网格划分实例

GAMBIT圆/圆柱体的高质量网格划分(钱币划分) 1)先在opteration--geometry-volumn中创建了一个高为100,半径15的圆柱体。然后再圆柱的底面建立了一个边长为8的正方形,将正方形旋转45度,使正方形的一个顶点跟底面圆的点对齐,然后将圆周分割为4等分,将这4个顶点和正方形的四个顶点连成线,效果如图所示: 2)然后用这四条线沿Z轴正向的矢量方向长出4个面,效果如图:

3)用正方形去分割底面圆,注意选择connected选项,再用刚才形成的四个面去分割那个古钱形的底面,把它分成4部分,如果做到这一步,基本难的地方就过去了,效果如图所示: 4)下面就是把对应边划分网格,注意正方形每条边对应的圆弧边划分的网格份数是一样的,效果如图: 5)划分面网格,选择map结构的四边形网格,效果如图:

6)最后划分体网格,按照cooper方式的六面体网格来划分,效果如图:

如何用gambit生成机翼结构网格 现在很多新手在用gambit划分网格的时候,习惯性的直接生成体网格,这样做确实简单,但是简单省力的同时就蕴藏着风险,当遇到复杂外形的时候,就长不了结构网格或者是生成的网格质量很差,为什么会这样?因为要划分一套高质量的网格,在gambit中直接划分体网格是不恰当滴。 那如何在gambit中划分结构网格呢?了解pointwise或者icem的同学都知道,这些牛b软件划分网格的思路都是分区,所以要在gambit中划分结构网格,其基本思路也是要分区,想偷懒直接划分体网格是行不通的哦。 下面开始讲课: 1.导入实体

2.将面移动至中心位置 3.在yz平面生成一个圆 4.将圆绕着x轴旋转90°

Gambit网格划分实例

GAMBIT圆/圆柱体的高质量网格划分(钱币划分) 1)先在opteration--geometry-volumn中创建了一个高为100,半径15的圆柱体。然后再圆柱的底面建立了一个边长为8的正方形,将正方形旋转45度,使正方形的一个顶点跟底面圆的点对齐,然后将圆周分割为4等分,将这4个顶点和正方形的四个顶点连成线,效果如图所示: 2)然后用这四条线沿Z轴正向的矢量方向长出4个面,效果如图:

3)用正方形去分割底面圆,注意选择connected选项,再用刚才形成的四个面去分割那个古钱形 的底面,把它分成4部分,如果做到这一步,基本难的地方就过去了,效果如图所示: 4)下面就是把对应边划分网格,注意正方形每条边对应的圆弧边划分的网格份数是一样的,效果如图: 5)划分面网格,选择map结构的四边形网格,效果如图:

6)最后划分体网格,按照cooper方式的六面体网格来划分,效果如图:

如何用gambit生成机翼结构网格 现在很多新手在用gambit划分网格的时候,习惯性的直接生成体网格,这样做确实简单,但是简单省力的同时就蕴藏着风险,当遇到复杂外形的时候,就长不了结构网格或者是生成的网格质量很差,为什么会这样?因为要划分一套高质量的网格,在gambit中直接划分体网格是不恰当滴。 那如何在gambit中划分结构网格呢?了解pointwise或者icem的同学都知道,这些牛b软件划分网格的思路都是分区,所以要在gambit中划分结构网格,其基本思路也是要分区,想偷懒直接划分体网格是行不通的哦。 下面开始讲课: 1.导入实体

2.将面移动至中心位置 3.在yz平面生成一个圆 4.将圆绕着x轴旋转90°

Solid Edge_Simulation模型简化与网格划分实例

Solid Edge Simulation车架模型简化与网格划分实例 NST(Beijing)有限公司Frank Fang 关键词:Solid Edge;Simulation;NX Nastran;Femap;CAE;模型简化;网格划分;面网格 1、使用Solid Edge Simulation对车架模型简化及思路 Solid Edge Simulation是西门子旗下三维设计软件Solid Edge中一个比较强大的分析模块,不但可以对零部件进行模拟分析,也可以对大型装配设备进行装配级的分析。最新的版本Solid Edger ST5中的分析类型包括:线性静态分析、正则模态分析、线性屈曲(失稳)分析、稳态传热分析、稳态传热+线性静态、稳态传热+线性屈曲等;网格类型包括:线单元(梁)、面单元(曲面)、体单元(四面体)、混合单元(曲面、四面体)等。 Solid Edge Simulation在做仿真分析时有两个菜单:仿真几何体和仿真,如下图: 仿真几何体:对要分析的几何模型进行简化、编辑等操作; 仿真:定义要分析的几何体,施加载荷、约束,定义装配体的连接关系,网格划分及求解。 现有某一车架要进行模拟分析,其整个结构的大框架是由标准型材构成,一些其它零件由零件、或钣金件构成,如下图所示。如果型材是调用标准件库的零件,则这些零件是part文件,而不是psm 钣金文件;这样在做分析时,这些标准的part是不能抽取中面的,只有那些psm文件才能抽取中面。对于这些part文件,如果想要划分面网格就需要另想办法。 如果对part不能抽取中面,但要得到中面,则可以用另外一种思路:先复制几何体的外表面,然后将外表面向内偏移1/2壁厚,再延伸使之相交,并修剪多余的曲面,然后在相交处做分割,这个就会得到所需要的中面。

相关文档
最新文档