A real-time dynamic sectioning method and device for a real scene three-dimensional model
Patent Information
- Application Number
- CN202310415775.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-04-18
- Publication Date
- 2026-09-22
- Estimated Expiration
- 2043-04-18
AI Technical Summary
[0002]如今数字孪生技术发展迅速,三维模型的显示、三维立体可视化分析和应用越来越受欢迎;但是在各个专业领域中,如自然资源国土空间规划、地质勘探等行业,传统三维模型展示已经无法满足人们对基于三维模型进行三维分析、可视化的需求,例如在地下管线规划和应急抢修应用中,可以基于三维场景中的剖面分析和开挖分析,辅助管线设计及应急抢险指挥,而这些应用场景则需要使用程序或者算法将三维模型进行分割拆解,根据不同的应用需求,可能还需要对切割后模型的剖切面进行填充补面,以满足模型内部结构可视化的需求
[0017]本发明具有如下优点:1、灵活方便的实现了实景三维模型体的剖切与剖切面的填充,增加了渲染三维模型剖面的时效性;2、利用基于点集构面的凹包算法,降低了剖切面构面的运算量,增加了对于构建填充复杂剖切面的成功率;3、实现了实景三维模型体的内部结构的可视化,优化了用户在进行三维可视化剖切分析时的操作体验和展示效果。
Smart Images

Figure CN116402986B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of three-dimensional model sectioning technology, and in particular to a method and apparatus for real-time dynamic sectioning of a real-scene three-dimensional model. Background Technology
[0002] Digital twin technology is developing rapidly, and the display, visualization, and application of 3D models are becoming increasingly popular. However, in various professional fields, such as natural resources and land spatial planning, and geological exploration, traditional 3D model display can no longer meet people's needs for 3D analysis and visualization based on 3D models. For example, in underground pipeline planning and emergency repair applications, cross-sectional analysis and excavation analysis in 3D scenes can be used to assist in pipeline design and emergency rescue command. These application scenarios require the use of programs or algorithms to divide and disassemble the 3D model. Depending on different application requirements, it may also be necessary to fill and repair the cut surfaces of the model after cutting to meet the needs of visualizing the internal structure of the model.
[0003] In the existing technology, there are many and relatively complete methods for sectioning 3D models. Therefore, the focus of such methods is on how to fill the section plane after sectioning the complex 3D model. In the construction of the section plane of 3D model, there are some relatively mature methods in the industry, such as the rolling ball method based on point set, PowerCrust, BoundCocone and other methods. However, these methods have certain adaptability defects, which leads to a certain degree of deviation between the contour constructed based on point set and the real contour or the failure of surface construction. Moreover, directly constructing the surface from 3D will involve more data and computation.
[0004] Another method with relatively low computational cost is to reduce the dimensionality of the 3D volume to a 2D cutting surface through mapping, and then construct a new cutting surface using the point set on the 2D cutting surface. Common methods for constructing surfaces based on 2D point sets include: Delaunay triangulation, edge rolling, and spherical rolling. However, these methods are computationally complex and have a large computational load, and cannot achieve rapid surface completion after real-time dynamic cutting of the 3D model.
[0005] Therefore, a new technical solution is needed to solve the above-mentioned technical problems. Summary of the Invention
[0006] This application provides a real-time dynamic sectioning method for a realistic 3D model, the method comprising: Display the real-world 3D model to be sectioned within a 3D scene; Input the cutting points on the surface of the real-world 3D model to be cut, and construct the cutting lines based on the cutting points; Based on the cutting line, establish the cutting plane; Use the cutting plane to cut the real-world 3D model body to be cut; The concave hull algorithm is used to fill the sectioning surface of the sectioned real-world 3D model. Apply a specified material to the filled section surface.
[0007] As a preferred approach, the steps for displaying the real-world 3D model to be sectioned in a 3D scene include: Copy the original model of the real-world 3D model to be cut into an editable 3D model, and hide the original model.
[0008] As a preferred approach, the steps of inputting cutting points on the surface of the real-world 3D model to be cut and constructing cutting lines based on the cutting points include: inputting at least two non-overlapping cutting point coordinates on the surface of the real-world 3D model to be cut, connecting the input point coordinates sequentially to form a vector, and using the vector to form a cutting line.
[0009] As a preferred approach, the steps for creating a section surface based on the section line include: transforming the section surface from the world space coordinate system to the local space coordinate system, adding a direction to the generated section line, specifying the direction of the section line as along the Z-axis, and generating a section surface for dividing the real-world 3D model body.
[0010] As a preferred approach, the steps for real-time dynamic sectioning of the real-world 3D model to be sectioned using a sectioning plane include: The solid 3D model body to be cut is divided according to the cutting plane. The solid 3D model body in the positive direction of the cutting plane normal is removed, and the solid 3D model body in the negative direction of the cutting plane normal is displayed. Calculate the relationship between the bounding box and the cutting plane of each sub-model of the real-world 3D model to be sectioned; If the bounding box intersects with the section plane, then create two empty sub-models, section1 and section2; For each triangle divided by the sectioned surface, if all three vertices of the triangle are on the side with the normal to the section surface, then store the vertex indices of the triangle in the vertex index set set1 and add the triangle to the sub-model section1. If all three vertices of the triangle are on the side with the normal to the section surface, then store the vertex indices of the triangle in the vertex index set set2 and add the triangle to section2. If a triangle intersects the cutting plane, a new triangle is created on the side with the positive direction of the cutting plane normal and on the side with the negative direction of the cutting plane normal. If the starting point and ending point of each side of the new triangle are on the side with the positive direction of the normal of the cutting plane, add the vertices of the triangle to the positive cutting plane vertex set SliceSet1; otherwise, add the vertices of the triangle to the negative cutting plane vertex set SliceSet2. If the starting and ending points of the sides of a triangle are not on the same side of the cutting plane, find the intersection points of the sides of the triangle and the cutting plane, and generate a new vertex NP. Add the new vertex NP into the two empty sub-models section1 and section2 respectively, and update the new bounding box; If submodel section1 is empty, then submodel section1 is discarded; if submodel section2 is empty, then submodel section2 is discarded.
[0011] As a preferred approach, the steps for filling the sectioned 3D model body with sectioning planes include: reducing the 3D model body to a two-dimensional sectioning plane through mapping and dimensionality reduction; generating a set of concave hull vertices C using the concave hull algorithm based on the point set S of the two-dimensional sectioning plane; and connecting all the concave hull vertex sets C sequentially according to vertex index order to generate a sectioning plane that can fill the 3D model.
[0012] The steps for calculating the set of vertices C of the concave hull are as follows: Extract the convex hull vertex set H for the point set S. If the number of convex hull vertices is less than 2 or the distance between two points is less than or equal to 0, then the extraction of the concave hull vertex set C ends. All points in the marked point set S are in an unused state; Calculate the minimum side length M between points in the point set S, remove points in the convex hull vertex set H that are less than the minimum side length, take the remaining points in the convex hull vertex set H as points in the concave hull vertex set C to be output, and mark the corresponding points in the point set S as frozen. Iteratively extract points from the concave hull vertex set C and the point set S, and append points P that meet the conditions to the concave hull vertex set C until all concave hull vertices of the point set S have been extracted. Output the set of vertices of the concave hull, C.
[0013] As a preferred approach, the steps of iteratively extracting points from the concave hull vertex set C and the point set S, and appending the points P that meet the conditions to the concave hull vertex set C, until all concave hull vertices of the point set S have been calculated, include: Find the neighboring edges of each point in the set of hull vertices C, calculate the neighboring edges of each point, write the edges whose neighboring edge length is greater than the length limit R into the candidate edge list E, and mark the corresponding points in the point set S as used. If the candidate edge list E is not empty, iterate through the neighboring vertices P of the candidate edge list E, and determine whether vertex P is a concave hull vertex. If it is, add vertex P to the concave hull vertex set C.
[0014] As a preferred embodiment, the step of applying a specified material to the filled cut surface includes: The filled cut surface is triangulated, and UV texture coordinates are generated; Two new sub-models are generated from the triangles of the generated section plane, and the material of the section plane is associated with them.
[0015] As a preferred approach, a real-time dynamic sectioning method for real-world 3D models is applied to the collision body of the real-world 3D model itself to generate a new convex hull collision body.
[0016] A real-time dynamic slicing device for a realistic 3D model, comprising: 3D scene display module: Displays the real-world 3D model to be sectioned within a 3D scene; Section line construction module: Input the section points on the surface of the real-world 3D model to be sectioned, and construct the section line based on the section points; Section plane construction module: Creates section planes based on section lines; Sectioning module: Uses sectioning planes to section the real-world 3D model to be sectioned; Section surface filling module: The section surface is filled with the sectioning plane of the real scene 3D model body after sectioning using the concave hull algorithm; Attach Material Module: Attaches a specified material to the filled section surface.
[0017] The present invention has the following advantages: 1. It flexibly and conveniently realizes the cutting and filling of the cutting plane of the real scene 3D model, and increases the timeliness of rendering the 3D model cutting plane; 2. It uses the concave hull algorithm based on point set surface construction to reduce the amount of computation for cutting plane construction and increase the success rate of constructing and filling complex cutting planes; 3. It realizes the visualization of the internal structure of the real scene 3D model, and optimizes the user's operation experience and display effect when performing 3D visualization cutting analysis. Attached Figure Description
[0018] Figure 1 The flowchart of this application; Implementation
[0019] To enable those skilled in the art to better understand the present application, the technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present application, and not all embodiments. Based on the embodiments in the present application, all other embodiments obtained by those skilled in the art without creative effort should fall within the scope of protection of the present application. That is, the specific implementation methods described herein are only used to illustrate and explain the present invention and are not intended to limit the present invention. Example 1
[0020] The flowchart of a real-time dynamic sectioning method for a real-scene 3D model provided by this invention is as follows: Figure 1 As shown: Step S1: Display the real-world 3D model to be cut in the 3D scene; Copy the original model of the real-world 3D model to be cut into an editable 3D model, and hide the original model.
[0021] In one embodiment, a real-time dynamic sectioning example of a real-world 3D model of an island is demonstrated in the Unreal Engine (UE). The real-world 3D model consists of the island's real-world 3D model and its 3D geological body model. First, the island's real-world 3D model and its 3D geological body model are imported into the program and set as sectionable objects. At this time, the program will copy the original island's real-world 3D model and its 3D geological body model into an editable 3D model with the same shape and material as the original model. To avoid the model being displayed repeatedly during visualization, the original island's real-world 3D model and 3D geological body model also need to be hidden.
[0022] Users can observe a panoramic real-scene 3D model of an island and its 3D geological body model from any angle and position in the 3D scene, also known as the real-scene 3D model body to be dissected.
[0023] Step S2: Input the cutting points on the surface of the real-world 3D model to be cut, and construct the cutting lines based on the cutting points.
[0024] In one embodiment, a user can input point coordinates at any location on the terrain surface, including at least two non-overlapping point coordinates. The input point coordinates are then connected sequentially to construct vectors, which are used to form a section line. At this point, the user can see the section range that they have planned and generated using the point coordinates.
[0025] Step S3: Based on the cutting line, establish the cutting plane.
[0026] In the program, the cutting plane is transformed from the world space coordinate system to the local space coordinate system. Then, a Z-axis direction is added to the vector generated in step S2, that is, the cutting plane is the plane after the cutting line is expanded to the Z-axis at a certain depth. In one embodiment, the direction is always downward (negative Z-axis), generating a cutting plane for cutting the real scene 3D model body.
[0027] Step S4: Use the cutting plane to cut the real-world 3D model body to be cut.
[0028] In one embodiment, it includes two non-overlapping point coordinates, a cutting line, and a cutting plane.
[0029] Step S41: The real-world 3D model to be cut is divided into two by a constructed cutting plane. The model with the positive direction of the cutting plane normal is removed, and the model with the negative direction of the cutting plane normal is displayed. The cutting plane normal is a vector perpendicular to the cutting plane, including the above-mentioned positive and negative cutting plane normals.
[0030] Step S42: Calculate the relationship between the bounding box and the cutting plane of each sub-mesh of the real-world 3D model to be sectioned. In UE (Unreal Engine), the 3D model is composed of multiple sub-mesh sections, and each section has a bounding box. At this time, it is necessary to calculate the relationship between the bounding box of each sub-mesh and the cutting plane. If the bounding box is on the negative side of the cutting plane normal, it is moved to the other side of the cutting plane, that is, moved to the positive side of the cutting plane normal. If the bounding box is on the positive side of the cutting plane normal, it remains stationary.
[0031] Step S43: If the bounding box intersects with the cutting plane, create two empty sub-models Section1 and Section2.
[0032] Step S44: For each triangle divided by the sectioned surface, if all three vertices of the triangle are on the side with the positive direction of the sectioned surface normal, store the vertex indices of the triangle in the vertex index set Set1 and add the triangle to Section1. If all three vertices of the triangle are on the side with the negative direction of the sectioned surface normal, store the vertex indices of the triangle in the vertex index set Set2 and add the triangle to Section2. That is, set1 represents the set of vertex indices of the triangles divided by the sectioned surface that fall within the real-world 3D model body with the positive direction of the sectioned surface normal, and set2 represents the set of vertex indices of the triangles divided by the sectioned surface that fall within the real-world 3D model body with the negative direction of the sectioned surface normal.
[0033] In UE (Unreal Engine), the smallest basic 3D model is a triangle. For each triangle, if all three vertices are in Set1, the triangle is added to Section1. If all three vertices of the triangle are in Set2, the triangle is added to Section2.
[0034] Step S45: If the triangle intersects the cutting plane, create a new triangle on the side with the positive normal direction and the side with the negative normal direction of the cutting plane.
[0035] Step S46: If the starting point and ending point of each edge of the new triangle are on the side with the positive direction of the normal of the cutting plane, add the vertex to the positive cutting plane vertex set SliceSet1; otherwise, add it to the negative cutting plane vertex set SliceSet2.
[0036] Step S47: If the starting point and ending point of the triangle's side are not on the same side of the cutting plane, it is necessary to find the intersection point of the triangle's side and the cutting plane to generate a new vertex NP. The intersection point is the new vertex NP.
[0037] Step S48: Add the new vertex NP to the two models Section1 and Section2 respectively, and update the new bounding boxes.
[0038] Step S49: If sub-model section1 is empty, discard sub-model section1; if sub-model section2 is empty, discard sub-model section2.
[0039] At this point, the sectioning of the real-world 3D model is complete.
[0040] In this embodiment, a cutting plane is used to cut the three-dimensional model by determining a cutting plane based on the coordinates of two points. If the normal direction is switched, the left or right side of the three-dimensional model divided by the cutting plane can be discarded. Specifically, the front or back of the cutting plane is the cutting line extended along the axis.
[0041] In another embodiment, the point coordinates are input as n (n greater than 2) non-overlapping points that are convex polygons, which can generate n cutting planes. The panoramic 3D real-scene geographic model of an island is cut open with an n-sided hole, and the side (cutting plane) structure of the hole can also be displayed. In this embodiment, the method can also set the normal direction of the cutting plane, thereby switching the positive and negative directions of the cutting plane.
[0042] In another embodiment, if a closed shape composed of three or more non-overlapping point coordinates is used to section the terrain, the excavation mode and the sectioning mode can be switched by adjusting the normal direction of the sectioning plane: (1) Excavation mode: This method will remove the model in the positive direction of the normal of the cutting surface. So when the positive direction of the normal points to the inside of the cutting area, the three-dimensional model of that area will be cut off, leaving the three-dimensional model outside the cutting range. At this time, a pit of the same size as the cutting range will appear in the model, and the side of the pit will be filled with the specified material.
[0043] (2) Sectioning mode: When the normal direction of the sectioning plane points to the outside of the sectioning area, the model outside the area will be cut off, and only the three-dimensional model of the sectioning area will be retained. The side of the three-dimensional model will be filled with the specified material.
[0044] Step S5: Use the concave hull algorithm to fill the section surface of the sectioned real-world 3D model.
[0045] A panoramic real-world 3D geographic model and its 3D geological model of an island are reduced in dimensionality through mapping and collapse into a 2D cross-section. The point set S of the 2D cross-section is used to generate a set of concave hull vertices C using the concave hull algorithm. All the concave hull vertex sets C are connected sequentially according to vertex index order to generate a cross-section that can fill the real-world 3D model.
[0046] That is, after the panoramic 3D real-scene geographic model is segmented, each vertex of each triangle side will be projected onto the two-dimensional segmentation plane, and these points on the two-dimensional segmentation plane constitute the point set S.
[0047] Specifically: given a point set S and a length constraint R, the steps for calculating the set of vertices of the concave hull C are as follows: Step S51: Extract the convex hull vertex set H for the point set S. If the number of convex hull vertices is less than 2 or the distance between two points is less than or equal to 0, then the extraction of the concave hull vertex set C ends. Step S52: Mark all points in point set S as unused; Step S53: Calculate the minimum side length M between points in the point set S, remove points in the convex hull vertex set H that are less than the minimum side length, take the remaining points in the convex hull vertex set H as points in the concave hull vertex set C to be output, and mark the corresponding points in the point set S as frozen. Step S54: Iteratively extract points from the concave hull vertex set C and the point set S, and add the points P that meet the conditions to the concave hull vertex set C until all concave hull vertices of the point set S have been obtained. Step S55: Output the set of concave hull vertices C, and finally generate a closed polygon based on the output set of concave hull vertices C.
[0048] More preferably, step S54 includes the following steps: S541: Find the neighboring edges of each point in the set of vertices of the concave hull C, calculate the neighboring edges of each point, write the edges whose neighboring edge length is greater than the length limit R into the candidate edge list E, and mark the corresponding points in the point set S as used. S542: If the candidate edge list E is not empty, traverse the neighboring vertices P of the candidate edge list E, determine whether vertex P is a concave hull vertex, and if so, add vertex P to the concave hull vertex set C.
[0049] Step S6: Apply the specified material to the filled section surface.
[0050] The generated cut surface is triangulated, and UV texture coordinates are generated; Use the triangles of the generated section plane to generate two new sub-models (Section), and associate the material of the section plane with them. Example 2
[0051] In this embodiment, a real-time dynamic sectioning method for a real-scene 3D model is applied to the collision body of the real-scene 3D model itself to generate a new convex hull collision body.
[0052] In order to ensure that the cut real-world 3D model also has physical interaction properties, it is necessary to also cut the collision volume of the real-world 3D model itself to generate a new convex hull collision body and bind it to the cut real-world 3D model. Example 3
[0053] This embodiment provides a real-time dynamic sectioning device for a realistic 3D model, including: 3D scene display module: Displays the real-world 3D model to be sectioned within a 3D scene; Section line construction module: Input the section points on the surface of the real-world 3D model to be sectioned, and construct the section line based on the section points; Section plane construction module: Creates section planes based on section lines; Sectioning module: Uses sectioning planes to section the real-world 3D model to be sectioned; Section surface filling module: The section surface is filled with the sectioning plane of the real scene 3D model body after sectioning using the concave hull algorithm; Attach Material Module: Attaches a specified material to the filled section surface.
[0054] To provide users with a better visual experience in 3D visualization, especially in 3D natural resource visualization, this invention allows users to cut 3D models of natural resources by customizing the cutting range, such as cutting geological body models, to visualize the internal structure of geological bodies.
[0055] This invention performs real-time cutting analysis on a real-world 3D model and dynamically fills the cut surfaces during the cutting process, ultimately achieving real-time dynamic cutting analysis. Its main feature is the real-time cutting of the real-world 3D model from any cut surface, offering high efficiency and strong real-time performance. This method is particularly suitable for research in natural resources, land spatial planning, geological and mineral exploration, and underground pipelines, and is especially effective for displaying details.
[0056] The present invention has the following advantages: 1. It flexibly and conveniently realizes the cutting and filling of the cutting plane of the real scene 3D model, and increases the timeliness of rendering the 3D model cutting plane; 2. It uses the concave hull algorithm based on point set surface construction to reduce the amount of computation for cutting plane construction and increase the success rate of constructing and filling complex cutting planes; 3. It realizes the visualization of the internal structure of the real scene 3D model, and optimizes the user's operation experience and display effect when performing 3D visualization cutting analysis.
[0057] Those skilled in the art will understand that all or part of the processes in the above embodiments can be implemented by a computer program instructing related hardware. The program can be stored in a computer-readable storage medium. When the program is executed, it can include the processes of the embodiments of the above methods. The storage medium can be a magnetic disk, an optical disk, a read-only memory, or a random access memory, etc.
[0058] The above-described embodiments are merely illustrative of several implementations of the present invention, and while the descriptions are relatively specific and detailed, they should not be construed as limiting the scope of the invention. It should be noted that those skilled in the art can make various modifications and improvements without departing from the concept of the present invention, and these modifications and improvements all fall within the scope of protection of the present invention. Therefore, the scope of protection of the present invention is defined by the appended claims.
Claims
1. A method for real-time dynamic sectioning of a realistic 3D model, characterized in that, The method includes: Display the real-world 3D model to be sectioned within a 3D scene; Input the cutting points on the surface of the real-world 3D model to be cut, and construct the cutting lines based on the cutting points; Based on the cutting lines, establish the cutting plane; Use the cutting plane to cut the real-world 3D model body to be cut; The concave hull algorithm is used to fill the sectioning surface of the sectioned real-world 3D model. Apply a specified material to the filled section surface; The steps for sectioning the real-world 3D model using a sectioning plane include: The solid 3D model body to be cut is divided according to the cutting plane. The solid 3D model body in the positive direction of the cutting plane normal is removed, and the solid 3D model body in the negative direction of the cutting plane normal is displayed. Calculate the relationship between the bounding box and the cutting plane of each sub-model of the real-world 3D model to be sectioned; If the bounding box intersects with the section plane, then create two empty sub-models, section1 and section2; For each triangle divided by the sectioned surface, if all three vertices of the triangle are on the side with the positive direction of the normal of the sectioned surface, then store the vertex indices of the triangle in the vertex index set set1 and add the triangle to the sub-model section1. If all three vertices of the triangle are on the side with the negative direction of the normal of the sectioned surface, then store the vertex indices of the triangle in the vertex index set set2 and add the triangle to section2. If a triangle intersects the cutting plane, a new triangle is created on the side with the positive normal direction and the side with the negative normal direction of the cutting plane, respectively. If the starting point and ending point of each side of the new triangle are on the side with the positive direction of the normal of the cutting plane, add the vertices of the triangle to the positive cutting plane vertex set group SliceSet1; otherwise, add the vertices of the triangle to the negative cutting plane vertex set group SliceSet2. If the starting and ending points of the sides of a triangle are not on the same side of the cutting plane, find the intersection points of the sides of the triangle and the cutting plane, and generate a new vertex NP. Add the new vertex NP into the two empty sub-models section1 and section2 respectively, and update the new bounding box; If submodel section1 is empty, then submodel section1 is discarded; if submodel section2 is empty, then submodel section2 is discarded.
2. The real-time dynamic sectioning method for a realistic 3D model according to claim 1, characterized in that, The steps of inputting cutting points on the surface of the real-world 3D model to be cut, and constructing cutting lines based on the cutting points include: inputting at least two non-overlapping cutting point coordinates on the surface of the real-world 3D model to be cut, connecting the input point coordinates in sequence to form a vector, and constructing cutting lines from the vector.
3. The real-time dynamic sectioning method for a realistic 3D model according to claim 2, characterized in that, The steps to create a section surface based on the section line include: transforming the section surface from the world space coordinate system to the local space coordinate system, adding a direction along the Z-axis to the generated section line, and generating a section surface used to divide the real-world 3D model body.
4. The real-time dynamic sectioning method for a realistic 3D model according to claim 1, characterized in that, The steps for filling the sectioning surface of the sectioned real-world 3D model using the concave hull algorithm include: reducing the real-world 3D model to a two-dimensional sectioning surface through mapping and dimensionality reduction; generating a set of concave hull vertices C using the point set S of the two-dimensional sectioning surface using the concave hull algorithm; and connecting all the concave hull vertex sets C sequentially according to vertex index order to generate a sectioning surface that can fill the 3D model.
5. The real-time dynamic sectioning method for a realistic 3D model according to claim 4, characterized in that, The steps for calculating the set of vertices C of the concave hull are as follows: Extract the convex hull vertex set H for the point set S. If the number of convex hull vertices is less than 2 or the distance between two points is less than or equal to 0, then the extraction of the concave hull vertex set C ends. All points in the marked point set S are in an unused state; Calculate the minimum side length M between points in the point set S, remove points in the convex hull vertex set H that are less than the minimum side length, take the remaining points in the convex hull vertex set H as points in the concave hull vertex set C to be output, and mark the corresponding points in the point set S as frozen. Iteratively extract points from the concave hull vertex set C and the point set S, and append points P that meet the conditions to the concave hull vertex set C until all concave hull vertices of the point set S have been extracted. Output the set of vertices of the concave hull, C.
6. The real-time dynamic sectioning method for a realistic 3D model according to claim 5, characterized in that, The steps of iteratively extracting points from the concave hull vertex set C and the point set S, and appending points P that meet the conditions to the concave hull vertex set C, until all concave hull vertices in the point set S have been obtained, include: Find the neighboring edges of each point in the set of hull vertices C, calculate the neighboring edges of each point, write the edges whose neighboring edge length is greater than the length limit R into the candidate edge list E, and mark the corresponding points in the point set S as used. If the candidate edge list E is not empty, traverse the neighboring vertices P of the candidate edge list E, and determine whether vertex P is a concave hull vertex. If it is, add vertex P to the concave hull vertex set C.
7. The real-time dynamic sectioning method for a realistic 3D model according to claim 1, characterized in that, The steps for applying a specified material to the filled section surface include: The filled cut surface is triangulated, and UV texture coordinates are generated; Two new sub-models are generated from the triangles of the generated section plane, and the material of the section plane is associated with them.
8. A real-time dynamic sectioning method for a realistic 3D model according to any one of claims 1 to 7, characterized in that, A real-time dynamic sectioning method for real-world 3D models is applied to the collision body of the real-world 3D model itself to generate new convex hull collision bodies.
9. A real-time dynamic slicing device for a realistic 3D model, comprising: 3D scene display module: Displays the real-world 3D model to be sectioned within a 3D scene; Section line construction module: Input the section points on the surface of the real-world 3D model to be sectioned, and construct the section line based on the section points; Section plane construction module: Creates section planes based on section lines; Sectioning module: Uses sectioning planes to section the real-world 3D model to be sectioned; Section surface filling module: The section surface is filled with the sectioning plane of the real scene 3D model body after sectioning using the concave hull algorithm; Attach Material Module: Attaches a specified material to the filled section surface; The steps for sectioning the real-world 3D model using a sectioning plane include: The solid 3D model body to be cut is divided according to the cutting plane. The solid 3D model body in the positive direction of the cutting plane normal is removed, and the solid 3D model body in the negative direction of the cutting plane normal is displayed. Calculate the relationship between the bounding box and the cutting plane of each sub-model of the real-world 3D model to be sectioned; If the bounding box intersects with the section plane, then create two empty sub-models, section1 and section2; For each triangle divided by the sectioned surface, if all three vertices of the triangle are on the side with the positive direction of the normal of the sectioned surface, then store the vertex indices of the triangle in the vertex index set set1 and add the triangle to the sub-model section1. If all three vertices of the triangle are on the side with the negative direction of the normal of the sectioned surface, then store the vertex indices of the triangle in the vertex index set set2 and add the triangle to section2. If a triangle intersects the cutting plane, a new triangle is created on the side with the positive normal direction and the side with the negative normal direction of the cutting plane, respectively. If the starting point and ending point of each side of the new triangle are on the side with the positive direction of the normal of the cutting plane, add the vertices of the triangle to the positive cutting plane vertex set group SliceSet1; otherwise, add the vertices of the triangle to the negative cutting plane vertex set group SliceSet2. If the starting and ending points of the sides of a triangle are not on the same side of the cutting plane, find the intersection points of the sides of the triangle and the cutting plane, and generate a new vertex NP. Add the new vertex NP into the two empty sub-models section1 and section2 respectively, and update the new bounding box; If submodel section1 is empty, then submodel section1 is discarded; if submodel section2 is empty, then submodel section2 is discarded.
Citation Information
Patent Citations
Method for dynamically sectioning multiple-object model based on template buffering
CN102013113A
GIS-based BIM model sectioning display method
CN111079216A