A large-scale BIM model optimization method and system based on intelligent loading

Through dual classification of component center coordinates and bounding box boundary values ​​and screening of view cone boundary vectors, combined with dynamic adjustment of resource allocation from the user's perspective, the problems of unbalanced loading efficiency and resource utilization in large BIM models are solved, and system stability and loading efficiency are improved.

CN120030661BActive Publication Date: 2025-09-19ELLIPTIC EQUATION (SHENZHEN) INFORMATION TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202510502495.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2025-04-22
Publication Date
2025-09-19
Estimated Expiration
2045-04-22

AI Technical Summary

Technical Problem

Existing technologies have problems in large-scale BIM models, such as insufficient model segmentation accuracy, unbalanced resource utilization, and poor system stability. Especially in complex building structures and large-volume data scenarios, they are unable to effectively optimize loading efficiency and resource allocation.

Method used

Through dual classification of component center coordinates and bounding box boundary values, combined with dynamic screening of the view frustum boundary vector and user perspective, a loading block structure and preloading list are generated, the primitive level is dynamically adjusted, resource utilization is optimized, and inefficient resources are identified through loading timestamps and frame rate differences for periodic recycling.

Benefits of technology

It achieves efficient loading of large BIM models, reduces the frequency of invalid data requests, improves system stability and hardware resource utilization, and adapts to hardware heterogeneous environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120030661B_ABST
    Figure CN120030661B_ABST
Patent Text Reader

Abstract

The present invention relates to the field of computer-aided design technology, specifically a large-scale BIM model optimization method and system based on intelligent loading, comprising the following steps: performing interval judgment based on component center points and bounding box boundary values, dual classification by type coding, generating a block structure by face number and map layering, combining the cone vector to perform angle distance judgment and sorting to generate a loading sequence, and dividing the behavior segments based on perspective translation and rotation to calculate cosine similarity to screen similar components to generate a pre-load list. In the present invention, a block structure is generated based on dual classification of component center points and bounding box boundary values, dynamically matching the perspective to prioritize loading of visible areas in combination with cone angle distance sorting, generating a pre-load list by predicting potential areas through user perspective translation and rotation parameters, dynamically adjusting the accuracy level of non-core components according to terminal resource parameters, and identifying inefficient resources using timestamps, dwell time, and frame rate differences, thereby achieving simultaneous optimization of loading efficiency and system performance.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of computer-aided design technology, and in particular to a large-scale BIM model optimization method and system based on intelligent loading. Background Art

[0002] The field of computer-aided design (CAD) encompasses technologies that use computer software and hardware tools to assist in design. This field encompasses a wide range of applications, including product design, architectural design, and mechanical design. Its core focus is on using computers to provide digital modeling, simulation, and analysis capabilities, helping designers improve work efficiency and design accuracy. CAD not only enables modeling in three-dimensional space but also performs various calculations, such as structural analysis and fluid simulation, supporting the entire process from preliminary design to final production. The key to this technical field lies in using computer technology to optimize the design process, reduce design errors, and improve production efficiency.

[0003] Among them, the BIM model optimization method refers to an optimization method proposed for the loading, storage and calculation process of large-scale models in the application of building information modeling (BIM). The patent subject involves optimizing the processing efficiency of large-scale BIM models through intelligent loading technology. Specifically, the technical matters solved by the patent include how to realize intelligent loading of data in large BIM models and reduce the waste of computing resources caused by excessively large models. The optimization method makes model loading more efficient through algorithm adjustment, data structure reorganization and other means, especially in complex building structures and large-volume data scenarios, which can improve loading speed, reduce system burden and ensure the stability of the processing process.

[0004] Existing technologies rely on fixed block partitioning strategies and fail to dynamically divide the loading range by combining component spatial attributes and type encoding, resulting in insufficient model segmentation accuracy. The static field of view screening mechanism lacks real-time angle and distance sorting rules, making it impossible to dynamically adjust loading priorities based on changes in viewing angles. Redundant data outside the field of view still occupies memory. User behavior prediction uses a single linear model, without quantitatively analyzing the correlation between the view movement trajectory and the spatial direction vector. The accuracy of preloading is significantly affected by sudden operations. Rendering resource allocation uses a preset level standard, which is not associated with the real-time performance parameters of the terminal, resulting in uneven hardware resource utilization. Memory management lacks a time dimension recovery mechanism, resulting in the continuous accumulation of data that has not been called for a long time, increasing the risk of system crashes. Existing methods are difficult to support the collaborative optimization needs of multi-scale models and heterogeneous terminals. Summary of the Invention

[0005] The purpose of the present invention is to solve the shortcomings of the prior art and propose a large-scale BIM model optimization method and system based on intelligent loading.

[0006] In order to achieve the above objectives, the present invention adopts the following technical solution: a large-scale BIM model optimization method based on intelligent loading, comprising the following steps:

[0007] S1: Obtain the component center coordinates, bounding box boundary values ​​and type codes, perform interval judgment between component coordinates and spatial index boundaries, perform double classification processing based on type codes, and then perform complexity stratification on the number of element faces and mapping tags to generate a BIM model loading block structure;

[0008] S2: calling the BIM model to load the component bounding box coordinates in the block structure, performing angle and distance judgment with the cone boundary vector generated by the current viewing angle, screening the components and sorting them by the angle value, and generating a current view component loading sequence;

[0009] S3: Based on the user perspective translation vector and rotation Euler angle within a continuous time period, a sliding window is used to divide the local behavior segments, and weighted average normalization is performed on the translation vector. The set of spatial block direction vectors in the block structure of the BIM model is called to load, and the cosine similarity between unit vectors is calculated. Component labels of similar areas are selected as preloading targets, and a BIM component preloading list is generated.

[0010] S4: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component preload list, compare resource requirements with resource upper limits, perform downward adjustment on the levels of some component elements, and generate an element level adjustment plan.

[0011] As a further solution of the present invention, the BIM model loading block structure includes spatial block information, type classification information, and complexity level; the current view component loading sequence is specifically a loading sorting list, a perspective priority identifier, and a distance filtering item; the BIM component preloading list includes area labels, behavior pattern recognition, and preloading target identifiers; the graphic element level adjustment scheme includes level mapping rules, resource matching standards, and adjustment strategies.

[0012] As a further solution of the present invention, the steps for obtaining the block structure of the BIM model loading are specifically as follows:

[0013] S101: Obtain the coordinates of the component center point and the bounding box boundary value, compare the coordinates of the component center point with the spatial index boundary axis by axis, determine whether the coordinates are within the closed interval formed by the maximum and minimum values ​​of the boundary, and perform secondary classification on the components in the same interval based on the type code to generate a spatial index interval classification set;

[0014] S102: Based on the spatial index interval classification set, extract the number of primitive faces and the mapping mark using the formula:

[0015] ;

[0016] Obtain the layered complexity coefficient by calculation, compare the value with the preset complexity threshold, and generate the complexity layer parameter;

[0017] in, represents the layered complexity coefficient, Represents the number of faces of the primitive, Represents a sticker marker. 、 Respectively represent the maximum and minimum boundary values ​​of the bounding box in the corresponding axis. Calculate the absolute value of the bounding box side length;

[0018] S103: Calling the classification results in the spatial index interval classification set, combining the hierarchical values ​​in the complexity hierarchical parameters, performing dual-condition matching of spatial position and complexity on the components, merging the components with consistent matching results into the same block unit, and generating a BIM model loading block structure.

[0019] As a further solution of the present invention, the steps for obtaining the current view component loading sequence are specifically as follows:

[0020] S201: Call the BIM model to load the bounding box vertex coordinates of each component in the block structure, based on the normal vectors of the six boundary surfaces of the viewing cone, using the formula:

[0021] ;

[0022] Calculate the angle between the bounding box of each component and the boundary surface of the view cone, and traverse all components to generate the bounding box-view cone angle;

[0023] in, Representative The bounding box and The angle between the boundary surfaces of the frustum, Representative The coordinate vector of the center point of the component bounding box, Represents the viewing cone The normal vector of the boundary surface, Representative The center point of the bounding box and the The Euclidean distance between the boundary surfaces of the frustum;

[0024] S202: Based on the angle between the bounding box and the view cone, components that meet the conditions are screened according to the angle value range, and components outside the preset distance range are excluded based on the straight-line distance data between the center point of the component bounding box and the viewpoint coordinates to generate a visible component identification set;

[0025] S203: calling the bounding box-view cone angle value, traversing the component angle values ​​in the visible component identification set, establishing a loading priority queue arranged in ascending order of values, and generating a current view component loading sequence.

[0026] As a further solution of the present invention, the steps for obtaining the BIM component preload list are specifically as follows:

[0027] S301: Using a sliding window to divide the local behavior segments of the user's perspective translation vector, multiplying and accumulating the translation vector components at multiple time points within the window with a time attenuation factor, and calculating a normalized translation parameter corresponding to the center point of the window;

[0028] S302: Call the BIM model to load the spatial block direction vector set in the block structure, based on the normalized translation parameter, using the formula:

[0029] ;

[0030] Calculate the block direction correlation strength and generate a direction similarity set through the joint operation of vector projection difference value and spatial weight adjustment factor;

[0031] in, Representative The first window and the The block in Directional association strength value under the dynamic factor, Representative Window The standard deviation of the translation vector components at multiple time points, Represents the inverse of the cosine value of the angle between the block j direction vector and the normalized translation parameter, Represents the ratio of the volume of block j to the square root of the user's viewing angle height, Representative Window The product of the standard deviation of the components of the inner translation vector and the time decay factor, Represents the window The translation vector component at each time point, Represents the total number of time points in the window;

[0032] S303: Calculating a dynamic threshold based on the direction similarity set, screening block direction association strength values ​​exceeding the dynamic threshold, integrating corresponding block labels, and generating a BIM component preloading list.

[0033] As a further solution of the present invention, the steps for obtaining the primitive level adjustment solution are specifically as follows:

[0034] S401: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component preload list, and calculate the average visibility parameter using the formula:

[0035] ;

[0036] Calculate the component resource requirement metrics of multiple components and integrate them to form a component resource requirement set;

[0037] in, Representative The resource requirement metric of each component, Representative The number of elements in a component, Representative The complexity of the component's mapping markup, Represents the basic scaling factor of texture complexity, Represents the visibility deviation influence coefficient, Representative The visibility parameters of each component, Represents the average visibility parameter of all associated components, Represents distance and critical weight factor, Representative The rendering distance of each component, Representative The scenario criticality coefficient of each component;

[0038] S402: Based on the component resource requirement set, compare the resource requirement metric values ​​of multiple components with the preset resource upper limit value item by item, filter out components whose resource requirement metric values ​​exceed the upper limit value, and generate an excess component identification set;

[0039] S403: According to the over-limit component identification set, the primitive level of the identified component is gradually lowered until the resource demand metric value after the reduction meets the resource upper limit constraint, and a primitive level adjustment plan is generated.

[0040] As a further embodiment of the present invention, the method further comprises:

[0041] S5: Calling the loaded component number in the primitive level adjustment scheme, obtaining the loading timestamp, the viewing angle retention time and the frame rate difference, determining the component number that meets the low retention and frame rate drop conditions, and establishing a list of unloadable components;

[0042] The list of uninstallable components specifically includes uninstall component identifiers, time matching information, and frame rate monitoring indicators.

[0043] As a further solution of the present invention, the step of obtaining the list of uninstallable components is specifically as follows:

[0044] S501: calling the loaded component number in the primitive level adjustment scheme, reading the loading timestamp in the component registration information from the system memory, collecting the user's viewing angle dwell time, calculating the frame rate difference between the current frame rate and the preset reference frame rate, merging the three data into a unified format and verifying the integrity, and generating a component basic data set;

[0045] S502: Based on the component basic data set, the formula is used:

[0046] ;

[0047] Calculate the unloading priority coefficient, store the component numbers whose coefficients exceed the dynamic judgment threshold into a temporary set, and generate a candidate unloading set;

[0048] in, Represents the uninstall priority coefficient of the component, Represents the difference between the current actual frame rate and the preset reference frame rate. Represents the viewing time of a single component, Represents the arithmetic mean of the viewing time of all components, Represents the current timestamp of the system, Represents the loading timestamp of a single component, Represents an exception handling constant to avoid the denominator being zero;

[0049] S503: Traverse the candidate uninstallation set, sort them from high to low according to the uninstallation priority coefficient, calculate the difference between the system timestamp and the loading timestamp, if the difference is less than the dynamic loading cycle threshold, retain the component, if the difference is greater than or equal to the dynamic loading cycle threshold, intercept the first N items in order, and generate a list of uninstallable components.

[0050] A large-scale BIM model optimization system based on intelligent loading, wherein the large-scale BIM model optimization system based on intelligent loading is used to execute the large-scale BIM model optimization method based on intelligent loading, and the system comprises:

[0051] The component layering and block module obtains the coordinates of the component center point and the bounding box boundary value, combines the type code for dual classification, divides the complexity level according to the element face value and the mapping mark status, and generates a BIM model loading block structure that includes spatial distribution and hierarchical features;

[0052] The view filtering and sorting module calls the bounding box coordinates of the block structure loaded by the BIM model, calculates the distance between the component center point and the view cone boundary, filters the components that meet the visibility threshold, sorts them according to the cosine value of the angle between the viewpoint direction vector and the component vector, and generates the current view component loading sequence;

[0053] The behavior prediction and preloading module uses a sliding window to divide the behavior segments based on the user's perspective translation vector and Euler angle data. It performs standard deviation calculation and weighted average normalization on the translation vector within the window, calls the BIM model to load the spatial block direction vector set of the block structure, screens the block direction association strength values ​​that exceed the dynamic threshold, and combines the unloaded items in the current view component loading sequence to generate a BIM component preloading list.

[0054] The resource adaptation adjustment module obtains the terminal video memory capacity and texture unit occupancy value, calls the total number of component faces and texture resolution in the BIM component preload list, compares the video memory requirement with the remaining value, performs texture resolution downgrade on the excess components, and generates a primitive level adjustment plan;

[0055] The dynamic unloading determination module obtains the dwell time stamp and frame rate difference of the loaded components, calls the loading time parameter of the primitive level adjustment scheme, marks the components whose dwell time is less than the threshold and whose frame rate difference exceeds the limit, and generates a list of unloadable components.

[0056] Compared with the prior art, the advantages and positive effects of the present invention are:

[0057] In the present invention, dual classification of component center coordinates and bounding box boundary values ​​is adopted, combined with spatial index interval judgment to generate a block loading structure, and accurately segment the model data range. The angle of the cone boundary vector and the distance sorting and screening mechanism dynamically match the user's perspective, prioritize loading key components in the visual area, and reduce the frequency of invalid data requests. The user's perspective translation vector and the rotation Euler angle are divided by a sliding window and normalized by weighted average to predict potential loading areas and generate a pre-loading list to achieve early resource allocation. The terminal rendering resource parameters compare the number of graphics elements and the mapping mark, dynamically adjust the accuracy level of non-core components, and optimize hardware resource utilization. The loading timestamp and frame rate difference are linked to identify inefficient resources, periodically reclaim redundant memory, and avoid cumulative performance degradation. This method achieves simultaneous improvement in loading efficiency and system stability, and is particularly suitable for hardware heterogeneous environments. BRIEF DESCRIPTION OF THE DRAWINGS

[0058] Figure 1 It is a schematic diagram of the workflow of the present invention;

[0059] Figure 2 A flowchart of the steps for obtaining the block structure loaded into the BIM model of the present invention;

[0060] Figure 3 A flowchart of the steps for obtaining the current view component loading sequence of the present invention;

[0061] Figure 4 A flowchart of the steps for obtaining a preloaded list of BIM components according to the present invention;

[0062] Figure 5 A flowchart of the steps for obtaining the primitive level adjustment solution of the present invention;

[0063] Figure 6 This is a flow chart of the steps for obtaining a list of uninstallable components according to the present invention. DETAILED DESCRIPTION

[0064] In order to make the purpose, technical solutions and advantages of the present invention more clearly understood, the present invention will be further described in detail below with reference to the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present invention and are not intended to limit the present invention.

[0065] In the description of the present invention, it should be understood that the terms "length," "width," "up," "down," "front," "back," "left," "right," "vertical," "horizontal," "top," "bottom," "inside," "outside," and the like, indicating positions or relationships, are based on the positions or relationships shown in the accompanying drawings and are intended only to facilitate the description of the present invention and simplify the description. They do not indicate or imply that the devices or elements referred to must have a specific orientation, be constructed, or operate in a specific orientation. Therefore, they should not be construed as limiting the present invention. Furthermore, in the description of the present invention, "plurality" means two or more, unless otherwise expressly and specifically defined.

[0066] Example 1: Please refer to Figure 1 The present invention provides a technical solution: a large-scale BIM model optimization method based on intelligent loading, comprising the following steps:

[0067] S1: Obtain the component center coordinates, bounding box boundary values ​​and type codes, perform interval judgment between component coordinates and spatial index boundaries, perform double classification processing based on type codes, and then perform complexity stratification on the number of element faces and mapping tags to generate a BIM model loading block structure;

[0068] S2: Call the BIM model to load the bounding box coordinates of the components in the block structure, determine the angle and distance with the cone boundary vector generated by the current viewing angle, filter the components and sort them by the angle value, and generate the loading sequence of the current view component;

[0069] S3: Based on the user's perspective translation vector and Euler rotation angle within a continuous time period, a sliding window is used to divide the local behavior segments. The translation vector is normalized by weighted average. The BIM model is called to load the spatial block direction vector set in the block structure. The cosine similarity between unit vectors is calculated. The component labels of the same area are selected as preloading targets to generate a BIM component preloading list.

[0070] S4: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component pre-load list, compare resource requirements with resource limits, perform downgrade processing on some component element levels, and generate element level adjustment plan;

[0071] S5: Call the loaded component number in the primitive level adjustment plan, obtain the loading timestamp, viewing angle retention time and frame rate difference, determine the component number that meets the low retention and frame rate drop conditions, and establish a list of uninstallable components.

[0072] The BIM model loading block structure includes spatial block information, type classification information, and complexity level. The current view component loading sequence is specifically the loading sort list, perspective priority identification, and distance filter items. The BIM component preloading list includes area labels, behavior pattern recognition, and preloading target identification. The element level adjustment plan includes level mapping rules, resource matching standards, and adjustment strategies. The list of unloadable components is specifically the unloading component identification, time matching information, and frame rate monitoring indicators.

[0073] See also Figure 2 ,The specific steps for obtaining the block structure of BIM model loading are:

[0074] S101: Obtain the coordinates of the component center point and the bounding box boundary value, compare the coordinates of the component center point with the spatial index boundary axis by axis, determine whether the coordinates are within the closed interval formed by the maximum and minimum values ​​of the boundary, and perform secondary classification on the components in the same interval based on the type code to generate a spatial index interval classification set;

[0075] First, the building information model (BIM) database is retrieved to extract the basic geometric information of each component in the model. For a beam component with ID "L001-001", the three-dimensional coordinates of its center point are obtained as follows: , in meters, and read the minimum and maximum boundary values ​​of its bounding box (BoundingBox) on the X, Y, and Z coordinate axes. The X-axis range of the bounding box of the beam component is meters, the Y-axis range is meters, the Z-axis range is Next, the X coordinate value of the center point of this component, 15.5, is compared with the boundary interval of the pre-defined spatial index grid on the X axis. The spatial index interval division rule of the X axis is set to one interval every 20 meters. The first interval is m, due to , this component is included in this interval on the X axis, and the Y coordinate value 22.3 is continued to be compared. The Y axis index interval is set to one interval every 25 meters. The first interval is m, due to , the Y coordinate falls into this interval, and finally the Z coordinate value is compared to 4.0, and the Z axis index interval is set to one interval every 5 meters. The first interval is m, due to , the Z coordinate falls into this interval. Comprehensively judging, the "L001-001" beam component is preliminarily determined to belong to the three-dimensional space index cell defined by X:[0,20),Y:[0,25),Z:[0,5). Subsequently, the type code of the component is read, which is "L001", representing "structural beam". The system further classifies this component and all other components whose center points also fall into the X:[0,20),Y:[0,25),Z:[0,5) interval and whose type code is also "L001", and aggregates them into a subset. For example, another component ID is "L001-002", and the center point coordinates are meters, type code "L001", it will also be classified into this sub-collection, and a wall component with ID "W002-005" has a center point coordinate of Meters, although it also falls into the spatial index cell of X:[0,20),Y:[0,25),Z:[0,5), its type code is "W002", representing "interior wall", so it will be classified into another different subset under this cell. The system traverses all components in the BIM model, repeatedly compares the center point coordinates with the spatial index boundary for each component, and performs secondary classification based on the type code until all components are processed. Finally, a component set is generated with the spatial index interval as the first-level classification and the component type code as the second-level classification. This set is the spatial index interval classification set. Some component information examples are as follows:

[0076] Table 1 Basic component information table

[0077] ;

[0078] As shown in Table 1, the ID, type code, center point coordinates and bounding box boundary value information of some components are listed. These data are the basis for spatial index classification.

[0079] S102: Based on the spatial index interval classification set, extract the number of primitive faces and mapping marks using the formula:

[0080] ;

[0081] Obtain the layered complexity coefficient by calculation, compare the value with the preset complexity threshold, and generate the complexity layer parameter;

[0082] in, represents the layered complexity coefficient, Represents the number of faces of the primitive, Represents a sticker marker. 、 Respectively represent the maximum and minimum boundary values ​​of the bounding box in the corresponding axis. Calculate the absolute value of the bounding box side length;

[0083] Take a specific subset of the spatial index interval classification set as an example. This subset corresponds to all beam components with the spatial index interval X:[0,20), Y:[0,25), Z:[0,5) and the type code "L001". As shown in Table 1, it contains 5 beam components, namely components L001-001, L001-002, L001-003, L001-004, and L001-005. The system extracts the detailed geometric information of these 5 components from the BIM database and counts the total number of their primitive faces (number of triangles). Assuming that the number of faces of the components are 150, 160, 145, 155, and 165 respectively, the total number of primitive faces of this subset is Then, the system reads the material mapping information of these components and quantifies them according to the preset rules to obtain mapping marks. , the quantization rule is defined as: no texture is assigned a value of 0, using a low-resolution (less than 512x512 pixels) or a single color texture is assigned a value of 1, using a medium-resolution (512x512 to 1024x1024 pixels) or a texture with additional channels such as a normal map is assigned a value of 2, using a high-resolution (greater than 1024x1024 pixels) photorealistic texture or a PBR (Physically Based Rendering) complex material is assigned a value of 3, here the 5 beams all use a standard concrete texture with a resolution of 1024x1024 and an attached normal map, so their The value is 2, the representativeness of this subset The arithmetic mean of the values ​​is Then, calculate the overall bounding box of the set of 5 beams, and obtain the boundary of the overall bounding box by querying the minimum and maximum coordinates of each component bounding box (see Table 1): X axis , Y-axis , Z axis , calculate the side length of each axis: X-axis side length Meters, Y-axis length Meters, Z-axis length Meters, select the axis with the largest span for subsequent calculation, that is, the X axis, and its maximum boundary value Meters, minimum boundary value Meters, calculate the absolute value of the side length of the axis m, will obtain , ,as well as ;

[0084] Substitute into the layered complexity coefficient calculation formula:

[0085] ;

[0086] in represents the layered complexity coefficient, Represents the total number of primitive faces in the subset (775), Quantized map markers representing the subset (2), 、 They represent the maximum (22.2) and minimum (7.0) boundary values ​​of the subset's overall bounding box on the maximum span axis (X axis). The denominator of the formula is added with 1 to avoid the case where the bounding box has a zero side length. The calculation process is:

[0087] ;

[0088] The calculated layered complexity coefficient Compared with the preset complexity threshold, the complexity threshold is set based on the rendering capability of the target hardware platform and the single frame processing budget under the target frame rate. The corresponding relationship between the value and rendering time, setting the goal to maintain 60FPS (about 16.67 milliseconds / frame) when an average of 50 blocks are visible, the average processing time budget for each block is approximately milliseconds, according to the test results, The value is related to the rendering time, setting: When the rendering time is less than 0.2 milliseconds, it is judged to be low complexity; when When the rendering time is between 0.2 and 0.4 milliseconds, it is judged to be of medium complexity; when When the rendering time exceeds 0.4 milliseconds, it is judged as high complexity. It is less than 15, so the beam component subset is judged to be of low complexity and is assigned a "low complexity" stratification parameter. The system repeats this extraction, quantification, calculation, and comparison process for all spatial index interval classification subsets generated by S101, and generates the corresponding complexity stratification parameter for each subset.

[0089] The benefit of the formula is that by combining the number of faces of the primitive and quantized map markers Jointly evaluate rendering workloads while using maximum bounding box side length Normalized as a measure of spatial extent so that It can reflect the visual information density and rendering complexity within a unit space.

[0090] S103: Calling the classification results in the spatial index interval classification set, combining the hierarchical values ​​in the complexity hierarchical parameters, performing dual-condition matching of spatial position and complexity on the components, merging the components with consistent matching results into the same block unit, and generating a BIM model loading block structure.

[0091] The classification results in the spatial index interval classification set are extracted, and the subset marked as "interval X: [0, 20), Y: [0, 25), Z: [0, 5), type L001" is extracted, and combined with the complexity layer parameter "low complexity" calculated and generated for it in step S102, the system then retrieves the spatial position information of all other subsets in the model (defined by the spatial index interval to which they belong) and the calculated complexity layer parameter, and searches for other subsets that are spatially adjacent to the current subset and whose complexity is also "low complexity". The criterion for spatial adjacency is that the overall bounding boxes of the two subsets are in contact in at least one axis or the distance is less than a preset small value (such as 0.01 meters). The search found a subset identified as "Interval X:[20,40), Y:[0,25), Z:[0,5), type L001". Its spatial index interval is adjacent to the current subset on the X axis (the right boundary of X:[0,20) is X=20, and the left boundary of X:[20,40) is also X=20). After S102 calculation, its complexity layer parameter is also "low complexity", meeting the two conditions of spatial proximity and consistency of complexity. The system decided to merge the two subsets (including all L001 beam components in each) to form a larger block unit with the unit ID "Block_A". The search continued and encountered the subset identified as "Interval X :[0,20),Y:[0,25),Z:[5,10), type W002", its spatial index interval is adjacent to the initial subset on the Z axis, but its complexity parameter is calculated as "medium complexity" in S102, which does not meet the complexity consistency condition, so it is not merged with "Block_A". Then it encounters a subset marked as "interval X:[0,20),Y:[25,50),Z:[0,5), type L001", although its complexity is also "low complexity" and the type is the same as L001, but its spatial index interval is consistent with any of the original subsets contained in "Block_A" (X:[0,20),Y:[0,25),Z: [0,5) and X:[20,40), Y:[0,25), Z:[0,5)) are not directly adjacent (the Y axis does not touch), then according to the merging strategy (for example, only merging directly touching ones), no merging is performed, and the system continues to execute this matching and merging process, merging all subsets that meet the requirements of spatial proximity and consistent complexity layering parameters into a block unit until all original subsets are traversed and all possible merging operations are completed, and finally forming a BIM model loading block structure composed of multiple independent block units (such as Block_A, Block_B, etc.), each block unit contains one or more groups of original component subsets that are spatially adjacent and have similar complexity.

[0092] See also Figure 3 , the specific steps for obtaining the current viewport component loading sequence are:

[0093] S201: Call the BIM model to load the bounding box vertex coordinates of each component in the block structure, based on the normal vectors of the six boundary surfaces of the frustum, using the formula:

[0094] ;

[0095] Calculate the angle between the bounding box of each component and the boundary surface of the view cone, and traverse all components to generate the bounding box-view cone angle;

[0096] in, Representative The bounding box and The angle between the boundary surfaces of the frustum, Representative The coordinate vector of the center point of the component bounding box, Represents the viewing cone The normal vector of the boundary surface, Representative The center point of the bounding box and the The Euclidean distance between the boundary surfaces of the frustum;

[0097] Load the block structure of the BIM model, select a block unit, and then select a component in the unit for processing. Select component "L001-001" (center point meters, bounding box X: [12.0, 19.0], Y: [22.0, 22.6], Z: [3.8, 4.2] meters), read the 3D coordinates of the 8 vertices of its bounding box, one of the vertices is At the same time, get the camera parameters of the current rendering perspective, including its position coordinates and frustum definition. The current position of the camera is set to meters, the field of view (FOV) is 60 degrees vertically, the aspect ratio is 16:9, the near clipping plane distance is 0.5 meters, and the far clipping plane distance is 150 meters. Based on these parameters, the plane equations of the six boundary planes (near, far, left, right, top, and bottom) of the viewing cone and their unit normal vectors pointing inward are calculated. The near plane normal vector is (Assuming the camera is facing the negative direction of the Z axis), the left plane normal vector is calculated by the camera parameters: , its modulus is 1. Next, calculate the center point of the bounding box of component L001-001 Meters relative to the camera position The vector of meters, denoted as , ;

[0098] Calculate the magnitude of this vector:

[0099] rice;

[0100] Select the first Boundary surface, select the left plane ( ), whose unit normal vector is , its module length , calculate the vector With normal vector The dot product of:

[0101] ;

[0102] Then calculate the center point of the component bounding box The shortest Euclidean distance to the left plane of the view frustum , the equation of the left plane is determined by the camera parameters and is of the form , substitute the center point coordinates to calculate the distance, the calculated distance is m, substitute these calculated values ​​into the angle calculation formula:

[0103] ;

[0104] Computing component L001-001( ) and the left plane ( ) , the dot product result is 9.709, the vector moduli are 16.30 and 1 respectively, and the distance is 9.15 meters, Using 3.14159, the calculation process is:

[0105] Spend;

[0106] For this component L001-001, continue to calculate the angle between it and the other five boundary surfaces of the cone (near, far, right, top, and bottom), and get , , , , The system repeats this process for each component in the block structure loaded into the BIM model, calculates the angle between the center point of the component's bounding box and the six boundary surfaces of the view cone, and stores all components and their corresponding six angle values ​​to form a bounding box-view cone angle set. The formula is beneficial in that it not only uses the vector angle calculated by the dot product (converted to degrees) to determine the direction of the component center relative to the boundary surface of the view cone (less than 90 degrees is usually indicated as the inside), but also introduces a distance correction term. , this term uses the distance from the center point to the boundary The cube root of and the distance to the viewpoint Adjust so that it is closer to the boundary ( Small) or closer to the viewpoint ( For components with smaller values, their additional angle values ​​are relatively small, slightly increasing their potential priority in subsequent sorting, and vice versa, slightly decreasing it.

[0107] S202: Based on the angle between the bounding box and the view cone, components that meet the conditions are screened according to the angle value range. The straight-line distance data between the center point of the component bounding box and the viewpoint coordinates is combined to exclude components that are out of the preset distance range, and generate a visible component identification set.

[0108] Bounding box - view cone angle set, the system screens each component to determine whether it is in the current field of view. The first step of the screening is to check the angle calculated between the component and the six boundary surfaces of the view cone, and set a valid angle range, which is defined as [0,90] degrees. For a component, if the angle calculated between its center point and all six boundary surfaces of the view cone is If all of the six angles (34.25, 82.1, 18.5, 55.9, 63.7, 29.4) fall within the closed interval of [0, 90] degrees, it is preliminarily considered that the center point of the component is located inside or on the boundary of the viewing cone, and thus it is considered as a potential visible component. Taking component L001-001 as an example, its six included angles (34.25, 82.1, 18.5, 55.9, 63.7, 29.4) are all within the range of [0, 90] degrees, so L001-001 passes this check and is added to the candidate set. Considering another component "P003-008", its calculated The angle between the component and the right plane is 98.2 degrees. Since 98.2>90, it exceeds the valid range, indicating that the center point of the component is outside the right plane of the viewing cone. The system excludes the component from the candidate set. After completing this angle range check for all components, a preliminary candidate list of visible components is obtained. The second step of screening is distance-based filtering. For each component in the candidate list, the straight-line distance between the center point of its bounding box and the viewpoint (camera position) is extracted, that is, the vector modulus calculated in step S201. , the distance of component L001-001 is 16.30 meters. The system compares this distance with the preset viewing distance range, which is defined by the near clipping plane distance and the far clipping plane distance of the viewing cone, which is [0.5,150] meters in this example. The distance of component L001-001 of 16.30 meters is compared with this range because , the component meets the distance condition and continues to remain in the candidate set. Another component "F005-012" in the candidate set is processed. Its angle check passes, but the calculated distance between the center point and the viewpoint is 175.6 meters. Since 175.6>150, it exceeds the far clipping plane distance, indicating that the component is too far away from the camera. The system excludes it from the candidate set. The system performs this distance range comparison on all components that pass the angle check and removes components that do not meet the conditions. After two steps of screening, the set of components that are finally retained constitutes the visible component identification set of the current frame.

[0109] S203: Call the bounding box-view cone angle value, traverse the component angle values ​​in the visible component identification set, establish a loading priority queue arranged in ascending order of values, and generate a current view component loading sequence.

[0110] The bounding box-view cone angle data focuses on the components in the set of visible component identifiers. In order to determine the loading (or rendering) priority of these visible components, the system needs to calculate a sorting key value for each visible component and select the angle calculated between the component center point and the near plane of the view cone (NearPlane). As the main sorting basis, the smaller the value, the closer the component is to the viewpoint (in the direction of sight). For component L001-001 in the visible component identification set, For another visible component "W002-005" (assuming it is visible), calculate its angle with the near plane. For visible component "L001-002", calculate its The system traverses all components in the visible component identification set and extracts the angle values ​​calculated between each of them and the near plane. , and then these components and their corresponding The values ​​are constructed into a list, such as: [(L001-001,82.1), (W002-005,75.5), (L001-002,88.0), (other visible components, corresponding angle values)], and finally, the system calculates the value according to the The numerical values ​​are sorted in ascending order, with smaller values ​​at the front. The sorted list becomes: [(W002-005,75.5),(L001-001,82.1),(L001-002,88.0),…other components in ascending order]. This ascending component ID list constitutes the final current view component loading sequence. The components at the front of the sequence have higher loading priority.

[0111] See also Figure 4 , the specific steps for obtaining the BIM component preload list are:

[0112] S301: Using a sliding window to divide the local behavior segments of the user's perspective translation vector, multiplying and accumulating the translation vector components at multiple time points within the window with a time attenuation factor, and calculating a normalized translation parameter corresponding to the center point of the window;

[0113] The system continuously monitors and records the position changes of the user's perspective (camera) in three-dimensional space to capture its translation behavior. A recording interval is set to 0.05 seconds. In the past 1 second, the system records Camera positions , each position point is a three-dimensional world coordinate (x, y, z) in meters, and the position difference between adjacent time points is calculated to obtain Translation vectors: , ,…, , each vector Represents the displacement within 0.05 seconds. The system uses the sliding window method to analyze this vector sequence, setting the width of the sliding window to 0.5 seconds, including time points, i.e. 9 translation vectors, the sliding step of the window is set to 0.25 seconds, and the first window covers time points 1 to 10 (including vector to ), and the second window covers time points 6 to 15 (including vector to ), and so on, consider the first window (time points 1-10), and extract the 9 translation vectors in the window to In order to reflect that recent movement is more important than long-term movement, a time decay factor is introduced, and the decay factor adopts an exponential decay form. ,in is the timestamp of the window center (time point 5.5), is a vector Corresponding timestamp (from time point n to n+1), decay rate The setting basis is how long you want the previous movement weight to decay to ,set up , so that the movement weight before 0.5 seconds is approximately attenuated to , calculate each translation vector in the window Multiply by its corresponding attenuation factor , and then accumulate these weighted vectors to get the weighted total translation vector , the calculated weighted total translation vector is , in meters, in order to obtain the normalized translation parameter representing the direction, calculate the modulus of the vector:

[0114] rice;

[0115] Perform normalization:

[0116] ;

[0117] This normalized vector This is the normalized translation parameter corresponding to the center point of the first window, representing the weighted main movement direction of the user's perspective within the 0.5-second window. As the window slides, the system continuously calculates the corresponding normalized translation parameter for each window center point. The following table shows the translation vector within a window and the calculated weighted vector:

[0118] Table 2 Example of translation vector and weight calculation within a window (window 1: time points 1-10)

[0119] ;

[0120] See Table 2, which lists the 9 translation vectors recorded in a sliding window and the weighted vector calculated according to the time attenuation factor. The weighted total translation vector is finally accumulated. , used to calculate the normalized translation parameters.

[0121] S302: Call the BIM model to load the spatial block direction vector set in the block structure, based on the normalized translation parameter, using the formula:

[0122] ;

[0123] Calculate the block direction correlation strength and generate a direction similarity set through the joint operation of vector projection difference value and spatial weight adjustment factor;

[0124] in, Representative The first window and the The block in Directional association strength value under the dynamic factor, Representative Window The standard deviation of the translation vector components at multiple time points, Represents the inverse of the cosine value of the angle between the block j direction vector and the normalized translation parameter, Represents the ratio of the volume of block j to the square root of the user's viewing angle height, Representative Window The product of the standard deviation of the components of the inner translation vector and the time decay factor, Represents the window The translation vector component at each time point, Represents the total number of time points in the window;

[0125] Load the block structure of the BIM model and obtain all the space blocks defined therein and their preset direction vectors. A block may define one or more direction vectors due to its geometric shape or the main direction of its internal components. Select the first Block "Block_A" (merged from S103) mainly extends along the positive direction of the X axis, and its main direction vector is set to At the same time, obtain the latest time window calculated in step S301 (For example, the 10th window) corresponds to the normalized translation parameter , calculate the directional correlation strength between the window and the block (Because k in the formula does not specify multiple dynamic factors, it is assumed here that k=1), it is necessary to calculate the various parameters in the formula: Representative Window The standard deviation of the internal translation vector (considering the X, Y two-dimensional plane movement and ignoring the Z axis) is first calculated by the 9 vectors in the window The average vector , then calculate:

[0126] ;

[0127] According to the data in Table 2 (only looking at the x and y components), we can calculate Meters / 0.05 seconds (note that this is the standard deviation of each 0.05 second interval and needs to be converted into speed units, but the formula seems to use this value directly). To maintain consistency in calculations, all parameters involving speed or displacement are based on a 0.05 second time interval. Representing blocks Direction vector With the normalized translation parameter The reciprocal of the cosine of the angle between the vectors, calculate the cosine of the angle ;

[0128] but ;

[0129] Representing blocks Volume Height relative to the user's current viewing angle The ratio of the square roots of the two original subsets is used to calculate the total volume of the block "Block_A". Cubic meters, current user viewing angle height (the height of the camera's Z coordinate relative to the ground) Meter, calculation ;

[0130] The unit of this value is , Representative Window Standard deviation of the inner translation vector components (X,Y) The product of the arithmetic mean of the time attenuation factor in the window is used to calculate the 9 Average of the values ,but ;

[0131] Represents the window The (X,Y) components of the translation vector at each time point , calculate the sum of their moduli ;

[0132] Calculated according to the data in Table 2 m, substitute these calculated values ​​into the formula: ,Notice , and The units are based on displacement (meters) at 0.05 second intervals, and The unit is , directly substitute into the calculation:

[0133] ;

[0134] This value is the window With chunking The main direction of the correlation strength, the system for the current window With all blocks and all its preset direction vectors, and continue to calculate for all sliding windows to generate a set of all window-block direction correlation strength values, that is, the direction similarity set. The benefit of the formula is that it combines the stability of user movement (through , small value indicates stability), consistency between moving direction and block orientation (through , values ​​close to 1 indicate consistent direction), the size of the block itself (through inversely adjusted) and the volume and volatility of recent moves (via Items are fine-tuned), comprehensively evaluating the user's movement trend and the possibility of entering a specific spatial block.

[0135] S303: Calculate a dynamic threshold based on the direction similarity set, filter the block direction association strength values ​​that exceed the dynamic threshold, integrate the corresponding block labels, and generate a BIM component preload list.

[0136] Direction similarity set, which includes each time window Divide each space into blocks Direction The strength of the association between , the system needs to set a dynamic threshold To filter out blocks with high enough correlation strength as the preload target, the dynamic threshold is calculated by counting the latest M time windows (set M=8, that is, the latest seconds) calculated for all values, calculate the average of these values and standard deviation , and then set a coefficient based on the system's sensitivity to preloading (that is, how many potential targets you want to preload) , the dynamic threshold calculation formula is: ,coefficient The value is adjusted based on performance feedback and increased if too much preloading causes resource shortages If insufficient preloading causes lag, reduce , current settings , assuming that the most recent 8 windows have calculated Average of the values And the standard deviation , then the current dynamic threshold , system traversal and the latest time window All the block direction related strength values ​​are related to each With dynamic threshold For comparison, for the main direction of block "Block_A", its correlation strength is ,because , the value does not exceed the threshold, Block_A is not selected for this direction, and considering another block "Block_B", the correlation strength of a certain direction is calculated as ,because , exceeds the threshold, record the label of "Block_B", and then consider the block "Block_C", and its association strength , also exceeds the threshold, records the label of "Block_C", and the system performs all After the values ​​are compared, all The block labels corresponding to the association strength values ​​are collected and deduplicated to obtain a non-repeated block label list, the list content is: ["Block_B", "Block_C"], this list is the currently generated BIM component pre-load list.

[0137] See also Figure 5 , the specific steps for obtaining the primitive level adjustment plan are as follows:

[0138] S401: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component preload list, and calculate the average visibility parameter using the formula:

[0139] ;

[0140] Calculate the component resource requirement metrics of multiple components and integrate them to form a component resource requirement set;

[0141] in, Representative The resource requirement metric of each component, Representative The number of elements in a component, Representative The complexity of the mapping markup of each component, Represents the basic scaling factor of texture complexity, Represents the visibility deviation influence coefficient, Representative The visibility parameters of each component, Represents the average visibility parameter of all associated components, Represents distance and critical weight factor, Representative The rendering distance of each component, Representative The scenario criticality coefficient of each component;

[0142] First, the real-time rendering resource status of the terminal device is queried through the operating system API or graphics driver interface to obtain the current available video memory (VideoRAM) of 3584MB, the GPU (Graphics Processing Unit) utilization rate of 68%, the CPU (Central Processing Unit) utilization rate of 55%, and the average rendering frame rate (FPS) of the past second of 42 frames / second. Then, the system calls the BIM component preload list generated in step S303. The list content is ["Block_B", "Block_C"]. The system extracts the detailed information of all components contained in these two blocks and counts the total number of elements of these components. triangles and calculate their total texture marking complexity according to the quantization rules of S102 , and calculate the average visibility parameters of these preloaded components , visibility parameters Defined as the ratio of the number of pixels covered by the component when rendered in the current viewport to the total number of pixels (in the range [0,1]), estimated by performing a fast visibility test (such as occlusion query or simplified rasterization) on all components in the list to calculate the average visibility parameter Then, the system processes the components in the preload list one by one and calculates their resource requirement metrics. , select a column component "C001-015" in Block_B and read its element quantity from the BIM data The material uses a high-resolution texture (PBR) and is quantized according to the S102 rule. , texture complexity base scaling factor The setting is based on the relationship between the map memory usage and rendering time consumption relative to the number of vertices consumed in a large number of tests, and is set to , visibility deviation influence coefficient The setting is intended to amplify the resource requirements of components whose visibility far exceeds the average value, and is set based on performance analysis. , calculate the visibility parameters of the column component , estimated , calculate the absolute value of visibility deviation , distance and critical weight factor The setting is used to balance the impact of distance and component importance on resource evaluation, according to the scenario design and performance target setting , get the rendering distance of the column component , obtained by calculating the distance from its center point to the camera position m, read its scene criticality coefficient from the component properties , the column is the main load-bearing structure, set its , all length units are unified as meters, and other parameters are dimensionless scalars. Substitute them into the resource demand metric calculation formula:

[0143] ;

[0144] Calculation of column components C001-015 :

[0145] ;

[0146] The system repeats this calculation process for all components in the preload list ["Block_B", "Block_C"], and calculates the value of each component. The formula is useful in that it can be used to associate these values ​​with their component IDs to form a component resource requirement set. and The basic complexity of the evaluation component is determined by The item highlights the resource attention of particularly prominent (or particularly inconspicuous, depending on subsequent processing) components, through The item combines distance and importance to adjust resource evaluation, providing a comprehensive and configurable quantitative indicator of component rendering resource requirements.

[0147] S402: Based on the component resource requirement set, the resource requirement metric values ​​of multiple components are compared with the preset resource upper limit value item by item, and the components whose resource requirement metric values ​​exceed the upper limit value are screened to generate an excess component identification set;

[0148] The component resource requirement set, which contains each component in the preload list ["Block_B", "Block_C"] and its calculated resource requirement metric value , component "C001-015" , other components such as "W008-001" , component "D002-030" , the system requires a preset resource upper limit To determine which components have exceeded resource requirements, the upper limit is set dynamically and is calculated based on the real-time resource status of the terminal obtained in S401. The calculation rules are:

[0149] ,in It is a benchmark value, set according to the total resource requirements in a typical scenario. , MB, assuming total video memory MB, target frame rate FPS, current frame rate FPS, then ;

[0150] This calculated It is the total resource budget cap for the entire preloaded list, but the original process describes the comparison of individual components. Here, it is adjusted to the resource requirement metric cap of a single component. This cap is also allocated based on the total cap and the number of preloaded components, or a fixed, experience-based single component resource threshold is used. The latter is used here to set the resource cap for a single component. This value is obtained from a large number of component tests. The distribution and performance impact are determined, representing a medium to high complexity component resource occupancy metric. The system aggregates the component resource requirements of each component. With this single-member cap For comparison, for component C001-015, ,because , its demand exceeds the upper limit, the system records the component ID "C001-015", for component W008-001, ,because , does not exceed the upper limit, ignore, for component D002-030, ,because , exceeds the upper limit, record its ID "D002-030", the system completes this comparison for all components in the resource demand set, and all Component IDs with values ​​exceeding 100 are collected to form an over-limit component identification set, and the set content is: [“C001-015”, “D002-030”].

[0151] S403: According to the over-limit component identification set, the primitive level of the identified component is gradually lowered until the resource demand metric value after the reduction meets the resource upper limit constraint, and a primitive level adjustment plan is generated.

[0152] For the over-limit component identification set ["C001-015", "D002-030"], the system performs a Level of Detail (LOD) downgrade operation on each component until its resource requirement meets the upper limit constraint. The BIM model pre-prepare model representations of different levels of detail for components that support LOD, from high to low, they are LOD0, LOD1, LOD2. The lower the LOD level, the fewer the number of element faces and the lower the material complexity. First, process component C001-015, whose original LOD is LOD0, and the calculated resource requirement , exceeds the upper limit of 100 for a single component, the system lowers its LOD level to LOD1, queries the data of the LOD1 model, and finds the number of its primitives. (original 320), texture complexity (Original 3), other parameters (visibility , average visibility ,distance , criticality ) and the coefficients ( ) remains unchanged, and its resource requirement metric under LOD1 is recalculated :

[0153] ;

[0154] The resource requirements after the reduction With upper limit Compare, because , satisfying the resource constraints, the system determines that component C001-015 will be loaded or rendered at LOD1 level, and then processes the next component D002-030 in the over-limit set, whose original LOD is LOD0, and the resource requirements , also exceeds 100, downgrade to LOD1, query its LOD1 data and recalculate resource requirements, and get ,because , the constraints are met, the system determines that component D002-030 is loaded at LOD1 level, and the system repeats this process for all components in the over-limit component identification set: check whether it exceeds the limit, if it exceeds the limit, lower the LOD by one level, recalculate the resource requirements, and compare again until the upper limit is met or the lowest LOD level is reached. After the processing is completed, the system records all components that need to adjust the LOD and their final LOD level, and forms a graphic level adjustment plan. The plan content is: {"C001-015":LOD1, "D002-030":LOD1}, and other components in the pre-loaded list that do not exceed the limit will be loaded with their default LOD (usually LOD0).

[0155] See also Figure 6 , the steps to obtain the list of uninstallable components are as follows:

[0156] S501: Call the loaded component number in the primitive level adjustment solution, read the loading timestamp in the component registration information from the system memory, collect the user's viewing angle dwell time, calculate the frame rate difference between the current frame rate and the preset reference frame rate, merge the three data into a unified format and verify the integrity, and generate a component basic data set;

[0157] The system accesses the list of components that are loaded and active in the current scene, and refers to the primitive level adjustment scheme generated in step S403 (although the scheme is for pre-loading, its logic can be applied to the management of loaded components). It selects a currently loaded component with the ID "G015-002". The system queries the internally maintained component registration information table and reads the timestamp when the component is successfully loaded into memory and can be used for rendering. , recorded as Seconds (the number of seconds counted since a fixed epoch). At the same time, the system starts the user gaze tracking module (if available) or the dwell time calculation module based on the center area of ​​the viewing cone, analyzes the time the user observes the area containing component G015-002, and calculates the cumulative dwell time of the component in the user's effective field of view (for example, the center area of ​​the screen or near the gaze tracking focus). , calculated seconds, then the system obtains the current instantaneous rendering frame rate from the performance monitoring module , the reading is 38FPS, and the target benchmark frame rate set by the system is obtained at the same time , which is set according to the application scenario and user preferences. FPS, calculate the difference between the current frame rate and the benchmark frame rate FPS, the system will component ID "G015-002", loading timestamp , viewing time seconds, and frame rate difference These four pieces of data are integrated into a structured record and integrity checked to ensure that all values ​​are valid. The system repeats this information collection, calculation, and integration process for all currently loaded and active components (for example, within the visible range or recently rendered), ultimately generating a collection of multiple components and their corresponding basic data. This collection is called the component basic data set. Some data examples are as follows:

[0158] Table 3 Example of component basic dataset

[0159] ;

[0160] Table 3 lists the records of some components in the component basic data set, which contains the basic data required for calculating the uninstallation priority.

[0161] S502: Based on the component basic data set, use the formula:

[0162] ;

[0163] Calculate the unloading priority coefficient, store the component numbers whose coefficients exceed the dynamic judgment threshold into a temporary set, and generate a candidate unloading set;

[0164] in, Represents the uninstall priority coefficient of the component, Represents the difference between the current actual frame rate and the preset reference frame rate. Represents the viewing time of a single component, Represents the arithmetic mean of the viewing time of all components, Represents the current timestamp of the system, Represents the loading timestamp of a single component, Represents an exception handling constant to avoid the denominator being zero;

[0165] First, calculate the arithmetic mean of the viewing time of all components in the dataset , assuming that there are currently 120 active components in the dataset, their viewing time The sum is seconds, the average residence time Seconds, then select the component "G015-002" in the data set for calculation, and its data is , , , extract the frame rate difference FPS, calculate the absolute value of the difference between its viewing angle dwell time and the average value Seconds, get the current system timestamp , recorded as Seconds, calculate the loading time of the component Seconds, set a very small positive constant To prevent the denominator from being zero when calculating square roots, set , substitute these values ​​into the uninstall priority coefficient calculation formula:

[0166] ;

[0167] Note that the formula numerator uses To indicate the degree of frame rate drop, make it a positive value (when the frame rate is lower than the benchmark), ,so , calculation component G015-002 :

[0168] ;

[0169] Next, set a dynamic judgment threshold Used to preliminarily screen candidate components for uninstallation. The calculation of this threshold is related to the current performance pressure: , set the basic threshold , scale factor , then the current ;

[0170] The calculated With dynamic threshold Compare, because , the uninstall priority coefficient of the component exceeds the threshold, and its ID "G015-002" is added to a temporary collection. The system repeats this for all components in the component basic data set. The calculation and threshold comparison process will The value exceeds the current dynamic threshold The component IDs of the components are stored in the temporary set, which is the candidate uninstall set. The formula is beneficial in that it takes the system performance pressure (through The greater the pressure, the greater the item), the user's attention to the component (through The greater the difference from the average attention, the higher the priority) and the time the component has been loaded (through It is reflected in the denominator, the longer the loading, the lower the priority) and quantifies the priority of each component to be unloaded.

[0171] S503: Traverse the candidate uninstallation set, sort it from high to low according to the uninstallation priority coefficient, calculate the difference between the system timestamp and the loading timestamp, if the difference is less than the dynamic loading cycle threshold, retain the component, if the difference is greater than or equal to the dynamic loading cycle threshold, intercept the first N items in order, and generate a list of uninstallable components.

[0172] Candidate uninstallation set, which contains all uninstallation priority coefficients Exceeding dynamic threshold The component ID and its corresponding The value set is: [{G015-002,6.618},{H008-011,8.950},{K020-005,5.820},{M101-001,7.105}]. The system first The value sorts this set in descending order, with the highest priority at the front. The sorted list is: [{H008-011,8.950},{M101-001,7.105},{G015-002,6.618},{K020-005,5.820}]. Next, the dynamic loading cycle threshold is introduced. The concept of , in order to avoid components being repeatedly loaded and unloaded in a short period of time, the threshold is set based on the average loading time of the component and a stability factor , the calculation formula is , obtained by statistical history loading data Seconds, set to ensure stability ,but seconds, the system checks the components in the sorted list one by one and calculates their loading time , and compare that duration with Seconds to compare, process the first component H008-011, query its ,calculate seconds, because , the component loading time is less than one cycle, the system decides to temporarily retain the component, remove it from the list to be unloaded, and process the second component M101-001. ,calculate seconds, because , meet the loading cycle conditions, keep it in the list to be unloaded, process the third component G015-002, seconds (from S502), because , does not meet the cycle conditions, remove, process the fourth component K020-005, ,calculate seconds, because , does not meet the cycle conditions, removed, after the loading cycle screening, the list to be uninstalled only contains: [{M101-001,7.105}], finally, the system determines the number N of components to be uninstalled based on the current resource requirements (for example, how much memory needs to be released or how much the frame rate needs to be increased), from the components that have passed the cycle screening and are still Select the first N items in the list to be uninstalled in descending order. In this example, if the system determines that one component needs to be uninstalled, the first item in the list is selected, and the final list of uninstallable components generated is: ["M101-001"].

[0173] A large-scale BIM model optimization system based on intelligent loading is used to execute the large-scale BIM model optimization method based on intelligent loading. The system includes:

[0174] The component layering and block module obtains the coordinates of the component center point and the bounding box boundary value, combines the type code for dual classification, divides the complexity level according to the element face value and the mapping mark status, and generates a BIM model loading block structure that includes spatial distribution and hierarchical features;

[0175] The view filtering and sorting module calls the BIM model to load the bounding box coordinates of the block structure, calculates the distance between the component center point and the view cone boundary, filters the components that meet the visibility threshold, and sorts them according to the cosine value of the angle between the viewpoint direction vector and the component vector to generate the current view component loading sequence;

[0176] The behavior prediction preloading module uses a sliding window to divide the behavior into segments based on the user's perspective translation vector and Euler angle data. It performs standard deviation calculation and weighted average normalization on the translation vector within the window, calls the BIM model to load the spatial block direction vector set of the block structure, filters the block direction correlation strength values ​​that exceed the dynamic threshold, and combines the unloaded items in the current view component loading sequence to generate a BIM component preloading list.

[0177] The resource adaptation and adjustment module obtains the terminal's video memory capacity and texture unit occupancy value, calls the total number of component faces and texture resolution from the BIM component preload list, compares the video memory requirement with the remaining value, performs texture resolution downgrade on components that exceed the limit, and generates a primitive level adjustment plan;

[0178] The dynamic unloading determination module obtains the dwell time stamp and frame rate difference of the loaded components, calls the loading time parameter of the primitive level adjustment scheme, marks the components whose dwell time is less than the threshold and whose frame rate difference exceeds the limit, and generates a list of unloadable components.

[0179] The above are merely preferred embodiments of the present invention and do not limit the present invention in any other form. Any technician familiar with the profession may use the technical content disclosed above to change or modify it into an equivalent embodiment with equivalent changes and apply it to other fields. However, any simple modification, equivalent change and modification made to the above embodiment based on the technical essence of the present invention without departing from the content of the technical solution of the present invention shall still fall within the scope of protection of the technical solution of the present invention.

Claims

1. A large-scale BIM model optimization method based on intelligent loading, characterized in that: The following steps are involved: S1: Obtain the component center coordinates, bounding box boundary values ​​and type codes, perform interval judgment between component coordinates and spatial index boundaries, perform double classification processing based on type codes, and then perform complexity stratification on the number of element faces and mapping tags to generate a BIM model loading block structure; S2: calling the BIM model to load the component bounding box coordinates in the block structure, performing angle and distance judgment with the cone boundary vector generated by the current viewing angle, screening the components and sorting them by the angle value, and generating a current view component loading sequence; S3: Based on the user perspective translation vector and rotation Euler angle within a continuous time period, a sliding window is used to divide the local behavior segments, and weighted average normalization is performed on the translation vector. The set of spatial block direction vectors in the block structure of the BIM model is called to load, and the cosine similarity between unit vectors is calculated. Component labels of similar areas are selected as preloading targets, and a BIM component preloading list is generated. S4: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component preload list, compare resource requirements with resource limits, perform downgrade processing on some component element levels, and generate element level adjustment plan; The steps for obtaining the BIM component preload list are specifically as follows: S301: Using a sliding window to divide the local behavior segments of the user's perspective translation vector, multiplying and accumulating the translation vector components at multiple time points within the window with a time attenuation factor, and calculating a normalized translation parameter corresponding to the center point of the window; S302: Call the BIM model to load the spatial block direction vector set in the block structure, based on the normalized translation parameter, using the formula: ; Calculate the block direction correlation strength and generate a direction similarity set through the joint operation of vector projection difference value and spatial weight adjustment factor; in, Representative The first window and the The block in Directional association strength value under the dynamic factor, Representative Window The standard deviation of the translation vector components at multiple time points, Represents the inverse of the cosine of the angle between the block j direction vector and the normalized translation parameter, Represents the ratio of the volume of block j to the square root of the user's viewing angle height, Representative Window The product of the standard deviation of the components of the inner translation vector and the time decay factor, Represents the window The translation vector component at each time point, Represents the total number of time points in the window; S303: Calculating a dynamic threshold based on the direction similarity set, screening block direction association strength values ​​exceeding the dynamic threshold, integrating corresponding block labels, and generating a BIM component preloading list.

2. The large-scale BIM model optimization method based on intelligent loading according to claim 1 is characterized in that: The BIM model loading block structure includes spatial block information, type classification information, and complexity level. The current view component loading sequence specifically includes a loading sort list, a perspective priority identifier, and a distance filter item. The BIM component preloading list includes area labels, behavior pattern recognition, and preloading target identifiers. The graphic element level adjustment plan includes level mapping rules, resource matching standards, and adjustment strategies.

3. The large-scale BIM model optimization method based on intelligent loading according to claim 2 is characterized in that: The steps for obtaining the block structure of the BIM model loading are specifically as follows: S101: Obtain the coordinates of the component center point and the bounding box boundary value, compare the coordinates of the component center point with the spatial index boundary axis by axis, determine whether the coordinates are within the closed interval formed by the maximum and minimum values ​​of the boundary, and perform secondary classification on the components in the same interval based on the type code to generate a spatial index interval classification set; S102: Based on the spatial index interval classification set, extract the number of primitive faces and the mapping mark using the formula: ; Obtain the layered complexity coefficient by calculation, compare the value with the preset complexity threshold, and generate the complexity layer parameter; in, represents the layered complexity coefficient, Represents the number of faces of the primitive, Represents a sticker marker. 、 Respectively represent the maximum and minimum boundary values ​​of the bounding box in the corresponding axis. Calculate the absolute value of the bounding box side length; S103: Calling the classification results in the spatial index interval classification set, combining the hierarchical values ​​in the complexity hierarchical parameters, performing dual-condition matching of spatial position and complexity on the components, merging the components with consistent matching results into the same block unit, and generating a BIM model loading block structure.

4. The large-scale BIM model optimization method based on intelligent loading according to claim 3 is characterized in that: The steps for obtaining the current view component loading sequence are specifically as follows: S201: Call the BIM model to load the bounding box vertex coordinates of each component in the block structure, based on the normal vectors of the six boundary surfaces of the viewing cone, using the formula: ; Calculate the angle between the bounding box of each component and the boundary surface of the view cone, and traverse all components to generate the bounding box-view cone angle; in, Representative The bounding box and The angle between the boundary surfaces of the frustum, Representative The coordinate vector of the center point of the component bounding box, Represents the viewing cone The normal vector of the boundary surface, Representative The center point of the bounding box and the The Euclidean distance between the boundary surfaces of the frustum; S202: Based on the angle between the bounding box and the view cone, components that meet the conditions are screened according to the angle value range, and components outside the preset distance range are excluded based on the straight-line distance data between the center point of the component bounding box and the viewpoint coordinates to generate a visible component identification set; S203: calling the bounding box-view cone angle value, traversing the component angle values ​​in the visible component identification set, establishing a loading priority queue arranged in ascending order of values, and generating a current view component loading sequence.

5. The large-scale BIM model optimization method based on intelligent loading according to claim 1 is characterized in that: The steps for obtaining the primitive level adjustment solution are specifically as follows: S401: Obtain terminal rendering resource parameters, call the component element quantity and mapping mark in the BIM component preload list, and calculate the average visibility parameter using the formula: ; Calculate the component resource requirement metrics of multiple components and integrate them to form a component resource requirement set; in, Representative The resource requirement metric of each component, Representative The number of elements in a component, Representative The complexity of the component's mapping markup, Represents the basic scaling factor of texture complexity, Represents the visibility deviation influence coefficient, Representative The visibility parameters of each component, Represents the average visibility parameter of all associated components, Represents distance and critical weight factor, Representative The rendering distance of each component, Representative The scenario criticality coefficient of each component; S402: Based on the component resource requirement set, compare the resource requirement metric values ​​of multiple components with the preset resource upper limit value item by item, filter out components whose resource requirement metric values ​​exceed the upper limit value, and generate an excess component identification set; S403: According to the over-limit component identification set, the primitive level of the identified component is gradually lowered until the resource demand metric value after the reduction meets the resource upper limit constraint, and a primitive level adjustment plan is generated.

6. The large-scale BIM model optimization method based on intelligent loading according to claim 5 is characterized in that: The method further comprises: S5: Calling the loaded component number in the primitive level adjustment scheme, obtaining the loading timestamp, the viewing angle retention time and the frame rate difference, determining the component number that meets the low retention and frame rate drop conditions, and establishing a list of unloadable components; The list of uninstallable components specifically includes uninstall component identifiers, time matching information, and frame rate monitoring indicators.

7. The large-scale BIM model optimization method based on intelligent loading according to claim 6 is characterized in that: The steps for obtaining the list of uninstallable components are specifically as follows: S501: calling the loaded component number in the primitive level adjustment scheme, reading the loading timestamp in the component registration information from the system memory, collecting the user's viewing angle dwell time, calculating the frame rate difference between the current frame rate and the preset reference frame rate, merging the three data into a unified format and verifying the integrity, and generating a component basic data set; S502: Based on the component basic data set, the formula is used: ; Calculate the unloading priority coefficient, store the component numbers whose coefficients exceed the dynamic judgment threshold into a temporary set, and generate a candidate unloading set; in, Represents the uninstall priority coefficient of the component, Represents the difference between the current actual frame rate and the preset reference frame rate. Represents the viewing time of a single component, Represents the arithmetic mean of the viewing time of all components, Represents the current timestamp of the system, Represents the loading timestamp of a single component, Represents an exception handling constant to avoid the denominator being zero; S503: Traverse the candidate uninstallation set, sort them from high to low according to the uninstallation priority coefficient, calculate the difference between the system timestamp and the loading timestamp, if the difference is less than the dynamic loading cycle threshold, retain the component, if the difference is greater than or equal to the dynamic loading cycle threshold, intercept the first N items in order, and generate a list of uninstallable components.

8. A large-scale BIM model optimization system based on intelligent loading, characterized in that: According to any one of claims 1 to 7, the large-scale BIM model optimization method based on intelligent loading comprises: The component layering and block module obtains the coordinates of the component center point and the bounding box boundary value, combines the type code for dual classification, divides the complexity level according to the element face value and the mapping mark status, and generates a BIM model loading block structure that includes spatial distribution and hierarchical features; The view filtering and sorting module calls the bounding box coordinates of the block structure loaded by the BIM model, calculates the distance between the component center point and the view cone boundary, filters the components that meet the visibility threshold, sorts them according to the cosine value of the angle between the viewpoint direction vector and the component vector, and generates the current view component loading sequence; The behavior prediction and preloading module uses a sliding window to divide the behavior segments based on the user's perspective translation vector and Euler angle data. It performs standard deviation calculation and weighted average normalization on the translation vector within the window, calls the BIM model to load the spatial block direction vector set of the block structure, screens the block direction association strength values ​​that exceed the dynamic threshold, and combines the unloaded items in the current view component loading sequence to generate a BIM component preloading list. The resource adaptation adjustment module obtains the terminal video memory capacity and texture unit occupancy value, calls the total number of component faces and texture resolution in the BIM component preload list, compares the video memory requirement with the remaining value, performs texture resolution downgrade on the excess components, and generates a primitive level adjustment plan; The dynamic unloading determination module obtains the dwell time stamp and frame rate difference of the loaded components, calls the loading time parameter of the primitive level adjustment scheme, marks the components whose dwell time is less than the threshold and whose frame rate difference exceeds the limit, and generates a list of unloadable components.

Citation Information

Patent Citations

  • 3D model loading method and device, terminal equipment, storage medium and program product

    CN116954746A

  • Massive true three-dimensional model loading optimization method

    CN117372599A