A dynamic scheduling method and device for three-dimensional scene data

By using multi-level spatial partitioning and viewpoint trend-driven asymmetric scheduling, the problems of incomplete rendering and visual jumps in high-density 3D scenes are solved, achieving complete rendering of cross-boundary objects and efficient resource utilization.

CN122636818APending Publication Date: 2026-08-25DMS CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202610760755.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2026-05-29
Publication Date
2026-08-25

AI Technical Summary

Technical Problem

Existing technologies suffer from incomplete rendering, visual stuttering, and low resource utilization when processing high-density and highly irregularly distributed 3D models. In particular, when cross-regional object clipping or preloading strategies are not properly implemented, seams, holes, and visual jumps are likely to occur.

Method used

A multi-level spatial partitioning mechanism is adopted to allocate scene objects to corresponding level area blocks according to their spatial location. When the span exceeds the boundary of the current area block, it moves up to the upper level area block. Asymmetric preloading and unloading are performed based on the movement trend of the viewpoint to ensure the complete rendering and visual continuity of cross-boundary objects.

Benefits of technology

It achieves complete rendering of cross-boundary objects, eliminates visual stuttering and pop-up effects, improves resource utilization, and ensures smooth scheduling of 3D scene data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122636818A_ABST
    Figure CN122636818A_ABST
Patent Text Reader

Abstract

The application discloses a kind of dynamic scheduling method of three-dimensional scene data, including multi-level space division to three-dimensional scene data, scene object is distributed to the region block of corresponding level according to spatial position, when the spatial span of scene object exceeds the boundary of current region block or accommodation threshold, it is indexed to the upper level region block that can be completely accommodated;Based on the spatial state of viewpoint, determine the region block currently needs to be loaded, at least two different level depth region block data are simultaneously loaded and displayed in the same space region when rendering;Based on the motion vector of viewpoint, in the front area of viewpoint motion direction, the region block of level depth deeper than current visible range is preloaded, and the region block that cannot be seen is preferentially unloaded in non-motion direction, complete rendering of cross-border object and smooth scheduling driven by motion trend are realized.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention belongs to the field of computer graphics and 3D rendering technology, specifically relating to a method and apparatus for dynamic scheduling of 3D scene data. Background Technology

[0002] Currently, in the field of 3D scene rendering, for high-density and highly irregularly distributed 3D models (such as ships, factory areas, nuclear power plant models, etc.), data scheduling is usually carried out using techniques based on Level of Detail (LOD) or symmetric radius buffer preloading strategies based on the observer's position. However, existing solutions may still suffer from incomplete rendering, visual stuttering, and low resource utilization when processing high-density, irregularly distributed 3D scene data. On the one hand, due to the large number of geometric objects of varying sizes spanning multiple spatial regions in the scene, traditional spatial partitioning often clips cross-region objects or stores them in a single sub-region, resulting in seams or holes during rendering. At the same time, traditional LOD technology uses a mutually exclusive switching logic, meaning that when one LOD is loaded, another LOD will not be loaded, which can easily lead to visual jumps. On the other hand, traditional preloading strategies are mostly based on symmetric circular or rectangular buffers at the observer's current position, without considering the observer's movement trend. This results in a delay in loading models in front of the movement direction when the observer moves quickly, producing a noticeable "pop-up effect," while preloading in the non-movement direction consumes a large amount of unnecessary memory resources, affecting rendering performance. Therefore, there is an urgent need for a dynamic scheduling solution for 3D scene data that can ensure the integrity of cross-boundary object rendering, eliminate visual stuttering during dynamic browsing, and improve resource utilization. Summary of the Invention

[0003] To address the aforementioned issues, this invention provides a dynamic scheduling method and apparatus for three-dimensional scene data, achieving complete rendering of cross-boundary objects and smooth scheduling driven by motion trends.

[0004] The technical solution of the present invention is as follows: A dynamic scheduling method for 3D scene data includes: dividing the 3D scene data into multi-level spatial partitions; allocating scene objects to corresponding level region blocks according to their spatial location; when the spatial span of a scene object exceeds the boundary or capacity threshold of the current region block, moving its index up to a higher-level region block that can fully accommodate it; determining the region block to be loaded based on the spatial state of the viewpoint; during rendering, simultaneously loading and displaying at least two region block data of different depth levels for the same spatial region; and based on the motion vector of the viewpoint, preloading region blocks with a depth deeper than the current visible range in the area in front of the viewpoint's motion direction, and preferentially unloading invisible region blocks in non-motion directions.

[0005] As an optional implementation, moving its index up to a parent region block that can fully accommodate it includes: for scene objects that cross the boundary of a region block, moving its index up to the smallest parent region block that can fully accommodate the scene object.

[0006] As an optional implementation, the multi-level spatial division includes: progressively subdividing the region blocks into deeper levels of region blocks, wherein scene objects whose size exceeds the size of the current level region block are assigned to higher-level region blocks, and scene objects whose size does not exceed the size of the current level region block are assigned to lower-level region blocks.

[0007] As an optional implementation, the motion vector of the viewpoint is obtained by sampling the position and orientation state of the viewpoint in real time, including: periodically collecting the position coordinates and viewing direction information of the viewpoint at a preset time interval, and calculating the motion vector based on the state change between two adjacent collections.

[0008] As an optional implementation, the spatial state of the viewpoint includes a viewpoint focus area, which is a region determined based on the focus of the observation line of sight or the interaction hotspot. More region blocks are loaded in the viewpoint focus area than in the non-focus area, and / or additional region block data of the previous level or several levels are loaded near the viewpoint focus area.

[0009] As an optional implementation, determining the region block to be loaded includes: determining the visibility of the region block based on the view frustum of the viewpoint, and removing region blocks that are completely outside the view frustum; determining the loading level depth based on the spatial distance from the viewpoint to the region block, wherein the farther the region block is, the lower the loading level depth.

[0010] As an optional implementation, multi-level spatial partitioning of 3D scene data includes: using an octree to perform the multi-level spatial partitioning, dividing the upper-level region block into eight lower-level region blocks; for scene objects that cross the boundary of region blocks, when the diagonal length of their bounding box exceeds the current level range or the out-of-bounds ratio exceeds a preset threshold, their index is moved up to the region block of the parent node of the previous level; for scene objects that exceed the maximum partitioning level, their index is moved up to the highest level as a globally loaded object.

[0011] As an optional implementation, the method further includes using a data buffer pool to uniformly store and manage loaded and preloaded region blocks, wherein the region blocks in the data buffer pool are distinguished by status flags, the status flags including loaded state and preloaded state; when a region block changes from the preloaded state to the loaded state, its status flag is updated; when a region block is unloaded, it is removed from the data buffer pool and the corresponding storage resources are released.

[0012] Furthermore, this invention also provides a dynamic scheduling device for three-dimensional scene data, comprising: a spatial partitioning module, used to perform multi-level spatial partitioning of the three-dimensional scene data, assigning scene objects to corresponding level region blocks according to their spatial location, and when the spatial span of a scene object exceeds the boundary or capacity threshold of the current region block, moving its index up to a higher-level region block that can be fully accommodated; a rendering scheduling module, used to determine the region block to be loaded based on the spatial state of the viewpoint, and during rendering, simultaneously loading and displaying at least two region block data of different depths in the same spatial region; and an asymmetric scheduling module, used to preload region blocks with a depth deeper than the current visible range in the area in front of the viewpoint's motion direction based on the viewpoint's motion vector, and preferentially unloading invisible region blocks in the non-motion direction.

[0013] As an optional implementation, the asymmetric scheduling module includes: a motion vector acquisition unit, used to acquire the motion vector of the viewpoint by sampling the position and orientation state of the viewpoint in real time; a direction preloading unit, used to determine the motion direction of the viewpoint based on the motion vector, and preload a region block with a layer depth deeper than the current visible range in the area in front of the motion direction of the viewpoint; and a directional unloading unit, used to preferentially unload invisible region blocks in non-motion directions.

[0014] As an optional implementation, the rendering scheduling module includes: a view frustum culling unit, used to determine the visibility of region blocks based on the view frustum of the viewpoint and cull region blocks that are completely outside the view frustum; and a distance determination unit, used to determine the loading layer depth based on the spatial distance from the viewpoint to the region block, wherein the farther the region block is, the lower the loading layer depth.

[0015] Beneficial effects: This invention avoids clipping or fragmenting of cross-boundary objects during rendering by moving their index to a higher-level region block that can fully accommodate them when the spatial span of a scene object exceeds the current region block's capacity threshold. This ensures the integrity of rendering large cross-boundary objects and eliminates seams or holes. Furthermore, by simultaneously loading and displaying at least two different levels of region block data within the same spatial region during rendering, it breaks the traditional mutually exclusive LOD switching mode, allowing for continuous visual overlay of data from different levels and avoiding visual jumps during level transitions. Finally, by preloading deeper-level region blocks ahead of the movement direction based on the viewpoint's motion vector and preferentially unloading invisible region blocks in non-movement directions, it achieves asymmetric directional preloading and resource release based on motion trends. This concentrates limited computational and memory resources on the area the observer is about to reach, effectively eliminating model loading delays during rapid movement and improving system resource utilization. Attached Figure Description

[0016] Figure 1This is a flowchart of a dynamic scheduling method for three-dimensional scene data according to the present invention; Figure 2 This is a schematic diagram of the multi-level spatial partitioning logic of the present invention (shown from only one planar perspective). Figure 3 This is a schematic diagram of the asymmetric preloading logic based on motion vectors in this invention; Figure 4 This is a schematic diagram of the module structure of the scheduling device of the present invention. Detailed Implementation

[0017] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.

[0018] Example 1 like Figure 1 As shown, this embodiment provides a dynamic scheduling method for 3D scene data. This method solves the problems of clipping holes, visual jumps, and pop-up stuttering during the rendering of high-density, irregular 3D scenes by employing core collaborative logic that ensures spatial partitioning integrity, visual continuity overlay, and trend prediction-based asymmetric scheduling.

[0019] Step S100: Perform multi-level spatial division on the 3D scene data, and assign scene objects to corresponding level region blocks according to their spatial location. When the spatial span of a scene object exceeds the boundary or capacity threshold of the current region block, move its index up to the upper-level region block that can fully accommodate it.

[0020] Specifically, 3D scene data often contains a large number of geometric objects with significant size differences. This step organizes these objects into a tree-like or hierarchical spatial index structure through multi-level spatial partitioning. The containment threshold is a critical standard that measures the ability of a region block to contain scene objects. When the spatial span of a scene object (e.g., the size of its bounding box or diagonal length) exceeds the limit that the current level region block can contain, the system does not prune or split the object. Instead, it moves its index up to a higher-level region block until a parent region block that can completely contain the object is found. This mechanism fundamentally avoids the rendering seams or holes caused by the forced pruning of cross-region objects in traditional spatial partitioning, ensuring the integrity of large cross-boundary objects during rendering. It should be understood that the specific setting of the containment threshold can be dynamically adjusted according to the geometric characteristics of the scene objects or the size ratio of the region blocks, rather than being limited to a fixed value. For example, the containment threshold can be set based on the ratio of the side length of the region block to the diagonal length of the scene object's bounding box. When the diagonal length of a geometry's bounding box exceeds the range of this level or is located at the boundary of an adjacent level and exceeds the limit, it is determined to exceed the capacity threshold and is stored in a higher level. Alternatively, the capacity threshold can be set based on the ratio of the side length of the region block to the side length of the scene object's bounding box.

[0021] Step S200: Based on the spatial state of the viewpoint, determine the region block that needs to be loaded. During rendering, load and display at least two region block data of different depths for the same spatial region simultaneously.

[0022] Specifically, the spatial state of the viewpoint includes parameters such as the viewpoint's position, orientation, and frustum extent. The system uses these parameters to determine which regions are currently visible or within the rendering range. Unlike traditional mutually exclusive Level of Detail (LOD) techniques, which typically unload lower-level models and replace them with higher-level models when switching LOD levels, this either-or switching can easily cause noticeable visual jumps when the viewpoint moves or the distance changes. This embodiment, however, allows for the simultaneous loading and display of at least two regions with different depths of detail within the same spatial area. For example, while displaying a simplified model, a detailed model can be retained as a visual transition or background supplement. Through this multi-level overlay rendering method, data from different levels is presented visually continuously, achieving a smooth transition and effectively eliminating the visual jump problems caused by level switching.

[0023] Step S300: Based on the motion vector of the viewpoint, preload a region block with a layer depth deeper than the current visible range in the area in front of the viewpoint's motion direction, and preferentially unload invisible region blocks in non-motion directions.

[0024] Specifically, the motion vector reflects the real-time movement trend and direction of the viewpoint. Traditional symmetrical radius buffer preloading strategies typically distribute preloaded resources evenly outwards from the viewpoint. This leads to loading delays for models in the direction of movement when the viewpoint moves rapidly, creating a pop-up effect where models suddenly appear. Simultaneously, preloading in non-movement directions consumes a significant amount of unnecessary memory resources. This embodiment breaks this symmetrical loading pattern by employing an asymmetrical scheduling strategy: in the area in front of the viewpoint's movement direction, the system preloads regions deeper than the current visible range, i.e., scheduling more detailed data into memory in advance. When the viewpoint reaches this area, it can achieve instant rendering, thus eliminating the pop-up effect. In non-movement directions (e.g., behind or to the side of the viewpoint), the system prioritizes unloading invisible regions, quickly releasing memory and computing resources. Through the synergy of forward depth preloading and backward priority unloading, this embodiment concentrates limited system resources on the area the viewpoint is about to reach, ensuring smooth dynamic browsing while significantly improving resource utilization.

[0025] Example 2 Based on Example 1, such as Figure 2 As shown, this embodiment elaborates on the specific implementation mechanism of multi-level spatial partitioning and index shifting. Multi-level spatial partitioning of the 3D scene data includes: using an octree to divide the space into eight lower-level blocks. Specifically, traditional uniform mesh partitioning often leads to an extremely uneven distribution of objects within spatial units when dealing with high-density and highly irregularly distributed 3D scenes. This embodiment uses an octree to progressively subdivide the blocks in the x, y, and z spatial dimensions to form deeper levels of blocks. For example, the upper-level block is divided into eight sub-level blocks, ensuring that the length, width, and height of each lower-level block are half that of the upper-level block. Figure 2 In the diagram, spatial division is illustrated using a hierarchical approach within any of the XY / XZ / YZ planes. The first level of the overall outline is divided into eight identical second levels, and each second level is further divided into eight identical third levels, and so on, resulting in multiple levels. For example... Figure 2 As shown, if scene object 1 exceeds the boundary of the third level, its index is moved up to the second level for loading and rendering; if scene object 2 is within the boundary of the second level, it belongs to the second level. In practical applications, the number of levels in multi-level spatial division is usually 5 to 10, preferably 6 to 8. The advantage of this division logic is that it can adapt to the density of scene objects, automatically subdividing downwards in dense areas and maintaining a larger granularity in sparse areas, thus achieving a balance between spatial indexing efficiency and memory usage.

[0026] Based on the above division, this embodiment follows the size allocation principle: the area blocks are spatially subdivided level by level to form deeper levels of area blocks. Scene objects whose size exceeds the size of the current level area block are allocated to higher-level area blocks, while scene objects whose size does not exceed the size of the current level area block are allocated to lower-level area blocks. That is, large objects are allocated to higher levels, and small objects are allocated to lower levels. It should be understood that higher levels correspond to shallower level depths (i.e., closer to the root node), and lower levels correspond to deeper level depths (i.e., closer to the leaf nodes). The two descriptions are opposite in direction but have the same meaning. It can be understood that the level in this case is determined by the order of the multi-level spatial division from root to leaf: Level 1 (root node) → covers the entire scene → highest level; Level 2 → progressive subdivision → higher level; ... progressively downwards... lowest level (leaf node) → smallest area block → lowest level. This size-based hierarchical allocation strategy ensures that high-level regions can accommodate large structures spanning a wide space, while low-level regions focus on finely depicting local details. This avoids small objects losing detail due to excessive granularity in large regions, or large objects being forcibly cropped because they cannot be accommodated in small regions.

[0027] For scene objects that cross region boundaries, their index is moved up to the smallest parent region that can completely contain the scene object. The search logic here is bottom-up: when the system finds a scene object that crosses two or more boundaries of region blocks at the same level, it traverses the octree upwards to find the smallest parent region that can completely enclose the object. The reason for limiting it to "smallest parent" is to prevent objects from being moved up too far, which would introduce a large number of unnecessary long-distance geometry when rendering that high-level region block, thus wasting rendering resources.

[0028] Furthermore, the specific triggering and positioning of index shifting relies on a precise judgment algorithm: for scene objects that cross the boundary of a region block, when the diagonal length of their bounding box exceeds the current level range or the out-of-bounds ratio exceeds a preset threshold, their index is shifted up to the region block of the parent node at the next higher level. The out-of-bounds ratio refers to the proportion of the volume or length of the scene object's bounding box that exceeds the current region block boundary to the total volume. In this embodiment, the preset threshold is preferably set to a range of 30% to 70%, for example, 50%. Setting this threshold range has significant defensive implications: if the threshold is set too low (e.g., 10%), a large number of objects that only slightly exceed the boundary will be frequently shifted up, causing high-level region blocks to bear too many objects that should be processed by lower levels, increasing the rendering burden on higher levels; if the threshold is set too high (e.g., 90%), severely out-of-bounds objects will remain at the current level, easily resulting in visual breaks or holes during rendering due to incomplete clipping. Therefore, a threshold range of 30% to 70% strikes a good balance between avoiding frequent upward movement and preventing rendering breaks, ensuring that cross-boundary objects can be rendered completely without excessively crowding out high-level resources.

[0029] Furthermore, for scene objects exceeding the maximum partition level, their indexes are moved up to the highest level as globally loaded objects. In real-world scenarios, there are a very small number of extremely large objects whose dimensions far exceed the maximum partition level block, such as extra-large pipes running through an entire factory area or ship hulls. These objects cannot be contained within any of the sub-level blocks. The maximum partition level (i.e., level 1) block is preferably set to approximately 100 meters in length, width, and height to fit the spatial scale of most industrial scenes. Moving its index up to the highest level means the system treats it as a globally loaded object. Regardless of the viewpoint's location in the scene, these extremely large objects will be continuously loaded and rendered, effectively avoiding the problem of extremely large objects suddenly disappearing or being abnormally truncated due to viewpoint movement.

[0030] Example 3 Based on Example 1, such as Figure 3As shown, regarding the acquisition of the viewpoint motion vector, the viewpoint motion vector is obtained by real-time sampling of the viewpoint's position and orientation state, including: periodically collecting the viewpoint's position coordinates and viewing direction information at preset time intervals, and calculating the motion vector based on the state changes between two adjacent collections. Specifically, the system does not continuously track the viewpoint state, but uses a periodic sampling mechanism. The preset time interval is preferably set to the range of 0.1 seconds to 0.5 seconds, for example, 0.2 seconds. The setting of this time interval needs to strike a balance between predictive sensitivity and computational overhead: if the sampling interval is too short, for example, less than 0.1 seconds, although it can keenly capture small changes in the viewpoint, it will lead to excessively frequent state difference calculations, consuming a large amount of CPU resources and affecting the smoothness of the main rendering thread; if the sampling interval is too long, for example, greater than 0.5 seconds, the system's response to the viewpoint's motion trend will be severely lagging, and when the viewpoint turns or accelerates rapidly, the preloaded area cannot follow and adjust in time, thereby weakening the effect of eliminating the pop-up effect. By periodically sampling within a range of 0.1 to 0.5 seconds and calculating motion vectors based on the position and direction differences between two adjacent frames, the system can accurately predict the next position of the viewpoint with extremely low computational cost, providing reliable motion trend data for subsequent asymmetric scheduling.

[0031] Regarding the refinement of the viewpoint spatial state, the viewpoint spatial state includes the viewpoint focus area, which is the region determined based on the observation line-of-sight focus or interaction hotspot, i.e., the camera pointing position. A greater number of region blocks are loaded into the viewpoint focus area than into the non-focus areas, and / or additional region block data from one or several levels above the viewpoint focus area are loaded nearby. Specifically, the observation line-of-sight focus typically refers to the intersection of the viewpoint's line-of-sight vector and the scene object, while the interaction hotspot can be determined based on the user's specific interaction behavior, such as based on the user's mouse hovering time in a specific area exceeding a preset threshold, or based on the center point of the user's last model zoom operation. When the system identifies the viewpoint focus area, a stacking loading strategy is implemented in this area. This stacking strategy includes two methods that can be used individually or in combination: one is to load a greater number of low-level fine-grained region blocks, making the detail density within the focus area significantly higher than the surrounding non-focus areas; the other is to additionally load region block data from one or several levels above the spatial location of the focus area, essentially wrapping a transitional simplified model around the fine model of the focus area. The advantage of this stacking strategy is that when the user rotates or zooms to observe the focused area, since the surrounding layer data has been pre-loaded and overlaid, small movements of the viewpoint will not cause the background model to suddenly disappear or change, thus ensuring the rendering continuity and smoothness of the core area of ​​focus under multi-angle observation.

[0032] Regarding the logic for determining the currently loadable region block, this determination includes: performing visibility assessment on the region block based on the view frustum of the viewpoint, eliminating region blocks completely outside the view frustum, or retaining only the highest-level region block; and determining the loading layer depth based on the spatial distance from the viewpoint to the region block, with regions farther away having a lower loading layer depth. Specifically, the system first uses a view frustum culling algorithm to quickly traverse and perform intersection tests on the region blocks in the spatial index structure, directly eliminating region blocks entirely outside the six clipping planes of the view frustum, or retaining only the highest-level region block (lowest precision rendering), avoiding invalid rendering of their internal geometry, thereby significantly reducing the number of drawing calls. For region blocks that pass the visibility assessment, the system further calculates the spatial distance from its center point or nearest point to the viewpoint, and performs layer depth mapping based on this distance. Region blocks that are closer to the viewpoint are assigned a deeper layer depth and load more refined geometric data; region blocks that are farther away are assigned a shallower layer depth and load simplified data. This spatial distance-based hierarchical depth mapping aligns the allocation of rendering resources with the principles of human visual perception, where things are clearer up close and blurrier in the distance. This effectively controls memory usage and rendering load while maintaining visual quality. It should be understood that the mapping between distance and hierarchical depth can be a linear piecewise function or a non-linear curve based on screen space error, as long as the principle of decreasing depth with increasing distance is satisfied.

[0033] Furthermore, the motion vector is decomposed into translational and rotational components. Asymmetric scheduling is driven only by the translational component; the rotational component is only used for view frustum updates and does not trigger directional preloading / unloading. This avoids system stuttering caused by large-scale unloading and reloading errors triggered by rapid head rotation.

[0034] Example 4 Building upon Example 1, the method further includes using a data buffer pool for unified storage management of loaded and pre-loaded region blocks. The region blocks in the data buffer pool are distinguished by status markers, including loaded and pre-loaded states. Specifically, during the dynamic scheduling of a 3D scene, the system memory or video memory needs to simultaneously hold both the currently rendered region blocks and region blocks pre-loaded to eliminate pop-up effects. To efficiently manage these region blocks with different lifecycles, this embodiment introduces a data buffer pool architecture, storing all active region blocks in this pool and attaching a status marker to each region block. The loaded state indicates that the region block is within the viewpoint's visible range and participates in the rendering of the current frame; the pre-loaded state indicates that the region block has been loaded into the buffer pool but has not yet entered the current visible range and is in a standby state. Through this distinction of status markers, the system can quickly assess the current resource usage without traversing complex spatial indexes, providing underlying data support for subsequent scheduling decisions.

[0035] When a region block transitions from a preloaded state to a loaded state, its state flag is updated. This transition logic is implemented seamlessly and efficiently. For example, as the viewpoint moves forward based on motion vectors, deeper-level region blocks that were previously in a preloaded state gradually enter the view frustum's visible range. At this time, the rendering scheduling module detects the change in the visibility of this region block. Without rereading data from disk, it directly updates its state flag from the preloaded state to the loaded state and immediately submits it to the rendering pipeline for drawing. This mechanism is the core guarantee that the aforementioned asymmetric preloading strategy can eliminate the pop-up effect: because the data has already resided in the buffer pool in a preloaded state, the time spent on state transitions is almost negligible, thus achieving real-time presentation of scene data when the viewpoint moves, effectively eliminating the visual stuttering or sudden model pop-ups caused by waiting for data loading in traditional solutions. It should be understood that the state flag transition is not limited to a one-way flow from preloaded to loaded. When the viewpoint briefly retreats, the reloading of unloaded region blocks can also be preferentially restored from the preloaded state cache, further improving the robustness of scheduling.

[0036] When a region block is unloaded, its corresponding storage resources are removed from the data buffer pool and released. The unloading operation is not executed blindly, but rather defensively scheduled based on state flags and priorities. Specifically, the system triggers unloading logic when it detects that the buffer pool's resource usage has reached a high watermark, or when a significant shift in the viewpoint position causes some region blocks to become invisible. When determining the unloading targets, the system prioritizes removing region blocks that are in a preloaded state and located in a non-motion direction, because these region blocks are not only currently invisible, but also have a very low probability of entering the visible range in the future based on motion vector predictions. Only then will it consider unloading region blocks that are already loaded but extremely far from the viewpoint. Through this unloading strategy based on both state flags and motion trends, the system concentrates limited memory and video memory resources to ensure the rendering needs in front of the viewpoint's motion direction, achieving efficient resource reclamation and reallocation, and avoiding resource waste caused by invalid preloading in non-motion directions. The state marking mechanism described above is for illustrative purposes only and not restrictive. In practical engineering applications, state marking can be further subdivided into more intermediate states such as loading and waiting to be unloaded, as long as the principle of distinguishing the life cycle of regional blocks to guide scheduling decisions is met.

[0037] Example 5 This embodiment provides a dynamic scheduling device for three-dimensional scene data. For example... Figure 4 As shown, the device solves the problems of clipping holes, visual jumps, and pop-up stuttering in high-density irregular 3D scene rendering by using a core collaborative architecture that ensures the integrity of spatial division, superimposes visual continuity, and uses trend prediction and asymmetric scheduling.

[0038] The device comprises a spatial partitioning module, a rendering scheduling module, and an asymmetric scheduling module. The spatial partitioning module performs multi-level spatial partitioning of the 3D scene data, assigning scene objects to corresponding level blocks based on their spatial location. When the spatial span of a scene object exceeds the boundary or capacity threshold of the current block, its index is moved up to a higher-level block that can fully accommodate it. Specifically, the spatial partitioning module is the foundation of the entire device's data organization. It receives the raw 3D scene data stream and constructs a hierarchical spatial index structure according to preset spatial subdivision rules. Upstream, the region block indexes and object mapping relationships processed by the spatial partitioning module are output to the rendering scheduling module and the asymmetric scheduling module for subsequent scheduling decisions. Through the index-moving mechanism of the spatial partitioning module, the logical structural integrity of large objects spanning boundaries is ensured, effectively preventing rendering clipping holes from the outset.

[0039] The rendering scheduling module, connected to the spatial partitioning module, determines the region blocks to be loaded based on the viewpoint's spatial state. During rendering, it simultaneously loads and displays at least two region block data at different depth levels within the same spatial region. Specifically, the rendering scheduling module receives viewpoint state data and region block indices output by the spatial partitioning module, and filters the set of region blocks to be loaded based on visibility determination and distance calculation. Unlike traditional mutually exclusive LOD scheduling modules, the rendering scheduling module in this embodiment allows data at different depth levels within the same spatial region to coexist and be overlaid when submitting data to the rendering pipeline. This multi-level overlay rendering module logic enables a smooth visual transition between high-level detailed models and low-level simplified models when the viewpoint moves or zooms, effectively eliminating the visual jump phenomenon caused by level switching.

[0040] The asymmetric scheduling module, connected to the rendering scheduling module, is used to preload regions with a depth greater than the current visible range in the area in front of the viewpoint's motion vector, based on the viewpoint's motion vector, and prioritize unloading invisible regions in non-motion directions. Specifically, the asymmetric scheduling module breaks the traditional resource allocation model of symmetric radius buffer scheduling. It receives real-time motion trend data from the viewpoint and concentrates preloaded resources in the area in front of the viewpoint's motion direction, scheduling deeper, more detailed data in advance; simultaneously, it actively releases memory and video memory resources occupied by invisible regions in non-motion directions. In the collaborative interaction between modules, the asymmetric scheduling module pre-buffers the preloaded regions. When the viewpoint moves and these regions enter the visible range, the rendering scheduling module can directly change their state to loaded and submit for rendering. This achieves the synergy of forward depth preloading and backward priority unloading, accurately allocating limited system resources to the areas the viewpoint is about to reach, eliminating the pop-up effect during rapid movement and significantly improving resource utilization.

[0041] Furthermore, it also includes a data buffer pool module, which is connected to the space partitioning module, the rendering scheduling module, and the asymmetric scheduling module. This module is used for unified storage management of loaded and preloaded region blocks. The region blocks in the data buffer pool are distinguished by status flags, which include loaded and preloaded states. When a region block changes from a preloaded state to a loaded state, its status flag is updated. When a region block is unloaded, it is removed from the data buffer pool and the corresponding storage resources are released.

[0042] The spatial partitioning module writes the preprocessed octree nodes into the data buffer pool. The rendering scheduling module extracts loaded region blocks from the data buffer pool for rendering. The asymmetric scheduling module writes the region blocks of the predicted region into the data buffer pool and assigns a preloaded state flag. Specifically, when a region block enters the view frustum and is in a preloaded state, the data buffer pool updates the region block's state flag to loaded. When a region block leaves the view frustum and is in a non-movement direction, the data buffer pool updates the region block's state flag from loaded to unloaded. And / or when the video memory usage reaches a preset high watermark, the data buffer pool physically removes the unloaded region blocks according to the priority order of the state flags. The data buffer pool serves as a shared memory hub among various scheduling modules. It distinguishes the lifecycle of each region block through status flags. In the case of preloading transformation, the rendering scheduling module directly extracts data from the data buffer pool without re-performing disk I / O. In the case of unloading trigger, the data buffer pool releases storage resources asynchronously in the background thread, enabling the system to support real-time and smooth scheduling of five million geometric objects, such as in a ship model.

[0043] Example 6 Building upon Example 5, and further refining the asymmetric scheduling logic, the asymmetric scheduling module includes a motion vector acquisition unit, a direction preloading unit, and a direction unloading unit. The motion vector acquisition unit acquires the motion vector of the viewpoint by sampling its position and orientation in real time. Specifically, this unit maintains a timed triggering mechanism to periodically capture the spatial coordinates and orientation data of the viewpoint at preset time intervals, and calculates the state difference between two adjacent samples, thereby outputting motion vector data characterizing the viewpoint's movement trend. The output of this unit serves as the input basis for the direction preloading unit and the direction unloading unit, ensuring that subsequent scheduling is no longer a blind allocation based on static positions, but rather a precise prediction based on dynamic trends. The direction preloading unit, connected to the motion vector acquisition unit, determines the viewpoint's movement direction based on the motion vector and preloads a region block with a depth greater than the current visible range in front of the viewpoint's movement direction. After receiving the motion vector, this unit determines an asymmetric preloading fan-shaped, cone-shaped, or rectangular region through the fusion calculation of the vector direction and the viewpoint orientation, and initiates an asynchronous loading request to the data buffer pool for deeper-level region blocks within that region. By prioritizing limited bandwidth and computing resources to the space the viewpoint is about to reach, data is presented instantly as the viewpoint actually moves into position, effectively eliminating the pop-up effect. A directional unloading unit, connected to the motion vector acquisition unit, is used to preferentially unload invisible region blocks in non-motion directions. This unit identifies regions away from or to the side of the viewpoint based on motion vectors. When system resource usage reaches a preset threshold, it prioritizes removing these non-motion-direction region blocks that are in a pre-loaded state or are far away from the buffer pool.

[0044] Corresponding to the refinement of the rendering scheduling logic, the rendering scheduling module includes a view frustum culling unit and a distance determination unit, such as... Figure 4As shown in the diagram, the frustum culling unit determines the visibility of region blocks based on the view frustum of the viewpoint, culling region blocks that are completely outside the view frustum. Specifically, this unit receives the region block bounding box data output by the spatial partitioning module and performs a rapid intersection test with the six clipping planes of the viewpoint. For region blocks that fall entirely outside the view frustum, this unit directly intercepts their entry into the rendering pipeline, thus significantly reducing invalid draw calls early in the rendering process. The distance determination unit, connected to the frustum culling unit, determines the loading depth based on the spatial distance from the viewpoint to the region block, with regions farther away having a lower loading depth. The region blocks retained after being filtered by the frustum culling unit enter the distance determination unit for detail allocation. This unit calculates the Euclidean distance from the center point of the region block to the viewpoint and assigns corresponding depths to region blocks at different distances according to a preset distance-depth mapping curve. Region blocks that are closer are given a deeper depth to display fine geometry, while region blocks that are farther away are given a shallower depth to reduce rendering load. This distance-based depth mapping mechanism ensures that the density of rendering resources matches the decay pattern of human visual perception, effectively controlling overall memory and computing power consumption while guaranteeing near-field visual quality.

[0045] To ensure visual continuity during rendering, the rendering scheduling module performs visibility culling and multi-precision data distribution within the view frustum. The view frustum culling unit performs bounding sphere intersection tests on region blocks based on the camera's view frustum hexahedron. The distance determination unit calculates the loading depth based on spatial Euclidean distance. When the distance between the viewpoint and the region block is less than a first threshold, the rendering scheduling module simultaneously loads and displays the deepest fine-level region block data and the next deepest transition-level region block data in the current frame buffer of the rendering pipeline. When the distance between the viewpoint and the region block is between the first and second thresholds, the rendering scheduling module assigns visual depth weights to the fine-level and transition-level data according to the alpha blending relationship, so that the fine-level and transition-level region blocks form a Z-axis stacked structure, giving the Z-structure visual smooth transition characteristics.

[0046] like Figure 4As shown, the asymmetric scheduling module is used to implement directional resource optimization based on motion trends. The motion vector acquisition unit is used to sample camera status in real time. The orientation preloading unit is used to perform forward data allocation. The orientation unloading unit is used to release expired resources. Specifically, when the sampling interval is between 0.1 and 0.5 seconds and the viewpoint position shifts, the asymmetric scheduling module preloads a region block with a depth deeper than the current visible range in the area pointed to by the motion vector. When the viewpoint only rotates in the viewing direction while its position coordinates remain constant, the asymmetric scheduling module maintains the current loading status mark of the data buffer pool to avoid accidental unloading. And / or when the viewpoint is in a non-motion direction area away from the data buffer pool, the asymmetric scheduling module removes and releases invisible region blocks from the data buffer pool according to priority. The motion vector acquisition unit is in the vector calculation position during translation sampling to enable forward read / write relationships between the orientation preloading unit and the data buffer pool; while in the pure rotation sampling state, the motion vector acquisition unit is in the anti-shake holding position to enable delayed release relationships between the orientation unloading unit and region blocks in non-motion directions.

[0047] Example 7 Based on the above embodiments, the technical solution of the present invention will be described in detail below using a specific application scenario of a high-density irregular model as an example. This embodiment takes a three-dimensional model of a large ship as an example. The model contains approximately five million geometric bodies, the size of which varies from centimeter-level valve screws to hull sections of ten meters. The spatial distribution is extremely irregular, and there are a large number of pipe features that run through multiple areas.

[0048] First, for this ship model, the system performs multi-level spatial partitioning of the 3D scene data, assigning scene objects to corresponding level blocks based on their spatial location. When the spatial span of a scene object exceeds the capacity threshold of the current block, its index is moved up to a higher-level block that can fully accommodate it. Specifically, the system uses an octree structure for multi-level spatial partitioning, dividing the entire ship model space into six levels of blocks. Level 1 is the root node block covering the entire ship. Level 2 divides the entire ship in half along the x, y, and z directions, forming eight sub-regions. After merging empty regions according to the actual ship structure, effective regions such as the bow, midships, and stern are obtained. Levels 3 to 6 are progressively subdivided downwards, with each level's block having half the length, width, and height of the previous level. During the partitioning process, a size allocation principle is followed, assigning large hull sections to higher-level blocks, while smaller, centimeter-scale valves and instruments are assigned to lower-level blocks. For scene objects that cross region boundaries, such as a ventilation duct running through multiple sub-levels within a ship's area, when the diagonal length of its bounding box exceeds the current level's range or the out-of-bounds ratio exceeds a preset threshold (e.g., 50%), the system moves its index up to the region block of its parent node until it finds the smallest parent region block that can completely accommodate the duct. For extremely large objects exceeding the maximum partition level, such as the main cable running through the entire ship, the system moves its index up to the highest level as a globally loaded object. Through this combination of octree and index movement, the system fundamentally solves the problem of broken or gaping pipe rendering in traditional partitioning, ensuring the rendering integrity of large, cross-boundary objects from various viewpoints.

[0049] Secondly, during dynamic browsing, the system executes viewpoint-based spatial state to determine the region blocks that need to be loaded. During rendering, it simultaneously loads and displays at least two region block data at different depth levels for the same spatial region. Specifically, when the viewpoint is inside the ship's cabin, the system determines the visibility of region blocks based on the viewpoint's frustum, discarding region blocks completely outside the frustum, and determines the loading depth level based on the spatial distance from the viewpoint to the region block. Unlike traditional mutually exclusive LOD switching, this embodiment employs a multi-level overlay rendering strategy. For example, for the ship's cabin wall 5 meters in front of the viewpoint, the system simultaneously loads and displays data for a level 4 fine region block and a level 3 transition region block. As the viewpoint slowly moves forward, a level 5, more fine region block is gradually overlaid and displayed, while the level 3 region block is not immediately unloaded but is retained as a visual transition background. This multi-level overlay mechanism makes the switching of the ship's hull model's detail levels no longer abrupt but a smooth visual transition, effectively eliminating the flickering and abruptness phenomena of traditional LOD switching.

[0050] Finally, when the user quickly browses the cabin, the system executes viewpoint-based motion vectors. In the area ahead of the viewpoint's movement direction, it preloads region blocks with a depth deeper than the currently visible range, and prioritizes unloading invisible region blocks in non-movement directions. Specifically, the system periodically collects the viewpoint's position coordinates and viewing direction information at preset time intervals of 0.2 seconds, calculating motion vectors based on the state changes between two adjacent collections. Assuming the viewpoint is moving quickly forward along the cabin corridor, the system, based on this motion vector, preloads level 5 and 6 fine-grained region blocks with a depth deeper than the currently visible range in the area ahead of the corridor, with the preload amount being approximately 0.5 times the number of currently loaded region blocks. Simultaneously, for the corridor area already traversed behind the viewpoint, the system prioritizes unloading invisible region blocks in non-movement directions to release storage resources. Furthermore, if the viewpoint is focused on a control panel (determined based on the focus of the viewing line), the system additionally loads region block data from the previous level or several levels in the focused area of ​​that viewpoint to ensure rendering continuity when the user rotates to view that panel. At the underlying resource management level, preloaded fine-grained region blocks are placed in a data buffer pool and marked as preloaded. When the viewpoint moves and these region blocks enter the visible range, their status is directly updated to loaded, without needing to be reread from the disk, thus achieving real-time data rendering. Through this motion vector-based asymmetric scheduling and buffer pool state management, the system precisely allocates limited bandwidth and computing resources to the corridor ahead where the viewpoint is about to reach, effectively eliminating the pop-up window stuttering effect commonly seen when quickly browsing the cabin, and achieving efficient and smooth rendering of high-density irregular models.

[0051] In the description of this application, it should be noted that, unless otherwise expressly specified and limited, the terms "connected" and "linked" should be interpreted broadly. For example, they can refer to a fixed connection, a detachable connection, or an integral connection; they can refer to a mechanical connection, an electrical connection, or a connection that allows communication between them; they can refer to a direct connection or an indirect connection through an intermediate medium; they can refer to the internal communication of two elements or the interaction between two elements. Those skilled in the art can understand the specific meaning of the above terms in this application according to the specific circumstances. In the description of this application, "multiple" means two or more, unless otherwise expressly and specifically limited. Furthermore, the terms "first" and "second" are used for descriptive purposes only and should not be construed as indicating or implying relative importance or implicitly specifying the number of indicated technical features.

[0052] The above steps are provided only to help understand the method, structure, and core ideas of this application. Those skilled in the art can make various improvements and modifications to this application without departing from its principles, and these improvements and modifications also fall within the scope of protection of the claims.

Claims

1. A dynamic scheduling method for three-dimensional scene data, characterized in that, include: The 3D scene data is divided into multiple levels of space, and scene objects are assigned to corresponding level blocks according to their spatial location. When the spatial span of a scene object exceeds the boundary or capacity threshold of the current block, its index is moved up to the upper-level block that can fully accommodate it. Based on the spatial state of the viewpoint, determine the region block that needs to be loaded. During rendering, load and display at least two region block data of different levels and depths for the same spatial region at the same time. Based on the motion vector of the viewpoint, in the area in front of the viewpoint's motion direction, a region block with a layer depth deeper than the current visible range is preloaded, and in non-motion directions, invisible region blocks are preferentially unloaded.

2. The method according to claim 1, characterized in that, The step of moving its index up to a parent region block that can fully accommodate it includes: for scene objects that cross the boundary of a region block, moving its index up to the smallest parent region block that can fully accommodate the scene object.

3. The method according to claim 1 or 2, characterized in that, The multi-level spatial division includes: progressively subdividing the region blocks into deeper levels of region blocks, wherein scene objects whose size exceeds the size of the current level region block are assigned to higher-level region blocks, and scene objects whose size does not exceed the size of the current level region block are assigned to lower-level region blocks.

4. The method according to any one of claims 1 to 3, characterized in that, The motion vector of the viewpoint is obtained by sampling the position and orientation state of the viewpoint in real time, including: periodically collecting the position coordinates and viewing direction information of the viewpoint at a preset time interval, and calculating the motion vector based on the state change between two adjacent collections.

5. The method according to any one of claims 1 to 4, characterized in that, The spatial state of the viewpoint includes the viewpoint focus area, which is a region determined based on the focus of the observation line of sight or the interaction hotspot. More region blocks are loaded in the viewpoint focus area than in the non-focus area, and / or additional region block data of the previous level or several levels are loaded near the viewpoint focus area.

6. The method according to any one of claims 1 to 5, characterized in that, The process of determining the region block that needs to be loaded includes: determining the visibility of the region block based on the view frustum of the viewpoint, and removing the region block that is completely outside the view frustum; The loading level depth is determined based on the spatial distance from the viewpoint to the region block, with regions farther away having a lower loading level depth.

7. The method according to any one of claims 1 to 6, characterized in that, Multi-level spatial partitioning of 3D scene data includes: The multi-level spatial partitioning is performed using an octree, dividing the upper-level region block into eight lower-level region blocks. For scene objects that cross the boundary of a region block, when the diagonal length of their bounding box exceeds the current level or the out-of-bounds ratio exceeds a preset threshold, their index is moved up to the region block of the parent node at the next higher level. For scene objects that exceed the maximum partition level, their index is moved up to the highest level as globally loaded objects.

8. The method according to any one of claims 1 to 7, characterized in that, The method further includes using a data buffer pool to uniformly store and manage loaded and preloaded region blocks, wherein the region blocks in the data buffer pool are distinguished by status flags, the status flags including loaded status and preloaded status; When a region block transitions from a preloaded state to a loaded state, its status flag is updated; when a region block is unloaded, it is removed from the data buffer pool and the corresponding storage resources are released.

9. A dynamic scheduling device for three-dimensional scene data, characterized in that, include: The spatial partitioning module is used to perform multi-level spatial partitioning of 3D scene data, and to allocate scene objects to corresponding level blocks according to their spatial location. When the spatial span of a scene object exceeds the boundary or capacity threshold of the current block, its index is moved up to the upper-level block that can fully accommodate it. The rendering scheduling module is used to determine the region blocks that need to be loaded based on the spatial state of the viewpoint. During rendering, it loads and displays at least two region block data of different levels and depths for the same spatial region at the same time. The asymmetric scheduling module is used to preload regions with a depth greater than the current visible range in the area in front of the viewpoint's motion vector based on the viewpoint's motion direction, and to preferentially unload invisible regions in non-motion directions.

10. The apparatus according to claim 9, characterized in that, The asymmetric scheduling module includes: The motion vector acquisition unit is used to acquire the motion vector of the viewpoint by sampling the position and orientation of the viewpoint in real time. The orientation preloading unit is used to determine the viewpoint motion direction based on the motion vector and preload a region block that is deeper than the current visible range in front of the viewpoint motion direction. The directional unloading unit is used to preferentially unload invisible area blocks in non-movement directions.

11. The apparatus according to claim 9 or 10, characterized in that, The rendering scheduling module includes: The frustum culling unit is used to determine the visibility of region blocks based on the viewpoint's frustum and cull region blocks that are completely outside the view frustum. The distance determination unit is used to determine the loading layer depth based on the spatial distance from the viewpoint to the region block, where the loading layer depth is lower for region blocks that are farther away.