Transparent, semi-transparent, and opaque dynamic 3D objects in design software

A computing system, having stored thereon a design software, is configured to generate a design file representing a three-dimensional space that embodies a design. The computing system is further configured to render a three-dimensional view of the three-dimensional space in a graphical user interface. In response to receiving a user input of placing a three-dimensional object in the three-dimensional space, the computing system then renders the three-dimensional object in the three-dimensional view of the three-dimensional space in the graphical user interface as a silhouette.

BACKGROUND

Computer-aided design (CAD) programs can increase the productivity of the designers, improve the quality of designs, improve communications through documentation, and create data files for manufacturing. A CAD design is often in the form of computer-readable files that are sharable among colleagues and cooperating parties. Some CAD programs are configured to generate 3D models and render the generated 3D models in a graphical user interface.

BRIEF SUMMARY

The embodiments described herein are related to a computing system, a method, and/or a computer program product for implementing a computer-aided design (CAD) software configured to render a three-dimensional (3D) object as a silhouette in a 3D view of a 3D space. A silhouette described herein is an image of a 3D object represented as a shape of one or more colors, which may or may not have an outline that has a different color than the interior of the shape, which may be filled with a single color, multiple colors, and/or any patterns, which may be transparent, semi-transparent, or opaque, and in which there may or may not be sketch lines.

The computing system is configured to generate a design file representing a 3D space that embodies a design. The computing system is also configured to render a 3D view of the 3D space in a graphical user interface (GUI). The computing system is also configured to receive a user input, placing a 3D object in the 3D space, and render the 3D object in the 3D view of 3D space in the GUI as a silhouette. In some embodiments, the 3D object may be a character, such as a person, a pet, etc. In some embodiments, the 3D object may be a fixture (such as a wall, a window, etc.) or a non-fixture (such as a furniture piece, a chair, a table, etc.).

In some embodiments, the silhouette (also referred to as a first silhouette) is rendered as a silhouette having a particular opacity level. Opacity level is often defined as a percentage number between 0% and 100%. 100% opacity means the contents of the layer are completely opaque, 0% opacity means completely transparent, and any percentage of opacity in between means semi-transparent. In some embodiments, rendering the 3D object as the silhouette having the particular opacity includes performing color blending (such as, but not limited to, alpha blending) to combine a color of the silhouette with colors of an area of the 3D view of the 3D space that overlaps the silhouette to create an appearance of partial or full transparency. As such, the silhouette does not completely block any feature of the design in the 3D space, and all features of the design in the three-dimensional space can be at least partially seen through the silhouette.

In some embodiments, the computing system is further configured to receive another user input to place a second object in the 3D space and render the second object in the 3D view of the 3D space as a second silhouette that has a second particular opacity. In some embodiments, when the second silhouette at least partially overlaps the first silhouette in the 3D view, the computing system further performs color blending (such as, but not limited to, alpha blending) in an overlapping area among the first silhouette, the second silhouette, and the 3D space to create an appearance of partial or full transparency, such that neither the first silhouette nor the second silhouette completely blocks any feature of the design in the 3D space, and all the features of the design in the 3D space can be at least partially seen through the first silhouette and the second silhouette.

In some embodiments, the computing system is further configured to receive another user input, changing at least one of a plurality of properties of the silhouette and re-render the 3D object in the 3D view of the 3D space based on the second user input. The plurality of properties of the silhouette includes (but are not limited to) (1) a color of an outline of the silhouette, (2) a weight of an outline of the silhouette, (3) a color filling in the silhouette, (4) an opacity level of an outline of the silhouette, and/or (5) an opacity level of a color filling in the silhouette.

In some embodiments, the silhouette further includes a shadow mode and a no-shadow mode. When the silhouette is in the shadow mode, the computing system is further configured to render a shadow of the silhouette based on lighting and depth of each surface where the shadow overlaps in the 3D view. When the silhouette is in a no-shadow mode, no shadow of the silhouette is rendered.

In some embodiments, the silhouette further includes an animated mode or a fixed mode. When the silhouette is in the animated mode, the silhouette is an animated silhouette configured to perform a sequence of motions. In some embodiments, the silhouette is configured to perform a predetermined sequence of motion. In some embodiments, the animated silhouette is driven at runtime by external sensors mimicking the motions of a human actor. The human actor may be a user wearing one or more sensing devices configured to send sensing data to the computing system. The sensing data is associated with the user's motions. In response to receiving the sensing data, the computing system is configured to cause the animated silhouette to mimic the motions of the user. Alternatively, when the silhouette is in the fixed mode, the silhouette is fixed at a particular position in the 3D view of the 3D space, holding still.

In some embodiments, the silhouette further includes a sketch mode or a no-sketch mode. When the silhouette is in the sketch mode, the silhouette is rendered to include sketch lines inside the silhouette and an outline outlining the silhouette based on a shape of the object and lighting of the 3D space. When the silhouette is in the no-sketch mode, the silhouette is rendered to have no sketch lines inside the silhouette.

DETAILED DESCRIPTION

The embodiments described herein are related to a computing system, a method, and/or a computer program product for implementing a design software application configured to render a three-dimensional (3D) object as a silhouette in a 3D view of a 3D space. A silhouette described herein is an image of a 3D object represented as a shape of one or more colors, which may or may not have an outline that has a different color than the interior of the shape, which may be filled with a single color, multiple colors, images, textures, and/or any patterns, which may be transparent, semi-transparent, or opaque, and in which there may or may not be sketch lines. The images, textures, and/or any patterns may be pre-generated or generated dynamically in real-time.

The computer-aided design (CAD) software is stored at one or more computer-readable storage devices that are accessible by a computing system. When the CAD software is executed by the computing system, the computing system is configured to aid in the creation, modification, analysis, or optimization of a design. The CAD software can increase the productivity of the designers, improve the quality of designs, improve communications through documentation, and create data files for manufacturing.

Existing CAD software may allow a user to place a 3D object, such as an animated person, a furniture piece, in an environment to make the environment look more real and interesting. However, some users or viewers feel that such 3D objects are somewhat distracting because they block portions of the architectural design, or they draw attention away from the design itself. Embodiments disclosed herein render 3D objects as silhouettes having any particular opacity level. The silhouettes provide meaningful context as to the spatial size and location and available space for people within the environment but are not as distracting as full-colored 3D objects. In the case of semi-transparent silhouettes, there may also be an added benefit of seeing what's behind them. Although, depending on the design and/or the use case, there are also situations in which complete opaque silhouettes are preferred.

FIG.1illustrates a functional block diagram of a CAD software100that implements the principles described herein. The CAD software100is configured to generate a design of a 3D space and render the 3D space that embodies the design in a graphical user interface (GUI). For example, a user can interact with the GUI of the CAD software100to create a design of a 3D space. The CAD software100is configured to store the design as a design file in a computer-readable storage device.

The CAD software100includes a layout manager110and a rendering engine130. The layout manager110is configured to manage the layout of one or more graphical elements in the GUI. In some embodiments, the one or more graphic elements are selected from a set of 3D fixture objects112, a set of 3D non-fixture objects114, and a set of 3D characters120, including animated characters122and fixed characters124. A user can interact with the GUI to place any one of these 3D objects112,114, and 3D characters120in the 3D spaces.

The fixture objects112may include (but are not limited to) a wall, a window, a sink, flooring, a ceiling, etc. The non-fixture objects114may include (but are not limited to) various furniture pieces, such as a refrigerator, a table, a desk, a chair, a couch, a shelf, a curtain, a wall painting, etc. The characters120may include (but are not limited to) realistic and/or cartoonish persons of different ages, genders, roles, and/or shapes wearing different outfits and hairstyles. The characters120may also include (but are not limited to) realistic and/or cartoonish animals, such as a pet dog, a pet cat, etc.

In some embodiments, the animated characters122are configured to perform a sequence of motions in the 3D space. For example, in some embodiments, an sketch may be a realistic person configured to sit on a couch or a chair in the 3D space making random motions or making a predetermined sequence of motions, such as checking their phone, answering a call, reading a book, etc. As another example, in some embodiments, an animated character122may be a realistic person configured to walk around randomly in a predetermined area in the 3D space.

Alternatively, the animated characters122can also be driven at runtime by external sensors mimicking motions of human actors. For example, a user may be wearing a head-mounted device and/or holding a handset, configured to sense the user's location and motions. Based on the sensing data received from the head-mounted device and/or the handset, an animated character122may be rendered to mimic the motions of the user.

For example, a designer may wish to give a remote viewer a virtual tour of a design. The designer may select a desired animated character122as an avatar within the design. The avatar may be rendered as a semi-transparent silhouette such that the designer does not block any views within the 3D space and also so the designer does not distract from the design itself. The designer is able to make gestures and motions in the real world that are translated to the virtual design. These gestures and motions may function to direct the viewers' attention to particular aspects of the design. For instance, the designer may gesture towards a particular feature in the design. A viewer may then see the animated character perform this gesture towards the particular feature in the design.

In some embodiments, the designer may be physically located within the design space or within a purpose built simulation room. As the designer walks around the space, the avatar's silhouette similarly moves around the space and mimics the designer's gestures and motions.

The fixed characters124are configured to be placed at a particular position in the 3D space, holding still. In some embodiments, at least a portion of the characters120have an animated mode and a fixed mode that are selectable. For example, when a user selects the animated mode of a character of a person and places the character in a particular area of the 3D space, the character of the person is configured to perform a sequence of motions in the 3D space. In some embodiments, after selecting the fixed mode of the character, the user can further select a particular pose of the character, such as sitting still. When the character in the fixed mode is placed at a particular location in the 3D space, the character is configured to hold the particular pose at the particular location in the 3D space.

The rendering engine130is configured to render the design in one or more two-dimensional (2D) views or one or more 3D views in the GUI. For example, a 2D view may be a cross-sectional view, a top view, or a side view of the 3D space; and a 3D view may be a perspective view of the 3D space, such as a perspective view from a particular point at a particular angle. The rendering engine130includes a 2D rendering engine140and a 3D rendering engine150. The 2D rendering engine140is configured to render the one or more 2D views of the 3D space in the GUI. The 3D rendering engine150is configured to render the one or more 3D views of the 3D space in the GUI. Further, the rendering engine130is configured to render some objects as silhouettes having particular opacities. In particular, in some embodiments, each of the 2D rendering engine140or the 3D rendering engine150further includes a silhouette rendering engine142,152, and a transparent rendering engine144,154.

The silhouette rendering engine142or152is configured to compute an outline of a 3D object and fill the outline of the 3D object with a same color. In at least one embodiment, the silhouette rendering engine142or152identifies an outline of the 3D object that is viewable to a viewer and creates the silhouette by rendering the outline. Further, in at least one embodiment, the rendering is performed such that different viewers who are viewing the 3D space from different perspectives all see unique views of the silhouette. For example, a first viewer may see a silhouette that represents a side view of the 3D object, while a second viewer may see a silhouette that represents a front view of the 3D object. Accordingly, in some embodiments, even though the silhouette appears to be a 2D image to each individual view, the actual silhouette is rendered, for each viewer, from the original 3D object, which allows each viewer to see a correct perspective view of the silhouette.

The transparent rendering engine144,154is configured to compute a color of an object having a particular opacity that overlays a 2D view or a 3D view of the 3D space. In some embodiments, the transparent rendering engine144,154is configured to perform color blending (such as, but not limited to, alpha blending) to combine a color of the silhouette with colors of an area of the 3D space that overlaps the silhouette to create an appearance of partial or full transparency. As such, the silhouette does not completely block any feature of the design in the 3D space, and all features of the design in the 3D space can be at least partially seen through the silhouette.

For example, a user can select one of the objects in the 3D space and select a silhouette mode or full 3D mode. When the user selects the silhouette mode, the object is rendered as a silhouette in the 3D space. Further, when an object is in the silhouette mode, the user can further change the properties of the silhouette, including (but not limited to) (1) a color of an outline of the silhouette, (2) a weight of an outline of the silhouette, (3) a color filling in the silhouette, (4) an opacity level of an outline of the silhouette, and/or (5) an opacity level of a color filling in the silhouette.

Further, in some embodiments, the silhouette may be in an animated mode or a fixed mode. When the silhouette is in the animated mode, the silhouette is an animated silhouette configured to perform a sequence of motions in the 3D space at a particular speed. When the silhouette is in the fixed mode, the silhouette is fixed at a particular position in the 3D space, holding still.

In some embodiments, the 3D rendering engine150further includes a shadow rendering engine156configured to compute a shape and color of a shadow of a silhouette based on lighting and depth of each surface where the shadow overlaps in the 3D space. A user can select a shadow mode or a no-shadow mode for a silhouette. When the shadow mode is selected for the silhouette, a shadow of the silhouette is rendered in the 3D view.

In some embodiments, the 3D rendering engine150further includes a sketch rendering engine158configured to compute sketch lines inside a silhouette based on a shape of the object and lighting of the three-dimensional space. A user can select a sketch mode or a no-sketch mode for a silhouette. When the sketch mode is selected for the silhouette, sketch lines inside the silhouette is rendered. Additionally or alternatively, the sketch mode may comprise an animated character122filled in with images, patterns, or textures of any opacity level that have a similar sketching mode applied to the outline. In some embodiments, the user can also make changes to the color of the sketch lines and/or the opacity of the sketch lines.

In some embodiments, the user can place as many silhouette objects in the 3D space as desired. When multiple silhouettes having different opacities are placed in the same 3D space, two or more of the silhouettes may overlap in certain views. For example, when a first silhouette at least partially overlaps a second silhouette in a particular view of the 3D space, the transparent rendering engine144or154further performs color blending (such as, but not limited to, alpha blending) in an overlapping area among the first silhouette, the second silhouette, and the 3D space to create an appearance of full opaque, partial or full transparency.

FIGS.2-8illustrate various examples of GUIs configured to allow a user to change one or more properties of a silhouette.FIG.2illustrates a 3D view of an environment200in which an animated character210ais rendered as a semi-transparent silhouette having a black outline220and filled in with a grey color230. Because the character is an animated character210a,the pose of the character may vary with time as the character moves within the environment200.FIG.3illustrates additional 3D views of the same environment200in which the same animated character210ais rendered as a semi-transparent silhouette having a different pose, a different colored outline310, and filled with a different color300. Notably, the silhouettes inFIGS.2and3are in a no-shadow mode, (i.e., no shadow of the silhouettes is rendered in the 3D space) and a no-sketch mode (i.e., no sketch lines are rendered inside the silhouettes).

FIG.4illustrate additional 3D views of the same environment200, in which the same animated character210ais rendered as a semi-transparent silhouette in a sketch mode400. As illustrated, in the sketch mode400, the silhouettes not only have an outline that outlines the border of the silhouettes, but also include sketch lines added therein. This mode may be beneficial in renderings that have a large number of background items in order to clearly distinguish the location and position of the animated character210ain order to accurately provide relative dimensions of the rendered space.

FIG.5illustrates a pop-up menu500displayed next to a silhouette of the same animated character210a,which may be triggered by double-clicking or right-clicking the silhouette, and/or interacting with other control elements in the GUI, and/or via typed-in commands or quick access keys. The pop-up menu500includes a number of control elements that a user can select, including (but not limited to) properties, finishes, refresh, deselect all, focus depth of field on select, zoom to in plane view, zoom to in 3D, measure tool, export to i3Dx, show connections dialog, etc. When the user selects the properties control element, properties settings are presented to the user, and the user can make changes to those properties settings.

Similarly, in at least one embodiment, a GUI of properties and finishes editor may be displayed within the software application. For example, a properties and finishes editor may allow a user to modify the properties of an individual silhouette or all of the silhouettes. Accordingly, the silhouettes can be customized individually or as a group. The user can select a silhouette mode or a full 3D mode. When the silhouette mode is selected, the character in the 3D space is displayed as a silhouette; and when the silhouette mode is not selected, the character in the 3D space is displayed as a regular 3D object. Further, the user can also modify the opacity of the silhouette. Additionally, the user can select whether a shadow or an outline is to be rendered. Finally, when the outline is to be rendered, the user can also select the color of the outline. Additionally, embodiments may provide a color selector as a pop-up window that allows a user to select any desired color for filling the silhouette or the outline of the silhouette.

FIG.6illustrates a GUI600showing a top view of the 3D space200. On the left of the GUI600, a user can select different 3D characters210and place a selected character210at a particular location in the 3D space. In at least one embodiment, each of the different 3D characters210may be associated with characteristics, such as virtual height, that a designer is able to select from to accurately depict the scale of the design when rendered. In some embodiments, after a 3D character210is placed in the 3D space200, the 3D character210is displayed in the full 3D mode, and a user can change the display of the 3D character210from the full 3D mode to the silhouette mode.

FIG.7further illustrates that multiple 3D characters210b,210c,210din the form of semi-transparent silhouettes may be displayed in the same 3D space. When two of the silhouettes of 3D characters210b,210cpartially overlap each other, the overlapping area is rendered based on color blending (such as, but not limited to alpha blending), such that none of the two silhouettes completely blocks any feature of the design in the 3D space, and all the features of the design in the 3D space can be at least partially seen through the two silhouettes.

FIG.8illustrates that 3D characters210c,210fmay be positioned behind a semi-transparent material800within a 3D view of an environment200. The 3D characters210c,210fmay comprise silhouettes that are colored and of varying degrees of transparency, outlines that are colored or uncolored, a sketch mode, or any number of other characteristics disclosed herein. Viewing the 3D characters210c,210fthrough the semi-transparent material800allows a viewer to have a greater appreciation for the opacity of the semi-transparent material and the general scale of the environment200without the distraction or rendering burden of depicting a full life-like view of a human.

FIG.9illustrates a flowchart of an example method900for rendering a 3D object as a silhouette in a 3D space. The method900includes generating a design file representing a 3D space (act910). The method900further includes receiving a first user input placing a 3D object in the 3D space (act920). The first user input may include placing a 3D character in the 3D space (act922) and/or placing a 3D furniture piece in the 3D space (act924). In response to receiving the first user input, the object is placed in the 3D space as a silhouette (act930).

Each of the silhouettes rendered in the 3D space includes a set of properties. In some embodiments, the method900further includes receiving a second user input, changing at least one of the set of properties of the silhouette (act940). The second user input may include an input that (1) changes a color of an outline of the silhouette (act942), (2) changes a color filling in the silhouette (act944), (3) changes a weight of an outline of the silhouette (act950), (4) adds a shadow or remove a shadow of the silhouette (act952), (5) changes an opacity level of an outline of the silhouette (act946), (6) change an opacity level of a color filling in the silhouette (act948), (7) changes the silhouette between an animated mode or a fixed mode (act954), and/or (8) adds or remove sketch lines inside the silhouette (act956). Finally, in response to the second user input, the silhouette is re-rendered in the 3D space based on the updated properties (act960).

Finally, because the principles described herein may be performed in the context of a computing system (for example, the CAD software is stored and executed in a computing system) some introductory discussion of a computing system will be described with respect toFIG.10.

Computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, distributed computing systems, data centers, or even devices that have not conventionally been considered a computing system, such as wearables (e.g., glasses). In this description and in the claims, the term “computing system” is defined broadly as including any device or system (or a combination thereof) that includes at least one physical and tangible processor, and a physical and tangible memory capable of having thereon computer-executable instructions that may be executed by a processor. The memory may take any form and may depend on the nature and form of the computing system. A computing system may be distributed over a network environment and may include multiple constituent computing systems.

As illustrated inFIG.10, in its most basic configuration, a computing system1000typically includes at least one hardware processing unit1002and memory1004. The processing unit1002may include a general-purpose processor and may also include a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or any other specialized circuit. The memory1004may be physical system memory, which may be volatile, non-volatile, or some combination of the two. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. If the computing system is distributed, the processing, memory and/or storage capability may be distributed as well.

The computing system1000also has thereon multiple structures often referred to as an “executable component”. For instance, memory1004of the computing system1000is illustrated as including executable component1006. The term “executable component” is the name for a structure that is well understood to one of ordinary skill in the art in the field of computing as being a structure that can be software, hardware, or a combination thereof. For instance, when implemented in software, one of ordinary skill in the art would understand that the structure of an executable component may include software objects, routines, methods, and so forth, that may be executed on the computing system, whether such an executable component exists in the heap of a computing system, or whether the executable component exists on computer-readable storage media.

The term “executable component” is also well understood by one of ordinary skill as including structures, such as hardcoded or hard-wired logic gates, that are implemented exclusively or near-exclusively in hardware, such as within a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or any other specialized circuit. Accordingly, the term “executable component” is a term for a structure that is well understood by those of ordinary skill in the art of computing, whether implemented in software, hardware, or a combination. In this description, the terms “component”, “agent”, “manager”, “service”, “engine”, “module”, “virtual machine” or the like may also be used. As used in this description and in the case, these terms (whether expressed with or without a modifying clause) are also intended to be synonymous with the term “executable component”, and thus also have a structure that is well understood by those of ordinary skill in the art of computing.

In the description above, embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors (of the associated computing system that performs the act) direct the operation of the computing system in response to having executed computer-executable instructions that constitute an executable component. For example, such computer-executable instructions may be embodied in one or more computer-readable media that form a computer program product. An example of such an operation involves the manipulation of data. If such acts are implemented exclusively or near-exclusively in hardware, such as within an FPGA or an ASIC, the computer-executable instructions may be hardcoded or hard-wired logic gates. The computer-executable instructions (and the manipulated data) may be stored in the memory1004of the computing system1000. Computing system1000may also contain communication channels1008that allow the computing system1000to communicate with other computing systems over, for example, network1010.

While not all computing systems require a user interface, in some embodiments, the computing system1000includes a user interface system1012for use in interfacing with a user. The user interface system1012may include output mechanisms1012A as well as input mechanisms1012B. The principles described herein are not limited to the precise output mechanisms1012A or input mechanisms1012B as such will depend on the nature of the device. However, output mechanisms1012A might include, for instance, speakers, displays, tactile output, holograms and so forth. Examples of input mechanisms1012B might include, for instance, microphones, touchscreens, holograms, cameras, keyboards, mouse or other pointer input, sensors of any type, and so forth.

Computer-readable storage media includes RAM, ROM, EEPROM, CD-ROM, or other optical disk storage, magnetic disk storage, or other magnetic storage devices, or any other physical and tangible storage medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general-purpose or special purpose computing system.

The remaining figures may discuss various computing system which may correspond to the computing system1000previously described. The computing systems of the remaining figures include various components or functional blocks that may implement the various embodiments disclosed herein as will be explained. The various components or functional blocks may be implemented on a local computing system or may be implemented on a distributed computing system that includes elements resident in the cloud or that implement aspect of cloud computing. The various components or functional blocks may be implemented as software, hardware, or a combination of software and hardware. The computing systems of the remaining figures may include more or less than the components illustrated in the figures and some of the components may be combined as circumstances warrant. Although not necessarily illustrated, the various components of the computing systems may access and/or utilize a processor and memory, such as processor1002and memory1004, as needed to perform their various functions.

For the processes and methods disclosed herein, the operations performed in the processes and methods may be implemented in differing order. Furthermore, the outlined operations are only provided as examples, and some of the operations may be optional, combined into fewer steps and operations, supplemented with further operations, or expanded into additional operations without detracting from the essence of the disclosed embodiments.