Three-dimensional data visualization rendering method and visualization rendering engine system

Through LOD technology and tree structure, three-dimensional model data is organized, combined with adaptive screening of user's field of view and parallel processing of separate collaborative operation mode, the problem of insufficient performance of traditional GIS visual rendering engine system is solved, and efficient three-dimensional data visual rendering is achieved.

CN119379880BActive Publication Date: 2025-03-25INTERSTELLAR SPACE (TIANJIN) TECH DEV CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202411942152.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-12-27
Publication Date
2025-03-25
Estimated Expiration
2044-12-27

AI Technical Summary

Technical Problem

The traditional GIS visual rendering engine system is relatively lacking in visual performance, and there are problems such as low rendering efficiency, low frame rate, data loading time, and memory overflow, which affects the user experience.

Method used

The three-dimensional model data is spatially segmented and processed, and blocked slice data with different geometric details levels are generated, and these data are organized through a tree structure to achieve compact and efficient data organization. Based on the user's field of sight range, the data is downloaded and parsed in batches and parallel.

Benefits of technology

Improve rendering performance, save network bandwidth, improve response speed, optimize memory management, avoid system crashes, and realize rapid visualization of massive three-dimensional sliced ​​data in cities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119379880B_ABST
    Figure CN119379880B_ABST
Patent Text Reader

Abstract

The present invention relates to the field of visualization rendering technology, and provides a three-dimensional data visualization rendering method and a visualization rendering engine system. The method comprises: using LOD technology to perform spatial segmentation processing on three-dimensional model data to be rendered to generate block slice data with different geometric detail levels, organizing the block slice data through a tree structure with spatial relationship and outputting the tree structure as an index file; adaptively screening block slice data with different detail levels based on user field of view range and storing them in a rendering request queue, querying the block slice data to be rendered from the rendering request queue according to the index code of the block slice data and updating a layer class browser database; adopting a separated collaborative operation mode to download and parse the block slice data to be rendered in batches in parallel, and executing rendering tasks according to data parsing results, so as to achieve significant improvement in rendering scheduling frame rate and realize rapid visualization of massive three-dimensional slice data of cities on a web page.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of visualization rendering technology, and in particular to a three-dimensional data visualization rendering method and a visualization rendering engine system. Background Art

[0002] Traditional GIS visualization rendering engine systems are relatively lacking in visualization performance. They have low scheduling and rendering efficiency, resulting in low frame rates and roaming jams. Large-scale data loading takes too long, seriously affecting user experience. When the amount of data is large, it is easy to overflow the memory and cause system crashes. Therefore, there is an urgent need to systematically break through the performance bottleneck of massive 3D model data visualization in cities, develop a truly large-scale spatial data visualization system, solve the performance problem of loading massive 3D slice data in cities, and support the direct display of massive 3D data in cities in the system. Summary of the invention

[0003] In view of the above problems, the present invention is proposed to provide a three-dimensional data visualization rendering method and a visualization rendering engine system that overcome the above problems or at least partially solve the above problems.

[0004] One aspect of the present invention provides a three-dimensional data visualization rendering method, the method comprising:

[0005] Using LOD technology to perform spatial segmentation processing on the 3D model data to be rendered to generate block slice data with different geometric detail levels, wherein the block slice data is a spatial data structure organized in a hierarchical structure;

[0006] The block slice data is organized through a tree structure with a spatial relationship, and the tree structure is output as an index file, wherein the root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node includes: a pointer to the parent node and the child node, a description file of the node and a binary file, the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information;

[0007] Determine the current visible area according to the user's visual range, filter the block slice data of the detail level matching the user's visual range within the visible area as the block slice data to be rendered, and store the block slice data to be rendered in the rendering request queue;

[0008] Query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result, wherein the layer class browser database is used for browser storage management of the to-be-rendered tile slice data;

[0009] A separate collaborative operation mode is used to download and parse the block and slice data to be rendered in the layer class browser database in batches and in parallel, and the rendering task is executed according to the data parsing results.

[0010] Optionally, determining the current visible area according to the user's viewing angle, and filtering the block slice data of the detail level matching the user's viewing angle within the visible area as the block slice data to be rendered, including:

[0011] In the current frame state and the current camera, the first block slice data corresponding to the three-dimensional object to be rendered in the current viewing frustum is obtained by using an occlusion culling algorithm;

[0012] Filtering out second block slice data that meets a preset viewing distance range threshold from the first block slice data;

[0013] The third block slice data whose level pixel value p is greater than the preset filtering pixel threshold is screened out from the second block slice data, and the third block slice data is transmitted to the rendering request queue for rendering.

[0014] Optionally, the step of filtering out second block slice data satisfying a preset viewing distance range threshold from the first block slice data includes:

[0015] Get the first distance d1 from the current camera to the layer, and determine whether the first distance d1 is within the preset first viewing distance range. The calculation formula of the first distance d1 is:

[0016]

[0017] in, is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the center point of the layer, is the y coordinate of the center point of the layer, The z coordinate of the center point of the layer;

[0018] If the first distance d1 is within the preset first viewing distance range, the second distance d2 from the current camera to each first block slice data is obtained, and it is determined whether the second distance d2 is within the preset second viewing distance range. The calculation formula of the second distance d2 is:

[0019]

[0020] in, is the x coordinate of the center position of the block slice, is the y coordinate of the center position of the block slice, is the z coordinate of the center position of the block slice;

[0021] The block slice data whose corresponding second distance d2 is within the preset second viewing distance specified range is selected from the first block slice data as the second block slice data.

[0022] Optionally, the step of filtering out third block slice data having a level pixel value p greater than a preset filtering pixel threshold from the second block slice data includes:

[0023] In the current frame state and the current camera, compare the level pixel value p of each second block slice data with the LOD level switching parameter ls corresponding to the block slice data. If the level pixel value p is less than or equal to ls, determine that the current level of the block slice data meets the requirements, and there is no need to request finer slice data. If the level pixel value p is greater than ls, obtain the fine block slice data of the next level corresponding to the current block slice data, and calculate the level pixel value p of the fine block slice data, until the target block slice data with the level pixel value p less than ls is screened out;

[0024] The calculation formula of the level pixel value p is:

[0025]

[0026] ls =s * l

[0027] is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the block slice position, is the y coordinate of the slice position, is the z coordinate of the slice position, r is the radius of the tile bounding sphere, is the height of the drawing buffer, s is the LOD level switching distance scaling factor, which is initialized by the slice layer and is 1 by default. The value range is [0.01,100]. The smaller the value is, the finer the requested level is. l is the fixed value for LOD level switching of slice block data, which is a fixed value preset for each level when generating slices. The value decreases layer by layer as the level becomes more refined. The parameter value is stored in the slice data, and the finer the level, the smaller the value.

[0028] The target block slice data whose level pixel value p is greater than the preset filtering pixel threshold in the target block slice data is used as the third block slice data.

[0029] Optionally, the method further comprises:

[0030] For the first block slice data to be unloaded corresponding to the three-dimensional object not in the current viewing frustum, the second block slice data to be unloaded in the first block slice data that does not meet the preset viewing distance range threshold, and the third block slice data to be unloaded in which the level pixel value p is less than or equal to the preset filtering pixel threshold in the second block slice data, it is determined whether the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded have completed rendering and loading and entered the LOADED state;

[0031] If so, the first to-be-unloaded block slice data, the second to-be-unloaded block slice data and the third to-be-unloaded block slice data are obtained, and the tile textures, tile vertices, rendering shaders and frame buffers of all the to-be-unloaded block slice data are deleted.

[0032] Optionally, the method further comprises:

[0033] A layer class browser database is generated in advance, and the layer class browser database is used to store the downloaded block slice data, and the addition, deletion and modification management of the layer class browser database storage content is performed through the index coding of each slice data.

[0034] Optionally, querying the to-be-rendered tile data from the rendering request queue according to the index code of the tile data, and updating the layer class browser database according to the query result, including:

[0035] For the tiled slice data to be rendered that is requested to be rendered for the first time, write the data corresponding to the index code of the tiled slice data into the layer class browser database and save it;

[0036] For the block and slice data to be rendered that is not the first request for rendering, an update request is constructed to find the historical data corresponding to the index code of the current block and slice data to be rendered in the layer class browser database, so as to replace and update the historical data, and the status returned by the update request is monitored to determine the updated status information;

[0037] For other block and slice data stored in the layer class browser database except the current block and slice data to be rendered, a deletion request is constructed to find other data after the index encoding corresponding to the current block and slice data to be rendered for deletion, and the deletion status information is determined by monitoring the return status of the deletion request.

[0038] Optionally, adopting the separated collaborative operation mode to download the to-be-rendered tile slice data in the layer class browser database in batches and in parallel includes:

[0039] The main thread requests the data in chunks and slices, and asynchronously creates a download sub-thread;

[0040] The main thread starts the scheduled task and sends the download task to the created download sub-thread in real time. The download task contains the address information of the block and slice data to be requested for download, so that the download sub-thread can initiate network requests in batches in parallel in the background according to the download task of the main thread, and send the downloaded block and slice data back to the main thread after the request is completed;

[0041] The main thread asynchronously calls back to receive the segmented data. After the transmission is completed, the download task is deleted and the downloaded data in the download thread is deleted.

[0042] Optionally, adopting a separate collaborative operation mode to parse the to-be-rendered tile slice data in the layer class browser database in batches and in parallel includes:

[0043] Parse 3D slice data and asynchronously create parsing subthreads;

[0044] The main thread starts the scheduled task and transmits the binary data of the tiled slice data to the parsing sub-thread in real time. The parsing sub-thread receives the binary file of the tiled slice data, performs binary file parsing in batches and in parallel to obtain the geometric and texture information stored in the binary, and integrates each tiled slice data to embed the skeleton, vertex, texture, hierarchical slice parameter, slice range, slice mode and data version of the slice data, and sends the integrated tiled slice data back to the main thread;

[0045] The main thread asynchronously callbacks to receive the integrated slice node data. After completing data parsing and transmission, it deletes the parsing task and deletes the parsed data in the parsing sub-thread.

[0046] Another aspect of the present invention further provides a three-dimensional data visualization rendering engine system, the system comprising:

[0047] A 3D slicing module is used to perform spatial segmentation processing on the 3D model data to be rendered using LOD technology to generate block slicing data with different geometric detail levels, wherein the block slicing data is a spatial data structure organized in a hierarchical structure;

[0048] An index building module is used to organize the block slice data through a tree structure with a spatial relationship, and output the tree structure as an index file, wherein the root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node includes: a pointer to the parent node and the child node, a description file of the node and a binary file, the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information;

[0049] An adaptive loading and unloading module is used to determine the current visible area according to the user's visual range, filter the block slice data of the detail level matching the user's visual range within the visible area as the block slice data to be rendered, and store the block slice data to be rendered in a rendering request queue;

[0050] A cache management module, used to query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result, wherein the layer class browser database is used to perform browser storage management on the to-be-rendered tile slice data;

[0051] The separated collaborative module is used to download and parse the to-be-rendered block and slice data in the layer class browser database in batches in parallel using a separated collaborative operation mode, and execute the rendering task according to the data parsing results.

[0052] The three-dimensional data visualization rendering method and visualization rendering engine system provided by the embodiment of the present invention adopt LOD technology to perform spatial segmentation processing on the three-dimensional model data to be rendered to generate block slice data with different geometric detail levels, organize the block slice data through a tree structure with spatial relationship and output the tree structure as an index file, so as to realize support for compact and efficient block data organization, save network bandwidth and improve response speed; adaptively filter block slice data with different detail levels based on the user's field of view and store them in a rendering request queue, query the block slice data to be rendered from the rendering request queue according to the index code of the block slice data and update the layer class browser database to optimize memory management, solve the problem that large-scale data loading easily leads to system crash; adopt a separated collaborative operation mode to download and parse the block slice data to be rendered in batches in parallel, and execute the rendering task according to the data parsing result, optimize the kernel scheduling rendering, realize the significant improvement of the rendering scheduling frame rate, and then realize the rapid visualization of massive three-dimensional slice data of the city on the web page.

[0053] The above description is only an overview of the technical solution of the present invention. In order to more clearly understand the technical means of the present invention, it can be implemented according to the contents of the specification. In order to make the above and other purposes, features and advantages of the present invention more obvious and easy to understand, the specific implementation methods of the present invention are listed below. BRIEF DESCRIPTION OF THE DRAWINGS

[0054] Various other advantages and benefits will become apparent to those of ordinary skill in the art by reading the detailed description of the preferred embodiments below. The accompanying drawings are only for the purpose of illustrating the preferred embodiments and are not to be considered as limiting the present invention. Moreover, the same reference symbols are used throughout the accompanying drawings to represent the same components. In the accompanying drawings:

[0055] Figure 1A flowchart of a three-dimensional data visualization rendering method provided by an embodiment of the present invention;

[0056] Figure 2 A schematic diagram of the principle of implementing block slicing data provided by an embodiment of the present invention;

[0057] Figure 3 A schematic diagram of the data composition of the block slice data proposed in an embodiment of the present invention;

[0058] Figure 4 A schematic diagram of the hierarchical relationship of the block and slice data proposed in an embodiment of the present invention;

[0059] Figure 5 A flowchart of a dynamic screening method for pre-loading block slice data proposed in an embodiment of the present invention;

[0060] Figure 6 A schematic diagram of the relationship between the viewing distance from the camera to the layer and the block slice data proposed in an embodiment of the present invention;

[0061] Figure 7 A flowchart of a specific implementation of the pixel screening process proposed in an embodiment of the present invention;

[0062] Figure 8 A schematic diagram of the position relationship of the drawing buffer area proposed in an embodiment of the present invention;

[0063] Fig. 9 A flowchart for implementing storage management of a layer class browser database proposed in an embodiment of the present invention;

[0064] Fig.10 This is a flowchart of implementing batch and parallel downloading of data using a separate collaborative operation mode proposed in an embodiment of the present invention;

[0065] Fig.11 This is a structural block diagram of the three-dimensional data visualization rendering engine system proposed in an embodiment of the present invention. DETAILED DESCRIPTION

[0066] The exemplary embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. Although the exemplary embodiments of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure can be implemented in various forms and should not be limited by the embodiments set forth herein. On the contrary, these embodiments are provided to enable a more thorough understanding of the present disclosure and to fully convey the scope of the present disclosure to those skilled in the art.

[0067] Those skilled in the art will appreciate that, unless otherwise stated, the singular forms "a", "an", "said" and "the" used herein may also include plural forms. It should be further understood that the term "comprising" used in the specification of the present invention refers to the presence of the features, integers, steps, operations, elements and / or components, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.

[0068] Those skilled in the art will understand that, unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as generally understood by those skilled in the art in the art to which the present invention belongs. It should also be understood that terms such as those defined in general dictionaries should be understood to have meanings consistent with the meanings in the context of the prior art, and will not be interpreted with idealized or overly formal meanings unless specifically defined.

[0069] Figure 1 The flowchart of the three-dimensional data visualization rendering method according to one embodiment of the present invention is schematically shown. Figure 1 The three-dimensional data visualization rendering method of the embodiment of the present invention specifically includes the following steps:

[0070] S11. Using LOD technology to perform spatial segmentation processing on the 3D model data to be rendered to generate block slice data with different geometric detail levels, wherein the block slice data is a spatial data structure organized in a hierarchical structure.

[0071] The three-dimensional data visualization rendering method of the embodiment of the present invention can add the city's massive three-dimensional slice data service, which integrates three-dimensional model data of different objects in different environments above ground, underground, indoor and outdoor, including point cloud data, oblique photography data, simulation model data, BIM data, pipeline data, geological data and other three-dimensional models, to the scene for visualization rendering. Block slice data is a spatial data structure organized in a hierarchical structure. Its essence is to process the data in blocks, and use LOD technology to divide the data into multiple blocks and multiple layers.

[0072] S12, organize the block slice data through a tree structure with spatial relationship, and output the tree structure as an index file. The root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node contains: pointers to the parent node and child nodes, a description file of the node (i.e., the block slice data) and a binary file, the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information.

[0073] In this embodiment, a whole block of data is split into many blocks by performing spatial segmentation on the data to obtain block and slice data. The implementation principle of block and slice data is as follows: Figure 2 As shown in , the divided blocks are organized through a tree structure with spatial relationships, and then the tree structure of spatial relationships is output as an index file. Figure 3 As shown in the figure, each block slice data consists of a description file and a binary file. The description file includes data hierarchical relationship information and a bounding box that completely surrounds its data content. The spatial range of each bounding box is the spatial range of the spatial tree node. The present invention uses binary data with compact data organization to store rich geometric and compressed texture information, and the data occupies a small space. In practical applications, multiple layers of 3D block slice data with different details can be generated according to specific needs. The hierarchical relationship of 3D block slice data is as follows: Figure 4 shown.

[0074] S13, determining the current visible area according to the user's field of view, filtering the block slice data of the detail level matching the user's field of view within the visible area as the block slice data to be rendered, and storing the block slice data to be rendered in the rendering request queue.

[0075] During the visualization rendering process, the system needs to carry a huge amount of urban data, and it is impossible to load all the data into the computer memory at one time. In this embodiment, when rendering and scheduling data, the data to be loaded is scheduled according to the actual visual needs, and the three-dimensional slices are rendered and displayed from simple to fine. The present invention reduces the data loaded into the computer memory by adaptively displaying the three-dimensional model data of different levels of detail on demand, and solves the problem that large-scale data loading easily leads to system crashes.

[0076] S14. Query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result. The layer class browser database is used to perform browser storage management on the to-be-rendered tile slice data.

[0077] S15. Use a separate collaborative operation mode to download and parse the to-be-rendered block slice data in the layer class browser database in batches in parallel, and execute the rendering task according to the data parsing results.

[0078] Specifically, after obtaining the block slice data parsing result, a rendering unit can be constructed to store the rendering object according to the rendering engine rendering object requirement, and the rendering unit can be rendered to the frame buffer to perform the rendering task.

[0079] The three-dimensional data visualization rendering method provided by the embodiment of the present invention adopts LOD technology to perform spatial segmentation processing on the three-dimensional model data to be rendered to generate block slice data with different geometric detail levels, organizes the block slice data through a tree structure with spatial relationship and outputs the tree structure as an index file, so as to realize support for compact and efficient block data organization, save network bandwidth and improve response speed; adaptively screens block slice data with different detail levels based on the user's field of view and stores them in a rendering request queue, queries the block slice data to be rendered from the rendering request queue according to the index code of the block slice data and updates the layer class browser database to optimize memory management, solves the problem that large-scale data loading easily leads to system crash; adopts a separated collaborative operation mode to download and parse the block slice data to be rendered in batches in parallel, and executes the rendering task according to the data parsing result, optimizes the kernel scheduling rendering, realizes a significant improvement in the rendering scheduling frame rate, and thus realizes the rapid visualization of massive three-dimensional slice data of the city on the web page.

[0080] The present invention realizes the rapid visualization of massive 3D slice data of the city by managing the layer class of 3D block slice data. The main steps include: first, constructing the layer class, managing the 3D slice block data screening factors and creating the layer class browser database, and performing browser storage management on the 3D slice block data. Second, adaptive loading and unloading on demand, using the visual cone screening, visible distance screening, and pixel screening technology to screen out the pre-loaded 3D block data, and the 3D slice data is based on the UNLOAD state. And unload the loaded and rendered 3D block data that is not visible from the current scene viewpoint, thereby reducing the amount of data in the memory. Third, separate collaborative operation, downloading and parsing the 3D block slice data, entering the PARSING state from LOADING, improving the scheduling and processing speed of the data, entering the PARSED state, and storing the 3D slice block data downloaded for the first time in the browser database for management, without repeatedly connecting to the server for downloading, solving the problem of rapid data acquisition in the case of poor network environment. Fourth, organizing rendering, realizing the visualization of 3D slice data, and entering the LOADED state.

[0081] In one embodiment of the present invention, the method further includes the step of pre-creating a layer class. The layer class can set filtering factors such as the size of the filtered pixel, the maximum visible distance, the minimum visible distance, the LOD level switching distance scaling factor, the loading priority mode, and pre-generate a layer class browser database, which is used to store the downloaded block slice data, and the layer class browser database is added, deleted, and modified through the index code of each block of slice data to manage the addition, deletion, and modification of the content stored in the layer class browser database, so as to achieve the management of the three-dimensional slice layer rendering. Specifically, the tree structure index file of the spatial relationship is read, and the root node information of the block slice data is stored. When storing the downloaded block slice data, the browser database can be managed by the index code of each block of slice data.

[0082] In one embodiment of the present invention, Figure 5 As shown, in step S13, determining the current visible area according to the user's visual range, and filtering the block slice data of the detail level matching the user's visual range within the visible area as the block slice data to be rendered specifically includes the following steps:

[0083] S131 . In the current frame state and the current camera, first block slice data corresponding to the three-dimensional object to be rendered in the current viewing frustum is obtained by using an occlusion culling algorithm.

[0084] In this step, each point on the earth is scaled in the unit sphere space in advance, and the difference between the distance from the camera to the center of the unit sphere and 1 is used to determine whether the block slice data is within the viewing cone. The calculation formula is:

[0085] Ellipsoid equation:

[0086]

[0087] Calculation of shrinking and normalizing each point matrix to the unit sphere:

[0088]

[0089] Specifically, in the current frame state and the current camera, it is determined by calculation whether the block slice data is within the viewing frustum. If it is determined to be yes, the block slice data is transmitted to the viewing distance culling submodule to execute step S132. If it is determined to be no and the block slice data has completed rendering and loading (i.e., it is in the LOADED state), the block slice data is transmitted to the dynamic unloading submodule to dynamically unload the loaded objects within the non-rendering range. If it is determined to be no and the slice data has not completed loading (i.e., it is in the non-LOADED state), the processing is abandoned.

[0090] The algorithm for determining whether the block slice data is within the viewing frustum is as follows: if Occ>0, it is within the current viewing frustum; if Occ<0, it is outside the current viewing frustum.

[0091]

[0092] Among them: a, b, c are the axis radii of the three axes of the ellipsoid, is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the slice center position, is the y coordinate of the slice center position, is the z coordinate of the slice center.

[0093] S132: Filter out second block slice data that meets a preset viewing distance range threshold from the first block slice data.

[0094] In this step, if Figure 6 As shown, in the current frame, by calculating the distance d1 from the camera to the layer, and when the distance d1 is within the preset first viewing distance range, then calculating the distance d2 from the camera to the slice data, and when the distance d2 is within the preset second viewing distance range, the block slice data is transmitted to the pixel screening unit to execute step S133; when it is determined that any one of the distances d1 and d2 is not within the prescribed range and the block slice data has completed rendering and loading, the block slice data is transmitted to the dynamic unloading submodule for processing to dynamically unload the loaded objects in the non-rendering range; when the above conditions are not met, the processing is abandoned.

[0095] Specific implementation methods include:

[0096] Get the first distance d1 from the current camera to the layer, and determine whether the first distance d1 is within the preset first viewing distance range. The calculation formula of the first distance d1 is:

[0097]

[0098] in, is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the center point of the layer, is the y coordinate of the center point of the layer, The z coordinate of the center point of the layer;

[0099] If the first distance d1 is within the preset first viewing distance range, the second distance d2 from the current camera to each first block slice data is obtained, and it is determined whether the second distance d2 is within the preset second viewing distance range. The calculation formula of the second distance d2 is:

[0100]

[0101] in, is the x coordinate of the center position of the block slice, is the y coordinate of the center position of the block slice, is the z coordinate of the center position of the block slice;

[0102] The block slice data whose corresponding second distance d2 is within the preset second viewing distance specified range is selected from the first block slice data as the second block slice data.

[0103] S133 , filtering out third block slice data whose level pixel value p is greater than a preset filtering pixel threshold from the second block slice data, and transmitting the third block slice data to a rendering request queue for rendering.

[0104] In this step, if Figure 7 As shown, in the current frame state, the pixel size p of the level of the block slice data is calculated under the current camera, and compared with the LOD level switching parameter ls of the block slice data (ls = LOD level switching distance scaling factor * LOD level switching fixed value), if p is less than or equal to ls, it is determined that the current level of the block slice data meets the requirements, and there is no need to request finer slice data. If p is greater than ls, a finer level of slice data is requested, and its pixel size p is calculated until the calculated p is less than ls. Afterwards, when it is determined that the slice data pixel p is greater than the filter pixel threshold, the slice data is transferred to the request queue sorting submodule; when it is determined that the slice data pixel p is less than the filter pixel, and the slice data has completed rendering and loading, the data is passed to the dynamic unloading submodule for processing; when the above conditions are not met, the processing is abandoned. The position relationship of the drawing buffer is as follows Figure 8 shown.

[0105] Specific implementation methods include:

[0106] In the current frame state and the current camera, compare the level pixel value p of each second block slice data with the LOD level switching parameter ls corresponding to the block slice data. If the level pixel value p is less than or equal to ls, determine that the current level of the block slice data meets the requirements, and there is no need to request finer slice data. If the level pixel value p is greater than ls, obtain the fine block slice data of the next level corresponding to the current block slice data, and calculate the level pixel value p of the fine block slice data, until the target block slice data with the level pixel value p less than ls is screened out;

[0107] The calculation formula of the level pixel value p is:

[0108]

[0109] ls = s * l

[0110] is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the block slice position, is the y coordinate of the slice position, is the z coordinate of the slice position, r is the radius of the tile bounding sphere, is the height of the drawing buffer, s is the LOD level switching distance scaling factor, which is initialized by the slice layer and is 1 by default. The value range is [0.01,100]. The smaller the value is, the finer the requested level is. l is the fixed value for LOD level switching of slice block data, which is a fixed value preset for each level when generating slices. The value decreases layer by layer as the level becomes more refined. The parameter value is stored in the slice data, and the finer the level, the smaller the value.

[0111] The target block slice data whose level pixel value p is greater than the preset filtering pixel threshold in the target block slice data is used as the third block slice data.

[0112] Further, for the first block slice data to be unloaded corresponding to the three-dimensional object not in the current viewing cone, the second block slice data to be unloaded in the first block slice data that does not meet the preset viewing distance range threshold, and the third block slice data to be unloaded in the second block slice data whose level pixel value p is less than or equal to the preset filtering pixel threshold, it is determined whether the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded have completed rendering and loading and entered the LOADED state; if so, the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded are obtained, and the tile textures, tile vertices, rendering shaders, and frame buffers of all the block slice data to be unloaded are deleted. The present invention timely releases the memory by timely performing destruction processing on the loaded block slice data in the non-rendering range to prevent memory overflow.

[0113] The present invention can, in the current frame state and the current camera, put the block slice data index to be loaded into the rendering request queue for priority sorting through viewing cone screening, viewing distance screening, and pixel screening, and customize the update in real time and dynamically unload the loaded objects in the non-rendering range. Furthermore, the priority sorting includes a breadth-first sorting algorithm and a depth-first sorting algorithm. In one embodiment of the present invention, by setting the priority mode of layer class loading, traversing the root node, sorting the root node using the breadth-first sorting algorithm, obtaining the leaf node of the root node, and sorting the leaf node using the depth-first algorithm, so that the data can be subsequently downloaded and parsed in parallel in batches, and the data to be rendered is constructed into a vertex buffer object for rendering.

[0114] Furthermore, in one embodiment of the present invention, when the position and height of the camera change, the pre-scheduling screening submodule is entered to recalculate and load a new rendering request queue on demand.

[0115] In one embodiment of the present invention, step S14 queries the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and updates the layer class browser database according to the query result, specifically including the following steps not shown in the accompanying drawings:

[0116] S141, for the to-be-rendered tiled slice data requested for rendering for the first time, write data corresponding to the index code of the tiled slice data into the layer class browser database and save it;

[0117] S142, for the to-be-rendered tiled slice data that is not requested to be rendered for the first time, an update request is constructed to find the historical data corresponding to the index code of the current to-be-rendered tiled slice data in the layer class browser database, so as to replace and update the historical data, and the update status information is determined by monitoring the return status of the update request;

[0118] S143. For other block and slice data stored in the layer class browser database except the current block and slice data to be rendered, a deletion request is constructed to find other data except the data corresponding to the index code of the current block and slice data to be rendered for deletion, and the deletion status information is determined by monitoring the return status of the deletion request.

[0119] Specifically, Fig. 9 As shown, the present invention traverses the request queue, queries the stored block data through the index code of the block slice data, writes the data corresponding to the index code of the block slice data into the layer class browser database and saves it for the data requested for the first time; the block slice data can be updated by constructing a request to find the data corresponding to the index code of the block slice data, replace the new data to achieve the updating purpose, and determine the updated status information by monitoring the return status; the slice data can be deleted by constructing a request to find the data corresponding to the index code of the block slice data, delete it, and determine the deleted status information by monitoring the return status.

[0120] The present invention adopts a separated collaborative operation mode to download the to-be-rendered block and slice data in a layer class browser database in batches and in parallel. In one embodiment of the present invention, the specific implementation method includes: the main thread requests the block and slice data and asynchronously creates a download sub-thread; the main thread starts a scheduled task and sends the download task to the created download sub-thread in real time. The download task contains the address information of the block and slice data to be requested for download, so that the download sub-thread can initiate network requests in batches and in parallel in the background according to the download task of the main thread, and send the downloaded block and slice data back to the main thread after the request is completed; the main thread asynchronously calls back to receive the block and slice data, deletes the download task after the transmission is completed, and deletes the downloaded data in the download thread.

[0121] like Fig.10 As shown, the main thread of the present invention asynchronously creates a download working thread. After the creation is completed, the main thread asynchronously receives information and starts the scheduled task, sends the download queue, and the download thread downloads the slice data in batches and in parallel, and transmits it back to the main thread after the download is completed. The main thread asynchronously receives the downloaded data and recycles the downloaded data in the download thread to avoid memory leakage.

[0122] Specifically, the implementation process of separate download is as follows: request block and slice data, asynchronously create a download thread, after the creation is completed, the main thread asynchronously receives information, starts the scheduled task, the main thread sends the download task to the created download sub-thread in real time, including the URL of the data to be requested, completes the calling process, the download thread receives the download task of the main thread, and initiates network requests in batches and in parallel in the background. When the request is completed, the download thread sends the downloaded slice data back to the main thread, and the main thread asynchronously calls back to receive the slice data; and after the transmission is completed, the download thread pool recycling operation is executed to recycle the download thread data.

[0123] Specifically, the download thread pool recycling implementation process is as follows: in the download sub-thread, when the download task is cancelled, the download task is deleted; when the request time expires, the download task is deleted; when the data download is completed and the transmission ends, the download task is deleted and the download data in the download thread is deleted.

[0124] The present invention adopts a separated collaborative operation mode to parse the to-be-rendered block slice data in a layer class browser database in batches and in parallel. In one embodiment of the present invention, the specific implementation method includes: parsing three-dimensional slice data and asynchronously creating a parsing sub-thread; the main thread starts a timed task and transmits binary data of the block slice data to the parsing sub-thread in real time, the parsing sub-thread receives the binary file of the block slice data, and performs binary file parsing in batches and in parallel to obtain geometric and texture information stored in the binary, and integrates each block slice data to embed the color skeleton, vertex, texture, hierarchical slice parameter, slice four-range, slice mode and data version of the slice data, and sends the integrated block slice data back to the main thread; the main thread asynchronously calls back to receive the integrated slice node data, deletes the parsing task after completing the data parsing and transmission, and deletes the parsing data in the parsing sub-thread.

[0125] The main thread of the present invention asynchronously creates a working thread, parses the block and slice data in batches and in parallel, and after the parsing is completed, clears the parsed data in the parsing sub-thread and deletes the parsing task.

[0126] Specifically, the main thread parses the 3D block and slice data, asynchronously creates a parsing sub-thread, starts a scheduled task, the main thread transmits binary data to the parsing thread in real time, the parsing thread receives the block and slice binary files, executes the data parsing operation of the pre-processing data unit in batches and in parallel, receives the integrated block and slice data transmitted by the pre-rendering integration unit, and sends it back to the main thread, and the main thread asynchronously calls back to receive the slice node data;

[0127] The data parsing operation is implemented as follows: in the parsing thread, read the version number information of the binary data and the compressed model data, decompress the compressed model data, the model data can embed all the data versions, switching modes, bounding boxes, texture view information, vertex view information, etc., the byte length of the binary content of the batch table, create a parsing view, parse the information contained in the model data according to the bytes occupied by the information, obtain the binary stored geometry and texture information, and pass the data to the pre-rendering integration unit for pre-rendering integration;

[0128] The implementation process of pre-rendering integration is as follows: receiving slice data, integrating slice node data, embedding slice data's color skeleton, vertex, texture, hierarchical slice parameters, slice range, slice mode and data version, and sending to the pre-fetch data unit to send back to the main thread;

[0129] The parsing thread pool recycling implementation process is as follows: in the parsing sub-thread, when the parsing task is cancelled, the parsing task is deleted; when the parsing time is exceeded, the parsing task is deleted; when the data parsing is completed and the transmission is ended, the parsing sub-task is deleted and the downloaded data in the download thread is deleted.

[0130] In one embodiment of the present invention, the specific implementation process of executing the rendering task according to the data parsing result is as follows: construct the vertex cache of the slice data according to the rendering engine rendering object requirements, including the geometric position, color, texture coordinates, normal, attributes and other information of each point; construct the slice data texture, depth and template, in addition, support compressed texture mapping, when the texture format is determined to be compressed texture, it has supported DDS, ktx2, WebP, PVRTC, ASTC and other compressed format textures, parse the compressed texture and create MIPMAP, greatly reducing the running memory usage; construct the slice data vertex shader and the slice source shader, process the vertex cache and texture; construct the drawing unit to store the rendering object; render the drawing unit to the frame buffer and execute the rendering task. Among them, MIPMAP: multi-level asymptotic texture, is a series of texture images, the latter texture image is half of the previous one (the size of the texture image must be a power of 2).

[0131] Fig.11 The structure diagram of the visualization rendering engine system according to the embodiment of the present invention is schematically shown. Fig.11 The visualization rendering engine system of the embodiment of the present invention specifically includes a three-dimensional slicing module 101, an index building module 102, an adaptive loading and unloading module 103, a cache management module 104 and a separated collaboration module 105, wherein:

[0132] The 3D slicing module 101 is used to perform spatial segmentation processing on the 3D model data to be rendered by using LOD technology to generate block slicing data with different geometric detail levels, wherein the block slicing data is a spatial data structure organized in a hierarchical structure;

[0133] An index building module 102 is used to organize the block slice data through a tree structure with a spatial relationship, and output the tree structure as an index file, wherein the root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node includes: a pointer to the parent node and the child node, a description file of the node and a binary file, wherein the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information;

[0134] The adaptive loading and unloading module 103 is used to determine the current visible area according to the user's visual range, filter the block slice data of the detail level matching the user's visual range within the visible area as the block slice data to be rendered, and store the block slice data to be rendered in the rendering request queue;

[0135] The cache management module 104 is used to query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result, wherein the layer class browser database is used to perform browser storage management on the to-be-rendered tile slice data;

[0136] The separated collaborative module 105 is used to download and parse the to-be-rendered block and slice data in the layer class browser database in batches in parallel using a separated collaborative operation mode, and execute the rendering task according to the data parsing results.

[0137] In the embodiment of the present invention, the adaptive loading and unloading module 103 specifically includes a viewing cone screening unit, a viewing distance screening unit and a pixel screening unit, wherein:

[0138] A frustum screening unit, used for obtaining first block slice data corresponding to a three-dimensional object to be rendered in a current frustum through an occlusion culling algorithm in a current frame state and under a current camera;

[0139] A viewing distance screening unit, used for screening out second segmented slice data satisfying a preset viewing distance range threshold from the first segmented slice data;

[0140] The pixel screening unit is used to screen out third block slice data whose level pixel value p is greater than a preset filtering pixel threshold from the second block slice data, and transmit the third block slice data to the rendering request queue for rendering.

[0141] Furthermore, the adaptive loading and unloading module 103 also includes a request queue sorting unit, which is used to set the priority mode of loading the layer class, traverse the root node, sort the root node using a breadth-first sorting algorithm, obtain the leaf node of the root node, and sort the leaf node using a depth-first algorithm.

[0142] Furthermore, the adaptive loading and unloading module 103 also includes an adaptive updating unit, which is used to recalculate and load a new request queue on demand when the camera position and height change.

[0143] Furthermore, the adaptive loading and unloading module 103 also includes a dynamic unloading unit, which is used to determine whether the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded have completed rendering and loading and entered the LOADED state for the first block slice data to be unloaded corresponding to the three-dimensional object not in the current viewing cone, the second block slice data to be unloaded in the first block slice data that does not meet the preset viewing distance range threshold, and the third block slice data to be unloaded in the second block slice data whose level pixel value p is less than or equal to the preset filtering pixel threshold; if so, obtain the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded, delete the tile textures, tile vertices, rendering shaders, and frame buffers of all the block slice data to be unloaded, and release the memory in time to prevent memory overflow.

[0144] In an embodiment of the present invention, the system further includes: a layer class management module, which is used to pre-generate a layer class browser database, use the layer class browser database to store the downloaded block slice data, and perform the addition, deletion and modification management of the layer class browser database storage content through the index code of each slice data. Further, the layer class management module is used to pre-create a layer class, the layer class can set the filter pixel size, the maximum visible distance, the minimum visible distance, the LOD level switching distance scaling factor, the priority mode of loading and other screening factors, and pre-generate a layer class browser database, use the layer class browser database to store the downloaded block slice data, and perform the addition, deletion and modification management of the layer class browser database storage content through the index code of each slice data, so as to achieve the management of three-dimensional slice layer rendering. Specifically, the tree structure index file of the spatial relationship is read, the root node information of the block slice data is stored, and when the downloaded block slice data is stored, the browser database can be managed by the index code of each slice data.

[0145] In the embodiment of the present invention, the cache management module 104 is specifically used to write data corresponding to the index code of the block and slice data to the layer class browser database and save it for the block and slice data to be rendered for the first time; for the block and slice data to be rendered that is not requested for the first time, by constructing an update request to find the historical data corresponding to the index code of the current block and slice data to be rendered in the layer class browser database, so as to replace and update the historical data, and by monitoring the return status of the update request, determine the updated status information; for the block and slice data other than the current block and slice data to be rendered stored in the layer class browser database, by constructing a delete request to find the other data after the index code corresponding to the current block and slice data to be rendered, and by monitoring the return status of the delete request, determine the deleted status information.

[0146] In the embodiment of the present invention, the separate collaborative module 105 specifically includes a separate loading submodule, and the separate loading submodule includes a separate download unit and a download thread pool recovery unit, wherein:

[0147] The separate download unit is used to request the block and slice data and asynchronously create a download sub-thread; start the scheduled task and send the download task to the created download sub-thread in real time. The download task contains the address information of the block and slice data to be requested for download, so that the download sub-thread can initiate network requests in batches in parallel in the background according to the download task of the main thread, and send the downloaded block and slice data back to the main thread after the request is completed; the main thread asynchronously calls back to receive the block and slice data.

[0148] The download thread pool recycling unit is used to delete the download task and the downloaded data in the download thread after the transmission is completed. Specifically, in the download sub-thread, when the download task is cancelled, the download task is deleted; when the request time is timed out, the download task is deleted; when the data download is completed and the transmission is ended, the download task is deleted and the downloaded data in the download thread is deleted.

[0149] In the embodiment of the present invention, the separate collaborative module 105 specifically further includes a separate parsing submodule, the separate parsing submodule includes a pre-fetching data unit / pre-processing data unit / pre-rendering integration unit and a parsing thread pool recycling unit, wherein:

[0150] The pre-fetch data unit is used to parse the three-dimensional slice data and asynchronously create a parsing sub-thread; the main thread starts a scheduled task and transmits the binary data of the block slice data to the parsing sub-thread in real time. The parsing sub-thread receives the binary file of the block slice data, executes the pre-processing data unit in batches and in parallel to perform binary file parsing to obtain the geometry and texture information stored in the binary, and receives the data transmitted by the pre-rendering integration unit and sends it back to the main thread. The main thread asynchronously calls back to receive the integrated slice node data.

[0151] The preprocessing data unit is used to perform binary file parsing to obtain binary stored geometry and texture information. Specifically, in the parsing thread, the version number information of the binary data and the compressed model data are read, and the compressed model data is decompressed. The model data can embed all data versions, switching modes, bounding boxes, texture view information, vertex view information, etc. The byte length of the binary content of the batch table is created, and the parsing view is created. The information contained in the model data is parsed according to the bytes occupied by the information, and the geometry and texture information stored in the binary are obtained, and the data is passed to the pre-rendering integration unit.

[0152] A pre-rendering integration unit is used to pre-process the parsed information of the block slice data obtained by the data unit, integrate the block slice data to embed the values ​​of the skeleton, vertex, texture, hierarchical slice parameter, slice range, slice mode and data version of the slice data, and send the integrated block slice data to the pre-fetch data unit;

[0153] The parsing thread pool recycling unit is used to delete the parsing task and the parsed data in the parsing sub-thread after the data parsing and transmission are completed. Specifically, in the parsing sub-thread, when the parsing task is cancelled, the parsing task is deleted; when the parsing time is over, the parsing task is deleted; when the data parsing is completed and the transmission is ended, the parsing sub-task is deleted and the downloaded data in the download thread is deleted.

[0154] In the embodiment of the present invention, the separated collaborative module 105 specifically also includes an organization rendering unit, which is used to build a vertex cache of slice data according to the rendering engine rendering object requirements, including the geometric position, color, texture coordinates, normals, attributes and other information of each point; build slice data texture, depth and template, in addition, support compressed texture mapping, when the texture format is determined to be compressed texture, it supports DDS, ktx2, WebP, PVRTC, ASTC and other compressed format textures, parses the compressed texture and creates MIPMAP, greatly reducing the running memory usage; builds slice data vertex shader and source shader, processes vertex cache and texture; builds a drawing unit to store rendering objects; renders the drawing unit to the frame buffer, and executes the rendering task.

[0155] As for the system embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and the relevant parts can be referred to the partial description of the method embodiment.

[0156] The system embodiment described above is merely illustrative, wherein the units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place, or they may be distributed on multiple network units. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of this embodiment. Those of ordinary skill in the art may understand and implement it without creative work.

[0157] The three-dimensional data visualization rendering method and visualization rendering engine system provided by the embodiments of the present invention adopt LOD technology to perform spatial segmentation processing on the three-dimensional model data to be rendered to generate block slice data with different geometric detail levels, organize the block slice data through a tree structure with spatial relationship and output the tree structure as an index file, so as to realize support for compact and efficient block data organization, save network bandwidth and improve response speed; optimize memory management by adaptively loading and unloading block slice data with different detail levels based on the user's field of view, and solve the problem that large-scale data loading easily leads to system crash; and adopt a separated collaborative operation mode to download and parse the block slice data to be rendered in batches in parallel, optimize kernel scheduling rendering, and realize a significant improvement in rendering scheduling frame rate, thereby realizing rapid visualization of massive three-dimensional slice data of the city on the web page.

[0158] In addition, those skilled in the art will appreciate that, although some embodiments herein include certain features included in other embodiments but not other features, the combination of features of different embodiments is meant to be within the scope of the present invention and form different embodiments. For example, any one of the claimed embodiments may be used in any combination.

[0159] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit it. Although the present invention has been described in detail with reference to the aforementioned embodiments, those skilled in the art should understand that they can still modify the technical solutions described in the aforementioned embodiments, or make equivalent replacements for some of the technical features therein. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the spirit and scope of the technical solutions of the embodiments of the present invention.

Claims

1. A three-dimensional data visualization rendering method, characterized in that: The method comprises: Using LOD technology to perform spatial segmentation processing on the 3D model data to be rendered to generate block slice data with different geometric detail levels, wherein the block slice data is a spatial data structure organized in a hierarchical structure; The block slice data is organized through a tree structure with a spatial relationship, and the tree structure is output as an index file, wherein the root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node includes: a pointer to the parent node and the child node, a description file of the node and a binary file, the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information; Determine the current visible area according to the user's visual range, filter the block slice data of the detail level matching the user's visual range within the visible area as the block slice data to be rendered, and store the block slice data to be rendered in the rendering request queue; Determine the current visible area according to the user's field of view, and filter the block slice data of the detail level matching the user's field of view within the visible area as the block slice data to be rendered, including: in the current frame state and the current camera, obtain the first block slice data corresponding to the three-dimensional object to be rendered in the current viewing cone through the occlusion culling algorithm; filter out the second block slice data that meets the preset viewing distance range threshold from the first block slice data; filter out the third block slice data whose level pixel value p is greater than the preset filtering pixel threshold from the second block slice data, and transmit the third block slice data to the rendering request queue for rendering; Query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result, wherein the layer class browser database is used for browser storage management of the to-be-rendered tile slice data; A separate collaborative operation mode is used to download and parse the block and slice data to be rendered in the layer class browser database in batches and in parallel, and the rendering task is executed according to the data parsing results.

2. The method according to claim 1, characterized in that: The step of selecting the second block slice data satisfying the preset viewing distance range threshold from the first block slice data comprises: Get the first distance d1 from the current camera to the layer, and determine whether the first distance d1 is within the preset first viewing distance range. The calculation formula of the first distance d1 is: in, is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, is the x coordinate of the center point of the layer. is the y coordinate of the center point of the layer, The z coordinate of the center point of the layer; If the first distance d1 is within the preset first viewing distance range, the second distance d2 from the current camera to each first block slice data is obtained, and it is determined whether the second distance d2 is within the preset second viewing distance range. The calculation formula of the second distance d2 is: in, is the x coordinate of the center position of the block slice, is the y coordinate of the center position of the block slice, is the z coordinate of the center position of the block slice; The block slice data whose corresponding second distance d2 is within the preset second viewing distance specified range is selected from the first block slice data as the second block slice data.

3. The method according to claim 2, characterized in that The step of filtering out the third block slice data whose level pixel value p is greater than a preset filtering pixel threshold from the second block slice data comprises: In the current frame state and the current camera, compare the level pixel value p of each second block slice data with the LOD level switching parameter ls corresponding to the block slice data. If the level pixel value p is less than or equal to ls, determine that the current level of the block slice data meets the requirements, and there is no need to request finer slice data. If the level pixel value p is greater than ls, obtain the fine block slice data of the next level corresponding to the current block slice data, and calculate the level pixel value p of the fine block slice data, until the target block slice data with the level pixel value p less than ls is screened out; The calculation formula of the level pixel value p is: ls = s* l is the x coordinate of the camera position, is the y coordinate of the camera position, is the camera position z coordinate, r is the radius of the tile bounding sphere, is the height of the drawing buffer, s is the LOD level switching distance scaling factor, which is initialized by the slice layer and is 1 by default. The value range is [0.01,100]. The smaller the value is, the finer the requested level is. l is the fixed value for LOD level switching of slice block data, which is a fixed value preset for each level when generating slices. The value decreases layer by layer as the level refinement increases. The target block slice data whose level pixel value p is greater than the preset filtering pixel threshold in the target block slice data is used as the third block slice data.

4. The method according to claim 3, characterized in that: The method further comprises: For the first block slice data to be unloaded corresponding to the three-dimensional object not in the current viewing frustum, the second block slice data to be unloaded in the first block slice data that does not meet the preset viewing distance range threshold, and the third block slice data to be unloaded in which the level pixel value p is less than or equal to the preset filtering pixel threshold in the second block slice data, it is determined whether the first block slice data to be unloaded, the second block slice data to be unloaded, and the third block slice data to be unloaded have completed rendering and loading and entered the LOADED state; If so, the first to-be-unloaded block slice data, the second to-be-unloaded block slice data and the third to-be-unloaded block slice data are obtained, and the tile textures, tile vertices, rendering shaders and frame buffers of all the to-be-unloaded block slice data are deleted.

5. The method according to claim 1, characterized in that The method further comprises: A layer class browser database is generated in advance, and the layer class browser database is used to store the downloaded block slice data, and the addition, deletion and modification management of the layer class browser database storage content is performed through the index coding of each slice data.

6. The method according to claim 1, characterized in that Query the tile data to be rendered from the rendering request queue according to the index code of the tile data, and update the layer class browser database according to the query results, including: For the tiled slice data to be rendered that is requested to be rendered for the first time, write the data corresponding to the index code of the tiled slice data into the layer class browser database and save it; For the block and slice data to be rendered that is not the first request for rendering, an update request is constructed to find the historical data corresponding to the index code of the current block and slice data to be rendered in the layer class browser database, so as to replace and update the historical data, and the status returned by the update request is monitored to determine the updated status information; For other block and slice data stored in the layer class browser database except the current block and slice data to be rendered, a deletion request is constructed to find other data after the index encoding corresponding to the current block and slice data to be rendered for deletion, and the deletion status information is determined by monitoring the return status of the deletion request.

7. The method according to claim 1, characterized in that The separated collaborative operation mode is used to download the tiled slice data to be rendered in the layer class browser database in batches and in parallel, including: The main thread requests the data in chunks and slices, and asynchronously creates a download sub-thread; The main thread starts the scheduled task and sends the download task to the created download sub-thread in real time. The download task contains the address information of the block and slice data to be requested for download, so that the download sub-thread can initiate network requests in batches in parallel in the background according to the download task of the main thread, and send the downloaded block and slice data back to the main thread after the request is completed; The main thread asynchronously calls back to receive the segmented data. After the transmission is completed, the download task is deleted and the downloaded data in the download thread is deleted.

8. The method according to claim 1, characterized in that: The separated collaborative operation mode is used to parse the block slice data to be rendered in the layer class browser database in batches and in parallel, including: Parse 3D slice data and asynchronously create parsing subthreads; The main thread starts the scheduled task and transmits the binary data of the tiled slice data to the parsing sub-thread in real time. The parsing sub-thread receives the binary file of the tiled slice data, performs binary file parsing in batches and in parallel to obtain the geometric and texture information stored in the binary, and integrates each tiled slice data to embed the skeleton, vertex, texture, hierarchical slice parameter, slice range, slice mode and data version of the slice data, and sends the integrated tiled slice data back to the main thread; The main thread asynchronously callbacks to receive the integrated slice node data. After completing data parsing and transmission, it deletes the parsing task and deletes the parsed data in the parsing sub-thread.

9. A three-dimensional data visualization rendering engine system, characterized in that: The system comprises: A 3D slicing module is used to perform spatial segmentation processing on the 3D model data to be rendered using LOD technology to generate block slicing data with different geometric detail levels, wherein the block slicing data is a spatial data structure organized in a hierarchical structure; An index building module is used to organize the block slice data through a tree structure with a spatial relationship, and output the tree structure as an index file, wherein the root node in the tree structure represents the entire data space, each leaf node represents a block slice data, each branch node represents the detail level data corresponding to the parent node, and each node includes: a pointer to the parent node and the child node, a description file of the node and a binary file, the description file includes the data hierarchy relationship and bounding box information, and the binary file includes geometry and texture information; An adaptive loading and unloading module is used to determine the current visible area according to the user's field of view, filter the block slice data of the detail level that matches the user's field of view within the visible area as the block slice data to be rendered, and store the block slice data to be rendered in a rendering request queue; determine the current visible area according to the user's field of view, filter the block slice data of the detail level that matches the user's field of view within the visible area as the block slice data to be rendered, including: in the current frame state and the current camera, obtain the first block slice data corresponding to the three-dimensional object to be rendered in the current viewing cone through an occlusion culling algorithm; filter out the second block slice data that meets the preset viewing distance range threshold from the first block slice data; filter out the third block slice data whose level pixel value p is greater than the preset filtering pixel threshold from the second block slice data, and transmit the third block slice data to the rendering request queue for rendering; A cache management module, used to query the to-be-rendered tile slice data from the rendering request queue according to the index code of the tile slice data, and update the layer class browser database according to the query result, wherein the layer class browser database is used to perform browser storage management on the to-be-rendered tile slice data; The separated collaborative module is used to download and parse the to-be-rendered block and slice data in the layer class browser database in batches in parallel using a separated collaborative operation mode, and execute the rendering task according to the data parsing results.

Citation Information

Patent Citations

  • Data scheduling method and device for three-dimensional model and electronic equipment

    CN111127615A