Co-operative client-server rendering systems and methods

The client-server rendering system addresses the inefficiencies of real-time 3D rendering on consumer devices by using a remote server to evaluate and compress 3D models, enabling efficient and detailed rendering on devices with limited resources.

WO2025245606A1PCT designated stage Publication Date: 2025-12-04METAFOLD INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CA2024/050733
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-05-31
Publication Date
2025-12-04

AI Technical Summary

Technical Problem

Existing 3D rendering technologies face challenges in achieving real-time rendering on consumer devices due to the large volume of data and computational load, especially in client-server environments, where transferring and processing 3D models over networks is inefficient and resource-intensive.

Method used

A cooperative client-server rendering system that utilizes a remote server to perform computationally intensive tasks, such as evaluating and compressing 3D models using an anti-aliased Euclidean distance transform, and sends compressed data to client devices for decoding and rendering, allowing adaptive refinement of the model based on the distance to the surface.

Benefits of technology

Enables real-time rendering of 3D models on consumer devices like laptops and smartphones by offloading heavy computations to a remote GPU server, optimizing data transfer and processing, and ensuring smooth, detailed rendering of complex shapes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CA2024050733_04122025_PF_FP_ABST
    Figure CA2024050733_04122025_PF_FP_ABST
Patent Text Reader

Abstract

Systems and methods for co-operative client-server rendering systems. A computer- implemented method includes receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a spatial domain and a graph and at least one function defining a mapping of the spatial domain to a numerical domain in an initial patch. The method includes evaluating the request with a distance transform to determine a distance for each point in the graph based on the initial patch. The method also includes generating the compressed data, and sending the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.
Need to check novelty before this filing date? Find Prior Art

Description

CO-OPERATIVE CLIENT-SERVER RENDERING SYSTEMS AND METHODSTECHNICAL FIELD

[0001] This application relates generally to rendering systems and methods, and in particular co-operative client-server rendering systems and methods.BACKGROUND

[0002] Computer-aided design (CAD) tools are used in a wide variety of applications to allow users to create and edit three-dimensional digital models. For instance, CAD tools may be used to create or manipulate objects to be 3D printed. CAD tools provide a virtual workspace where designers can manipulate shapes, forms, and structures to create complex geometries and detailed designs.

[0003] CAD software typically includes a range of modeling tools that enable users to create and modify shapes using various techniques. For example, designers might use extrusions to create 3D objects by stretching or compressing 2D profiles, or they might employ sweeps to generate curved surfaces by moving a profile along a path. Other common techniques include lofts, which allow designers to create complex shapes by interpolating between two or more profiles, and boolean operations, which enable the creation of new shapes by combining existing ones using logical operators such as union, intersection, and difference.

[0004] In addition to these modeling tools, 3D design software often includes features that facilitate the editing and refinement of designs. For instance, designers might use snapping and alignment tools to precisely position and orient objects within a scene, or they might employ symmetry and mirroring functions to create mirrored or symmetrical versions of their designs.

[0005] In the context of 3D design software, 3D objects are typically displayed to users through a virtual environment that simulates a real-world scene. This environment is often referred to as a "viewport," which serves as a window into the 3D world. The viewport provides a user with a specific perspective on the 3D object, allowing them to see it from a particular angle or orientation.

[0006] The viewport can be thought of as a camera lens, framing the shot and controlling what is visible within the rendered image. Users can adjust the viewport by moving it around the scene, changing its size, or adjusting its orientation. This allowsdesigners to get up close and personal with their creations, examine them from different angles, and make adjustments as needed.

[0007] As users interact with the 3D object through the viewport, they may also use various tools and techniques to manipulate the object's shape, form, and structure. For example, they might use modeling tools to extrude or sweep shapes, or employ boolean operations to combine multiple objects into a single entity. The viewport provides a real-time view of these changes, allowing users to see the immediate effects of their actions and make further adjustments as needed.

[0008] In some cases, users may expand the viewport to display more of the object and / or 3D space. This can result in rendering performance issues, as a high- quality 3D rendering typically requires a large number of grid points to accurately capture the intricate details and smooth surfaces of the digital model. This is because each grid point represents a specific location in the 3D space, and the more grid points there are, the more precise and detailed the rendering can be.

[0009] Conversely, a low-quality rendering, with insufficient grid points to capture the complexity of the digital model, can result in jagged edges, aliasing, and other visual artifacts that detract from the overall quality of the rendering.

[0010] In some cases, when there are too few grid points, the rendering engine must make educated guesses about what should be displayed at each point, leading to a loss of detail and accuracy. This can manifest as blocky or pixelated textures, rough edges, and an overall lack of smoothness in the rendered image.SUMMARY

[0011] The following summary is intended to introduce the reader to various aspects of the detailed description, but not to define or delimit any invention.

[0012] In at least one broad aspect, there is provided a computer-implemented method comprising: receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a spatial domain and a graph and at least one function defining a mapping of the spatial domain to a numerical domain in an initial patch; evaluating, at the remote server, the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating, at the remote server, the compressed data; and sending, from the remoteserver, the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.

[0013] In some cases, the initial patch comprises an offset, a size, and a resolution.

[0014] In some cases, the evaluating the request with the distance transform comprises: determining, based on the graph and the initial patch, a distance to a nearest surface for each point in the spatial domain.

[0015] In some cases, the evaluating the request with the distance transform further comprises: determining an orientation for the distance to the nearest surface for each point in the spatial domain.

[0016] In some cases, a distance of about 0 corresponds to a crossing of the surface of the shape.

[0017] In some cases, the generating the compressed data comprises: quantizing the distance to the closest point on the surface for each point in the spatial domain and the orientation for the distance to the closest point on the surface for each point in the spatial domain by assigning a value in a pre-defined range.

[0018] In some cases, the method further comprises receiving, at the remote server, a second request for second compressed data from the client device, wherein the second request comprises the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain to the numerical domain in at least a second patch; evaluating, at the remote server, the second request with the distance transform to determine the distance for each point in the graph based on the at least the second patch; generating, at the remote server, the second compressed data; and sending, from the remote server, the second compressed data to the client device for decoding to render the spatial domain based on the second compressed data and the at least the second patch.

[0019] In some cases, the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

[0020] In another broad aspect, there is provided a computer-implemented method comprising: generating, at a client device, a graph representing a spatial domain and at least one function defining a mapping of the spatial domain in a numerical domain in an initial patch; sending, by the client device, a request to a remote server, the request comprising the graph and the initial patch; receiving, at theclient device, compressed data from the remote server; decoding, at the client device, the compressed data based on the graph and the initial patch; rendering, at the client device, the spatial domain based on the decoded compressed data and the initial patch.

[0021] In some cases, the initial patch comprises an offset, a size, and a resolution.

[0022] In some cases, the compressed data comprises values and the decoding the compressed data comprises: determining, based on the values, patches that contain a crossing; discarding, based on the values, patches that are fully interior or exterior, i.e. do not contain a crossing.

[0023] In some cases, the values are integer values and, preferably, the integer values are 8-bit integer values.

[0024] In some cases, the method further comprises, when the points in the spatial domain correspond to the crossing, adaptively refining the rendered spatial domain based on at least a second request comprising the graph and at least a second patch comprising a second offset, a second size, and a second resolution.

[0025] In some cases, the adaptively refining the rendered spatial domain comprises: receiving, at the client device, second compressed data from the remote server; decoding, at the client device, the second compressed data based on the graph and the at least the second patch; and rendering, at the client device, the spatial domain based on the decoded second compressed data and the at least the second patch.

[0026] In some cases, the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

[0027] In another broad aspect, there is provided a system comprising: a remote server; a client device; wherein the remote server is configured to: receive a request for compressed data from the client device, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluate the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generate the compressed data; and send the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch; wherein the client device is configured to: generate the graphrepresenting the spatial domain and the at least one function defining the mapping of the spatial domain in the numerical domain; send the request to the remote server, the request comprising the graph and the initial patch; receive the compressed data from the remote server; decode the compressed data based on the graph and the initial patch; and render the spatial domain based on the decoded compressed data and the initial patch.

[0028] In another broad aspect, there is provided a non-transitory computer- readable storage device storing instructions that, when executed by a processor of a remote server, cause the processor to perform operations comprising: receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluating, at the remote server, the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating, at the remote server, the compressed data; and sending, from the remote server, the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.

[0029] In another broad aspect there is provided a non-transitory computer- readable storage device storing instructions that, when executed by a processor of a client device, cause the processor to perform operations comprising: generating, at a client device, a graph representing a spatial domain and at least one function defining a mapping of the spatial domain in a numerical domain; sending, by the client device, a request to a remote server, the request comprising the graph and an initial patch; receiving, at the client device, compressed data from the remote server; decoding, at the client device, the compressed data based on the graph and the initial patch; rendering, at the client device, the spatial domain based on the decoded compressed data and the initial patch.BRIEF DESCRIPTION OF THE DRAWINGS

[0030] The drawings included herewith are for illustrating various examples of articles, methods, and systems of the present specification and are not intended to limit the scope of what is taught in any way. In the drawings:FIG. 1 is a block diagram of an exemplary system in accordance with at least some embodiments.FIG. 2 is a block diagram of a computer in accordance with at least some embodiments.FIG. 3 is an exemplary method performed by a remote server in accordance with at least some embodiments.FIG.4 is an exemplary method performed by a client device in accordance with at least some embodiments.FIG. 5 is a series of example views of a 3D model of a shape.FIG. 6 is an example of a view of a 3D model of a shape with and without application of a distance transform.DETAILED DESCRIPTION

[0031] When approximating a continuous function in a 3D spatial domain, a common approach is to evaluate the function at discrete, regular intervals, for example, on the points of a 3D grid. While there are benefits to such an approach, a significant problem is that the number of grid points required to get a “good” approximation of the function can become extremely large.

[0032] For example, considering a signed distance function of a sphere:Float signedDistance = length(position - sphereCenter) - sphereRadiusUsing a grid to approximate this function requires many grid points before the approximation is “acceptable”. In the 3D spatial domain, a grid can increase in size at an exponential rate. For any given resolution (i.e. 1 mm, 1 pm, or 1 nm), it is possible to create a sphere that has a feature that is smaller than that grid resolution.

[0033] Furthermore, in the context of 3D rendering, many if not most of the grid points will be obscured or hidden from the perspective of the viewport. Therefore, it is suboptimal to devote considerable memory or computational resources to such hidden grid points until they are actually needed (e.g., because the viewport changes).

[0034] To optimize performance and reduce computational overhead, many 3D rendering engines employ various techniques to discard these invisible grid points. One common approach is to use a process called occlusion culling.

[0035] Occlusion culling involves analyzing the 3D scene to identify which objects or surfaces are blocking the view of certain areas. The engine then uses thisinformation to determine which grid points are actually visible and which ones can be safely discarded, as they will never be seen in the viewport.

[0036] For example, if one object is in front of a surface, the rendering engine might realize that the surface is occluding (blocking) the view of the area behind it. In this case, the engine would discard all the grid points that fall within that area, as they are not visible to the viewer.

[0037] By discarding these invisible grid points, the rendering engine can significantly reduce the amount of computational work required to render the scene, resulting in faster performance and improved overall visual quality. Occlusion culling works best when the rendering engine already has access to the entire data set for the 3D volume.

[0038] However, in client-server environments, where a client is attempting to render a 3D scene from data stored on a server, several difficulties may arise.

[0039] One major challenge is the sheer volume of data that needs to be transferred over the network. In a typical 3D rendering scenario, the data consists of millions or even billions of grid points that make up the 3D model. Transferring this entire volume of data can be a daunting task, especially when considering the bandwidth required.

[0040] Considering a 3D printing example, creating a shape that fills a 1 meter box at a resolution of 1 mm, using a grid approximation method requires the evaluation of 1 billion grid points. Using a “float” representation for each grid point in such a grid results in 4 GB of data to hold the shape in memory. While 4 GB may be an acceptable size for storing a video file offline, it is not acceptable for real-time rendering applications, in particular those that include transferring data from a server to a client over a network.

[0041] The problem is exacerbated by the fact that most modern networks are designed to handle relatively small amounts of data, not massive volumes like those found in 3D rendering. As a result, transferring the entire dataset can take an unacceptable amount of time, making it difficult or even impossible to achieve realtime rendering.

[0042] Furthermore, even if the transfer process is successful, there's still the issue of processing power required to render the scene on the client-side. This can bea significant challenge, especially for complex scenes with intricate details and textures. The sheer computational load can overwhelm even the most powerful machines, making it difficult to achieve smooth rendering in real-time, A powerful graphics processing unit (GPU) is the best fit for these calculations, but typically is not found in consumer devices such as tablets, laptops, and smartphones.

[0043] There may be additional concerns about data compression and decompression, which can further slow down the rendering process. The need to balance between data quality and compression ratio adds another layer of complexity to the problem.

[0044] The described embodiments provide systems and methods for cooperative and progressive client-server rendering whereby a client issues requests to a remote server and decodes the results. The request is defined by information of a shape to be evaluated and the 3D region to evaluate it on. A graph representation defines the shape, and the 3D region is defined by extents, position, and resolution, i.e. a function in a patch. The server receives the request, calculates the function included in the patch, compresses the results and sends the compressed results back to the client.

[0045] Referring now to FIG, 1 , a block diagram of an exemplary system for cooperative client-server rendering is shown. The system is generally identified by reference character 100. The system 100 includes a server 110 and a client 120, each of which are operatively coupled to a network 130.

[0046] The server 110 includes modules such as a send / receive module 112 and a generate / evaluate module 114. The client 120 includes modules such as a send / receive module 124, a generate / decode module 144, and a display 126. The server 110 is a GPU server. The client 120 can be an end-node computer such as a laptop, a smartphone, a tablet, or similar consumer device.

[0047] In some cases, the server 110 is a remote server in a separate location from the client 120. In some cases, the network 130 is a public network or a wireless network. In some cases, the server 100 and the client 120 are in the same location. In some cases, the network 130 is a wired network such as a Local Area Network (LAN).

[0048] In order for the client 120 to display a 3D modelled shape in a 3D spatial domain, the client 120 is configured to create a request for information from the server110. The shape is defined as a graph, which includes operators and connections between operators that allows the server 110 to evaluate the shape. An initial root node is defined in the request. The initial root node is an empty box that completely contains the shape, i.e. the 3D region. The request also includes a patch which defines the 3D region that the shape is to be evaluated on, and the spatial domain. The patch includes extents, position, and resolution (i.e. offset, size, and resolution information) which allows for mapping the spatial domain in a numerical domain, i.e. a function that enables the mapping. The generate / decode module 124 is configured to create the request. The send / receive module 122 is configured to send the request to the server 110, over the network 130.

[0049] The send / receive module 112 of the server 110 is configured to receive the request from the client 120. The generate / evaluate module 114 is configured to evaluate the graph and the patch in the request. The evaluation is conducted by way of a distance transform.

[0050] Distance transforms are used to determine the distance of each pixel in an image from a specific point or set of points. A value is then assigned to each pixel that corresponds with its distance to the nearest point or points of interest. Distance transforms are widely used in graphics for the purposes of feature extraction, object segmentation, and shape analysis. The server 110 evaluates the request using an anti-aliased Euclidian distance transform (AAEDT). The AAEDT is an improved implementation of the distance transform described by Felzenszwalb and Huttenlocher in “Distance Transforms of Sampled Functions," Theory of Computing, Volume 8 (2012), pp. 415-428.

[0051] The distance transform described by Felzenszwalb and Huttenlocher relates only to one dimensional distances and does not consider 3D applications. The AAEDT is adapted for 3D distances and determining the distance of each voxel in a 3D shape from a specific point or set of points. The AAEDT stores the identify of the closest point, rather than the distance to it. This enables a subsequent refining pass to compute anti-aliased distances.

[0052] The AAEDT begins with an initialization step or pass. The AAEDT identifies points that are close to the zero level set (relative to grid spacing). This is achieved by taking a Newton step on a local polynomial approximation of the sampledfunction at each point. If the step is small enough (relative to grid spacing), the point is considered to be a “source”. The position of each source point after taking the Newton step is also stored for use in subsequent passes. The stored position is referred to as the "projected" position of the source point.

[0053] The AAEDT continues with a sweep step or pass. For all the points in the grid, the source point with the nearest projected position is identified. This provides an approximation of the closest point on the zero level set (error is proportional to grid spacing). This proceeds similarly to the distance transform described in the aforementioned journal paper, however instead of tracking the squared distance to the nearest source, the identity of the source with the nearest projected position is tracked. This allows projected positions of sources to be considered during sweep passes and resulting nearest point approximations can be improved in a subsequent, follow-up refining pass.

[0054] The AAEDT continues with a refining step or pass. For each grid point, its nearest source point is updated if it is adjacent to another source point whose projected position is closer. This is repeated until the projected positions of all adjacent sources are further away, at which point, distance to the projected position of the updated nearest source is returned. The sign of the resulting distance is given by the sign of the input sample.

[0055] The generate / evaluate module 114 uses the described AAEDT. The AAEDT used by the generate / evaluate module 114 removes aliasing artefacts concentrated near to the zero level set without negatively affecting the runtime complexity or ability to be efficiently paralleled.

[0056] The generate / evaluate module 114 is configured to determine the distance to a nearest surface of the shape for each point in the graph. For each point in the graph, the nearest near-zero grid point is identified. The nearest near-zero grid point is a source. A point in the graph is identified as a source if it is adjacent to the zero crossing, or adjacent the surface of the shape. The points are then determined in relation to the source. The distance for each point to a respective source is a 3D distance. Once a distance to a source is determined, if a distance to another source for the same point is determined to be less, the source and distance for the point are updated. The result of the distance transform is a set of distances, one for each pointin the graph to the surface of the shape, or source. The distance transform also assigns an orientation to the distance, indicating whether the point is internal of or external to the shape. A distance of about zero indicates that a crossing of the surface of the shape. As a result of the distance transform, each voxel in the 3D shape is aware of its position relative to neighbouring voxels, i.e. if it is a surface voxel, a voxel internal of the shape, a voxel external of the shape, etc.

[0057] The generate / evaluate module 114 compresses the set of distances before the send / receive module 112 sends the distances to the client 120. The generate / evaluate module 114 approximates, or quantizes, the distances from the distance transform to a value within a predefined range. The values may be positive or negative. A positive number indicates that the point is external to the shape. A negative number indicates that the point is internal to the shape. If a value is, for example, greater than 5, the point is external to the shape and the value is fixed to 5. If the value is, for example, less than -5, the point is internal of the shape. A value that is, for example, 1 or -1 in the range of 5 to -5 will remain as 1 or -1 . Values that are at the extremes of the range signify points that are further from the surface of the shape. For points that are significantly far from the surface, either internally or externally, the requirement for a very granular level of detail is lessened, and as a result, these values are assigned to the extremes of the range. For points that are closer to the surface of the shape, the values assigned to the distances become more granular closer to zero, allowing for a very granular level of detail at the surface.

[0058] The values, once quantized as described above, are then assigned to the integer range of 0 to 255 where 128 signifies the surface of the shape. By quantizing the values into 256 blocks, they can be stored as an 8-bit unsigned integer (uint8) data structure, which contributes to the compression ratio. In some cases, the range is logically remapped as -128 to 127, or a signed integer (int8) may be used. This range of integer values is sent to the client 120 from the send / receive module 112.

[0059] The send / receive module 122 of the client 120 is configured to receive the compressed data from the server 110. The generate / decode module 124 is configured to decode the compressed data received from the server 110 to enable the client 120 to render the 3D model of the shape at the display 126.

[0060] To decode the compressed data, the generate / decode module 124 subdivides the root node into a number of child nodes. For each child node, the generate / evaluate module 124 determines, from the compressed data, if the child node contains a zero level set crossing, or a surface of the shape. This is achieved, in general terms, by checking if values in the compressed data exceed a threshold. More particularly, this is achieved by reviewing the values in compressed data. If there are values that are above and below 128, then there is a crossing in the root node, i.e., the surface of the shape. If the child node contains a zero level crossing, the child node is queued as a subsequent root node, i.e. it is included in a subsequent patch in a subsequent request that is sent to the server 110 for evaluation. This is adaptive refining of the shape. The evaluation at the server 110 determines distances for the subsequent patch as described above, based on the subsequent request. If the child node does not contain a zero level crossing, or the surface of the shape, the child node is discarded.

[0061] The zero level crossing, or the surface of the object, is the part of the 3D shape of most interest. If a child node does not contain a zero level crossing, it is either wholly internal of or external to the shape. As these child nodes do not contain any information pertaining to the surface, they can be discarded.

[0062] For the child node or nodes that are queued as root nodes, the client 120 is configured to create a subsequent request for information from the server 110. The shape is defined as the graph, which includes operators and connected between operators that allows the server 110 to evaluate the shape. The subsequent request includes a subsequent patch which defines another 3D region (e.g. focusing on a particular region of the shape’s surface) that the shape is to be evaluated on, and the spatial domain. The subsequent patch includes extents, position, and resolution (i.e. offset, size, and resolution information) which allows for mapping the spatial domain in the numerical domain. The generate / decode module 124 is configured to create the subsequent request. The send / receive module 122 is configured to send the request to the server 110, over the network 130.

[0063] The subsequent patch in the subsequent request includes the same resolution as the previous patch, however the dimension is different from the initial patch. This relates to the 3D region being evaluated. The subsequent patch evaluates, e.g., the same number of grid points, but is smaller spatially, therefore capturing moredetail. In general, the density of the grid points can be increased as the spatial area decreases, leading to more detail.

[0064] The send / receive module 112 of the server 110 is configured to receive the subsequent request from the client 120. The generate / evaluate module 114 is configured to evaluate the graph and the subsequent patch in the subsequent request. The evaluation is conducted by way of the distance transform. By evaluating the subsequent request, more granular information regarding the points closest to the surface is obtained, resulting in a more detailed view of the 3D model in the 3D region.

[0065] The generate / evaluate module 114 compresses the subsequent set of distances before the send / receive module 112 sends the distances to the client 110. The generate / evaluate module 114 approximates, or quantizes, the subsequent set distances from the distance transform to a value within a subsequent predefined range. The subsequent predefined range may be narrower than the previous range, e.g. from -1 to 1. This process repeats, with the client 120 generating new requests and the server 110 evaluating the new requests until the 3D model of the shape is a detailed as required. This process is repeated until the required level of detail for the 3D shape is achieved.

[0066] The described system 100 is advantageous as it enables the client 120 to render 3D shapes in a computationally efficient manner, such that consumer devices such as laptops, tablets, and smartphones that typically do not include a GPU. The computationally intensive evaluation of the request is performed at the server 110, which can be a GPU with the processing power to evaluate a significant number of points in the spatial domain in a time sensitive manner. The sending and receiving of the request and the compressed data, and the decoding of the compressed data, coupled with the use of the distance transform at the server 110 for the evaluation, with the focus being on the surface of the 3D shape, and the ability to discard child nodes that are wholly internal of or external to the shape, enables a real-time rendering of the 3D shape at the client 120.

[0067] Referring now to FIG. 2, there is illustrated a simplified block diagram of a computer in accordance with at least some embodiments. The computer is generally identified by reference character 200. Computer 200 is a generic example of a computer, such as the server 110 or the client 120 of FIG. 1. Computer 200 generallyhas at least one processor 210 operatively coupled to at least one memory 220, and at least one additional input / output device 230.

[0068] The at least one memory 220 includes a volatile memory that stores instructions executed or executable by processor 210, and input and output data used or generated during execution of the instructions. Memory 220 may also include nonvolatile memory used to store input and / or output data along with program code containing executable instructions.

[0069] Processor 210 may transmit or receive data via a data communications interface (not shown), or may also transmit or receive data via any additional input / output device 230 as appropriate.

[0070] Referring now to FIG. 3, there is provided an exemplary method that is performed by the server 110 of the system 100. The method is generally identified by reference character 300. At block 310, a request from the client 120 for compressed data is received at the server 110. The send / receive module 112 of the server 110 receives the request from the client 120. The request is received over the network 130.

[0071] In some cases, the request may be for data relating to an initial root node representing the empty box that completely contains the shape. In some cases, the request may be for data relating to a child node identified as including a zero level crossing, or the surface of the shape, which has been queued as a root node.

[0072] At block 320, the generate / evaluate module 114 of the server 110 evaluates the request with a distance transform to determine the distance for each point in the graph. For each point, the nearest near-zero grid point is identified. The nearest near-zero grid point is a source. A point is identified as a source is if it adjacent the zero crossing, or adjacent the surface of the shape. The nearest points are then determined in relation to the source. The distance for each point to a respective source is a 3D distance. Once a distance to a source if determined, if a distance to another source for the same point is determined to be nearer, the source and distance for the point are updated. The result of the distance transform is a set of distances, one for each point to the surface of the shape, or source. The distance transform also assigns an orientation to the distance, indicating whether the point is internal of or external to the shape. A distance of about zero indicates that a crossing of the surface of the shape. As a result of the distance transform, each voxel is aware of its position relativeto neighbouring voxels, i.e. if it is a surface voxel, a voxel internal of the shape, a voxel external of the shape, etc.

[0073] At block 330, the generate / receive module 114 of the server 110 generates the compressed data for the request. The generate / evaluate module 114 approximates, or quantizes, the distances from the distance transform to a value within a predefined range. The values may be positive or negative. A positive number indicates that the point is external to the shape. A negative number indicates that the point is internal to the shape. If a value is, for example, greater than 5, the point is external to the shape and the value is fixed to 5. If the value is, for example, less than -5, the point is internal of the shape. A value that is, for example, 1 or -1 in the range of 5 to -5 will remain as 1 or -1 . Values that are at the extremes of the range, signify points that are further from the surface of the shape, which is where a greater level of detail in the 3D model of the shape is required. For points that are significantly far from the surface, either internally or externally, the requirement for a very granular level of detail is lessened, and as a result, these values are assigned to the extremes of the range. For points that are closer to the surface of the shape, the values assigned to the distances become more granular closer to zero, allowing for a very granular level of detail at the surface.

[0074] At block 340, the send / receive module 112 of the server 110 sends the compressed data to the client 120 for decoding. The compressed data is sent over the network 130.

[0075] In some cases, method 100 includes receiving a subsequent request from the client 120. The subsequent request includes the subsequent patch which defines another 3D region (e.g. focusing on a particular region of the shape’s surface) that the shape is to be evaluated on, and the spatial domain. The subsequent patch includes extents, position, and resolution (i.e. offset, size, and resolution information) which allows for mapping the spatial domain in the numerical domain. The generate / decode module 124 is configured to create the subsequent request. The send / receive module 122 is configured to send the request to the server 110, over the network 130. The subsequent patch in the subsequent request includes the same resolution as the previous patch, however the dimension is different from the initial patch. This relates to the 3D region being evaluated. The subsequent patch has a higher density of grid points, but is smaller spatially, therefore capturing more detail.

[0076] The send / receive module 112 of the server 110 is configured to receive the subsequent request from the client 120. The generate / evaluate module 114 is configured to evaluate the graph and the subsequent patch in the subsequent request. The evaluation is conducted by way of the distance transform.

[0077] The generate / evaluate module 114 compresses the subsequent set of distances before the send / receive module 112 sends the distances to the client 110. The generate / evaluate module 114 approximates, or quantizes, the subsequent set distances from the distance transform to a value within a subsequent predefined range. The subsequent predefined range may be narrower than the previous range, e.g. from -1 to 1. This process repeats, with the client 120 generating new requests and the server 110 evaluating the new requests until the 3D model of the shape is a detailed as required. This process is repeated until the required level of detail for the 3D shape is achieved.

[0078] Referring now to FIG. 4, there is provided an exemplary method that is performed by the client 120 of the system 100. The method is generally identified by reference character 400. At block 410, the generate / decode module 124 of the client 120 generates the graph representing the spatial domain and the function defining the mapping of the spatial domain to the numerical domain in the initial patch. The request includes the shape defined as a graph, including operators and connected between operators that allows the server 110 to evaluate the shape. The initial root node is defined in the request. The request includes the patch which defines the 3D region (root node) that the shape is to be evaluated on, and the spatial domain. The patch includes extents, position, and resolution (i.e. offset, size, and resolution information) which allows for mapping the spatial domain in the numerical domain. In some cases, the request may be for data relating to an initial root node representing the empty box that completely contains the shape. In some cases, the request may be for data relating to a child node identified as including a zero level crossing, or the surface of the shape, which has been queued as a root node.

[0079] At block 420, the send / receive module 122 of the client 120 sends the request to the server 120. The request is sent over the network 130.

[0080] At block 430, the send / receive module 122 of the client 120 received the compressed data from the server 110. The compressed data is received over the network 130.

[0081] At block 440, the generate / decode module 124 of the client 120 decodes the compressed data based on the graph and the initial patch. The generate / decode module 124 subdivides the root node into a number of child nodes. For each child node, the gene rate / evalu ate module 124 determines, from the compressed data, if the child node contains a zero level set crossing, or a surface of the shape. This is achieved by reviewing the values in compressed data. If there are values that are above and below 128, then there is a crossing in the root node, i.e., the surface of the shape. If the child node contains a zero level crossing, the child node is queued as a subsequent root node, i.e. it is included in a subsequent patch in a subsequent request that is sent to the server 110 for evaluation. The evaluation at the server 110 determines distances for the subsequent patch as described above, based on the subsequent request. If the child node does not contain a zero level crossing, or the surface of the shape, the child node is discarded.

[0082] At block 450, the client 120 renders the spatial domain based on the decoded compressed data and the initial patch. The client 120 displays the rendered 3D shape at the display 126.

[0083] In some cases, when the points correspond to the zero level crossing, or the surface of the shape, the client 110 adaptively refines the rendered spatial domain. For the child node or nodes that are queued as root nodes, the client 120 is configured to create a subsequent request for information from the server 110. The shape is defined as the graph, which includes operators and connected between operators that allows the server 110 to evaluate the shape. The subsequent request includes a subsequent patch which defines another 3D region (e.g. focusing on a particular region of the shape’s surface) that the shape is to be evaluated on, and the spatial domain. The subsequent patch includes extents, position, and resolution (i.e. offset, size, and resolution information) which allows for mapping the spatial domain in the numerical domain. The generate / decode module 124 is configured to create the subsequent request. The send / receive module 122 is configured to send the request to the server 110, over the network 130.

[0084] The subsequent patch in the subsequent request includes the same resolution as the previous patch, however the dimension is different from the initial patch. This relates to the 3D region being evaluated. The subsequent patch has a higher density of grid points, but is smaller spatially, therefore capturing more detail. The generate / evaluate module 114 is configured to evaluate the graph and the subsequent patch in the subsequent request. The evaluation is conducted by way of the distance transform.

[0085] Referring now to FIG. 5, there is provided a series of exemplary views of an example 3D shape rendered using the described methods 300, 400. Image 510 provides an example view of a root node. The root node is the box that encapsulates the 3D shape. The initial evaluation is at a low resolution, and the surface of the shape does not include significant detail. Image 520 provides an example view of the root node having been divided into child nodes, with subsequent re-evaluation by the system 100. The surface of the shape has more detail compared to image 510. Image 530 provides an example view of further recursive division into child nodes and re- evaluation by the system 100. The surface of the shape has more detail than in image 520. The surface structure is fully visible, with smooth curves.

[0086] Image 540 provides another example view of an initial low resolution view of a root node. Although the features of the shape are visible, the edges are not smooth. Image 550 provides an example view of the root node having been divided into child nodes, with subsequent re-evaluation by the system 100. The surface of the shape has more detail compared to image 540. The features of the shape are smoother in comparison. Image 560 provides an example view of further recursive division into child nodes and re-evaluation by the system 100. The surface of the shape has more detail than in image 550. The surface structure is smooth with features being well defined. The subsequent patches evaluate the same number of grid points, but are smaller spatially, therefore capturing more detail, which can be seen in image 530 and image 560 when compared to image 510 and 540 respectively.

[0087] Referring now to FIG. 6, there is provided a series of exemplary views of another example 3D shape. Image 610 and image 620 have been rendered using standard techniques. Image 630 and image 640 have been rendered using the described methods 300, 400. Although the initial image, or zero-level set, is the same for both image 610 and image 630, when they are evaluated at a different level set,different shaped are generated. Image 640 shows the correct 3D shaped that is generated using described methods 300, 400. Image 620 includes additional features that should not be included. Therefore, not only does the described distance transform allow for effective compression of data, it enables more accurate and detailed rendering of the 3D shape. Image 610 and 620 show that compressing an incorrect scalar field would not give good rendering results at the client 120.

[0088] Additional example embodiments are provided below:

[0089] Clause 1 : A system comprising: a first means for: receiving a request for compressed data from a second means, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluating the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating the compressed data; and sending the compressed data to the second means for decoding to render the spatial domain based on the compressed data and the initial patch; and the second means for: generating the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain in the numerical domain; sending the request to the first means, the request comprising the graph and the initial patch; receiving the compressed data from the first means; decoding the compressed data based on the graph and the initial patch; and rendering the spatial domain based on the decoded compressed data and the initial patch.

[0090] Clause 2. The system of clause 1 , wherein the initial patch comprises an offset, a size, and a resolution.

[0091] Clause 3 The system of clause 1 or 2, wherein the evaluating the request with the distance transform comprises: determining, based on the graph and the initial patch, a distance to a nearest surface for each point in the spatial domain.

[0092] Clause 4. The system of clause 3, wherein the evaluating the request with the distance transform further comprises: determining an orientation for the distance to the nearest surface for each point in the spatial domain.

[0093] Clause 5. The system of clause 3 or 4, wherein a distance of about 0 corresponds to a crossing of the surface of the shape.

[0094] Clause 6. The system of any one of clauses 3 to 5, wherein the generating the compressed data comprises: quantizing the distance to the closest point on the surface for each point in the spatial domain and the orientation for the distance to the closest point on the surface for each point in the spatial domain by assigning a value in a pre-defined range.

[0095] Clause 7. The system of any one of clauses 1 to 6, further comprising: receiving, at the first means, a second request for second compressed data from the second means, wherein the second request comprises the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain to the numerical domain in at least a second patch; evaluating, by the first means, the second request with the distance transform to determine the distance for each point in the graph based on the at least the second patch; generating, by the first means, the second compressed data; and sending, by the first means, the second compressed data to the second means for decoding to render the spatial domain based on the second compressed data and the at least the second patch.

[0096] Clause 8. The system of clause 7, wherein the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

[0097] Clause 9. The system of any one of clauses 1 to 8, wherein the compressed data comprises values and the decoding the compressed data comprises: determining, based on the values, patches that contain a crossing; discarding, based on the values, patches that are fully interior or exterior, i.e. do not contain a crossing.

[0098] Clause 10. The system of clause 9, wherein the values are integer values and, preferably, the integer values are 8-bit integer values.

[0099] Clause 11 . The system of clause 9 or 10, further comprising: when the points in the spatial domain correspond to the crossing, adaptively refining the rendered spatial domain based on at least a second request comprising the graph and at least a second patch comprising a second offset, a second size, and a second resolution.

[0100] Clause 12. The system of clause 11 , wherein the adaptively refining the rendered spatial domain comprises: receiving, by the second means, second compressed data from the first means; decoding, by the second means, the second compressed data based on the graph and the at least the second patch; and rendering, by the second means, the spatial domain based on the decoded second compressed data and the at least the second patch.

[0101] Clause 13. A non-transitory computer-readable storage device storing instructions that, when executed by a processor of a remote server, cause the processor to perform operations comprising: receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluating, at the remote server, the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating, at the remote server, the compressed data; and sending, from the remote server, the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.

[0102] Clause 14. The non-transitory computer-readable storage device of clause 13, wherein the initial patch comprises an offset, a size, and a resolution.

[0103] Clause 15. The non-transitory computer-readable storage device of clause 13 or 14, wherein the evaluating the request with the distance transform comprises: determining, based on the graph and the initial patch, a distance to a nearest surface for each point in the spatial domain.

[0104] Clause 16. The non-transitory computer-readable storage device of clause 15, wherein the evaluating the request with the distance transform further comprises: determining an orientation for the distance to the nearest surface for each point in the spatial domain.

[0105] Clause 17. The non-transitory computer-readable storage device of clause 15 or 16, wherein a distance of about 0 corresponds to a crossing of the surface of the shape.

[0106] Clause 18. The non-transitory computer-readable storage device of any one of clauses 15 to 17, wherein the generating the compressed data comprises:quantizing the distance to the closest point on the surface for each point in the spatial domain and the orientation for the distance to the closest point on the surface for each point in the spatial domain by assigning a value in a pre-defined range.

[0107] Clause 19. The non-transitory computer-readable storage device of any one of clauses 13 to 18, wherein the instructions further cause the processor to perform: receiving, at the remote server, a second request for second compressed data from the client device, wherein the second request comprises the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain to the numerical domain in at least a second patch; evaluating, at the remote server, the second request with the distance transform to determine the distance for each point in the graph based on the at least the second patch; generating, at the remote server, the second compressed data; and sending, from the remote server, the second compressed data to the client device for decoding to render the spatial domain based on the second compressed data and the at least the second patch.

[0108] Clause 20. The non-transitory computer-readable storage device of clause 19, wherein the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

[0109] Clause 21 . A non-transitory computer-readable storage device storing instructions that, when executed by a processor of a client device, cause the processor to perform operations comprising: generating, at a client device, a graph representing a spatial domain and at least one function defining a mapping of the spatial domain in a numerical domain; sending, by the client device, a request to a remote server, the request comprising the graph and an initial patch; receiving, at the client device, compressed data from the remote server; decoding, at the client device, the compressed data based on the graph and the initial patch; rendering, at the client device, the spatial domain based on the decoded compressed data and the initial patch.

[0110] Clause 22. The non-transitory computer-readable storage device of clause 21 , wherein the initial patch comprises an offset, a size, and a resolution.

[0111] Clause 23 The non-transitory computer-readable storage device of clause 21 or 22, wherein the compressed data comprises values and the decoding the compressed data comprises: determining, based on the values, patches that contain a crossing; discarding, based on the values, patches that are fully interior or exterior, i.e. do not contain a crossing.

[0112] Clause 24. The non-transitory computer-readable storage device of clause 24, wherein the values are integer values and, preferably, the integer values are 8-bit integer values.

[0113] Clause 25. The non-transitory computer-readable storage device of clause 23 or 24, wherein the instructions further cause the processor to perform: when the points in the spatial domain correspond to the crossing, adaptively refining the rendered spatial domain based on at least a second request comprising the graph and at least a second patch comprising a second offset, a second size, and a second resolution.

[0114] Clause 26. The non-transitory computer-readable storage device of clause 25, wherein the adaptively refining the rendered spatial domain comprises: receiving, at the client device, second compressed data from the remote server; decoding, at the client device, the second compressed data based on the graph and the at least the second patch; and rendering, at the client device, the spatial domain based on the decoded second compressed data and the at least the second patch.

[0115] Clause 27. The non-transitory computer-readable storage device of clause 26, wherein the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

[0116] Various systems or processes have been described to provide examples of embodiments of the claimed subject matter. No such example embodiment described limits any claim and any claim may cover processes or systems that differ from those described. The claims are not limited to systems or processes having all the features of any one system or process described above or to features common to multiple or all the systems or processes described above. It is possible that a system or process described above is not an embodiment of any exclusive right granted by issuance of this patent application.

[0117] For simplicity and clarity of illustration, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth to provide a thorough understanding of the subject matter described herein. However, it will be understood by those of ordinary skill in the art that the subject matter described herein may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the subject matter described herein.

[0118] As used herein, an element or feature introduced in the singular and preceded by the word "a" or "an" should be understood as not necessarily excluding the plural of the elements or features. Further, references to "one example" or “one embodiment” are not intended to be interpreted as excluding the existence of additional examples or embodiments that also incorporate the described elements or features. Reference herein to “example” means that one or more feature, structure, element, component, characteristic and / or operational step described in connection with the example is included in at least one embodiment and / or implementation of the subject matter according to the subject disclosure. Thus, the phrases “an example,” “another example” and similar language throughout the subject disclosure may, but do not necessarily, refer to the same example. Further, the subject matter characterizing any one example may, but does not necessarily, include the subject matter characterizing any other example.

[0119] Unless explicitly stated to the contrary, examples or embodiments "comprising" or "having" or “including” an element or feature or a plurality of elements or features having a particular property may include additional elements or features not having that property. Also, it will be appreciated that the terms “comprises”, “has”, “includes” means “including but not limited to” and the terms “comprising”, “having” and “including” have equivalent meanings.

[0120] As used herein, the term “and / or” can include any and all combinations of one or more of the associated listed elements or features.

[0121] The terms “coupled” or “coupling” as used herein can have several different meanings depending in the context in which these terms are used. For example, the terms coupled or coupling can have a mechanical, electrical orcommunicative connotation. For example, as used herein, the terms coupled or coupling can indicate that two elements or devices are directly connected to one another or connected to one another through one or more intermediate elements or devices via an electrical element, electrical signal, or a mechanical element depending on the particular context. Furthermore, the term “operatively coupled” may be used to indicate that an element or device can electrically, optically, or wirelessly send data to another element or device as well as receive data from another element or device.

[0122] Reference herein to “configured” denotes an actual state of configuration that fundamentally ties the element or feature to the physical characteristics of the element or feature preceding the phrase “configured to.”

[0123] Unless otherwise indicated, the terms “first,” “second,” etc. are used herein merely as labels, and are not intended to impose ordinal, positional, or hierarchical requirements on the items to which these terms refer. Moreover, reference to a “second” item does not require or preclude the existence of a lower-numbered item (e.g., a “first” item) and / or a higher-numbered item (e.g., a “third” item).

[0124] As used herein, the terms “approximately” and “about” represent an amount close to the stated amount that still performs the desired function or achieves the desired result. For example, the terms “approximately” and “about” may refer to an amount that is within engineering tolerances that would be readily appreciated by a person skilled in the art.

[0125] The embodiments described herein may be implemented as a combination of hardware or software, as described above. Further, in some examples, one or more of the systems and methods described herein may be implemented in or as part of a distributed or cloud-based computing system having multiple computing components distributed across a computing network. The distributed or cloud-based computing system be a publicly accessible, distributed or cloud-based computing cluster, such as a computing cluster maintained by Microsoft Azure™, Amazon Web Services™, Google Cloud™, or another third-party provider.

[0126] Some aspects of the embodiments described herein may be implemented via software that is written in a high-level procedural language such as object-oriented programming language. Accordingly, the program code may be written in any suitable programming language such as Java, Python or Rust, for example.Alternatively, or in addition thereto, some of these elements implemented via software may be written in assembly language, machine language or firmware as needed. In either case, the language may be a compiled or interpreted language.

[0127] At least some of these software programs may be stored on a storage media (e.g., a computer readable medium such as, but not limited to, read-only memory, magnetic disk, optical disc) or a device that is readable by a general or special purpose programmable device. The software program code, when read by the programmable device, configures the programmable device to operate in a new, specific, and predefined manner to perform at least one of the methods described herein.

[0128] Furthermore, at least some of the programs associated with the systems and methods described herein may be capable of being distributed in a computer program product including a computer readable medium that bears computer usable instructions for one or more processors. The medium may be provided in various forms, including non-transitory forms such as, but not limited to, one or more diskettes, compact disks, tapes, chips, and magnetic and electronic storage.

[0129] Although embodiments have been described above with reference to the accompanying drawings, those of skill in the art will appreciate that variations and modifications may be made without departing from the scope thereof as defined by the appended claims.

Claims

What is claimed is:1 . A computer-implemented method comprising: receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a spatial domain and a graph and at least one function defining a mapping of the spatial domain to a numerical domain in an initial patch; evaluating, at the remote server, the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating, at the remote server, the compressed data; and sending, from the remote server, the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.

2. The method of claim 1 , wherein the initial patch comprises an offset, a size, and a resolution.

3. The method of claim 1 or 2, wherein the evaluating the request with the distance transform comprises: determining, based on the graph and the initial patch, a distance to a nearest surface for each point in the spatial domain.

4. The method of claim 3, wherein the evaluating the request with the distance transform further comprises: determining an orientation for the distance to the nearest surface for each point in the spatial domain.

5. The method of claim 3 or 4, wherein a distance of about 0 corresponds to a crossing of the surface of the shape.

6. The method of any one of claims 3 to 5, wherein the generating the compressed data comprises: quantizing the distance to the closest point on the surface for each point in the spatial domain and the orientation for the distance to the closest point on the surface for each point in the spatial domain by assigning a value in a pre-defined range.

7. The method of any one of claims 1 to 6, further comprising:receiving, at the remote server, a second request for second compressed data from the client device, wherein the second request comprises the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain to the numerical domain in at least a second patch; evaluating, at the remote server, the second request with the distance transform to determine the distance for each point in the graph based on the at least the second patch; generating, at the remote server, the second compressed data; and sending, from the remote server, the second compressed data to the client device for decoding to render the spatial domain based on the second compressed data and the at least the second patch.

8. The method of claim 7, wherein the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

9. A computer-implemented method comprising: generating, at a client device, a graph representing a spatial domain and at least one function defining a mapping of the spatial domain in a numerical domain in an initial patch; sending, by the client device, a request to a remote server, the request comprising the graph and the initial patch; receiving, at the client device, compressed data from the remote server; decoding, at the client device, the compressed data based on the graph and the initial patch; rendering, at the client device, the spatial domain based on the decoded compressed data and the initial patch.

10. The method of claim 9, wherein the initial patch comprises an offset, a size, and a resolution.11 . The method of claim 9 or 10, wherein the compressed data comprises values and the decoding the compressed data comprises: determining, based on the values, patches that contain a crossing;discarding, based on the values, patches that are fully interior or exterior, i.e. do not contain a crossing.

12. The method of claim 11 , wherein the values are integer values and, preferably, the integer values are 8-bit integer values.

13. The method of claim 11 or 12, further comprising: when the points in the spatial domain correspond to the crossing, adaptively refining the rendered spatial domain based on at least a second request comprising the graph and at least a second patch comprising a second offset, a second size, and a second resolution.

14. The method of claim 13, wherein the adaptively refining the rendered spatial domain comprises: receiving, at the client device, second compressed data from the remote server; decoding, at the client device, the second compressed data based on the graph and the at least the second patch; and rendering, at the client device, the spatial domain based on the decoded second compressed data and the at least the second patch.

15. The method of claim 14, wherein the initial patch has a resolution and a first dimension and the at least the second patch has a same resolution and a second dimension, the second dimension being smaller than the first dimension.

16. A system comprising: a remote server; a client device; wherein the remote server is configured to: receive a request for compressed data from the client device, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluate the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generate the compressed data; and send the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch;wherein the client device is configured to: generate the graph representing the spatial domain and the at least one function defining the mapping of the spatial domain in the numerical domain; send the request to the remote server, the request comprising the graph and the initial patch; receive the compressed data from the remote server; decode the compressed data based on the graph and the initial patch; and render the spatial domain based on the decoded compressed data and the initial patch.

17. A non-transitory computer-readable storage device storing instructions that, when executed by a processor of a remote server, cause the processor to perform operations comprising: receiving, at a remote server, a request for compressed data from a client device, wherein the request comprises a graph representing a spatial domain and at least one function defining a mapping of the spatial domain to a numerical domain and an initial patch; evaluating, at the remote server, the request with a distance transform to determine a distance for each point in the graph based on the initial patch; generating, at the remote server, the compressed data; and sending, from the remote server, the compressed data to the client device for decoding to render the spatial domain based on the compressed data and the initial patch.

18. A non-transitory computer-readable storage device storing instructions that, when executed by a processor of a client device, cause the processor to perform operations comprising: generating, at a client device, a graph representing a spatial domain and at least one function defining a mapping of the spatial domain in a numerical domain; sending, by the client device, a request to a remote server, the request comprising the graph and an initial patch; receiving, at the client device, compressed data from the remote server;decoding, at the client device, the compressed data based on the graph and the initial patch; rendering, at the client device, the spatial domain based on the decoded compressed data and the initial patch.

Citation Information

Patent Citations

  • System and method for dynamically switching quality settings on a codec to maintain a target data rate

    US20130235929A1

  • System and method of processing medical images

    US20190130570A1

  • Apparatus, a method and a computer program for volumetric video

    US20210144404A1

  • Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

    US20210319571A1