Method and system for rendering scene division and storage optimization of large volume model
By preprocessing and partitioning the scene components of large-scale models and optimizing data storage, the problems of frequent material state switching and vertex count exceeding limits in GPU rendering are solved, achieving high rendering efficiency and loading speed, and meeting the real-time interaction requirements of large-scale models.
Patent Information
- Application Number
- CN202511142381.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2025-08-15
- Publication Date
- 2026-02-24
- Estimated Expiration
- 2045-08-15
AI Technical Summary
In existing technologies, rendering large-scale models requires frequent switching of material states during GPU rendering, resulting in excessive submissions. On resource-constrained devices such as mobile devices, the number of vertices in a single rendering unit exceeds the limit, which can easily cause rendering interruptions or a sudden drop in frame rate, failing to meet the needs of real-time interaction.
By collecting geometric data of scene components, calculating bounding box information, statistically analyzing material reuse, initializing the BVH root node and dividing the BVH based on the diagonal length of the bounding box space, dividing rendering unit blocks according to materials, constructing a streaming rendering Node structure directory, and optimizing data storage and scene partitioning.
By reducing the number of GPU data submissions, controlling the size of individual data blocks, and prioritizing the loading of data required by the current node, the rendering frame rate and loading speed of large-scale models have been improved, meeting the needs of real-time interaction.
Smart Images

Figure CN121095413B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of model rendering technology, and in particular to a method and system for optimizing rendering scene partitioning and storage for large-scale models. Background Technology
[0002] With the rapid development of technologies such as 3D modeling, virtual reality, and digital twins, the demand for real-time rendering of large-scale 2D and 3D models (such as city-level BIM models, large-scale game scenes, and industrial design models) is increasing. These scenes typically contain millions or even hundreds of millions of geometric components and must simultaneously meet the requirements of fast loading, smooth interaction, and high frame rate rendering.
[0003] In existing technologies, optimization for rendering large-scale data often employs a front-end and back-end collaborative processing strategy: at the front-end, spatial partitioning algorithms such as boundary volume hierarchy and octrees are commonly used to reduce the computational load of frustum culling, or LOD (Level of Detail) technology is used to dynamically adjust model accuracy; at the back-end, data compression, streaming, and component priority loading are used to reduce network transmission pressure. However, data storage is often organized independently by component, leading to frequent material state switching and excessive submissions during GPU rendering; on resource-constrained devices such as mobile devices, the problem of exceeding the vertex limit for a single rendering unit has not been addressed, easily causing rendering interruptions or sudden drops in frame rate. These shortcomings make it difficult for traditional technologies to balance loading speed and rendering efficiency, failing to meet the real-time interactive needs of large-scale scenes.
[0004] Based on this, this application provides a method and system for rendering scene partitioning and storage optimization for large-scale models. Summary of the Invention
[0005] To address the issue of data storage being organized independently by components, which leads to frequent material state switching and excessive submissions during GPU rendering, and the problem of exceeding the vertex limit for a single rendering unit in resource-constrained devices such as mobile devices, which is prone to rendering interruptions or sudden drops in frame rate, this application provides a method and system for rendering scene partitioning and storage optimization for large-scale models.
[0006] Firstly, this application provides a rendering scene partitioning and storage optimization method for large-scale models, employing the following technical solution: including:
[0007] Collect geometric data of all components in the scene, obtain vertex information and calculate bounding box information of components and primitives, collect material information and reuse status, and obtain component preprocessing information;
[0008] The BVH root node is initialized based on the component preprocessing information and a global bounding box is set. The component is then divided into BVHs based on the diagonal length of the bounding box space to obtain the scene division result.
[0009] Based on the scene division results, organize the geometric data files according to the BVH node number, classify and put the vertex, index, normal and uv data into Block, and record the position information of the geometry in the block;
[0010] A streaming rendering node structure directory is constructed based on the BVH tree, and the node records component transformation information, material markers and independent rendering block composition data.
[0011] Optionally, the step of collecting geometric data of all components in the scene, obtaining vertex information and calculating bounding box information of components and primitives, statistically analyzing material information and reuse status, and obtaining component preprocessing information includes:
[0012] Obtain the vertex information of all components in the scene, and calculate the bounding box information of the components and the primitives that make up the components based on the vertex information and the transformation matrix;
[0013] The material information is statistically analyzed based on whether a texture map exists, and the reuse status is statistically analyzed based on whether the component is reused.
[0014] Components are sorted by bounding box size and a priority queue of components is established. The size sorting is determined by the diagonal length or surface area of the bounding box.
[0015] Analyze the material distribution characteristics and establish a material-component mapping table;
[0016] The number of vertices of each component is counted, and components with more than 65535 vertices are marked as exceeding the limit, thus obtaining the preprocessing information of the components.
[0017] Optionally, the step of initializing the BVH root node and setting the global bounding box based on the component preprocessing information, and performing BVH partitioning on the components based on the diagonal length of the bounding box space to obtain the scene partitioning result includes:
[0018] Initialize the BVH root node and set the global bounding box based on the component preprocessing information;
[0019] BVH partitioning of components is performed based on the diagonal length of the bounding box space;
[0020] Move components whose bounding box diagonal length is greater than 1 / 3 of the current node's bounding box diagonal length to their corresponding parent nodes, and repeat the current step until the components are moved to the top-level node;
[0021] The data within the node is balanced, and the excess primitives are placed into separate nodes of the same level. The rendering unit blocks are divided according to the material. The material blocks with an excess number of vertices are further divided until the requirements are met.
[0022] Optionally, the step of balancing the data within a node, placing excess primitives into separate nodes at the same level, dividing rendering unit blocks according to material, and further dividing material blocks with excess vertex counts until the requirements are met includes:
[0023] The data within the partitioned nodes is balanced. If a single element within a node has more than 65535 elements, the corresponding element is placed into a separate node at the same level.
[0024] The components inside a node are divided into different independent rendering blocks according to their materials. If the number of vertices in an independent rendering block corresponding to a certain material is greater than 65535, the independent rendering blocks composed of the components corresponding to the material are further divided until the number of vertices in the corresponding independent rendering block is less than 65535.
[0025] Optionally, the step of organizing the geometric data files according to the BVH node number based on the scene partitioning results, classifying and placing the vertex, index, normal, and uv data into Blocks, and recording the geometric position information within the blocks includes:
[0026] Based on the scene segmentation results, the geometry, material, and component information are processed and written to the corresponding files;
[0027] Geometric information is organized according to the independent rendering blocks divided by the scene, with vertices, indices, normals, and uvs placed into large arrays to form independent Blocks;
[0028] Record the start and end positions of the geometry in the Block and the component composition information of the independent rendering unit.
[0029] Optionally, the step of constructing a streaming rendering Node structure directory based on the BVH tree, recording component transformation information, material identifiers, and independent rendering block composition data in the nodes, includes:
[0030] Construct the Node structure directory that supports streaming rendering based on the BVH tree, ensuring that the data required by the current node is stored first;
[0031] The node records component transformation information, material identifiers, and independent rendering block composition data, which includes primitive bounding boxes and associated material data.
[0032] Optionally, before constructing the streaming rendering Node structure directory based on the BVH tree and recording component transformation information, material identifiers, and independent rendering block composition data in the nodes, the method further includes:
[0033] The size of the block is controlled to not exceed 2M; if it is too large, it is further subdivided.
[0034] Secondly, this application provides a rendering scene partitioning and storage optimization device for large-scale models, which adopts the following technical solution, including:
[0035] The component processing module is used to collect the geometric data of all components in the scene, obtain vertex information and calculate the bounding box information of components and primitives, collect material information and reuse information, and obtain component preprocessing information.
[0036] The spatial partitioning module is used to initialize the BVH root node and set the global bounding box based on the component preprocessing information, and to perform BVH partitioning on the component based on the diagonal length of the bounding box space to obtain the scene partitioning result.
[0037] The file storage module is used to organize geometric data files according to the BVH node number based on the scene division results, classify and put vertex, index, normal and uv data into Block, and record the position information of geometry within the block;
[0038] The rendering information module is used to construct a streaming rendering node structure directory based on the BVH tree, and to record component transformation information, material markers and independent rendering block composition data in the nodes.
[0039] Thirdly, this application also provides a control device, the device comprising:
[0040] It includes a memory and a processor, wherein the memory stores a computer program that can be loaded by the processor and executed, such as the above-described method for rendering scene partitioning and storage optimization for large-scale models.
[0041] Fourthly, this application also provides a computer-readable storage medium storing a computer program that can be loaded by a processor and executed as described above regarding the rendering scene partitioning and storage optimization method for large-scale models.
[0042] In summary, this application first preprocesses scene components by collecting geometric data, calculating bounding boxes, statistically analyzing material reuse, and marking components exceeding the limit. Next, a BVH (Bounding Volume Hierarchy) structure is constructed based on the diagonal length of the bounding boxes. This addresses the vertex count exceeding limit by dynamically adjusting the component distribution within nodes (moving large components to parent nodes), balancing node data, and dividing rendering unit blocks by material. Subsequently, geometric data is organized according to the BVH partitioning results, with vertices, indices, etc., categorized and stored in blocks under 2MB, and their position information recorded. Finally, a streaming rendering node structure directory is constructed based on the BVH tree, recording component transformation information, material markers, and independent rendering block data. The overall solution, through deep coupling of spatial partitioning and storage optimization, achieves the technical effects of reducing GPU data submissions, controlling the size of single-block data, and prioritizing the loading of data required by the current node, providing a systematic solution for real-time rendering of large-scale models. Attached Figure Description
[0043] Figure 1 This is a flowchart illustrating a method for rendering scene partitioning and storage optimization for large-scale models.
[0044] Figure 2 This is a structural block diagram of a rendering scene partitioning and storage optimization device for large-scale models. Detailed Implementation
[0045] The following combination Figure 1 - Figure 2 This application will be described in further detail.
[0046] When faced with large-scale 2D and 3D application scenarios that require fast loading, rendering, and smooth operation, providing efficient and reasonable rendering scene partitioning methods and data storage structures that meet the needs of rapid loading is a topic worthy of research.
[0047] In scenarios involving large volumes of data, optimizations are typically applied to specific data types to improve rendering efficiency. For example, large scene components can be prioritized, BVH partitioning can be performed on the front end, and data transmission can be compressed. Building upon previous research, this application, through repeated demonstrations and experiments, proposes an optimized algorithm for scene partitioning and data storage, employing a strategy of backend processing and direct frontend use.
[0048] Reference Figure 1 The embodiments of this application include at least steps S10 to S40.
[0049] S10: Collect geometric data of all components in the scene, obtain vertex information and calculate bounding box information of components and primitives, collect material information and reuse status, and obtain component preprocessing information.
[0050] S20: Initialize the BVH root node based on the component preprocessing information and set the global bounding box. Then, perform BVH partitioning on the component based on the diagonal length of the bounding box space to obtain the scene partitioning result.
[0051] S30: Based on the scene division results, organize the geometric data files according to the BVH node number, classify and put the vertex, index, normal and uv data into Block, and record the geometric position information within the block.
[0052] S40 constructs a streaming rendering Node structure directory based on the BVH tree, recording component transformation information, material markers, and independent rendering block composition data in the nodes.
[0053] Specifically, in the preprocessing stage of construction, geometric data is collected, bounding boxes are calculated, material reuse is statistically analyzed, and over-limit components are marked to provide a data foundation for subsequent partitioning. Next, a BVH hierarchy is constructed based on the diagonal length of the bounding box. The vertex over-limit problem is solved by dynamically adjusting the node distribution and material block partitioning, achieving efficient spatial partitioning. Then, data is organized according to BVH nodes, vertices and other elements are classified and stored in Blocks, and the size of each block is controlled to optimize the storage structure. Finally, a streaming rendering Node directory is constructed to record transformation information and material tags, supporting on-demand loading, ultimately reducing the number of GPU data submissions and improving the rendering frame rate and loading speed of large-scale scenes.
[0054] In some embodiments, step S10 specifically includes the following steps: obtaining vertex information of all components in the scene, and calculating bounding box information of components and primitives that make up the components based on vertex information and transformation matrix; statistically analyzing material information according to whether texture maps exist, and statistically analyzing reuse status according to whether components are reused; sorting components by bounding box size and establishing a priority queue of components, with the size sorting determined by the diagonal length or surface area of the bounding box; analyzing material distribution characteristics and establishing a material-component mapping table; counting the number of vertices of each component, marking over-limit components with more than 65535 vertices, and obtaining component preprocessing information.
[0055] Specifically, the process involves collecting geometric data for all components in the scene: obtaining vertex information for all components and calculating bounding box information for the components and their constituent primitives based on the vertex information and transformation matrices. It also involves statistically analyzing the material information of the components, categorizing it by the presence of texture maps and which components reuse them.
[0056] Sort components by bounding box from largest to smallest, and establish a priority queue: Since the size of components needs to be considered in the later BVH partitioning, a metric should be used to sort them by size based on the bounding box. This metric could be the length of the bounding box's diagonal or the size of the bounding box's surface area.
[0057] Analyze the material distribution characteristics and establish a material-component mapping table: count components according to their materials, reuse components of the same material to establish mapping relationships, which facilitates the subsequent division of rendering unit blocks within the BVH node.
[0058] Count the number of vertices of each component and mark components that exceed the limit (>65535 vertices): Considering the characteristics of mobile rendering, the number of vertices in a single rendering unit cannot exceed 65535. Therefore, the number of vertices of primitives in each component needs to be marked, and those exceeding 65535 need to be processed separately.
[0059] In some embodiments, step S20 specifically includes the following steps: initializing the BVH root node based on component preprocessing information and setting the global bounding box; dividing the component into BVH parts based on the diagonal length of the bounding box space; moving components whose bounding box diagonal length is greater than 1 / 3 of the current node's bounding box diagonal length to the corresponding parent node, repeating the current step until the component is moved to the top-level node; balancing the data within the node, placing the excess primitives into separate nodes at the same level, dividing the rendering unit blocks according to the material, and further dividing the material blocks with an excess number of vertices until the requirements are met.
[0060] Furthermore, the data within the divided nodes is balanced. If a single primitive within a node has more than 65535 vertices, the corresponding primitive is placed in a separate node at the same level. The components within a node are divided into different independent rendering blocks according to their materials. If the number of vertices in an independent rendering block corresponding to a certain material is greater than 65535, the independent rendering blocks composed of the components corresponding to that material are further divided until the number of vertices in the corresponding independent rendering block is less than 65535.
[0061] In practice, the BVH root node is initialized first, and a global bounding box is set. The component is then divided into BVH sections based on the diagonal length of the bounding box space. Next, the diagonal length of the component's bounding box is compared to the diagonal length of the bounding box of its corresponding node in the BVH. If the component's diagonal is greater than 1 / 3 of the node's diagonal, the component is moved towards its parent node. This process is repeated until the component is still greater than 1 / 3 of the node's base bounding box at the top-level node, at which point it is placed on the top-level node. Data within the divided nodes is then balanced. If a single primitive within a node has more than 65535 vertices, it is placed on a separate node of the same level. Finally, the components within a node are divided into independent rendering blocks based on their material. If the number of vertices in an independent rendering block corresponding to a certain material is greater than 65535, the blocks are further divided until the number of vertices is less than 65535.
[0062] In some embodiments, step S30 specifically includes the following steps: processing the geometry, material, and component information according to the scene division results and writing them into the corresponding files; organizing the geometry information according to the independent rendering blocks of the scene division, placing vertices, indices, normals, and uvs into large arrays to form independent Block blocks; and recording the start and end positions of the geometry in the Block block and the component composition information of the independent rendering unit.
[0063] In some embodiments, step S40 specifically includes the following steps: constructing a Node structure directory that supports streaming rendering based on the BVH tree, ensuring that the data required by the current node is stored first;
[0064] The node records component transformation information, material identifiers, and independent rendering block composition data. The independent rendering block composition data includes primitive bounding boxes and associated material data.
[0065] Furthermore, the size of the block is controlled to not exceed 2M; if it is too large, it is further subdivided.
[0066] In practice, data storage considerations include synchronizing with scene partitioning, file size, merging independent graphic elements, and recording component graphic information. The specific process is as follows:
[0067] Based on the scene partitioning results, the geometry, material, and component information are processed and written to the corresponding files; the geometry data files are written according to the node numbers of the BVH partitioning. The geometry information is organized according to the independent rendering blocks of the scene partitioning, placing vertices, indices, normals, and UVs (if present) into large arrays to form independent blocks. Blocks are divided into two categories: those with UVs and those without.
[0068] Record the position information of small geometric shapes within a large block. Record the start and end positions of the block portion corresponding to the component within the large block, so that the front end can reconstruct the required geometric information of the component based on this information.
[0069] Record the component information of an independent rendering unit. An independent rendering unit is often composed of multiple components. Record the start and end positions of each component in the independent rendering block in the node information. This way, when the front end needs to perform specific operations on the components, it can control specific parts of the independent rendering unit based on this information.
[0070] The size of a block needs to be controlled, and in principle, it should not exceed 2M. If it is too large, it should be further subdivided.
[0071] The BVH tree components, divided according to the scene, support the node structure directory for front-end streaming rendering. The data of the first node accessed in the scene should also be given priority in storage. The overall logic for data storage is to ensure that the data needed by the current node already exists in that file or a file preceding it.
[0072] The Node node records the component's transformation information, material identifiers, and the composition information of independent rendering blocks. The transformation information of independent blocks plus the component primitives constitutes the component's actual rendering data. A component is generally composed of multiple primitives, and the transformation information of each primitive under the component needs to be recorded separately. The independent rendering block needs to record the bounding box of the component primitive, associated materials, and other information to facilitate primitive-related operations by the front-end.
[0073] The implementation principle of a rendering scene partitioning and storage optimization method for large-scale models in this application is as follows: First, scene components are preprocessed by collecting geometric data, calculating bounding boxes, statistically analyzing material reuse, and marking components exceeding the limit. Next, a BVH (Bounding Volume Hierarchy) structure is constructed based on the diagonal length of the bounding boxes. The problem of exceeding the vertex limit is solved by dynamically adjusting the distribution of components within nodes (moving large components to parent nodes), balancing node data, and partitioning rendering unit blocks according to materials. Then, geometric data is organized according to the BVH partitioning results, with vertices, indices, etc., categorized and stored in Blocks within 2MB and their position information recorded. Finally, a streaming rendering Node structure directory is constructed based on the BVH tree, recording component transformation information, material markers, and independent rendering block data. The overall solution, through deep coupling of spatial partitioning and storage optimization, achieves the technical effects of reducing the number of GPU data submissions, controlling the size of single-block data, and prioritizing the loading of data required by the current node, providing a systematic solution for real-time rendering of large-scale models.
[0074] Figure 1 This is a flowchart illustrating a rendering scene partitioning and storage optimization method for large-scale models in one embodiment. It should be understood that, although... Figure 1 The steps in the flowchart are shown sequentially as indicated by the arrows, but these steps are not necessarily executed in the order indicated by the arrows; unless explicitly stated otherwise, there is no strict order requirement for the execution of these steps, and they can be executed in other orders; and Figure 1 At least some of the steps in the process may include multiple sub-steps or multiple stages. These sub-steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these sub-steps or stages is not necessarily sequential, but can be executed in turn or alternately with other steps or at least some of the sub-steps or stages of other steps.
[0075] Based on the same technical concept, referring to Figure 2 This application also provides a rendering scene partitioning and storage optimization device for large-scale models, which adopts the following technical solution: The device includes:
[0076] The component processing module is used to collect the geometric data of all components in the scene, obtain vertex information and calculate the bounding box information of components and primitives, collect material information and reuse information, and obtain component preprocessing information.
[0077] The spatial partitioning module is used to initialize the BVH root node based on the component preprocessing information and set the global bounding box, and to perform BVH partitioning on the components based on the diagonal length of the bounding box space to obtain the scene partitioning results.
[0078] The file storage module is used to organize geometric data files according to the BVH node number based on the scene division results, classify and put vertex, index, normal and uv data into Block, and record the position information of geometry within the block;
[0079] The rendering information module is used to construct a streaming rendering node structure directory based on the BVH tree, and to record component transformation information, material markers and independent rendering block composition data in the nodes.
[0080] In some embodiments, the component processing module is specifically used to obtain the vertex information of all components in the scene, and calculate the bounding box information of the components and the primitives that make up the components based on the vertex information and the transformation matrix.
[0081] Material information is collected based on whether a texture map exists, and reuse is collected based on whether the component is reused.
[0082] Components are sorted by bounding box size and a priority queue of components is established. The size sorting is determined by the diagonal length or surface area of the bounding box.
[0083] Analyze the material distribution characteristics and establish a material-component mapping table;
[0084] The number of vertices of each component is counted, and components with more than 65535 vertices are marked as exceeding the limit, thus obtaining component preprocessing information.
[0085] In some embodiments, the spatial partitioning module is specifically used to initialize the BVH root node based on component preprocessing information and set the global bounding box;
[0086] BVH partitioning of components is performed based on the diagonal length of the bounding box space;
[0087] Move components whose bounding box diagonal length is greater than 1 / 3 of the current node's bounding box diagonal length to their corresponding parent nodes, and repeat the current step until the components are moved to the top-level node;
[0088] The data within the node is balanced, and the excess primitives are placed into separate nodes of the same level. The rendering unit blocks are divided according to the material. The material blocks with an excess number of vertices are further divided until the requirements are met.
[0089] In some embodiments, the spatial partitioning module is also used to perform balancing processing on the data within the partitioned nodes. If there is a single graphic element greater than 65535 within a node, the corresponding graphic element is placed in a separate node at the same level.
[0090] The components inside a node are divided into different independent rendering blocks according to their materials. If the number of vertices in an independent rendering block corresponding to a certain material is greater than 65535, the independent rendering blocks composed of the components corresponding to the material are further divided until the number of vertices in the corresponding independent rendering block is less than 65535.
[0091] In some embodiments, the file storage module is specifically used to process geometry, material, and component information according to the scene division results and write them into the corresponding files;
[0092] Geometric information is organized into independent rendering blocks based on scene division, with vertices, indices, normals, and uvs placed into large arrays to form independent blocks;
[0093] Record the start and end positions of the geometry in the Block and the component composition information of the independent rendering unit.
[0094] In some embodiments, the rendering information module is specifically used to construct a Node structure directory that supports streaming rendering based on the BVH tree, ensuring that the data required by the current node is stored first.
[0095] The node records component transformation information, material identifiers, and independent rendering block composition data. The independent rendering block composition data includes primitive bounding boxes and associated material data.
[0096] In some embodiments, the rendering information module is also used to control the size of the Block to not exceed 2M, and if it is too large, it will be further subdivided.
[0097] This application also discloses a control device.
[0098] Specifically, the control device includes a memory and a processor. The memory stores a computer program that can be loaded by the processor and executed to perform the aforementioned rendering scene partitioning and storage optimization method for large-scale models.
[0099] This application also discloses a computer-readable storage medium.
[0100] Specifically, the computer-readable storage medium stores a computer program that can be loaded by a processor and executed, such as the above-described method for rendering scene partitioning and storage optimization for large-scale models. The computer-readable storage medium includes, for example, various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0101] The above are all preferred embodiments of this application, and are not intended to limit the scope of protection of this application. Therefore, all equivalent changes made in accordance with the structure, shape and principle of this application should be covered within the scope of protection of this application.
Claims
1. A method for rendering scene partitioning and storage optimization for large-scale models, characterized in that, include: Collect geometric data of all components in the scene, obtain vertex information and calculate bounding box information of components and primitives, collect material information and reuse status, and obtain component preprocessing information; The BVH root node is initialized based on the component preprocessing information and a global bounding box is set. The component is then divided into BVHs based on the diagonal length of the bounding box space to obtain the scene division result. Based on the scene division results, organize the geometric data files according to the BVH node number, classify and put the vertex, index, normal and uv data into Block, and record the position information of the geometry in the block; A streaming rendering node structure directory is constructed based on the BVH tree, and the node records component transformation information, material markers and independent rendering block composition data; The process of initializing the BVH root node based on the component preprocessing information and setting the global bounding box, and then performing BVH partitioning on the components based on the diagonal length of the bounding box space to obtain the scene partitioning result includes: Initialize the BVH root node and set the global bounding box based on the component preprocessing information; BVH partitioning of components is performed based on the diagonal length of the bounding box space; Move components whose bounding box diagonal length is greater than 1 / 3 of the current node's bounding box diagonal length to their corresponding parent nodes, and repeat the current step until the components are moved to the top-level node; The data within the node is balanced, and the excess primitives are placed into separate nodes of the same level. The rendering unit blocks are divided according to the material. The material blocks with an excess number of vertices are further divided until the requirements are met.
2. The method for rendering scene partitioning and storage optimization for large-scale models according to claim 1, characterized in that, The process involves collecting geometric data of all components in the scene, obtaining vertex information, calculating bounding box information for components and primitives, statistically analyzing material information and reuse status, and obtaining component preprocessing information, including: Obtain the vertex information of all components in the scene, and calculate the bounding box information of the components and the primitives that make up the components based on the vertex information and the transformation matrix; The material information is statistically analyzed based on whether a texture map exists, and the reuse status is statistically analyzed based on whether the component is reused. Components are sorted by bounding box size and a priority queue of components is established. The size sorting is determined by the diagonal length or surface area of the bounding box. Analyze the material distribution characteristics and establish a material-component mapping table; The number of vertices of each component is counted, and components with more than 65535 vertices are marked as exceeding the limit, thus obtaining the preprocessing information of the components.
3. The method for rendering scene partitioning and storage optimization for large-scale models according to claim 1, characterized in that, The process of balancing data within nodes, placing excess primitives into separate nodes at the same level, dividing rendering unit blocks according to material, and further dividing material blocks with excessive vertex counts until the requirements are met includes: The data within the partitioned nodes is balanced. If a single element within a node has more than 65535 elements, the corresponding element is placed into a separate node at the same level. The components inside a node are divided into different independent rendering blocks according to their materials. If the number of vertices in an independent rendering block corresponding to a certain material is greater than 65535, the independent rendering blocks composed of the components corresponding to the material are further divided until the number of vertices in the corresponding independent rendering block is less than 65535.
4. The method for rendering scene partitioning and storage optimization for large-scale models according to claim 3, characterized in that, Based on the scene segmentation results, the geometric data files are organized according to the BVH node numbers. Vertex, index, normal, and UV data are categorized and placed into Blocks, and the position information of the geometry within the block is recorded, including: Based on the scene segmentation results, the geometry, material, and component information are processed and written to the corresponding files; Geometric information is organized according to the independent rendering blocks divided by the scene, with vertices, indices, normals, and uvs placed into large arrays to form independent Blocks; Record the start and end positions of the geometry in the Block and the component composition information of the independent rendering unit.
5. The method for rendering scene partitioning and storage optimization for large-scale models according to claim 3, characterized in that, The BVH tree-based streaming rendering node structure directory records component transformation information, material identifiers, and independent rendering block composition data in the nodes, including: Construct the Node structure directory that supports streaming rendering based on the BVH tree, ensuring that the data required by the current node is stored first; The node records component transformation information, material identifiers, and independent rendering block composition data, which includes primitive bounding boxes and associated material data.
6. The method for rendering scene partitioning and storage optimization for large-scale models according to claim 3, characterized in that, Before the BVH tree-based construction of the streaming rendering Node structure directory, which records component transformation information, material identifiers, and independent rendering block composition data in the nodes, the following is also included: The size of the block is controlled to not exceed 2M; if it is too large, it is further subdivided.
7. A rendering scene partitioning and storage optimization device for large-scale models, characterized in that, The device includes: The component processing module is used to collect the geometric data of all components in the scene, obtain vertex information and calculate the bounding box information of components and primitives, collect material information and reuse information, and obtain component preprocessing information. The spatial partitioning module is used to initialize the BVH root node and set the global bounding box based on the component preprocessing information, and to perform BVH partitioning on the component based on the diagonal length of the bounding box space to obtain the scene partitioning result. The file storage module is used to organize geometric data files according to the BVH node number based on the scene division results, classify and put vertex, index, normal and uv data into Block, and record the position information of geometry within the block; The rendering information module is used to construct a streaming rendering node structure directory based on the BVH tree, and to record component transformation information, material markers and independent rendering block composition data in the nodes; Specifically, the spatial partitioning module is used to initialize the BVH root node and set the global bounding box based on the component preprocessing information. BVH partitioning of components is performed based on the diagonal length of the bounding box space; Move components whose bounding box diagonal length is greater than 1 / 3 of the current node's bounding box diagonal length to their corresponding parent nodes, and repeat the current step until the components are moved to the top-level node; The data within the node is balanced, and the excess primitives are placed into separate nodes of the same level. The rendering unit blocks are divided according to the material. The material blocks with an excess number of vertices are further divided until the requirements are met.
8. A control device, characterized in that, The device includes: It includes a memory and a processor, wherein the memory stores a computer program that can be loaded by the processor and executed as described in any one of claims 1 to 6.
9. A computer-readable storage medium, characterized in that, The computer program is stored that can be loaded by a processor and executed as described in any one of claims 1 to 6.
Citation Information
Patent Citations
Three-dimensional model data extraction optimization and rendering method, system, equipment and medium
CN119941967A
Method and device for rendering three-dimensional scene data, storage medium, and electronic device
WO2022121525A1