DIRECT MANIPULATION OF IMPLICITLY DEFINED DIGITAL 3D SHAPES

The system allows direct manipulation of implicitly defined 3D shapes through co-parameterization and Jacobian matrix calculations, enhancing 3D graphics editing by reducing computational load and resource consumption.

DE102025110355A1Pending Publication Date: 2025-11-27ADOBE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
DE102025110355
Authority / Receiving Office
DE · DE
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-05-23
Filing Date
2025-03-18
Publication Date
2025-11-27

AI Technical Summary

Technical Problem

Existing methods for directly manipulating composite 3D shapes composed of implicitly defined primitives are limited, as they lack the ability to associate geometric updates with parameter changes, and existing methods fail to address the direct manipulation of complex shapes.

Method used

A computing system that renders a 3D shape on a display device based on an implicit definition, determines an alternative representation of a point using co-parameterization, and calculates parameter changes using a Jacobian matrix to re-render the shape based on user input.

Benefits of technology

Enables direct and intuitive manipulation of complex 3D shapes, reducing computational load and resource consumption by aligning user input with intended edits, and improving 3D graphics editing efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Techniques for the direct manipulation of implicitly defined digital three-dimensional shapes are revealed. In an exemplary procedure, a computing device renders a 3D shape based on an implicit definition with one or more parameters. The computing device receives an input specifying a modification of the 3D shape at a point. The computing device determines an alternative representation of the point. The computing device determines a position of the point based on the alternative representation. The computing device determines a transformation that relates the position to the one or more parameters. The computing device determines a change in at least one parameter based on the transformation and the input. The computing device re-renders the 3D shape based on the implicit definition and the change in the at least one parameter.The re-rendered 3D shape contains the modification specified by the input.
Need to check novelty before this filing date? Find Prior Art

Description

Technical field

[0001] This disclosure relates generally to the processing of three-dimensional graphics or 3D graphics and in particular to techniques for the direct manipulation of implicitly defined digital 3D shapes. background

[0002] High-quality, resolution-independent computer graphics can be generated using procedural methods. Procedural methods employ algorithms, for example, to automatically generate detailed and scalable content based on mathematical formulas and rules. Due to their compact representation, a large number of procedurally generated graphics can be efficiently produced by manually adjusting exposed process parameters. Achieving a desired graphic can involve experimenting to determine the value of the process parameters, often by manipulating user interface elements such as sliders or controls, whose position corresponds to the value of the process parameters.

[0003] Some procedural methods can use implicitly defined shapes. An implicitly defined shape can comprise shapes defined by a mathematical condition or constraint that specifies which points in space belong to the shape. These conditions can be parameterized and adjusted using sliders. For example, a series of 3D shapes can be implicitly defined using parameterized definitions and then combined using procedural methods to create a composite 3D shape. Sliders can be used to adjust the parameters to cause one or more of the constituent 3D shapes to be redrawn to obtain the desired composite 3D shape. Depiction

[0004] Some of the embodiments described here relate to techniques for the direct manipulation of implicitly defined digital 3D shapes. In general terms, a method performed by one or more processing devices may include: rendering a 3D shape on a display device based on an implicit definition of the 3D shape, wherein the implicit definition may contain one or more parameters; receiving a statement regarding an input, wherein the input specifies a modification of the 3D shape at a point; determining an alternative representation of the point; determining a position of the point based on the alternative representation; determining a transformation relating the position to the one or more parameters; determining a change in at least one parameter of the one or more parameters based on the transformation and the input.and re-rendering the 3D shape based on the implicit definition and the change in the at least one parameter, wherein the re-rendered 3D shape incorporates the modification specified by the input. Other embodiments of this aspect include appropriate computing systems, devices, and programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.

[0005] In general terms, a system can have one or more processors. The system can also have one or more computer-readable storage media that store instructions which, when executed by the one or more processors, cause the one or more processors to perform operations that include: rendering a 3D shape on a display device based on an implicit definition of the 3D shape, wherein the implicit definition may contain one or more parameters; receiving a selection on a first region on the 3D shape, wherein the first region contains one or more points; for each point of the one or more points: determining a co-parameterization value of the point; determining a position using end-to-end differentiable position evaluation.The operations may further include determining Jacobian information for the position relative to one or more parameters based on the position. The operations may also include generating a Jacobian matrix based on the Jacobian information for the positions of one or more points. The operations may further include receiving information regarding a line that begins in one region and ends in a second region. The operations may also include determining an update of at least one of the one or more parameters based on the line and the Jacobian matrix, as well as re-rendering the 3D shape based on the implicit definition and the update of at least one of the one or more parameters.Other embodiments of this aspect include appropriate computer systems, devices, and programs recorded on one or more computer storage devices, each configured to perform the operations.

[0006] In general terms, a non-transitory computer-readable medium stores instructions which, when executed by one or more processors, cause the one or more processors to perform operations that include: rendering a 3D shape on a display device based on an implicit definition of the 3D shape, the implicit definition being able to include one or more parameters; receiving a statement regarding an input, the input being a modification of the 3D shape in a region on the 3D shape with one or more points; a step of determining a co-parameterization of one or more points, the co-parameterization being one or more coordinates and an identifier; a step of determining a position for each co-parameterization of the one or more points;The process includes a step of determining Jacobian matrices that relate the co-parameterization to the one or more parameters; a step of determining a change in at least one parameter of the one or more parameters based on the Jacobian matrices and the input; and a re-rendering of the 3D shape based on the implicit definition and the change in the at least one parameter, wherein the re-rendered 3D shape incorporates the modification specified by the input. Other embodiments of this aspect include appropriate computer systems, devices, and programs recorded on one or more computer storage devices, each configured to perform the operations.

[0007] These illustrative embodiments are not mentioned to limit or define the disclosure, but to provide examples that facilitate understanding of the disclosure. Further embodiments are described in the detailed description, which provides a more comprehensive account. Brief description of the drawings

[0008] Features, embodiments and advantages of the present disclosure will be better understood if the detailed description below is read with reference to the accompanying drawings. Fig. Figure 1 is a diagram of an example system that implements techniques for the direct manipulation of implicitly defined digital 3D shapes according to some aspects of the present disclosure. In the Fig. Figures 2A to 2C are exemplary directed acyclic graphs that can be used for the representation and execution of various computations relating to composite 3D shapes constructed from one or more implicitly defined 3D primitives, according to some aspects of the present disclosure. Fig. Figure 3 shows an example of co-parameterization according to some aspects of the present revelation. The Fig. Figures 4A to 4C illustrate an example of determining a transformation that relates a calculated position to one or more parameters, according to some aspects of the present disclosure. Fig. Figure 5 is a representation of a user interface showing a composite 3D shape which is directly manipulated, according to some aspects of the present disclosure. Fig. Figure 6 is a flowchart of an exemplary process for the direct manipulation of implicitly defined digital 3D shapes according to some aspects of the present disclosure. Fig. Figure 7 shows an example of a computer system that may be suitable for the direct manipulation of implicitly defined digital 3D shapes, according to certain embodiments. Detailed description

[0009] Digital 3D computer graphics can be created from shapes, also called 3D primitives. A complex, composite 3D shape can, for example, be created from a collection of simpler 3D primitives such as spheres, cubes, prisms, and so on. These simpler 3D primitives can be combined, manipulated, and transformed using operations such as translations, rotations, and scaling to create detailed and complex 3D models.

[0010] For operations on 3D primitives in a computing system, an internal representation of the 3D primitives can be used. The internal representation can contain information such as the position of the 3D primitives in a suitable coordinate system, properties of the 3D primitives, relationships to other 3D primitives, specification of textures, etc.

[0011] The internal representation of a 3D primitive can include a mathematical description of the 3D primitive. This mathematical description can be an explicit definition, containing parameterized enumerations of points, lines, or shapes associated with the primitive. For example, a 3D sphere can be described by a field of 3D coordinates that define a "mesh" representing the surface of the sphere. Alternatively, the mathematical description of the 3D primitive can be an implicit definition. An implicit definition of a 3D primitive is one that specifies the surface or other features of a 3D shape using parameterized mathematical formulas or algorithms. For example, a 3D sphere can be described by a mathematical equation that defines a sphere in 3D space. In this example, the radius of the sphere can be a parameter.

[0012] The assembly of a series of 3D primitives into a composite 3D shape can be accomplished using a procedural method. A procedural method can be used to assemble the composite 3D shape from a series of 3D primitives through a series of steps or algorithms. Using a procedural method to assemble a composite 3D shape can result in a more compact and efficient representation than explicit descriptions of combined 3D primitives. After combining 3D primitives with a suitable procedural method, the composite 3D shape can be further manipulated manually, using a set of exposed parameters to fine-tune the composite 3D shape. Such a 3D shape can be described as a parameterized composite 3D shape.

[0013] An example of a procedural method that can be used to combine explicitly or implicitly defined 3D primitives to construct composite 3D shapes is known as a directed acyclic graph (DAG). In an example of constructing a 3D shape using a DAG, each node in the DAG can represent the instantiation of a 3D primitive or an operation or transformation applied to it, such as the union of two or more 3D primitives or the translation of one or more 3D primitives. The DAG edges can define the flow or logical order of these operations, thus enabling the composition of complex composite 3D shapes from simpler 3D primitives through a hierarchical and non-circular structure of dependencies.

[0014] In some examples, the 3D primitives used in a procedural process are implicitly defined. In some examples, an implicitly defined 3D primitive can be defined by a mathematical function that assigns a value to each point in space. A subset of the points thus assigned can be referred to as part of the 3D primitive or on the surface of the 3D primitive. In some examples, 3D primitives can be implicitly defined by signed distance functions (SDFs). In one exemplary approach that uses SDFs, the 3D primitive can be defined as the locus of points where the value of a certain mathematical function is zero. An SDF is an example of an implicit mathematical definition that assigns a value to each point in space corresponding to the shortest distance to the shape. The sign of the value can indicate whether the point is inside or outside the shape.

[0015] A 3D sphere centered at the origin can be created, for example, using the SDF. SDFsphere=x2+y2+z2−r can be described, where (x, y, z) are the coordinates of a point in 3D space in the coordinate system of the 3D primitive, and r is a parameter that constrains the radius of the 3D sphere. The coordinate system of the 3D primitive is sometimes also called the canonical coordinate system of the 3D primitive. In this formulation, the value of the SDF function corresponds to the distance from any point in space to the surface of the sphere, with positive values ​​outside the sphere, negative values ​​inside the sphere, and zero corresponding to locations on the surface of the sphere. An implicitly defined 3D spherical surface, as used in a procedural method such as a DAG, could be defined as a set of points for which the equation 0=x2+y2+z2−r is fulfilled.

[0016] Some prior art approaches for manipulating parameterized composite 3D shapes generated using a procedural method such as a DAG allow users (e.g., graphic designers) to manipulate these shapes via a suitable user interface (UI). For example, a UI might allow users to adjust sliders whose position is proportional to the value of a corresponding parameter found in an explicit or implicit definition of one of the constituent 3D primitives. In some other examples, a UI might allow users to input a gesture or a stroke to directly indicate a desired manipulation of the 3D shape. Such direct manipulation can be effective for modifying explicitly defined composite 3D shapes.

[0017] However, this method of direct manipulation of the 3D shape cannot be directly applied to composite 3D shapes composed of implicitly defined 3D primitives. This is because prior art methods for identifying the element of a 3D surface targeted by direct manipulation may depend on the explicitness of the 3D shape being manipulated. For example, prior art approaches for directly manipulating procedurally generated explicit 3D shapes rely on metadata or other additional information associated with the vertices, faces, or corners of the 3D shapes during their generation. The metadata or other additional information thus stored can be used to facilitate direct manipulation.On the other hand, implicitly defined shapes cannot have a comparable ability to contain metadata or other additional information in a similar way. The DAG used to generate the implicitly defined 3D shape must therefore be supplemented with additional information, as described below.

[0018] Furthermore, the methods for tracking a point on the surface of a 3D shape as the shape evolves can differ significantly between implicitly and explicitly defined 3D shapes. Similarly, existing methods lack a technique to link a geometric update of a 3D shape to the corresponding parameter update for procedural implicit shapes. Consequently, it may not be possible to associate the desired change with the evolution of the exposed parameters.

[0019] At the same time, obtaining the desired composite 3D shape can be time-consuming, especially if experimentation is required to find the optimal value for each exposed process parameter. Such experimentation might involve, for example, the tedious adjustment of sliders, which are proportional controls for the exposed parameters, or other manual interactions with the user interface. Even in cases where manually changing the exposed parameters can be used to manipulate the composite 3D shape, direct manipulation of the composite 3D shape may therefore be preferable. However, as mentioned earlier, direct manipulation may not be possible if the components of the composite 3D shape are implicitly defined 3D primitives.

[0020] Techniques for directly manipulating implicitly defined digital 3D shapes are revealed to address these challenges. In an illustrative procedure, a computing system renders a composite 3D shape on a display device based on an implicit definition of the composite 3D shape. The implicit definition can be a combination of one or more SDFs, each of which can contain a number of parameters. For example, the implicit definition of the composite 3D shape can be the union of two 3D primitives implicitly defined with parameterized SDFs. In this example, the two 3D primitives can be a sphere and a cylinder, with the cylinder protruding from the sphere (for example, a composite lollipop shape).The SDFs that characterize the two 3D primitives can be parameterized with a number of parameters that are contained as constants in the defining SDFs. These parameters can define, for example, the radius of the sphere, the radius of the cylinder, the height of the cylinder, the position of the sphere, the position of the cylinder, and other possibilities.

[0021] The computing system receives input indicating a desired modification of the composite 3D shape at a specific point. For example, the composite 3D shape can be displayed on a touch-enabled user interface, such as a tablet screen, configured for direct manipulation by a user (e.g., a graphic designer). The input might involve the user touching the rendered composite 3D shape with their finger and dragging it in the desired direction. In the lollipop example mentioned above, the user could touch the end of the cylinder protruding from the sphere and drag it away to lengthen the cylinder. Alternatively, the user could touch the surface of the sphere and drag outward from its center to increase its radius.

[0022] In systems known from the prior art, such manipulation could be performed using sliders whose positions are proportional to the values ​​of the parameters used to define the composite 3D shape. However, as described above, manipulating the sliders can be counterintuitive or require undesirable experimentation. In some examples, especially complex ones with numerous parameters, it may not even be clear which slider or sliders need to be manipulated to achieve the desired transformation. The innovations of the present disclosure allow the user to easily manipulate the 3D shape directly and independently of the sliders, or even without any knowledge of the parameters, even in cases where the composite 3D shape contains implicitly defined 3D primitives.

[0023] To achieve these and other objectives of the present disclosure, the computing system first determines an alternative representation of the point. An alternative representation of the point is known, for example, as "co-parameterization." Co-parameterization can be used to characterize points on the composite 3D shape before and after processing by specific, unchanging, uniquely identifying identifiers. In some examples, the co-parameterization can be determined for each point while the composite 3D shape is being rendered, which can reduce the computational load on the computing system during direct manipulation of the composite 3D shape.

[0024] The computing system then determines a position for the point based on the alternative representation. In some examples, the co-parameterization of the point is converted into a 3D coordinate in the coordinate system of the rendered composite 3D shape using a position evaluation function. In other examples, the position for each point, like the co-parameterization, is determined while the composite 3D shape is being rendered. The computing system then determines a transformation that relates the position to one or more parameters. This transformation could, for example, be a Jacobian matrix. The Jacobian matrix is ​​a mathematical operator that can output small changes in the geometry of the composite 3D shape in response to small changes in the parameters. These small changes are sometimes also called differentials.The Jacobi operator thus relates the spatial rates of change of the 3D components of the position to the rate of change of the parameters in the parameter space.

[0025] Next, the computing system determines a change to at least one parameter of the one or more parameters based on the transformation and the input. For example, the Jacobian matrix can be used to calculate an update to at least one of the parameters that corresponds to the user input. In other words, the computing system can determine a change in the value of at least one parameter of the one or more parameters that would result from the manipulation of the 3D shape specified by the user input, using the calculated Jacobian matrix.

[0026] In some examples, a number of points near the selected point are sampled to improve the accuracy of the resulting parameter changes and better understand the user's intent. In this case, a Jacobian matrix can be calculated for each selected point. The Jacobian matrices calculated in this way can be combined and filtered to obtain a single, reduced Jacobian matrix. This limits the number of parameters affected by the stroke-based editing and improves computational efficiency by using only the most important components of the combined and filtered Jacobian matrix. Changes to the parameter values ​​can then be calculated using the reduced Jacobian matrix.

[0027] The computing system re-renders the 3D shape based on the implicit definition and the change of at least one parameter, with the re-rendered 3D shape incorporating the modification specified by the input. Once the user input is complete (for example, when a mouse button is released or a finger is lifted from the shape of a touchscreen), the parameters can be updated according to the calculated change, and the composite 3D shape can be re-rendered using the updated values ​​of one or more parameters. In some examples, the user interface is configured to re-render the composite 3D shape in near real-time, so that the composite 3D shape appears to the user as having been modified in real time based on user input using the procedure described above.

[0028] The techniques revealed here for directly manipulating implicitly defined digital 3D shapes represent an improvement in both the technical aspects of 3D graphics editing and the mathematical infrastructure, enabling effective 3D graphics editing by users without a mathematical background. As described above, prior art systems for manipulating parameterized, implicitly defined 3D shapes are limited to input via user interface elements, such as sliders, whose usefulness quickly diminishes as the 3D shapes become more complex. For complex 3D shapes, the ability to directly manipulate the shape using intuitive gestures like "select and drag" is preferable to indirect manipulation with sliders in almost all cases. Direct manipulation is, for example, faster, more intuitive, more fault-tolerant, and accessible to a larger number of users.Furthermore, the innovations described here go far beyond the automation of conventional tasks and aim at a specific improvement in 3D graphics processing. The use of co-parameterization and Jacobian operators, for example, represents an improvement in 3D graphics processing for both manual and computer-aided approaches known from the state of the art.

[0029] The techniques revealed here can also improve the performance of computers used for 3D graphics processing. Because user input can now be better aligned with the user's actual intentions, the consumption of computing resources can be reduced, as fewer iterations are required to achieve the desired edits. For example, since experimenting with opaquely defined slider values ​​is no longer necessary, fewer processing resources are needed to achieve the same intended edit. Computing resources can also be saved because the techniques allow the direct manipulation of implicitly defined 3D shapes, whose definitions are inherently simpler than comparable explicitly defined 3D shapes.Thus, the implicit definition can now be used in a larger number of use cases where direct manipulation is required or desired, thereby reducing the overall consumption of computing resources that was previously required by the in-memory and persistent storage of complex, explicitly defined 3D shapes. Overview

[0030] Fig. Figure 1 is a diagram of an example system 100 that implements techniques for directly manipulating implicitly defined digital 3D shapes according to some aspects of this disclosure. The example system 100 includes a shape modification system 110. The shape modification system 110 can, for example, be a component of a 3D graphics editing platform that includes components for designing, editing, and rendering 3D shapes and other 3D graphics. The shape modification system 110 can be implemented using program code that runs on a computing system located locally at the user's location, on a remote server, in a cloud-based execution environment, or a combination thereof.

[0031] For example, the shape modification system 110 can be run on a client device 130, such as a laptop computer, which runs 3D graphics editing software using a combination of program code that executes in both software and hardware components of the laptop. Fig. Figure 1 shows the client device 130 as part of the shape modification system 110. In some embodiments, the client device 130 can be a component located outside the shape modification system 110. In this case, access to the shape modification system 110 can be via a client / server model, for example, through a suitable application programming interface (API).

[0032] The shape modification system 110 includes a rendering engine 120. The rendering engine 120 can render a composite 3D shape based on a parameterized, implicit definition of the composite 3D shape. For example, the rendering engine 120 can receive a procedural implicit shape definition 115 from another component of the 3D graphics editing software. The procedural implicit shape definition 115 can, for example, be a composite 3D shape definition containing one or more analytical SDFs corresponding to a number of parameterized 3D primitives or transformations thereto. The analytical SDFs can define 3D shapes as the "null set" of a function or the collection of points that satisfy the condition f(x, y, z) = 0 for each 3D primitive. The composite 3D shape can be a combination of the 3D primitives defined in this way.In general, parameters can be chosen to characterize various aspects of the geometry of the composite 3D shape, for example orientation angles, rotation angles, scaling factors, offset distances, curvature adjustments, taper degrees, sphere eccentricity, wall thickness, etc.

[0033] In some examples, the implicitly defined 3D primitives are combined using a procedural function. The procedural function can be, for example, a DAG, although other representations can also be used to describe the 3D primitives. Other representations can be, for example, procedural forms expressed as a "stack of operations." In this approach, each element in the stack corresponds to an operation that modifies a 3D primitive.

[0034] The DAG can specify a set of implicitly defined 3D primitives or other implicitly defined 3D shapes, which can then be combined with a range of transformation operations such as unions, intersections, scales, rotations, translations, etc. The DAG can contain nodes and edges that indicate a logical sequence of the various transformation operations.

[0035] The client device 130 can receive input indicating a desired modification of the 3D shape at a specific point or area. The input can be, for example, a gesture 125, entered via an input device 135. The input device 135 can be a mouse, trackpad, joystick, or other suitable input device 135 capable of displaying a desired modification of a 3D shape shown on the display device 140. In some examples, the input is received by the display device 140 itself, if the display device 140 also functions as a touchscreen input device 135.

[0036] The display device 140 may be a screen connected to a laptop, an external monitor, a television, a remote or network display, or any other suitable device or method for displaying the rendered 3D shape. Fig. Figure 1 shows the display device 140 with an exemplary rendered 3D shape 170 (a toaster) and exemplary sliders 165 for manipulating the parameters used to implicitly define the rendered 3D shape 170. The appearance of the rendered 3D shape 170 and the associated user interface elements, as displayed on the display device 140, can vary considerably in different implementations and, in particular, from the one shown in Figure 1. Fig. The example shown for illustrative purposes may differ.

[0037] The shape modification system 110 includes a co-parameterization engine 145, which can be used to determine an alternative representation of a point. For example, the co-parameterization for points on the rendered composite 3D shape can be evaluated concurrently with the determination or rendering of the implicitly defined 3D shape. For example, the co-parameterization can be determined during the rendering of the composite 3D shape, as specified by a DAG. In some other examples, the co-parameterization can be determined when selecting the point or points via user input or gesture 125. The co-parameterization can, for example, be a bijective mapping between points on the composite 3D shape, constrained by the currently selected parameters, and unique identifiers for the implicitly defined parametric 3D primitives.

[0038] The co-parameterization can be a collection of information that uniquely identifies points on the composite 3D shape that remain invariant under transformations of the composite 3D shape. For example, the co-parameterization c i , of a point p i It consists of two components (a, pid) that correspond to the "canonical" coordinates of an implicitly defined 3D primitive and a unique identifier, called pid. The pid value can, for example, correspond to a specific sequence of operations in the procedural function used to render the composite 3D shape.

[0039] The shape modification system 110 includes a transformation engine 150, which can be used to determine the position of the point based on co-parameterization. For example, the transformation engine 150 can determine the position of the point in the 3D coordinates of the composite 3D shape by inverting the bijective Fig. The Transformation Engine 150 determines the relationship between the points on the composite 3D shape and the co-parameterization. It can also determine a transformation that relates the position to one or more parameters. This transformation can be, for example, a differential operator such as a Jacobian operator, or a matrix that relates the spatial rates of change of the 3D components of the position to the rate of change of the parameters in the parameter space.

[0040] The shape modification system 110 includes a parameter change determination component 155, which can be used to determine a change 160 in at least one parameter based on the transformation and the input. For example, the Jacobian matrix can be inverted and multiplied by a representation of the user input or gesture 125, such as a scalar quantity, to calculate a change 160 in one or more parameters that corresponds to the user input. In some examples, a number of points are selected in addition to the points selected by the user. For example, a number of points within a brush extent defined in the user interface can be sampled. In this case, a Jacobian matrix can be calculated for each point.The Jacobi matrices thus determined can be averaged, filtered and reduced by the parameter change determination component 155 to select the most important factors for the parameter updates.

[0041] The rendering engine 120 can then re-render the 3D shape based on the implicit definition and the change 160 in at least one parameter. For example, the parameter change determination component 155 can determine one or more scalar changes 160 or changes to the one or more parameters and apply them to the one or more parameters. Applying these updates can have a similar effect to applying a change to the parameters, for example, using sliders. The re-rendered composite 3D shape can reflect the modification specified or intended by the user input. Procedural generation of 3D shapes

[0042] The Fig. Figures 2A-2C show example DAGs 200, 250, 275 which can be used for the representation and execution of various calculations relating to composite 3D shapes consisting of one or more implicitly defined 3D primitives, according to some aspects of the present disclosure. Fig. Figure 2A shows the DAG 200, which can be used, for example, to determine whether every point 205 in the coordinate system for the composite 3D shape, or a suitable subset thereof, lies on the composite 3D shape. In other words, the DAG 200 can be used to render the composite 3D shape if it is implicitly defined, for example, with SDFs.

[0043] Nodes 210 and 220 can correspond to simpler, implicitly defined 3D primitives that are transformed or combined using Boolean operations to form the composite 3D shape. For example, nodes 210 and 220 correspond to a cube and a sphere, respectively. Thus, nodes 210 and 220 can represent the value of the SDF for point 205 and a specific set of parameters. The SDFs of nodes 210 and 220 can then be subjected to various transformations from constructive solid geometry (CSG), such as unions, differences, or intersections. Other operations like translations, scaling, rotations, etc., are also possible. At 215, for example, the SDFs of nodes 210 and 220 are combined using a union operation to obtain a composite 3D shape.CSG operations such as the union operation can be performed by combining the SDFs of nodes 210 and 220 using appropriate mathematical operators such as the min or max operators. At 225, the SDF corresponding to the sphere at node 220 is translated. At 230, the composite 3D shape resulting from the union of 215 and the translated sphere 225 is combined in a difference operation. In some cases, a transformation of the canonical coordinate system used in the SDF of each primitive at nodes 210 and 220 can be performed. For example, the translation operation at 225 might involve translating the canonical coordinate system of sphere 220 before the difference operation at 230. The output node 235 for DAG 200 can return the distance value from the shape isoline (for example, the solution of the zero-valued equation of the SDF) for the composite 3D shape evaluated at a sampled point.The SDF of the composite 3D shape, which is evaluated at 235, can be a parameterized combination of the SDFs of the 3D primitives instantiated at nodes 210 and 220.

[0044] Fig. Figure 2B shows the DAG 250, which is structured similarly to the DAG 200. However, the output 270 of the DAG 250 is enhanced in that it includes both the distance value from the form isoline and the co-parameterization for each point at which the DAG is evaluated. The DAG 250 can be used in parallel with the DAG 200 or instead of the DAG 200, depending on the desired output. The co-parameterization can include a first component, a, which represents a 3D point position in the canonical coordinates of the primitives at nodes 210 and 220. The co-parameterization can include a second component, the pid component, which can be initialized with a value of pid = 0 at point 205. The pid can be updated as the DAG 250 is traversed. In this respect, the pid can represent a unique identifier for the path from a source node of the DAG 250 to a sink node of the DAG 250, which is followed.

[0045] In some examples, all possible paths in the DAG 250 are enumerated by updating the pid component for all operations involving more than a single primitive, such as the Boolean CSG operations. For example, in an operation with n input components, where each input component contains coparameterization values ​​(a, pid) for each point, the pid of each i-th input component is incremented by an amount equal to one plus the maximum pid of all paths that reach the i-th input component from each input component j such that j < i if there are j other input components besides the i-th input component. An input component can be either an input primitive (for example, the cube or sphere of nodes 210 and 220) or a composite 3D shape produced by a DAG operation, such as the output of the union 215. This sum can be formally expressed as ∑ j<i paths jThis can be expressed in DAG 250, for example, by inserting an incrementing node 265 before each operation that involves more than a single input component. Using the incrementing node 265 ensures that each path is uniquely identified by a pid value, making it possible to identify the sequence of operations that lead to a specific co-parameterization.

[0046] Fig. Figure 2C shows the DAG 275, which is structured similarly to the DAG 200. However, the output 297 of the DAG 250 is enhanced in that it can include the 3D coordinates in the coordinate system of the composite 3D shape for a given co-parameterization value of 277. The DAG 275 replicates the exact behavior of the DAG 250 in reverse and is sometimes referred to as a "position evaluation function." Given a co-parameterization of 277, its canonical coordinate component a can be evaluated for each primitive in the DAG 275 at nodes 280 and 290. The canonical coordinate component a can then be passed to downstream operations as described above. The canonical position can be transformed and propagated again for each encountered transformation node.

[0047] DAG 275 includes a decrementing node 295. Operations such as CSG operations and geometric transformations between input components like primitives and composite intermediates can be performed as described above for DAG 250. The pid component, calculated in the same way as for DAG 250, can be subtracted from the pid component input at 277. In some cases, the output of more than one transformation node may correspond to a specific path. If the result of decrementing pid for a particular output is zero, that output is propagated to the next node. If no co-parameterization results in a zero pid value, a node default strategy can be chosen to determine which output is propagated to the next node.Due to its design, the final output co-parameterization 297 has a pid component with a value of zero. Output 297 therefore contains a position in the coordinates of the composite 3D shape that corresponds to the input co-parameterization 277. Co-parameterization

[0048] Fig. Figure 3 shows an example of an alternative representation that can be used to uniquely represent points on the surface of the 3D primitives used to assemble composite 3D shapes. In particular, in Fig. 3 an example of the co-parameterization 300 according to some aspects of the present revelation is shown.

[0049] Formally, parametric 3D shapes can be defined as analytical SDFs, which are the null set of a field function f: R. N → R are defined. In particular, a family of procedural 3D shapes can be defined as Φ:Π→S be defined, with each asset s∈S generated using the corresponding parameter values ​​π ∈ Π.

[0050] Direct manipulation of a composite 3D shape is enabled through a brush-based interface. For example, the user can perform a local manipulation Δs of the shape S in the brush area. The user can associate a subjective intention with the local manipulation. Since the final appearance of the shape S is determined by the values ​​π of one or more parameters, the techniques of this disclosure can be used to determine an update Δπ such that when the composite 3D shape is updated using Δπ, it results in the generation of a re-rendered composite 3D shape instance that may correspond to the intention of the user making the input.

[0051] This problem can be formalized as inverting the function Φ to find the actual parameter values ​​that correspond to the desired form based on the user-specified input. This can be formally represented as Φ -1(S + ΔS) → π + Δπ can be written out. To measure the effect of user input on the parameters, a method can be used to detect how a particular point changes in response to a parameter update. However, an implicitly defined 3D shape relies on evaluating the distance between each point position and the isoline of the shape itself. Unlike when using an explicitly defined 3D shape (for example, a mesh representation), it may not be possible to describe the isoline using uniquely identifiable points. The co-parameterization method described below can enable the determination of a unique identifier for each point on the surface of the composite 3D shape, which can be used to estimate the influence of the updated parameters.

[0052] Co-parameterization example 300 includes two 3D shapes, 305 and 310, which can be displayed on the user interface of 3D graphics editing software. In conventional systems, 3D shape 310 can be created using 3D shape 305 as a starting point, with sliders 312 used to adjust parameters 315. One could say that 3D shape 310 was "developed" from 3D shape 305. For example, 3D shape 310 has a smaller depth, a smaller height, and a larger height than 3D shape 305. The same applies if shapes 305 and 310 are explicitly or implicitly defined.

[0053] In particular, when shapes 305 and 310 are implicitly defined, they can be generated by the same implicit function (for example, an SDF) using two different sets of parameters. 3D shape 310 can be generated using 3D shape 305 as a starting point by developing the parameters that define 3D shape 305 into the parameters that define 3D shape 310. A point 320 selected on the surface of 3D shape 305 can have a corresponding point 325 on the surface of the developed 3D shape 310. However, the 3D coordinates of points 320 and 325 may differ with respect to a fixed coordinate system, even if they correspond to the same point on the developed surface. Consequently, it can be difficult to determine a mathematical relationship between a changing point and the influence of the parameters on that point.The co-parameterization 300 can be used to determine a unique value for each point on the surface of the 3D shapes 305, 310, which remains unchanged during parameter transformations.

[0054] The co-parameterization 300 can be considered bijective Fig. : R 3 → R n be defined such that they are at a position p i of a point the corresponding co-parameterization 300 c i , which is returned, evaluated according to the current parameter values. In some examples, the co-parameterization 300 is calculated for each 3D point as the SDF, which is calculated as above with reference to Fig. 2B is described and calculated. Fig. 3 forms the bijective Fig. The point 320 p0 is mapped to the co-parameterization 330. Likewise, the bijective Fig. The point 325 p0 is assigned to the co-parameterization 330. The designation C(π, c) i ) denotes a mapping between a point pi and a co-parameterization c i , where point p i is limited by the hyperparameter π.

[0055] For example, the co-parameterization c i , of a point p iIt may be composed of two components (a, pid). The first component, a, can be a real-valued 3D coordinate. This coordinate may use the canonical coordinates of the corresponding implicitly defined 3D shape 305, 310. In this respect, the canonical coordinates may refer to the coordinate system with respect to which each implicitly defined 3D shape 305, 310 is defined. For example, some implicitly defined 3D shapes may be based on an SDF specified in unshifted (i.e., centered on (0,0,0)) Cartesian coordinates. The canonical coordinates refer to the coordinates associated with each SDF, which may differ from the coordinate system of the composite 3D shape. The second component may be an integer value, pid, which, together with the canonical coordinate value, uniquely defines the point 320, 325.The pid value can, for example, correspond to the specific sequence of operations in the process function used to render the composite 3D shape. However, other values ​​can be used for the pid value in various examples. In some examples, the co-parameterization includes 300 additional or alternative values ​​or methods for determining it. transformation

[0056] The Fig. Figures 4A-4C illustrate an example of determining a transformation that relates a calculated position to one or more parameters, according to certain aspects of the present disclosure. The example transformations may involve calculating a mathematical relationship between the spatial rate of change of the 3D surface in the coordinate system of the composite 3D shape and the rate of change of at least one parameter. In particular, the Fig. Figures 4A-4C show the determination of a Jacobian operator according to some aspects of the present revelation.

[0057] In Fig. Figure 4A illustrates the extraction (401) of Jacobi information using an end-to-end forward-differentiated point evaluation function. The shape (405) is an example of a composite 3D shape containing a number of implicitly defined 3D primitives. The implicit definitions may include parameters (415), which in some examples can be adjusted using sliders (410) such as those provided in the user interface of some 3D graphics editing software implementations. The point (407) is selected for direct manipulation using a suitable input method or device. In some examples, the point (407) includes a number of additional sampled points in a brush area (408). In this case, the determination of the Jacobi matrix described below is performed for each sampled point.

[0058] A Jacobian operator or Jacobian matrix that relates the spatial rate of change of the 3D surface in the coordinate system of the composite 3D shape to the rate of change of at least one parameter at point 407 can be constructed using the function described in Fig. The enriched DAG 275 described in Section 2C can be determined. For example, the composite SDF at each node of DAG 275 can be differentiable with respect to the parameters of the constituent 3D primitives. Given this requirement that DAG 275 be end-to-end differentiable, forward-mode automatic differentiation can be used to determine an intermediate calculation of the Jacobian operator at each node. The automatic differentiation can involve an iterative calculation of derivatives by systematic application of the chain rule. At the output node 297, the 3D Jacobian operator for the selected point 407 can be represented by a 3 x N matrix, where N is the number of parameters used in the various SDFs of each implicitly defined 3D primitive.

[0059] In some examples, the automatic differentiation of DAG 275 is performed using a suitable software framework. For instance, the TinyAD library can be used to evaluate the Jacobian matrix using forward-mode automatic differentiation. TinyAD, or another suitable framework, can be used to perform the various operations carried out by the nodes of DAG 275 to compute the output 297 and the components of the Jacobian matrix as the DAG 275 is traversed, resulting in a complete Jacobian matrix related to the input coparameterization 277 derived using the chain rule. A non-exhaustive list of exemplary frameworks that can be used in addition to or instead of TinyAD might include TensorFlow, PyTorch, and JAX.

[0060] In Fig. 4B will apply a normalization and filtering procedure 402 to the in Fig. 4A extracted Jacobi matrices were applied. Normalization may be necessary in cases where the parameters used among the various 3D primitives that make up the composite 3D shape have different units, which can render comparisons between the computed Jacobi operators with respect to different parameters meaningless. In some examples, normalization is performed after generating the enriched DAG 275 and rendering the composite 3D shape using DAG 200. In other examples, normalization is performed using normalization factors that are computed while the composite 3D shape is being rendered.

[0061] In an example of a normalization procedure, a series of randomly selected points (these can be called normalization points to distinguish them from the points associated with the user input) can be chosen from the composite 3D shape. As with the point associated with the user input, an alternative representation of the normalization point is determined (alternative normalization representations). Then, using DAG 275, a Jacobian matrix can be calculated that relates the spatial rate of change of the 3D surface in the coordinate system of the composite 3D shape to the rate of change of each of the parameters at the point (normalization Jacobian matrices).For the Jacobian matrix calculated for each randomly sampled point, a norm can be determined for each column of each Jacobian matrix, where each column corresponds to a parameter and each row to a spatial direction (for example, x, y, or z). The norm can, for example, be a measure of the magnitude of the vectors represented by the columns. A maximum magnitude can be determined for each parameter, associated with the largest calculated norm. The maximum magnitude for each parameter can be used as a normalization factor. The normalization factor assigned to each parameter can be used to rescale the columns of the currently calculated Jacobian matrices. In some examples, the normalization factors are regularly recalculated and updated to account for possible fluctuations in the calculated normalization factors due to parameter changes.

[0062] The normalized Jacobian operators for the selected points can be filtered to generate a single Jacobian vector for each parameter component. In some examples, in addition to the user-selected point, a number of points within the extent of the user-selected brush size are chosen. The DAG 275 can determine a Jacobian matrix for each point within the brush extent. After normalization, the Jacobian information for each point can be combined into a single matrix by calculating the average value for each position in the 3 x N Jacobian matrix corresponding to a component of the spatial differential and the parameter differential near the selected point. The averaged Jacobian matrix can still be a 3 x N Jacobian matrix.

[0063] In Fig. 4C can apply a reduction process 403 to the averaged Jacobian matrix to extract further information that improves the degree of alignment between the system response and user intent. For example, the number of parameters updated during an edit can be reduced so that the updated parameters better match the actual user intent. This process can be called Jacobian reduction. After normalization and the in Fig. In the filtering / averaging process described in 4B, the elements of the filtered / averaged Jacobian matrix can be compared to identify elements with low values ​​relative to the remaining values. For example, a predefined threshold such as 5-10% of the normalized Jacobian element with the highest value can be used as the predefined threshold.

[0064] In some examples, a statistical analysis of the elements of the filtered / averaged Jacobian matrix is ​​used to select significant components. For example, a predefined threshold with a low standard deviation can be used as a discriminator to select Jacobian elements to be used for parameter updates. Parameters with a high standard deviation may exhibit unpredictable behavior when modified, indicating that they are not the parameters the user intended to update. For example, a predefined threshold such as 20% of 1 standard deviation can be used.

[0065] In addition to the examples mentioned above, other techniques can be used during the 403 reduction process. For example, some reduction methods may include techniques that incorporate information about mouse movement associated with user input. By comparing the degree of similarity between an element of the filtered / averaged Jacobian matrix and a feature of the mouse movement, elements with a low similarity value could be discarded.

[0066] As a result of the 403 reduction process, the Jacobi information is reduced to limit parameter updates to the most relevant dimensions that can correspond to the user's selection and intent. In the representation in Fig. 4C is the number of Jacobian matrix elements corresponding to the height and depth of the 3D shape 405 that is less than the number corresponding to the width. Consequently, the elements of the filtered / averaged Jacobian matrix in the directions corresponding to height and depth are discarded in favor of the elements corresponding to width, resulting in a reduced Jacobian matrix 430. The reduced Jacobian matrix 430 is more likely to represent the user's intent associated with the user input. Determining the parameter update

[0067] Fig. Figure 5 is a representation of a user interface 500 showing a composite 3D shape 501 that is directly manipulated according to some aspects of this disclosure. Shape 501 is a toaster, which is a complex 3D composite shape composed of a variety of implicitly defined 3D primitives. The user interface 500 includes controls 505 that can be used to select configurations with respect to user input. The controls 505 may, for example, include selectors for the brush type, brush size, or the number of points to sample within the brush extent. These unrestricted, exemplary controls 505 are provided for illustration purposes and may vary in different implementations of the user interface 500.

[0068] The brush extent, or simply the extent in the general context of a user interface tool (for example, pointer, spray paint, pencil, line tool, etc.), encompasses an area or virtual volume associated with the tool. A brush tool, for instance, might be drawn with a circle or virtual sphere surrounding the mouse pointer (for example, the mouse position) or another specific point. The extent specifies the range of points that can be sampled within that extent. The number of sampled points can be configured separately.

[0069] The user interface includes sliders 510 that can be used to directly adjust and update parameters contained in the implicit definition of the composite 3D shape 501. The sliders 510 can correspond, for example, to parameters contained in the SDFs of the constituent 3D primitives, or to parameters relating to transformations performed during the assembly of the composite 3D shape 501. In some examples, the sliders 510 are used to modify the composite 3D shape 501, or the shape 501 can be manipulated directly. These two methods of editing the shape 501 can be used in combination or separately.

[0070] A user can select point 515 using a suitable input device. For example, point 515 can be selected with a mouse or a finger on a touchscreen. In this example, after selecting point 515, the user drags upwards, indicating the intention to move the slice of bread upwards. The visual indicators 520 can represent the selected environment points as well as the components of the calculated Jacobi curves used to determine the parameter updates. As the user drags the input upwards, the slice of bread can move upwards while the parameter updates are calculated and the associated parameters are updated in near real time.

[0071] In some examples, the fixed points 525 can be selected separately from point 515. Fixed points 525 can be selected to designate fixed points in the 3D shape that should not move or otherwise be modified during direct manipulation. Fixed points 525 illustrate the ability of some example implementations to constrain both moving (point 515) and non-moving points (fixed points 525) during direct manipulation. The lines shown in association with the fixed points 525 are a visualization of the Jacobian vectors calculated for the fixed points. In some examples, the vectors associated with the fixed points 525 can be shown for illustration, as in Fig. 5 will be shown.

[0072] Parameter updates can be calculated using the reduced Jacobian matrix, which is calculated as above with reference to Fig. The parameter update, as described in section 4C, can correspond to Δπ, which minimizes the distance between the position of the selected point π and the "target position" T. The target position T can be the point at which user input ends, for example, when the user releases the mouse button or lifts a finger from the touchscreen.

[0073] For a parametric composite 3D shape 501, which is a function Φ:Π→S is defined, which each element of a class of forms s∈S The minimization problem, which can be generated according to the parameter values ​​π ∈ Π, is formally given by: argminπ'=‖C−1(π',ci)−T‖ where π' = π + Δπ, c i the co-parameterization of the selected point 515 and C -1 (π', c i) the inverted bijective mapping of the co-parameterization, which is determined using a position evaluation function such as the DAG 275. argmin π ' can correspond to the value of π', which is the minimum value of ||C -1 (π, c i ) - T|| results. The evaluation of C -1 (π', c i ) can be done by C -1 (π', c i ) + J i · Δπ can be approximated, where C -1 (π, c i ) the position of the currently selected point p i and J i , the filtered and reduced Jacobian matrix at p i is.

[0074] The term Ji is expressed in the coordinate system of the composite 3D shape 501, and not in the coordinates of the 2D plane in which the user input is expressed (for example, the 2D coordinates of a laptop monitor or touchscreen). The Jacobian matrix Ji can be projected onto the 2D plane of the user input before being compared with the stroke information entered by the user in this step. The Jacobian matrix Ji, projected onto the 2D plane of the user input by means of a projection function, can be described as Ji' The projection function can be any suitable differentiable function, for example a perspective or orthographic projection.

[0075] The minimization problem can be rewritten as follows: ‖(pi−T)+Ji'⋅Δπ‖=0 where ΔT = (p i- T) the size of the user input (for example, the distance in 2D screen coordinates between point 515 and releasing the mouse) and Ji'=Jproj⋅Ji represented.

[0076] The desired values ​​of Δπ can therefore be expressed as Δπ=Ji'+⋅ΔT to be calculated, whereby Ji'+ a pseudo-inverse of Ji' The pseudo-inverse of a matrix can be a generalization of the matrix inverse for non-square matrices, such as the 3 x N Jacobi constructed above. The pseudo-inverse can be calculated, for example, using singular value decomposition.

[0077] The steps described above can be used both for points that are modified by user input and for points that are fixed (for example, a rigid body that should not be distorted). In the latter case, the target value T can be replaced by the displacement of the fixed points. In addition to the in Fig. In addition to the solution strategy described in section 5, other solution strategies can be used which utilize the same Jacobi information, such as a gradient descent method. Methods for the direct manipulation of implicitly defined digital 3D shapes

[0078] Fig. Figure 6 is a flowchart of an example process 600 for the direct manipulation of implicitly defined digital 3D shapes according to some aspects of the present disclosure. The in Fig. The process 600 shown in Figure 6 can be implemented in software executed by one or more processing units of a processing device, in hardware, or as a combination of software and hardware. This process 600 is to be understood as an example and is not limiting. The example process described here refers to the one in Figure 600. Fig. The form modification system shown in Figure 110 is shown, but other implementations are also possible. Although in Fig. While six different processing operations are shown in a specific order, the order shown is not mandatory. In certain alternative embodiments, the processing can occur in a different order, some operations can be performed in parallel, or operations can be added, removed, or combined.

[0079] In Block 610, a computing system, such as the Shape Modification System 110, renders a composite 3D shape onto a display device. This composite shape is based on an implicit definition of the 3D shape with one or more parameters. The implicit definition may include a procedural method for assembling the composite 3D shape using a number of implicitly defined 3D primitives. The implicit definitions of the 3D primitives may, for example, be SDFs. The procedural method, such as a DAG, may include commands for combining the SDFs of the 3D primitives to form composite SDFs. For example, the union of two spheres defined by SDFs may be written as the minimum value of the two SDFs at any point in space.

[0080] Each SDF, as well as composite SDFs, can contain a number of parameters. In the two-sphere example, the parameters might include the radii of the spheres or the coordinates of their centers. In some examples, the composite 3D shape is displayed along with user interface controls, such as sliders, that allow the user to edit the composite 3D shape after rendering. For the two-sphere example, one slider might be provided whose position is proportional to the radius of each associated sphere. A third slider might correspond to the displacement of one sphere from the center of the other. The user can adjust the slider positions to fine-tune the composite 3D shape.

[0081] This method for adjusting the details of the composite 3D shape may be insufficient if the composite 3D shape is sufficiently complex (for example, with dozens of sliders). Directly manipulating the composite 3D shape can provide a more intuitive, easier-to-use user experience. In Block 620, the computing system receives a signal indicating an input that specifies a modification of the composite 3D shape at a point. In the example with the two spheres, the user can press a finger on the surface of a sphere at a point displayed on a touchscreen interface and drag outward to signal the intention to enlarge the sphere. A variety of UI tools can be provided to supply the input, including sketching tools, brushes, arrows, and so on.In some examples, the specification is a line drawn on the surface of the composite 3D shape.

[0082] In block 630, the computing system determines an alternative representation of the point. An alternative representation of the point is known, for example, as "co-parameterization." Co-parameterization can be used to characterize points on the composite 3D shape before and after processing with specific, unchanging, unique identifiers. In some examples, the co-parameterization is determined for each point while the composite 3D shape is being rendered, which can reduce the computational load on the computing system during direct manipulation of the composite 3D shape.

[0083] In some examples, the co-parameterization includes one or more coordinates in a canonical coordinate system of at least one of the 3D primitives from which the composite 3D shape and the unique identifiers are constructed. The canonical coordinates can refer to the coordinate system of the 3D primitives as used in the respective SDFs. In some cases, the canonical coordinate system can be transformed during the assembly of the composite 3D shape. For example, a translation or a similar transformation can shift the canonical coordinate system.

[0084] In some examples, the identifier corresponds to a path from a source node of the DAG to a sink node of the DAG. As above regarding the Fig. 2B and Fig. As described in section 2C, the identifier assigned to a specific node can be determined, for example, by incrementing a pid value by an amount based on the number of paths flowing into the node. Incrementing the identifier ensures that each path is uniquely identified by a pid value, thus making it possible to identify the sequence of operations that lead to a particular co-parameterization.

[0085] In block 640, the computing system determines the position of the point based on the alternative representation. For example, the DAG 275 can... Fig. 2C can be used as a position evaluation function to output the position of the selected point (and surrounding points) in the coordinate system of the composite 3D shape. DAG 275 or another comparable position evaluation function can be used to restore the 3D coordinates of the rendered composite 3D shape.

[0086] In block 650, the computer system determines a transformation that relates the alternative representation to one or more parameters. The transformation can be, for example, a Jacobian matrix or a similar differential operator that relates the spatial rates of change of the 3D components of the position to the rate of change of the parameters in parameter space.

[0087] In block 660, the computing system determines a change in at least one parameter of the one or more parameters based on the transformation and the input, as described in reference to Fig. As described in detail in section 5 above, calculating the change can begin with determining an input parameter, such as the length of a gesture or mouse movement. Since the user input is on a 2D surface like a touchscreen, a 2D projection of the Jacobian matrix can be determined. The pseudo-inverse of the projected Jacobian matrix can then be calculated. This pseudo-inverse matrix can be used to calculate the change of at least one parameter by multiplying it by the input parameter. Other approaches, such as gradient descent, can also be used to determine the change.

[0088] In Block 670, the computing system re-renders the 3D shape based on the implicit definition and the modification of at least one parameter, with the re-rendered 3D shape incorporating the change specified by the input. For example, the change to at least one parameter can be applied to the SDFs that define the composite 3D shape, similar to how it would be applied with slider input. Rendering Engine 120 can then re-render the composite 3D shape based on the modified parameter values. In some examples, the change to at least one parameter is applied to the underlying DAG, resulting in a permanent, unparameterized change to the composite 3D shape.

[0089] In some examples, the computing system can receive a second input specifying a fixed point on the 3D shape, as in the fixed points 525 with reference to Fig. Figure 5 above. The modification of parameter values ​​based on the calculated Jacobian coordinates and user input can also be based on the second input of the fixed point. The fixed point can thus be used during the calculation of the parameter value changes to mark unchanging points in the coordinate system of the composite 3D shape. The re-rendering of the composite 3D shape is also based on the fixed point.

[0090] In some examples, the manipulation causes the composite 3D form to update almost in real time. In other examples, a representation of the change to at least one parameter is displayed to the user interface along with the re-rendered composite 3D form. This representation could, for example, be the movement of a slider or control in the user interface that corresponds to the respective parameter. The sliders can thus reflect the slider movement that the modification would have caused in the re-rendered composite 3D form. Computing environment

[0091] Any suitable computer system or group of computer systems can be used to perform the operations described here. Fig. Figure 7, for example, shows an example of a computer system 700. The illustrated example of computer system 700 includes a processor 702 that is communicatively connected to one or more memory devices 704. The processor 702 executes computer-executable program code stored in a memory device 704, accesses information stored in the memory device 704, or both. Examples of the processor 702 are a microprocessor, an application-specific integrated circuit (“ASIC”), a field-programmable gate array (“FPGA”), or any other suitable processing device. The processor 702 can have any number of processing devices, including a single processing device.

[0092] Storage device 704 includes any suitable nontransient computer-readable medium for storing program code 707 or both. A computer-readable medium may include any electronic, optical, magnetic, or other storage device capable of providing computer-readable instructions or other program code to a processor. Non-restrictive examples of a computer-readable medium are a magnetic disk, a memory chip, a ROM, a RAM, an ASIC, an optical memory, a magnetic tape, or any other magnetic storage, or any other medium from which a processing device can read instructions. The instructions may include processor-specific instructions generated by a compiler or interpreter from code written in any suitable computer programming language, for example, C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, and ActionScript.In various examples, the storage device 704 can be a volatile memory, a non-volatile memory, or a combination thereof.

[0093] The computer system 700 executes program code 707, which configures the processor 702 to perform one or more of the operations described herein. Examples of program code 707, in various embodiments, include the following: Fig. 1. The described shape modification system 110, which may include any other suitable systems or subsystems that perform one or more of the operations described herein (for example, one or more ML models, storage systems, controllers, or function-specific modules). The program code 707 may be located in the storage device 704 or on another suitable computer-readable medium and may be executed by the processor 702 or on another suitable processor.

[0094] The 702 processor is an integrated circuit device capable of executing the 707 program code. The 707 program code can be used to run an operating system, an application system or subsystem, or both. When executed by the 702 processor, instructions cause the 702 processor to perform operations of the 707 program code. During execution, the instructions are stored in system memory, possibly along with data that is processed by the instructions. System memory can be volatile memory, such as random access memory (RAM). System memory is sometimes referred to as dynamic RAM (DRAM), but it does not necessarily have to be implemented using DRAM-based technology. Alternatively, system memory can be implemented as non-volatile memory, such as flash memory.

[0095] In some embodiments, one or more storage devices 704 store the program code 707, which contains one or more data sets described herein. In some embodiments, one or more data sets are stored in the same storage device (for example, in one of the storage devices 704). In additional or alternative embodiments, one or more of the programs, data sets, models, and functions described herein are stored in different storage devices 704, which can be accessed via a data network. The computer system 700 also includes one or more buses 710. The buses 710 communicatively couple one or more components of a respective computer system 700.

[0096] In some embodiments, the computer system 700 also includes a network interface device 712. The network interface device 712 comprises any device or group of devices suitable for establishing a wired or wireless data connection to one or more data networks. Non-limiting examples of the network interface device 712 are an Ethernet network adapter, a modem, and / or the like. The computer system 700 can communicate with one or more other computing devices over a data network by means of the network interface device 712.

[0097] The Computer System 700 may also include a number of external or internal devices, an input device 714, an output device 717, or other input or output devices. For example, the Computer System 700 is shown with one or more input / output (I / O) interfaces 708. An I / O interface 708 can receive inputs from input devices or provide outputs to output devices. An input device 714 may include any device or group of devices capable of receiving visual, auditory, or other suitable inputs that control or affect the operation of the Processor 702. Non-limiting examples of the input device 714 are a touchscreen, a mouse, a keyboard, a microphone, a separate mobile computing device, etc.An output device 717 may comprise any device or group of devices capable of providing visual, auditory, or other suitable sensory outputs. Non-limiting examples of output device 717 include a touchscreen, a monitor, a loudspeaker, a separate mobile computing device, etc.

[0098] Although in Fig. While the input device 714 and the output device 717 are shown locally in the computer system 700, other implementations are also possible. For example, in some embodiments, one or more of the input devices 714 and the output devices 717 may comprise a remote client computing device that communicates with the computing system 700 via the network interface device 712 using one or more data networks described herein.

[0099] Some embodiments may include a computer program that embodies the functions described and illustrated herein, the computer program being implemented in a computer system that has instructions stored on a machine-readable medium and a processor that executes the instructions. However, it should be clear that there are many different ways to implement embodiments in computer programming, and the embodiments should not be understood as being limited to a single set of computer program instructions. Furthermore, a skilled programmer would be able to write such a computer program to implement an embodiment of the disclosed embodiments based on the accompanying flowcharts and the related description in the application text.Therefore, the disclosure of a specific set of program code instructions is not considered necessary to understand how the embodiments can be manufactured and used. Furthermore, the person skilled in the art will recognize that one or more aspects of the embodiments described herein can be performed by hardware, software, or a combination thereof, as may be embodied in one or more computer systems. Moreover, any reference to an action performed by a computer should not be interpreted as being performed by a single computer, since more than one computer may perform the action.

[0100] The embodiments described here can be used with computer hardware and software that perform the previously described methods and processing functions. The systems, methods, and processes described here can be embodied in a programmable computer, in computer-executable software, or in digital circuits. The software can be stored on computer-readable media. Examples of computer-readable media include floppy disks, RAM, ROM, hard drives, removable media, flash memory, memory sticks, optical media, magneto-optical media, CD-ROM, etc. Digital circuits include integrated circuits, gate arrays, block logic, field-programmable gate arrays (FPGAs), etc. General remarks

[0101] The exemplary systems, methods, and actions described in the previously presented embodiments are illustrative, and in alternative embodiments, certain actions may be performed in a different sequence, in parallel, omitted entirely, and / or combined between different exemplary embodiments, and / or certain additional actions may be carried out without deviating from the scope of protection and spirit of the various embodiments. Accordingly, such alternative embodiments are covered by the scope of protection of the claimed embodiments.

[0102] Although specific embodiments have been described in detail above, this description serves only for illustration. It should therefore be noted that many of the aspects described above are not to be understood as necessary or essential elements unless expressly stated otherwise. Modifications and equivalent components or actions corresponding to the disclosed aspects of the exemplary embodiments may be made, in addition to those described above, by a person skilled in the art who benefits from the present disclosure, without departing from the spirit and scope of protection of the embodiments defined in the claims below, the scope of which is to be interpreted as broadly as possible to encompass such modifications and equivalent structures.

[0103] To better understand the claimed subject matter, numerous specific details are listed here. However, the person skilled in the art will understand that the claimed subject matter can also be practiced without these specific details. In other cases, methods, devices, or systems known to a person skilled in the art have not been described in detail in order to avoid obscuring the claimed subject matter.

[0104] Unless expressly stated otherwise, terms used in this description such as "processing", "calculating", "calculating", "determining" and "identifying" or similar are understood to refer to actions or processes of a computing device, such as one or more computers or similar electronic computing device(s), that manipulate or transform data represented as physical, electronic or magnetic quantities in memory, register or other information storage devices, transmission devices or display devices of the computing platform.

[0105] The system or systems discussed herein are not limited to any particular hardware architecture or configuration. A computing device may comprise any suitable arrangement of components that produces a result dependent on one or more inputs. Suitable computing devices include, for example, general-purpose, microprocessor-based computer systems that access stored software, which programs or configures the computer system from a general-purpose computing device to a specialized computing device implementing one or more embodiments of the present subject matter. Any suitable programming, scripting, or other type of language, or combinations of languages, may be used to implement the teachings contained herein in software used in programming or configuring a computing device.

[0106] Implementations of the methods disclosed herein can be carried out in the operation of such computing devices. The order of the blocks shown in the examples above can be varied; for example, the blocks can be rearranged, combined, and / or subdivided into sub-blocks. Certain blocks or processes can be executed in parallel.

[0107] The use of "adapted to" or "configured for" is to be understood as an open and comprehensive formulation that does not preclude devices from being adapted or configured to perform additional tasks or steps. When devices, systems, components, or modules are described as being configured to perform certain operations or functions, such configuration may be achieved, for example, by the design of electronic circuits to perform the operation, by the programming of programmable electronic circuits (for example, microprocessors) to perform the operation, for example, by the execution of computer instructions or code, or by processors or cores programmed to execute code or instructions stored on a non-transitory storage medium, or by any combination thereof.Processes can communicate using a variety of techniques, including but not limited to conventional techniques for communication between processes, and different pairs of processes can use different techniques, or the same pair of processes can use different techniques at different times.

[0108] Furthermore, the term "based on" is to be understood openly and comprehensively, so that a process, step, calculation, or other action "based on" one or more of the stated conditions or values ​​may, in practice, be based on additional conditions or values ​​beyond those mentioned. The headings, lists, and numbering contained herein are for convenience only and are not to be understood as restrictive.

[0109] Although the present subject matter has been described in detail with regard to certain embodiments, a person skilled in the art, having been informed of the foregoing, can readily develop modifications, variations, and equivalents to these embodiments. Accordingly, the present disclosure is to be understood as an example rather than a limitation and does not preclude the inclusion of such modifications, variations, and / or additions to the present subject matter that are readily apparent to a person skilled in the art.

Claims

[1] Process carried out by one or more processing devices, comprising: Rendering a three-dimensional (3D) shape on a display device based on an implicit definition of the 3D shape, wherein the implicit definition includes one or more parameters; Receiving information regarding an input, where the input specifies a modification of the 3D shape at a point; Determining an alternative representation of the point; Determining the position of the point based on the alternative representation; Determining a transformation that relates the position to one or more parameters; Determining a change in at least one parameter of one or more parameters based on the transformation and the input; and Re-rendering the 3D shape based on the implicit definition and the modification of at least one parameter, wherein the re-rendered 3D shape includes the modification specified by the input. [2] Method according to claim 1, further comprising outputting a representation of the change of the at least one parameter, wherein the representation comprises a movement in a position of a controller of a slider of the user interface. [3] Method according to claim 1 or 2, wherein the implicit definition is based on a procedural function. [4] Method according to claim 3, wherein the procedural function is a directed acyclic graph (DAG). [5] Method according to claim 3 or 4, wherein: the implicit definition contains one or more 3D primitives, where each 3D primitive of the one or more 3D primitives comprises a canonical coordinate system; the DAG has one or more source nodes, wherein each of the one or more 3D primitives is represented by a primitive source node of the one or more source nodes; and The alternative representation is a co-parameterization, which includes: one or more coordinates in the canonical coordinate system of at least one 3D primitive of the one or more 3D primitives; and an identifier. [6] Method according to claim 5, wherein the identifier corresponds to a path from a source node of the DAG to a sink node of the DAG. [7] Method according to claim 5 or 6, wherein each 3D primitive of the one or more 3D primitives is defined using a signed distance function (SDF). [8] Method according to any one of claims 5 to 7, wherein the transformation relating the alternative representation to the one or more parameters is a Jacobi matrix. [9] Method according to one of claims 8, wherein: the DAG is end-to-end differentiable; and Determining the position of the point based on the alternative representation is based on automatic differentiation in forward mode of a subset of the nodes in the DAG. [10] Method according to any of the preceding claims, wherein the input defines an extent, and further comprising: Determining one or more additional points within the extent, and furthermore comprehensively: for each of the one or more additional points, determining an additional alternative representation of the additional point; for each of the additional alternative representations of the one or more additional points, determining an additional position of the point based on the additional alternative representation; For each of the additional positions, determining an additional transformation that relates the position to one or more parameters; wherein determining the change of at least one parameter of the one or more parameters based on the transformation is further based on the additional transformations; and where the additional transformations, which relate the additional alternative representations to the one or more parameters, are Jacobi matrices. [11] Method according to claim 10, wherein determining the change of at least one parameter of one or more parameters based on the transformations comprises: Determining a set of normalization points; Determining an alternative representation of the normalization point for each normalization point in the set of normalization points; Determining a normalization position of the point based on the alternative normalization representation for each of the alternative normalization representations of the set of normalization points, Determining a normalization Jacobi matrix that relates the position to one or more parameters for each of the normalization positions; Calculating a norm for each column of the normalization Jacobi matrices, where each column is assigned to a parameter of one or more parameters; Determining a maximum norm that is assigned to one or more parameters; and Normalize each column of the Jacobian matrix using the maximum norm for that column. [12] Method according to claim 10 or 11, wherein determining the change in the at least one parameter of the one or more parameters based on the transformations further comprises: Generating a filtered Jacobian matrix by combining the Jacobian matrices using an aggregation operation; and Generating a reduced Jacobian matrix by setting zero to one or more elements of the reduced Jacobian matrix with absolute values ​​that are smaller than a predefined threshold. [13] Method according to claim 12, wherein determining the change of the at least one parameter of the one or more parameters based on the transformations further comprises: Determining the amount of the input; Calculating a two-dimensional projection of the filtered Jacobian matrix; Calculating a pseudo-inverse Jacobian matrix of the two-dimensional projection of the filtered Jacobian matrix; and Calculating the change of at least one parameter by multiplying the pseudo-inverse Jacobian matrix by the absolute value of the input. [14] A method according to any of the preceding claims, further comprising receiving a second piece of information regarding a second input, wherein: the second input specifies a fixed point on the 3D shape; the change of at least one parameter of one or more parameters based on the transformation and the input, furthermore based on the second input; furthermore, the re-rendering of the 3D shape is based on the fixed point; and The re-rendered 3D shape also includes the fixed point, whereby the position of the fixed point remains unchanged by the transformation. [15] System, having: one or more processors; and one or more computer-readable storage media on which instructions are stored which, when executed by the one or more processors, cause the one or more processors to perform operations which include: Rendering a three-dimensional (3D) shape on a display device based on an implicit definition of the 3D shape, wherein the implicit definition includes one or more parameters; Receiving a selection on a first area on the 3D shape, wherein the first area contains one or more points; for each point of the one or more points: Determining a co-parameterization value of the point; Determining a position using an end-to-end differentiable position evaluation function; and Determination of Jacobi information for the position with respect to one or more parameters based on the position; Generating a Jacobian matrix based on the Jacobian information for the positions of the one or more points; Receiving information regarding a line that begins in the first area and ends in a second area; Determining an update of at least one of the parameters based on the line and the Jacobian matrix; and Re-rendering the 3D shape based on the implicit definition and updating at least one of the one or more parameters. [16] System according to claim 15, wherein the implicit definition is based on a directed acyclic graph (DAG) containing one or more 3D primitives defined using a signed distance function (SDF). [17] System according to claim 15 or 16, wherein generating the Jacobi matrix based on the Jacobi information for the positions for the one or more points comprises: Generating a filtered Jacobian matrix by combining the Jacobian information for the positions of the one or more points using an aggregation operation; and Generating a reduced Jacobian matrix by setting zero to one or more elements of the reduced Jacobian matrix with absolute values ​​that are smaller than a predefined threshold. [18] Transitory or non-transitory computer-readable medium that stores instructions which, when executed by one or more processors, cause the one or more processors to perform operations which include: Rendering a three-dimensional (3D) shape on a display device, based on an implicit definition of the 3D shape, wherein the implicit definition includes one or more parameters; Receiving a specification regarding an input, wherein the input specifies a modification of the 3D shape in an area on the 3D shape that has one or more points; a step of determining a co-parameterization of one or more points, wherein the co-parameterization has one or more coordinates and an identifier; a step of determining a position for each co-parameterization of the one or more points; a step of determining Jacobian matrices, which relate the co-parameterization to the one or more parameters; a step of determining a change to at least one parameter of the one or more parameters based on the Jacobian matrices and the input; and Re-rendering the 3D shape based on the implicit definition and the modification of at least one parameter, wherein the re-rendered 3D shape includes the modification specified by the input. [19] Computer-readable medium according to claim 18, wherein the implicit definition is based on a directed acyclic graph (DAG) containing one or more 3D primitives, each defined using a signed distance function (SDF). [20] Computer-readable medium according to claim 18 or 19, wherein the step of determining the Jacobian matrices relating the co-parameterization to the one or more parameters comprises: Normalizing each Jacobian matrix using a normalization technique; Generating a filtered Jacobian matrix by combining the Jacobian matrices using an aggregation operation; and Generating a reduced Jacobian matrix by setting to zero one or more elements of the reduced Jacobian matrix whose absolute values ​​are less than a predefined threshold.