IP Library Granted Patent US 9,292,941
Granted Patent B2
US 9,292,941 · App. 12/857,382 · Granted Mar 22, 2016

Methods and apparatus for specifying and interpolating hierarchical procedural models

Inventors: Radomir Mech (Mountain View, CA); Jerry O. Talton, III (Stanford, CA)
Assignee: Adobe Systems Incorporated
G06T11/001
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,292,941
App. No.
12/857,382
Granted
Mar 22, 2016
Kind
B2
Abstract

Methods and apparatus for procedural modeling are described for generating procedural models and exploring procedural model space. Common procedural components (models, modules, and methods) and a hierarchical framework are described that may be used to construct hierarchical procedural models. A model may comprise a hierarchy of one or more modules. Each module includes a sequence of methods and an optional geometry for display. A method may be controlled by one or more parameters. The values of the parameters may be specified via curves. A module description may be condensed into a single array of values for parameters of the module. Thus, a model or module may be specified by filling in values for arrays of parameters for the sequence of methods. An interpolation technique for interpolating between models is described in which models are matched according to a cost function so that ancestry is preserved.

Claims (51)

1. A computer-implemented method comprising:

selecting, in response to a user input, two or more modules from a procedural model library, each module being described by an array of values for parameters of the module and specifying a sequence of one or more methods that modify a state of each module;

specifying a hierarchy comprising the two or more selected modules to construct a procedural model, at least one module of the two or more selected modules specifying a geometry to be drawn according to the methods of the at least one module; and

executing the constructed procedural model to draw a graphical structure comprising one or more geometries specified by the two or more selected modules, said executing the constructed procedural model comprising:

executing the two or more selected modules according to the specified hierarchy, said executing the two or more selected modules comprising:

sequentially executing the one or more methods of each module, said sequentially executing being controlled by one or more curves that control one or more parameters of each method related to drawing the graphical structure.

2. The method as recited in claim 1 , wherein the procedural model library includes other procedural models, modules, and methods.

3. The method as recited in claim 1 , further comprising obtaining input specifying the values for the parameters.

4. The method as recited in claim 3 , wherein said input specifying at least one of the values is a curve drawn on a graphical user interface or a file specifying a curve.

5. The method as recited in claim 1 , wherein said specifying the hierarchy comprises obtaining input for an interpolated procedural model specifying an interpolation between two other procedural models.

6. The method as recited in claim 5 , wherein the two other procedural models are selected from a library of pre-existing procedural models.

7. The method as recited in claim 5 , further comprising applying an interpolation technique to the two other procedural models to generate the interpolated procedural model, wherein said applying the interpolation technique comprises:

comparing modules of the two other procedural models to determine matched modules in the two other procedural models;

aligning the methods in the matched modules; and

interpolating values of parameters for methods of the matched modules to generate interpolated values for the parameters in the interpolated procedural model.

8. The method as recited in claim 7 , wherein, in said comparing modules of the two other procedural models to determine the matched modules in the two other procedural models, the method comprises minimizing a cost function for matching the modules.

9. The method as recited in claim 7 , wherein, in said applying the interpolation technique to the two other procedural models to generate the interpolated procedural model, the method comprises maintaining an order of the methods from the two other procedural models in the interpolated procedural model.

10. A system, comprising:

at least one processor;

a display device; and

a memory comprising program instructions, the program instructions executable by the at least one processor to:

select, in response to a user input, two or more modules from a procedural model library, each module being described by an array of values for parameters of the module and specifying a sequence of one or more methods that modify a state of each module;

specify a hierarchy comprising the two or more selected modules to construct a procedural model, at least one module of the two or more modules specifying a geometry to be drawn according to the methods of the at least one module; and

execute the constructed procedural model to draw a graphical structure to the display device, the graphical structure comprising one or more geometries specified by the two or more selected modules, the program instructions further executable by the at least one processor to:

execute the two or more selected modules according to the specified hierarchy; and

sequentially execute the one or more methods of each module, said sequential execution being controlled by one or more curves that control one or more parameters of each method related to drawing the graphical structure.

11. The system as recited in claim 10 , wherein the procedural model library includes other procedural models, modules, and methods; and

the program instructions are executable by the at least one processor to:

obtain additional input specifying the values for the parameters.

12. The system as recited in claim 10 , wherein to specify the hierarchy, the program instructions are executable by the at least one processor to obtain input for an interpolated procedural model specifying an interpolation between two other procedural models.

13. The system as recited in claim 12 , wherein, to generate the interpolated procedural model, the program instructions are executable by the at least one processor to apply an interpolation technique to the two other procedural models, wherein, to apply the interpolation technique, the program instructions are executable by the at least one processor to:

compare modules of the two other procedural models to determine matched modules in the two other procedural models;

align the methods in the matched modules; and

interpolate values of parameters for methods of the matched modules to generate interpolated values for the parameters in the interpolated procedural model.

14. The system as recited in claim 13 , wherein, to compare modules of the two other procedural models to determine the matched modules in the two other procedural models, the program instructions are executable by the at least one processor to minimize a cost function for matching the modules.

15. One or more computer-readable storage memories comprising program instructions stored thereon, the program instructions being computer-executable to implement operations comprising:

selecting, in response to a user input, two or more modules from a procedural model library, each module being described by an array of values for parameters of the module and specifying a sequence of one or more methods that modify a state of each module;

specifying a hierarchy comprising the two or more selected modules to construct a procedural model, at least one module of the two or more selected modules specifying a geometry to be drawn by the procedural model according to the methods of the at least one module; and

executing the constructed procedural model to draw a graphical structure comprising one or more geometries specified by the two or more selected modules, said executing the constructed procedural model comprising:

executing the two or more selected modules according to the specified hierarchy, said executing the two or more selected modules comprising:

sequentially executing the one or more methods of each module, said sequentially executing being controlled by one or more curves that control one or more parameters of each method related to drawing the graphical structure.

16. The computer-readable storage memories as recited in claim 15 , wherein, the procedural model library includes other procedural models, modules, and methods, and the program instructions are computer-executable being further executable to implement:

obtaining additional input specifying at least one of the values for the parameters.

17. The computer-readable storage memories as recited in claim 15 , the program instructions for the specifying the hierarchy being further executable to implement obtaining input for an interpolated procedural model specifying an interpolation between two other procedural models.

18. The computer-readable storage memories as recited in claim 17 , the program instructions being further executable to implement:

applying an interpolation technique to the two other procedural models to generate the interpolated procedural model, said applying the interpolation technique comprising:

comparing modules of the two other procedural models to determine matched modules in the two other procedural models;

aligning the methods in the matched modules; and

interpolating values of parameters for methods of the matched modules to generate interpolated values for the parameters in the interpolated procedural model.

19. The computer-readable storage memories as recited in claim 18 , wherein, the comparing modules of the two other procedural models to determine the matched modules in the two other procedural models, the program instructions are executable to implement minimizing a cost function for matching the modules.

20. The computer-readable storage memories as recited in claim 18 , wherein, in said applying the interpolation technique to the two other procedural models to generate the interpolated procedural model, the program instructions are executable to implement maintaining an order of the methods from the two other procedural models in the interpolated procedural model.

Assignments (2)
CHANGE OF NAME Recorded Apr 8, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048867/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2010
From: MECH, RADOMIR; TALTON III, JERRY O.
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 024843/0263 →
Continuity (2)
Provisional Application 61240140 · Sep 4, 2009
Related Publication 20130120392A1 · May 16, 2013