Interactive design variations interface

One embodiment of the present invention sets forth a technique for generating design variations. The technique involves identifying a first design variable and a second design variable associated with a first design. The technique further involves generating a first plurality of design variations based on the first design. Each design variation is generated by varying at least one of the first design variable and the second design variable. Finally, the technique involves causing the first plurality of design variations to be displayed to a user.

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention generally relates to computer software and, more specifically, to an interactive design variations interface.

Description of the Related Art

A wide variety of software applications are currently available to end-users, including computer-aided design (CAD) applications, three-dimensional (3D) modeling applications, simulation and optimization applications, and rendering applications, among others. Many of these software applications allow an end-user to interact with the software application via a graphical end-user interface (GUI). Conventional GUIs often provide the end-user with access to a set of tools that can be used to perform various operations within a workspace generated by the software application. For example, a 3D modeling and rendering application could provide a set of tools that could be used to generate images having different lighting conditions, object properties, etc. In another example, an architecture, engineering, and construction (AEC) application could provide a set of tools that could be used to prepare and optimize engineering designs. Each tool in these sets of tools may include a number of variables that the end-user could specify in order to modify generated images and engineering designs.

Despite advances in enabling end-users to more easily operate complex applications, learning how to use such applications can still be problematic. More complex applications, such as the 3D modeling and AEC applications described above, often include thousands of variables that can be modified by the end-user to generate images and/or optimize designs. In addition to having to keep track of such a large number of variables, predicting how changing or tweaking any one variable associated with a complex design would impact a rendered image or design objective is usually quite difficult. Consequently, generating a design of acceptable quality by varying the different application variables may require hundreds or thousands of design and rendering iterations, where each iteration requires significant time to change the relevant variable(s) and render the associated image (e.g., minutes or hours per iteration). Moreover, less experienced users may not understand how modifying various application variables affects image quality or a particular design objective. Such users, therefore, may not be able to generate quality designs regardless of the number of design and rendering iterations performed.

As the foregoing illustrates, there is a need in the art for a more effective way to enable application end-users to generate higher-quality designs.

SUMMARY OF THE INVENTION

One embodiment of the present invention sets forth a method for generating design variations. The method involves identifying a first design variable and a second design variable associated with a first design and generating a first plurality of design variations based on the first design. Each design variation is generated by varying at least one of the first design variable and the second design variable. Finally, the method involves causing the first plurality of design variations to be displayed to a user.

Further embodiments provide a non-transitory computer-readable medium and a computing device to carry out at least the method set forth above.

Advantageously, the disclosed technique allows a user of an application to view multiple design variations generated by modifying one or more design variables. The user can then select between the design variations and, if so desired, cause additional design variations to be generated by further modifying a particular design variable or modifying a new design variable. The disclosed technique, among other things, enables users to more efficiently generate high-quality designs and meet design objectives with little or no prior knowledge of the relevant application variables and commands.

DETAILED DESCRIPTION

FIG. 1illustrates a computing device100configured to implement one or more aspects of the present invention. As shown, computing device100includes an interconnect (bus)140that connects a processing unit150, an input/output (I/O) device interface160coupled to input/output (I/O) devices180, a memory110, a storage130, and a network interface170. Processing unit150may be a central processing unit (CPU), a graphics processing unit (GPU), or a combination of different processing units, such as a CPU configured to operate in conjunction with a GPU. In general, processing unit150may be any technically feasible hardware unit capable of processing data and/or executing software applications. Further, in the context of this disclosure, the computing elements shown in computing device100may correspond to a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud.

I/O devices180may include devices capable of receiving input, such as a keyboard, a mouse, a video camera, a three-dimensional (3D) scanner, and so forth, as well as devices capable of providing output, such as a display device, a speaker, and so forth. Additionally, I/O devices180may include devices capable of both receiving input and providing output, such as a touchscreen, a universal serial bus (USB) port, and so forth. I/O devices180may be configured to receive various types of input from an end-user of computing device100, and to also provide various types of output to the end-user of computing device100.

Memory110may include a random access memory (RAM) module, a flash memory unit, or any other type of memory unit or combination thereof. Processing unit150, I/O device interface160, and network interface170are configured to read data from and write data to memory110. Storage130may be a disk drive storage device. Although shown as a single unit, storage130may be a combination of fixed and/or removable storage devices, such as fixed disc drives, removable memory cards, or optical storage, network attached storage (NAS), or a storage area-network (SAN).

As also shown, memory110includes a two-dimensional and/or three-dimensional (2D/3D) design122, a design application120that includes a parametric selection engine124, and generated design variations126. The 2D/3D design122may be any technically feasible type of design or mathematical model, including a polygonal mesh, a point cloud, a wireframe model, a manifold, and so forth. The design application120is a software application that may be executed by the processing unit150. The design application120is configured to generate and/or modify the 2D/3D design122. The design application120also may be configured to generate a graphical user interface (GUI) that provides to an end-user various tools for editing the 2D/3D design122. The design application120is configured to generate a 2D rendering of the 2D/3D design122and display that rendering within a viewport included in the display space of the GUI. For example, the design application120may create the 2D rendering from the viewpoint of a virtual camera positioned within a 3D coordinate space.

As described above, the computing elements shown in computing device100may be a virtual computing instance executing within a computing cloud. Thus, design application120and/or parametric selection engine124computations (e.g., design variation generation/rendering, full-quality renderings, etc.) may be performed using a processing unit150(e.g., CPU and/or GPU) that is local to the user and/or such computations may be performed with a computing cloud. Further, the degree to which computations are distributed between local computing resources and cloud computing resources may be determined by the design application120and/or parametric selection engine124based on the scope of the application task(s), the local/cloud processing loads, and/or based on user choice. For example, the design application120and/or parametric selection engine124may recommend and provide feedback to the user whether a local computing scheme, a cloud computing scheme, or a combined local/cloud computing scheme is most time efficient, cost efficient, etc. The user may then select a desired computing scheme.

AlthoughFIG. 1shows the parametric selection engine124as a separate software module, it is also contemplated that the parametric selection engine124may be integrated into the design application120or offered as a software add-on or plug-in for the design application120. When configured as a separate software module, the parametric selection engine124may be capable of generated design variations using a variety of different software applications. Further, althoughFIG. 1illustrates the 2D/3D design(s)122, generated design variations126, and database132as being stored in specific locations in the computing device100, each of these data structures may be stored in any type of memory or storage included in, or in communication with, the computing device100.

The end-user may perform edit operations in order to modify the 2D/3D design122via tools provided by the GUI, and may also perform operations related to rendering (e.g., viewpoint and lighting position operations) in order to modify 2D renderings generated by the design application120. For example, the end-user could change the dimensions of a 3D model via a tool provided by the GUI. Then, the end-user could manipulate a camera position to render the 3D model from various viewpoints.

The parametric selection engine124is configured to modify a 2D/3D design122to generate one or more design variations. The design variations may be generated by varying one or more design variables associated with the 2D/3D design. Each design variation may then be rendered and displayed to the end-user. For example, a low-resolution and/or low-fidelity rendering (e.g., a preview or approximated rendering) of each design variation may be generated and displayed to the end-user. In various embodiments, the parametric selection engine124may then receive a design variation selection from the end-user, a command from the end-user to increment one or more of the design variables, and/or a command to increase or decrease the number of design variations generated and displayed.

In response to the user input, the parametric selection engine124may further modify the 2D/3D design122to generate, render, and display additional design variations for the end-user. Additionally, the user input may include a selection of a design variation for which the design application120is to generate a high-quality rendering. The generated design variations126(e.g., modified 2D/3D designs122and/or 2D renderings of the 2D/3D designs122) may be stored in the memory110. The parametric selection engine124may be further configured to calculate one of more design attributes associated with one or more of the design variations. Design attributes may include, without limitation, material properties, performance characteristics, constructability, and/or costs associated with the 2D/3D design122. The generated design variations126and optional design attributes may be displayed to the user in a variety of ways, including the grid configuration shown inFIG. 2, discussed below.

In addition, the parametric selection engine124may modify a 2D/3D design122based on design variables stored in a database132. The database132may include different design objectives, each of which may be associated with one or more design variables. The design variables in the database132may include variables that have been specified by the user, previously used by the user, and/or generated by the parametric selection engine124or design application120. For example, a ‘dimensions’ design objective may include design variables such as length, width, height, volume, surface area, and the like. In a rendering application, a ‘viewpoint’ design objective may include design variables such as rotate camera, pan camera, and the like. In a manufacturing or AEC application, a ‘flow time’ design objective (e.g., a flow time associated with injection molding) may include design variables such as injection temperature, injection pressure, injection point location, material viscosity, and the like. Additional exemplary design objectives and design variables are discussed below.

FIG. 2Aillustrates an interface200for displaying design variations generated by the parametric selection engine124ofFIG. 1, according to one embodiment of the present invention. As shown, the interface200includes a grid210, a design objective220, design variables230,232, and a scale selector270. The grid210includes a plurality of design variations212. Design variations212generated by the parametric selection engine124may be displayed in the grid210according to the value(s) assigned to the one or more design variables on which the design variations212are based.

As also shown, design variations212generated by varying design variables230,232may be arranged such that the value of a first design variable230associated with each design variation212varies along a first grid axis240, and the value of a second design variable232associated with each design variation212varies along a second grid axis242. For example, inFIG. 2A, the value of the first design variable230associated with the Upper Left design variation212may be less than the value of the first design variable230associated with the Upper Mid design variation212. In addition, the value of the first design variable230associated with the Upper Right design variation212may be greater than the value of the first design variable230associated with the Upper Mid design variation212. Further, the value of the first design variable230, at any point on the first grid axis240, may be substantially constant along the second grid axis242, and the value of the second design variable232, at any point on the second grid axis242, may be substantially constant along the first grid axis240. For example, the values of the second design variable230associated with the Upper Left, Upper Mid, and Upper Right design variations212may be identical or substantially the same. In addition, the values of the first design variable230associated with the Upper Left, Mid Left, and Lower Left design variations212may be identical or substantially the same. Accordingly, design variations212may be displayed in a grid210in a manner that enables a user to efficiently determine which design variables are being modified as well as how the design variables are being modified.

The interface200may further display a current design214. In one embodiment, the current design214may represent a 2D/3D design122on which the design variations212are based. For example, design variations212generated by the parametric selection engine124(e.g., based on a 2D/3D design122specified by the user) may be displayed to the user such that the user can view the current design214(e.g., a rendering based on the 2D/3D design122) and also view variations of the current design214. In the same or different embodiments, the current design214may represent a design variation212that was recently selected by the user. For example, after the design variations212are displayed to the user, the user may select a design variation212(e.g., a preferred design variation), and the selected design variation212may be designated as the current design214. Additional design variations212may then be generated based on the current design214.

The process of reviewing and selecting design variations212may enable a user to efficiently modify and refine a 2D/3D design122. As described above, once a user selects a design variation212, the design variation212may be designated as the current design214and/or additional design variations212may be generated by the parametric selection engine124(e.g., based on the current design214). Additionally, once a design variation212is selected by the user, one or more design variations212may change positions in the grid210. For example, selection of the Mid Right design variation212may cause the interface200to shift the positions of the Mid Left, Mid Center, and Mid Right design variations212such that the design variation212previously located in the Mid Right position is located in the Mid Center position. During this transition, the design variation212located in the Mid Left position may be shifted out of the grid210and no longer displayed to the user. Further, an additional design variation212may be displayed in the Mid Right position of the grid210. The value of the first design variable230on which this additional design variation212is based may be higher than the value on which the design variable212previously located in the Mid Right position was based.

In another embodiment, selection of the Mid Right design variation212may cause the interface200to shift the position of multiple rows of design variations212(e.g., all design variations212). During such a transition, the design variations212previously located in the Upper Left, Mid Left, and Lower Left positions may be shifted out of the grid210and no longer displayed to the user. Further, additional design variations212may be displayed in the Upper Right, Mid Right, and Lower Right positions of the grid210. The value(s) of the first design variable230on which these additional design variations212are based may be higher than the value(s) on which the design variables212previously located in the Upper Right, Mid Right, and Lower Right positions were based.

In yet another example, selection of the Upper Right design variation212may cause the interface200to shift the design variations212previously located in the Upper Left, Mid Left, Lower Left, Lower Mid, and Lower Right positions out of the grid210such that these design variations are no longer displayed to the user. Additional design variations212may then be displayed in the Upper Left, Upper Mid, Upper Right, Mid Right, and Lower Right positions of the grid210. The values of the first design variable230and/or second design variable230,232on which these additional design variations212are based may be higher than the values on which the design variables212previously located in the Upper Left, Upper Mid, Upper Right, Mid Right, and Lower Right positions were based.

Although the examples provided above describe selecting design variations212to increase the values associated with the first design variable230and/or the second design variable232, design variations212may be selected to decrease the value(s) associated with one or both of the design variables230,232as well. For example, a user may select the Upper Left design variation212in order to decrease the value(s) of the first design variable230and increase the value(s) of the second design variable232for which additional design variations212are generated. In another example, a user may select the Lower Left design variation212in order to decrease the value(s) of the first design variable230and the second design variable232for which additional design variations212are generated.

Thus, to affect only the first design variable230, and leave the second design variable232unchanged, the user may select a design variation212to the right or to the left of the current design214. Similarly, to affect only the second design variable232, and leave the first design variable230unchanged, the user may select a design variation212above or below the current design214. Additionally, to affect both the first design variable230and the second design variable232, the user may select a design variation212at one of the corners of the grid210.

In addition to (or instead of) selecting one or more design variations212to modify a design variable230,232, the values of the design variables230,232may be incremented using an application command. For example, a user may use an input device to increase or decrease a value by selecting a button on the interface200or by inputting a specific starting value for a design variable230,232with a keyboard.

A scale selector270further enables the user to specify the degree to which the first design variable230and/or the second design variable232are varied between design variations212displayed in adjacent cells of the grid210. As an example, the user may operate the scale selector270to select coarser design variations212. In response, the parametric selection engine124may increase the magnitude by which a design variable230,232is varied between design variations212displayed in adjacent cells. For example, if a design variable230,232was originally varied by a magnitude of 4 units between adjacent cells, selecting coarser design variations212may result in the design variable230,232varying by a magnitude of 6 units between adjacent cells. In another example, if a design variable230,232was originally varied by a magnitude of 4 units between adjacent cells, selecting finer design variations212may result in the design variable230,232varying by a magnitude of 2 units between adjacent cells. Thus, the scale selector270enables the user to control the degree to which design variables230,232are varied between adjacent cells, enabling the interface200to be adapted to a wide variety of uses.

FIGS. 2B-2Dillustrate a design objective selection menu250and a variable selection menu260included in the interface200ofFIG. 2A, according to one embodiment of the present invention. The design objective selection menu250may include a listing of design objectives (e.g., design objective220). The variable selection menu260may include a listing of design variables (e.g., design variable230).

The objective selection menu250may include a drop-down menu, enabling a user to select one or more design objectives on which the design variations212generated by the parametric selection engine124will be based. Each design objective may be associated with one or more design variables. For example, a ‘dimensions’ design objective may include design variables such as length, width, height, volume, surface area, etc., and a ‘viewpoint’ objective may include design variables such as rotate camera left/right, pan camera left/right, rotate camera up/down, pan camera up/down, etc. As such, once a user selects a ‘dimensions’ design objective, the variable selection menu(s) may be populated with a listing of design variables, such as the design variables described above. Upon selecting a particular design objective220, the most relevant design variables230,232may be automatically selected, and design variations212based on the selected design variables230,232may be automatically generated and displayed to the user.

The user may choose to define a new design objective and/or design variable. For example, upon choosing to define a new design objective and/or design variable, the user may be presented with a dialog box with which one or more application variables, constraints, commands, properties, etc. may be selected. The parametric selection engine124may then generate design variations212based on the design objective and/or design variable(s) defined by the user.

FIG. 2Eillustrates pre-calculation of design variations in the interface ofFIG. 2A, according to one embodiment of the present invention. Performance of the interface200may be improved by pre-calculating design variations based on the first design variable230and/or second design variable232. Thus, once a user increments a design variable230,232to generate additional design variations212(e.g., by selecting a design variation212or using an application command), the grid210may display additional design variations212with reduced latency.

For example, selection of the Mid Right design variation212may cause the interface200to shift the Mid Right design variation212to the current design variation214position. During this transition, the Upper Right 2 (UR2), Mid Right 2 (MR2), and Lower Right 2 (LR2) design variations212(i.e., the pre-calculated design variations212) may shift into the Upper Right, Mid Right, and Lower Right positions, respectively. Further, the parametric selection engine124may then pre-calculate additional Upper Right 2, Mid Right 2, and Lower Right 2 design variations212.

FIG. 3illustrates design variations212generated based on a lighting brightness design objective220, according to one embodiment of the present invention. As shown, a user may interact with the interface300to select a lighting design objective220. The user may then be presented with the option to select one or more design variables230,232associated with the design objectives220. For example, the user may choose to display design variations212in which the shadow direction is moved to the right and to the left with respect to the shadow direction of a current design214. In response, the parametric selection engine124may modify one or more values associated with shadow direction and generate design variations212based on the modified values. In one example, the parametric selection engine124may modify a value associated with the position of a light source in order to vary the shadow direction. In another example, the parametric selection engine124may modify a value associated with the position of a design object (e.g., the teapot) in order to vary the shadow direction. The design variations212generated by the parametric selection engine124then may be displayed to the user such that the shadow direction associated with each design variation212varies along the first grid axis240.

Additionally, the parametric selection engine124may modify one or more values associated with shadow brightness and generate design variations212based on the modified values. For example, the parametric selection engine124may modify a value associated with the intensity of a light source in order to vary the shadow brightness. In another example, the parametric selection engine124may modify a value associated with the ambient brightness in order to vary the shadow brightness. The design variations212generated by the parametric selection engine124then may be displayed to the user such that the shadow brightness associated with each design variation212varies along the second grid axis242.

FIGS. 4A and 4Billustrate design variations212generated based on a view location design objective220, according to one embodiment of the present invention. As shown, a user may interact with the interface400to select a single design objective220with which both design variables230,232are associated. InFIG. 4A, a view location design objective220is selected. In addition, a higher/lower design variable230and a right/left design variable232are selected. Based on these design objective220and design variable230,232selections, the parametric selection engine124may modify one or more values associated with a viewpoint (e.g., a camera viewpoint) and generate design variations212based on the modified values. In one example, the parametric selection engine124may modify one or more values associated with the location (e.g., height) and orientation (e.g., angle) of a camera in order to vary the view location. In another example, the parametric selection engine124may modify the location and orientation of one or more objects in the design in order to vary the view location. The design variations212generated by the parametric selection engine124may then be displayed to the user such that the view location associated with each design variation212varies along the first grid axis240and second grid axis242, as shown inFIGS. 4A and 4B. As shown inFIG. 4B, other design objectives220may be selected, including depth of field, focal length, shutter speed, lens type, exposure, highlight, and effects design objectives220.

As shown inFIGS. 4A and 4B, a scale selector270may be used to specify the degree to which the design variables230,232are varied between adjacent grid210cells. For example, with respect to design variable232, moving the scale selector270towards the fine setting may result in the design variable232varying by a magnitude of 5 degrees between adjacent cells, while moving the scale selector270towards the coarse setting may result in the design variable232varying by a magnitude of 15 degrees between adjacent cells.

FIG. 5illustrates design variations212generated based on an entourage design objective220, according to one embodiment of the present invention. As shown, a user may interact with the interface500to select a number of people design variable230and a number of trees design variable232. The parametric selection engine124may then modify a value associated with a number of objects (e.g., people and trees) included in the design and generate design variations212based on the modified values.

The parametric selection engine124may further determine how to distribute the objects within the design. For example, the objects may be pseudorandomly distributed within the design or uniformly distributed within the design. The design variations212may be displayed to the user such that the number of people design variable230associated with each design variation212varies along the first grid axis240, and the number of trees design variable232associated with each design variation212varies along the second grid axis242.

Moreover, once a user is satisfied with the number of objects (e.g., trees and people) included in the design, the user may select a new design variable from the design variable menu260(or a new design objective220from the design objective menu250), such as an object placement uniformity design variable230. In response to the selection of the object placement uniformity design variable230, the parametric selection engine124may generate additional design variations212based on the number of objects included in the current design214, where the additional design variations212have varying object placement uniformities. The design variations212may then be displayed to the user such that, for example, the degree to which objects are uniformly distributed within the design varies along the first grid axis240.

Additionally, the parametric selection engine124may generate design variations212based on design objectives220and design variables230,232that the user did not request. For example, the parametric selection engine124may generate design variations212based on alternate camera views, texture mapping parameters, materials choices, lighting conditions, environmental backgrounds, entourage, pre-computed animation paths, and the like.

FIG. 6illustrates design variations212generated based on a material design objective220and non-geometric design variables (i.e., a surface finish design variable230and a durability design variable232), according to one embodiment of the present invention. As shown, a user may interact with the interface600to select a surface finish design variable230and a durability design variable232. The parametric selection engine124may then modify one or more values associated with design material properties and generate design variations212based on the modified values. Thus, as shown inFIG. 6, a user may interact with the interface500to select design variables (e.g., design variables230,232) with or without selecting a design objective220.

In various embodiments, the parametric selection engine124may generate design variations212based on non-geometric design variables. For example, the parametric selection engine124may modify a value associated with the composition of a material, such as the elements included in the material, the mass fraction of a particular element in the material, a processing condition associated with the material, and the like. As shown inFIG. 6, the parametric selection engine124may modify a material composition value which affects the durability and/or surface finish of a material. The generated design variations212may then be displayed to the user such that the surface finish design variable230associated with each design variation212varies along the first grid axis240, and the durability design variable232associated with each design variation212varies along the second grid axis242.

Thus, the design variables230,232may have an indirect correlation to the value(s) modified by the parametric selection engine124to generate the design variations212. In one embodiment, the design variables230,232may be a function of a mathematical equation that includes the value(s) modified by the parametric selection engine124to generate design variations212. For example, with reference toFIG. 6, durability may be a function of composition and/or processing values that are modified by the parametric selection engine124. In another embodiment, when generating the design variations212, the parametric selection engine124may select one or more values based on empirical data associated with the one or more values. In yet another embodiment, the one or more values used by the parametric selection engine124to generate design variations212may be determined using mathematical simulation, mathematical optimization, geometric form finding, search heuristics, genetic algorithms, etc.

Additional examples in which the design variables230,232may have an indirect correlation to one or more values modified by the parametric selection engine124are illustrated inFIGS. 7-9C, discussed below.

FIG. 7illustrates design variations212generated based on a building form design objective220, a building efficiency design variable230, and a number of people design variable232, according to one embodiment of the present invention. As discussed above with respect toFIG. 6, the design variables230,232may have an indirect correlation to the value(s) modified by the parametric selection engine124and used to generate design variations212. InFIG. 7, the building efficiency design variable230and the number of people design variable232may be a function of one or more values that are modified by the parametric selection engine124. For example, building efficiency may be a function of values such as window size, building shape, building height, energy absorption or generation, physical orientation, material properties, etc., and the number of people may be a function of values such as building height, building footprint, number of floors, floor size, etc. Further, the values with which design variations212are generated may be chosen in order to optimize one or both of the design variables230,232, for example, by using computational design techniques (e.g., geometric form-finding). Thus, the parametric selection engine124may modify any number of values associated with a particular design variable when generating design variations212. Other design variables230,232that may be associated with the building form design objective220include glazing type, thermal efficiency, site orientation, and the like.

FIG. 8illustrates design variations212generated based on a mathematical simulation and optimization technique, according to one embodiment of the present invention. As shown, a graph810is provided for visualizing, on a three-dimensional surface plot, the stress experienced by a plurality of angle bracket design variations212. The graph810includes a lower (blue) plane which represents the minimum allowable stress experienced by the angle bracket and an upper (red) plane which represents the maximum allowable stress experienced by the angle bracket. The highlighted green dot represents the current design214(e.g., a design variation212having an optimal thickness and width).

A design attribute associated with a first design variable230(e.g., a thickness design variable) and/or a second design variable232(e.g., a width design variable) may be determined for one or more of the design variations212. Additionally, the design attribute may be displayed in association with the one or more design variations212. The interface800may display a stress design attribute (i.e., a level of stress resulting from applying forces to the angle bracket design) for each design variation212, where red represents a high level of stress, blue represents a moderate level of stress, and green represents a low level of stress. The design attribute may be overlayed on the design variations212in order to provide information associated with specific areas or locations of the design variations212. For example, as shown in the interface800, the stress experienced by the angle bracket design increases as the thickness and width of the design is decreased. Moreover, the interface800illustrates the location(s) at which stress levels are highest and lowest. Thus, by overlaying one or more design attributes on the design variations212, the user is able to achieve one or more design objectives without needing to understand how to modify complex application variables.

FIGS. 9A-9Cillustrate the interactive resizing of a grid of design variations, according to one embodiment of the present invention. As shown, the dimensions of the grid210may be configured by the user to generate a larger number or smaller number of design variations212. Additionally, the dimensions of the grid210may be modified to generate a larger number or smaller number of design variations212with respect to a particular design variable230,232. For example, inFIG. 9B, the grid210has been resized to generate a larger number of design variations212based on both the injection temperature design variable230and the injection pressure design variable232. Further, inFIG. 9C, the grid210has been resized to generate a smaller number of design variations212(e.g., zero design variations) based on the injection pressure design variable232. Although specific grid210dimensions are shown inFIGS. 9A-9C, the grid210may be resized to any usable dimensions.

FIG. 10is a flow diagram of method steps for generating design variations212, according to one embodiment of the present invention. Although the method steps are described in conjunction with the systems ofFIGS. 1-9C, persons skilled in the art will understand that any system configured to perform the method steps, in any order, falls within the scope of the present invention.

As shown, a method1000begins at step1010, where a 2D/3D design122is received by the parametric selection engine124. At step1015, one or more design variables (e.g., a first design variable230and a second design variable232) associated with the design122are identified. At step1020, a plurality of design variations212are generated by varying the one or more design variables. Each design variation212may be generated by assigning a different combination of values to the one or more design variables.

As described above, the parametric selection engine124may vary the one or more design variables by modifying one or more values that are directly correlated to the design variables (e.g., length, width, height), and/or the parametric selection engine124may vary the one or more design variables by modifying one or more values that are indirectly correlated to the design variables (e.g., material durability, material brightness, thermal efficiency, occupancy). Thus, varying the one or more design variables may include varying the result of a mathematical equation by modifying equation values, selecting values from empirical data, performing mathematical optimizations, etc.

At step1025, an optional design attribute may be determined for one or more of the design variations212. At step1030, the design variations212and (optionally) the design attribute(s) may be displayed to a user.

Next, at step1035, if the parametric selection engine124receives a selection of a design variation212, a design variable associated with the selected design variation212is varied to generate additional design variations212. The additional design variations212and optional design attributes may then be displayed at step1030. The additional design variations212may be displayed to the user while also displaying a portion of the previously-displayed design variations212. At step1035, the parametric selection engine124may additionally (or alternatively) receive an application command to increment a design variable associated with the design122. In response, the parametric selection engine124may generate additional design variations212based on the incremented design variable.

At step1045, if the parametric selection engine124receives a command to increase the number of generated design variations212, one or more design variables may be varied at step1050to generate additional design variations212. The additional design variations212may then be displayed to the user while also displaying a portion of the previously-displayed design variations212.

In sum, a parametric selection engine receives a design and one or more selected design variables associated with the design. The parametric design engine then generates a plurality of design variations, each design variation being generated by modifying at least one of the selected design variables. The design variations are then displayed to a user, enabling the user to select between the different design variations. Based on the design variation(s) selected by the user, the parametric design engine may then generate additional design variations for display.

One advantage of the techniques described herein is that a user is able to select one or more design variables and view multiple design variations generated by modifying those variable(s). The user is then able to select between the design variations to adjust the variable(s) and refine the design. Thus, the user, whether novice or expert, is able to preview the impact of one or more design variables on the overall quality of the design image. The disclosed technique, among other things, enables users to more efficiently generate high-quality designs and meet design objectives with little or no prior knowledge of the relevant application variables and commands.

The invention has been described above with reference to specific embodiments. Persons of ordinary skill in the art, however, will understand that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The foregoing description and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Therefore, the scope of embodiments of the present invention is set forth in the claims that follow.