Construction projects are often complex endeavors involving the coordination of many professionals across several discrete phases. Typically, a construction project commences with a design phase, where architects design the overall shape and layout of a construction project, such as a building. Next, engineers step in during a planning phase where they take the architects' designs and produce engineering drawings and plans for the construction of the project. At this stage, engineers may also design various portions of the project's infrastructure, such as HVAC, plumbing, electrical, etc., and produce plans reflecting these designs as well. After, or perhaps in conjunction with, the planning phase, contractors may step in during a logistics phase to review these plans and begin to allocate various resources to the project, including determining what materials to purchase, scheduling delivery, and developing a plan for carrying out the actual construction of the project. Finally, during the construction phase, construction professionals begin to construct the project based on the finalized plans.
As a general matter, one phase of a construction project involves the creation, review, and sometimes revision, of plans of the construction project. In most cases, these plans comprise visual representations of the construction project that visually communicate information about the construction project, such as how to assemble or construct the project. Such visual representations tend to take one of at least two different forms. One form may be a two-dimensional technical drawing, such as an architectural drawing or a construction blueprint, in which two-dimensional line segments of the drawing represent certain physical elements of the construction project like walls and ducts. In this respect, a two-dimensional technical drawing could be embodied either in paper form or in a computerized form, such as an image file (e.g., a PDF, JPEG, etc.).
To advance over two-dimensional technical drawings, computerized, three-dimensional technology was developed as another form in which information about a construction project can be visually communicated. In this respect, a three-dimensional model of the construction project is typically embodied in a computerized form, such as in a building information model (BIM) file, with three-dimensional meshes visually representing the physical elements of the construction project (e.g., walls, ducts, etc.). Correspondingly, specialized software has been developed that is capable of accessing a BIM file and, based on this BIM file, rendering a three-dimensional view of the construction project from one or more perspectives.
Such software tools that render these three-dimensional views typically provide an ability to adjust the perspective at which the three-dimensional view is presented. For instance, one way a software tool may do this is by repositioning the perspective either forward or backward along an x-axis of the model in response to receiving a first type of user input via a peripheral, such as pressing the up arrow or down arrow on a keyboard or a click and drag with a mouse. The software tool may reposition the perspective laterally along a y-axis of the model in response to receiving a second type of user input via a peripheral, such as pressing the left arrow or right arrow on a keyboard or a different type of click and drag with a mouse. The software tool may reposition the perspective either up or down along a z-axis of the model in response to receiving a third type of user input via a peripheral, such as pressing a combination of keys on a keyboard (e.g., the Control key and the up arrow, or the Control key and the down arrow) or yet a different type of click and drag with a mouse. The software tool may reposition the orientation of the perspective in response to receiving a fourth type of user input via a peripheral, such as pressing a combination of keys on a keyboard (e.g., the Alt key and the up arrow, or the Control key and the down arrow) or yet a different type of click and drag with a mouse.
However, these approaches suffer from several drawbacks. For instance, in some cases, the software tool may only reposition the perspective so long as the user input is ongoing. And as screen real estate tends to be limited, a user may have to engage in repeated user inputs (e.g., repeated clicks and drags or repeated swipes) in order to reposition the perspective a relatively long distance, which tends to be more prone to user error and may thus result in a poor user experience. Additionally, in some cases, the software tool may only reposition the perspective in the direction of the perspective's orientation. Thus, repositioning the perspective in a direction other than the direction of the current perspective (e.g., repositioning directly along the z-axis only (i.e., straight up, vertically) or repositioning directly along one of the lateral axes only may require multiple user inputs (e.g., a first user input to re-orient the perspective in the desired direction, a second user input to reposition the perspective, and a third user input to re-orient the perspective back to a desired perspective). The number of user inputs required to reposition the perspective in the desired manner and to a desired location may be unexpectedly high and may thus too result in a poor user experience.
To address these problems (among others), disclosed herein is software technology that facilitates improved navigation of a three-dimensional BIM view. In one aspect, disclosed herein is a BIM viewer tool that may facilitate navigation of the three-dimensional BIM view by adjusting the perspective along either or both of the lateral axes. In another aspect, the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the perspective directly along the vertical axis. And in yet another aspect, the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the orientation of the perspective along the two lateral axes and the vertical axis.
To facilitate these types of navigation, the BIM viewer tool may generate a GUI that presents the three-dimensional BIM view as well as one or more navigational controls overlaid on the three-dimensional BIM view. The BIM viewer tool may also be configured to receive a user input at the navigational controls (e.g., a touch, or a touch combined with a drag), and, based on a respective user input, change the position of the perspective from which the BIM viewer tool renders the three-dimensional BIM view.
In some embodiments, these navigational controls may take the form of one or more of (1) a “Walk” navigational control through which a user may provide a user input in order to reposition the perspective of the three-dimensional BIM view in any direction laterally and at variable speed regardless of the current perspective's orientation, (2) an “Up/Down” navigational control through which a user may provide a user input in order to reposition the perspective of the three-dimensional BIM view up or down along the vertical Z-axis and at variable speed regardless of the current perspective's orientation, (3) a “Look” navigational control through which a user may provide a user input in order to reposition the orientation of the perspective of the three-dimensional BIM view in any direction laterally and at variable speed regardless of the current perspective's orientation, (4) a two-dimensional inset control through which a user may immediately relocate the perspective to any position within the construction project and at any orientation, and (5) an “elevation control” control through which a user may provide a user input in order to reposition the perspective of the three-dimensional BIM view to a preset position along the vertical Z-axis to provide a view of a particular floor of the construction project, among combinations of the forgoing navigational controls as well as other possibilities.
Accordingly, in one aspect, disclosed herein is a computer-implemented method that involves (a) rendering via a graphical user interface (GUI) a three-dimensional view of a construction project using a three-dimensional model file that defines a set of meshes, wherein the GUI includes first, second, and third navigational controls and the three-dimensional view of the construction project has a perspective from which the view is presented, (b) based on respective user inputs received via the first, second, and third navigational controls, receiving respective indications, each including at least a respective direction component, (c) and responsive to receiving a given respective indication, repositioning the perspective from which the three-dimensional view of the construction project is generated based on the respective direction component included in the given respective indication.
In another aspect, disclosed herein is a computing system that comprises at least one processor, a non-transitory computer-readable medium, and program instructions stored on the non-transitory computer-readable medium that are executable by the at least one processor to cause the computing system to carry out the operations disclosed herein, including but not limited to the operations of the foregoing method.
In yet another aspect, disclosed herein is a non-transitory computer-readable medium comprising program instructions that are executable to cause a computing system to carry out the operations disclosed herein, including but not limited to the operations of the foregoing method.
One of ordinary skill in the art will appreciate these as well as numerous other aspects in reading the following disclosure.
Please note that this patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.
The following disclosure makes reference to the accompanying figures and several example embodiments. One of ordinary skill in the art should understand that such references are for the purpose of explanation only and are therefore not meant to be limiting. Part or all of the disclosed systems, devices, and methods may be rearranged, combined, added to, and/or removed in a variety of manners, each of which is contemplated herein.
The present disclosure is generally directed to software technology for managing construction projects, and in particular to a software tool that facilitates (i) the identification of Coordination Issues in a construction project, and (ii) the synchronization of these Coordination Issues among multiple instances of the software tool for use by multiple construction professionals. As one possible implementation, this software technology may include both front-end software running on client stations that are accessible to individuals associated with construction projects (e.g., contractors, project managers, architects, engineers, designers, etc., each of which may be referred to generally herein as a “construction professional”) and back-end software running on a back-end platform (sometimes referred to as a “cloud” platform) that interacts with and/or drives the front-end software, and which may be operated (either directly or indirectly) by the provider of the front-end client software. As another possible implementation, this software technology may include front-end client software that runs on client stations without interaction with a back-end platform. The software technology disclosed herein may take other forms as well.
In general, such front-end client software may enable one or more individuals responsible for a construction project to perform various tasks related to the management of the construction project, which may take various forms. According to some implementations, these tasks may include: rendering three-dimensional views of the construction project and navigating through the various three-dimensional views of the construction project in order to observe the construction project from various perspectives, as some non-limiting examples. Further, such front-end client software may take various forms, examples of which may include a native application (e.g., a mobile application) and/or a web application running on a client station, among other possibilities.
Turning now to the figures,
Broadly speaking, back-end platform 102 may comprise one or more computing systems that have been provisioned with software for carrying out one or more of the functions disclosed herein, including but not limited to identifying Coordination Issues in a construction project, synchronizing these Coordination Issues among multiple instances of the software tool for use by multiple construction professionals, rendering three-dimensional views of models of a construction project, and/or transmitting data and/or instructions that cause one or more client stations 112 to output information related to a construction project, including the rendered views of the three-dimensional model of the construction project, and/or information related to the identified Coordination Issues. The one or more computing systems of back-end platform 102 may take various forms and be arranged in various manners.
For instance, as one possibility, back-end platform 102 may comprise computing infrastructure of a public, private, and/or hybrid cloud (e.g., computing and/or storage clusters) that has been provisioned with software for carrying out one or more of the functions disclosed herein. In this respect, the entity that owns and operates back-end platform 102 may either supply its own cloud infrastructure or may obtain the cloud infrastructure from a third-party provider of “on demand” computing resources, such include Amazon Web Services (AWS) or the like. As another possibility, back-end platform 102 may comprise one or more dedicated servers that have been provisioned with software for carrying out one or more of the functions disclosed herein. Other implementations of back-end platform 102 are possible as well.
In turn, client stations 112 may each be any computing device that is capable of running the front-end software disclosed herein. In this respect, client stations 112 may each include hardware components such as a processor, data storage, a user interface, and a network interface, among others, as well as software components that facilitate the client station's ability to run the front-end software disclosed herein (e.g., operating system software, web browser software, etc.). As representative examples, client stations 112 may each take the form of a desktop computer, a laptop, a netbook, a tablet, a smartphone, and/or a personal digital assistant (PDA), among other possibilities.
As further depicted in
The interaction between client stations 112 and back-end platform 102 may take various forms. As one possibility, client stations 112 may send certain user input related to a construction project to back-end platform 102, which may in turn trigger back-end platform 102 to take one or more actions based on the user input. As another possibility, client stations 112 may send a request to back-end platform 102 for certain project-related data and/or a certain front-end software module, and client stations 112 may then receive project-related data (and perhaps related instructions) from back-end platform 102 in response to such a request. As yet another possibility, back-end platform 102 may be configured to “push” certain types of project-related data to client stations 112, such as rendered three-dimensional views, in which case client stations 112 may receive project-related data (and perhaps related instructions) from back-end platform 102 in this manner. As still another possibility, back-end platform 102 may be configured to make certain types of project-related data available via an API, a service, or the like, in which case client stations 112 may receive project-related data from back-end platform 102 by accessing such an API or subscribing to such a service. The interaction between client stations 112 and back-end platform 102 may take various other forms as well.
Although not shown in
It should be understood that network configuration 100 is one example of a network configuration in which embodiments described herein may be implemented. Numerous other arrangements are possible and contemplated herein. For instance, other network configurations may include additional components not pictured and/or more or less of the pictured components.
Processor 202 may comprise one or more processor components, such as general-purpose processors (e.g., a single- or multi-core microprocessor), special-purpose processors (e.g., an application-specific integrated circuit or digital-signal processor), programmable logic devices (e.g., a field programmable gate array), controllers (e.g., microcontrollers), and/or any other processor components now known or later developed. In line with the discussion above, it should also be understood that processor 202 could comprise processing components that are distributed across a plurality of physical computing devices connected via a network, such as a computing cluster of a public, private, or hybrid cloud.
In turn, data storage 204 may comprise one or more non-transitory computer-readable storage mediums, examples of which may include volatile storage mediums such as random-access memory, registers, cache, etc. and non-volatile storage mediums such as read-only memory, a hard-disk drive, a solid-state drive, flash memory, an optical-storage device, etc. In line with the discussion above, it should also be understood that data storage 204 may comprise computer-readable storage mediums that are distributed across a plurality of physical computing devices connected via a network, such as a storage cluster of a public, private, or hybrid cloud.
As shown in
Communication interface 206 may be configured to facilitate wireless and/or wired communication with configured other computing devices or systems, such as one or more client stations 112 when computing device 200 serves as back-end platform 102, or as back-end platform 102 when computing device 200 serves as one of client stations 112. As such, communication interface 206 may take any suitable form for carrying out these functions, examples of which may include an Ethernet interface, a serial bus interface (e.g., Firewire, USB 3.0, etc.), a chipset and antenna adapted to facilitate wireless communication, and/or any other interface that provides for wireless and/or wired communication. Communication interface 206 may also include multiple communication interfaces of different types. Other configurations are possible as well.
Although not shown, computing device 200 may additionally include one or more other interfaces that provide connectivity with external user-interface equipment (sometimes referred to as “peripherals”), such as a keyboard, a mouse or trackpad, a display screen, a touch-sensitive interface, a stylus, a virtual-reality headset, speakers, etc., which may allow for direct user interaction with computing device 200.
It should be understood that computing device 200 is one example of a computing device that may be used with the embodiments described herein. Numerous other arrangements are possible and contemplated herein. For instance, other computing devices may include additional components not pictured and/or more or fewer of the pictured components.
As mentioned above, one aspect of managing a construction project involves the creation, review, and sometimes revision, of plans for the construction project. These plans assist construction professionals in carrying out the construction project. For example, some plans include written statements, such a punch list or submittal log, which may communicate, for instance, what materials are needed during construction. Other plans may include visual representations of the construction project that visually communicate to the construction professionals how to assemble or construct the project.
Depending on the type of construction project, these visual representations tend to take one of two different forms. As one possibility, these visual representations may take the form of a set of two-dimensional technical drawings, such as architectural drawings, engineering schematics, or construction blueprints, among others. From these two-dimensional technical drawings, the construction professionals can determine how to construct the project. As another possibility, these visual representations may take the form of a computerized, three-dimensional visual representation of the construction project. Construction professionals can use a corresponding software tool to review the three-dimensional visual representation, often in conjunction with a review of two-dimensional technical drawings, as an aid during the construction process.
In order to facilitate the creation and use of a computerized, three-dimensional model of the construction project, a team of architects, designers, and/or engineers may engage in a process referred to as Building Information Modeling. As a general matter, Building Information Modeling refers to the process of designing and maintaining a computerized representation of physical and functional characteristics of a construction project, such as a building. Specialized software tools can then access this computerized representation and process it to visually communicate how to construct the building via a navigable, three-dimensional model of the building and its infrastructure.
More specifically, but still by way of example, when architects, designers, and/or engineers engage in Building Information Modeling for a specific construction project, they generally produce what is referred to as a Building Information Model (BIM) file. In essence, a BIM file is a computerized description of the individual physical elements that comprise the construction project, such as the physical structure of the building, including walls, floors, and ceilings, as well as the building's infrastructure, including pipes, ducts, conduits, etc. This computerized description can include a vast amount of data describing the individual physical elements of the construction project and the relationships between these individual physical elements, including for instance, the relative size and shape of each element, and an indication of where each element will reside in relation to the other elements in the construction project.
BIM files can exist in one or more proprietary or open-source computer-file formats and are accessible by a range of specialized software tools. One type of specialized software tool that can access BIM files is referred to as a “BIM viewer.” A BIM viewer is software that accesses the information contained within a BIM file or a combination of BIM files for a particular construction project and then, based on that file or those files, is configured to cause a computing device to render a three-dimensional view of the computerized representation of the construction project. This view is referred to herein as a “three-dimensional BIM view” or simply a “three-dimensional view.”
In order for BIM viewer software to be able to cause a computing device to render a three-dimensional view of the construction project, BIM files typically contain data that describes the attributes of each individual physical element (e.g., the walls, floors, ceilings, pipes, ducts, etc.) of the construction project. For instance, for an air duct designed to run across the first-floor ceiling of a building, a BIM file for this building may contain data describing how wide, how long, how high, and where, in relation to the other individual physical elements of the construction project, the duct is positioned.
There are many ways for BIM files to arrange and store data that describes the attributes of the individual physical elements of a construction project. In one specific example, BIM files may contain data that represents each individual physical component in the construction project (e.g., an air duct) as a mesh of geometric triangles such that when the geometric triangles are visually stitched together by BIM viewer software, the triangles form a mesh, which represents a scaled model of the physical component (e.g., the air duct). In this respect, the BIM file may contain data that represents each triangle of a given mesh as set of coordinates in three-space. For instance, for each triangle stored in the BIM file, the BIM file may contain data describing the coordinates of each vertex of the triangle (e.g., an x-coordinate, a y-coordinate, and a z-coordinate for the first vertex of the triangle; an x-coordinate, a y-coordinate, and a z-coordinate for the second vertex of the triangle; and an x-coordinate, a y-coordinate, and a z-coordinate for the third vertex of the triangle). A given mesh may be comprised of thousands, tens of thousands, or even hundreds of thousands of individual triangles, where each triangle may have a respective set of three vertices and corresponding sets of three-space coordinates for those vertices. However, other ways for a BIM file to contain data that represents each individual physical component in a construction project are possible as well.
In addition to data describing the individual triangles of a mesh, some BIM files may contain additional data that helps to summarize information relating to the various meshes. For instance, a BIM file may contain, for each mesh, data describing a “bounding box.” Conceptually, a bounding box is an imaginary box surrounding the mesh on all sides, with the edges of this box being located at the outermost edges of the mesh. As such, the entire mesh fits inside of this bounding box with no part of the mesh protruding from the bounding box. In this way, the bounding box represents the maximum dimensions of the mesh in rectangular form. BIM viewer software may utilize bounding boxes stored in BIM files in various ways. For instance, it usually takes less storage space to store data describing a bounding box compared to data describing an entire mesh. This is due to the fact that a mesh may comprise of many thousands of triangles in order to accurately represent the mesh's surface, which in some cases is irregular (e.g., the curved surface of a pipe), whereas a bounding box can typically be represented by data describing just eight vertices of a rectangular box. Some BIM viewer software may be configured to operate in a mode designed to conserve processing power and/or storage space in which the BIM viewer software causes a computing device to render just bounding boxes as opposed to rendering the full meshes. By doing so, the BIM viewer software can visually communicate a “low resolution” version of the construction project. Other ways of utilizing bounding boxes, and other ways of containing additional data to help summarize information relating to the various meshes, are possible as well.
BIM files may contain additional data as well, including data describing other attributes of the individual physical elements of the construction project that may or may not be related to the element's specific position in three space. By way of example, this data may include data describing what system or sub-system the component is associated with (e.g., structural, plumbing, HVAC, electrical, etc.), data describing what material or materials the individual physical element is made of; what manufacturer the element comes from; what stage of manufacture the element is in; where the element currently resides (e.g., data indicating that the element is on a truck for delivery to the construction site, and/or once delivered, data indicating where at the construction site the delivered element resides); and/or various identification numbers assigned to the element (e.g., a serial number, part number, model number, tracking number, etc.), as well as others.
Together, these other attributes are generally referred to as metadata. BIM viewer software may utilize this metadata in various ways. For instance, some BIM viewer software may be configured to present different views based on metadata (e.g., displaying all meshes that represent HVAC components but hiding all meshes that represent plumbing components; and/or displaying meshes representing metal components in a certain color and displaying meshes representing wood components in another color, etc.). Alternatively or additionally, BIM viewers can display certain subsets of the metadata based on user input. For example, a user may provide a user input to the BIM viewer software though a click or tap on a GUI portion displaying a given mesh, and in response, the BIM viewer software may cause a GUI to display some or all of the attributes of the physical element represented by the given mesh. Other examples are possible as well.
As mentioned, BIM viewer software is generally deployed on client stations, such as client stations 112 of
As noted, BIM viewer software operates to render a three-dimensional BIM view such that it presents a three-dimensional view of a construction project from a particular perspective. To illustrate one example of a rendered three-dimensional BIM view,
As depicted, snapshot 300 includes a three-dimensional view of a construction project from a particular perspective. The three-dimensional view depicted in
As a general matter, a perspective from which the BIM viewer renders a three-dimensional BIM view, generally has four components: (1) an X-component, which reflects the position of the perspective along a lateral x-axis of the scaled model; (2) a Y-component, which reflects the position of the perspective along a lateral y-axis of the scaled model (where the lateral y-axis is perpendicular to the lateral x-axis); (3) a Z-component, which reflects the position of the perspective along a vertical z-axis of the scaled model (where the vertical z-axis is perpendicular to both the lateral x-axis and the lateral y-axis); and (4) an orientation, which reflects the direction of the perspective (where the “orientation” component is sometimes connotatively referred to as a “camera angle.”).
The orientation component of the perspective can be broken down into two subcomponents: (i) a lateral angle, which reflects the direction of the perspective within a lateral plane; and (ii) a vertical angle, which reflects the direction of the perspective within a vertical plane. For example, an orientation with a lateral angle of 0° may look straight “North;” an orientation with a lateral angle of 90° may look straight “East;” an orientation with a lateral angle of 180° may look straight “South;” and an orientation with a lateral angle of 270° may look straight “West,” although any angle from 0° to 360° is possible. Moreover, an orientation with a vertical angle of 0° may look straight up, an orientation with a lateral angle of 90° may look straight level with the ground, and an orientation with a lateral angle of 180° may look straight down, although any angle from 0° to 180° is possible. Although the cardinal directions “North,” “East,” “South,” and “West” are used here to help conceptualize the lateral plane, it should be understood that in practice, an orientation with a lateral angle of 0° may not necessarily reflect a view that looks into the Cardinal direction North.
A client station presenting snapshot 300 may be configured to adjust the perspective at which the three-dimensional view is presented in response to, for instance, receiving user inputs at the client station. In some configurations, a client station may do this in various ways. As one possibility, the client station may reposition the perspective either forward or backward along an x-axis of the model in response to receiving a first type of user input via a peripheral, such as pressing the up arrow or down arrow on a keyboard or a click and drag with a mouse. The client station may reposition the perspective laterally along a y-axis of the model in response to receiving a second type of user input via a peripheral, such as pressing the left arrow or right arrow on a keyboard or a different type of click and drag with a mouse. The client station may reposition the perspective either up or down along a z-axis of the model in response to receiving a third type of user input via a peripheral, such as pressing a combination of keys on a keyboard (e.g., the Control key and the up arrow, or the Control key and the down arrow) or yet a different type of click and drag with a mouse. The client station may reposition the orientation of the perspective in response to receiving a fourth type of user input via a peripheral, such as pressing a combination of keys on a keyboard (e.g., the Alt key and the up arrow, or the Control key and the down arrow) or yet a different type of click and drag with a mouse.
As another possibility, the computing device may reposition the perspective simultaneously along a combination of one or more of the x-axis, the y-axis, and the z-axis of the model in response to receiving a first type of user input at a touch-screen of the computing device, such as a touch and drag gesture made with one finger (sometimes connotatively referred to as a “swipe”). For instance, in response to a touch and drag, the computing device may reposition the perspective a threshold amount in the direction of the perspective's orientation. The computing device may reposition the orientation of the perspective in response to receiving a second type of user input at a touch-screen of the computing device, such as a touch and drag gesture made with two fingers. However, other examples of adjusting the perspective at which the three-dimensional view is presented are possible as well.
These configurations, however, suffer from several drawbacks. For instance, in such configurations the computing device may only reposition the perspective so long as the user input is ongoing. For instance, in embodiments in which the computing device repositions the perspective in response to receiving a touch and drag user input, the computing device may only reposition the perspective during the drag portion of the user input. As screen real estate tends to be limited, the user may have to engage in repeated user inputs (e.g., repeated swipes) in order to reposition the perspective a relatively long distance, which tends to be more prone to user error and may thus result in a poor user experience. Additionally, in such configurations the computing device may only reposition the perspective in the direction of the perspective's orientation. Thus, repositioning the perspective in a direction other than the direction of the current perspective (e.g., repositioning directly along the z-axis only (i.e., straight up, vertically) or repositioning directly along one of the lateral axes only may require multiple user inputs (e.g., a first user input to re-orient the perspective in the desired direction, a second user input to reposition the perspective, and a third user input to re-orient the perspective back to a desired perspective). The number of user inputs required to reposition the perspective in the desired manner and to a desired location may be unexpectedly high and may thus too result in a poor user experience.
To address these problems (among others), disclosed herein is software technology that facilitates improved navigation of a three-dimensional BIM view. In one aspect, disclosed herein is a BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the perspective along either or both of the lateral axes. In another aspect, the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the perspective directly along the vertical axis. And in yet another aspect, the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the orientation of the perspective along the two lateral axes and the vertical axis. To facilitate these types of navigation, the BIM viewer tool may generate a GUI that presents the three-dimensional BIM view as well as one or more navigational controls overlaid on the three-dimensional BIM view. The BIM viewer tool may also be configured to receive a user input at the navigational controls (e.g., a touch, or a touch combined with a drag), and, based on a respective user input, change the position of the perspective from which the BIM viewer tool renders the three-dimensional BIM view.
To illustrate the features and functionality of the disclosed BIM viewer tool on a more detailed level (but still by way of example), set forth below is a description that makes reference to
It should be understood that each block in a flow diagram 500 may represent a module or portion of program code that includes instructions that are executable by a processor to implement specific logical functions or steps in a process. The program code may be stored on any type of computer-readable medium, such as non-transitory computer readable media (e.g., data storage 204 (
Further, as a general matter, when reference is made herein to “a BIM viewer tool” or “the BIM viewer tool” engaging in one or more operations, it should be understood that such operations may, in practice, be carried out by one or more computing devices executing one or more instances of the disclosed BIM viewer tool. In particular, it should be understood that such example operations may be carried out by a computing device, such as computing device 200 (
In accordance with one example of the disclosed BIM viewer tool,
As depicted, the GUI presented in snapshot 400 may include various navigational controls overlaid on the three-dimensional BIM view, examples of which may include a “Walk” navigational control 402, an “Up/Down” navigational control 404, a “Look” navigational control 406, an 2D inset control 408, and an elevation control 412. Set forth below is a description of the operation of each individual navigational control. It should be understood that although the description herein makes reference to a GUI that includes each of these example navigational controls (e.g., the GUI depicted in snapshot 400), other examples of GUIs are possible that include fewer than these navigational controls, with any combination being possible. Further, some implementations of the disclosed BIM viewer tool may provide the option to enable or disable any one or more of the navigational controls and may provide the option to make one or more of the navigational controls visible or invisible on the GUI.
With respect to the Walk navigational control 402, the BIM viewer tool may be generally configured to detect a user input received via the Walk navigational control 402 and responsively change the position of the perspective along one or more of the two lateral axes. As depicted, the Walk navigational control 402 may take the form of a joystick that a user can manipulate by touching and dragging in any 360° direction. In some implementations, when a user touches and drags the joystick in a particular direction, the BIM viewer tool receives an indication of the direction in which the user dragged the joystick and an indication of how far from the origin the user dragged the joystick. Based on these two indications, the BIM viewer tool identifies a position along the lateral X-axis and the lateral Y-axis of the scaled model from which to render a new three-dimensional BIM view.
To illustrate how the disclosed software tool determines this new position, reference will be made to
First, at block 502, a user may provide a user input to the computing device via the GUI by touching and dragging the joystick of Walk navigational control 402 in a particular direction away from the center. Responsively, the computing device executing the disclosed software tool receives an indication of the direction the user dragged the joystick (e.g., on a scale from 0° to) 360° and an indication of the distance from the center to which the user dragged the joystick (e.g., on a percentage scale, where 0% corresponds to no movement from the center and 100% corresponds to the maximum allowable movement from the center). In one implementation, these indications together form what is referred to as a joystick vector. One example of a joystick vector is 50% at 45°, which, in this context, represents a user input that dragged the joystick halfway to the maximum distance in a direction that is halfway between the straight up direction and the straight right direction. Other examples of joystick vectors are possible as well.
Next at block 504, the computing device executing the disclosed software tool may break the joystick vector into corresponding X- and Y-components for further processing. For instance, using trigonometry with the above example joystick vector of 50% at 45°, the device executing the disclosed software tool breaks the example joystick vector of into an X-component by multiplying 50% by)sine(45°, yielding an X-component of 35.4%, and a Y-component by multiplying 50% by)cosine(45°, yielding a Y-component of 35.4%.
Next at block 506, the computing device executing the disclosed software tool may compare the magnitude of each component of the joystick vector to a threshold magnitude (e.g., 10%). If either the X-component or the Y-component component of the joystick vector is smaller than this threshold magnitude, then the computing device executing the disclosed software tool may ignore that respective component and may this not further process determination of a new perspective based on that component. In some implementations, this threshold is user adjustable.
Next at block 508, the computing device executing the disclosed software tool may apply a non-linear scaling factor to each individual component of the joystick vector. In one example, the computing device executing the disclosed software tool squares each component of the joystick vector, but in other examples, the computing device executing the disclosed software tool may cube each component or may apply some other non-linear scaling factor. By doing so, the computing device executing the disclosed software tool provides, what appears to the user as, a faster navigation through the three-dimensional BIM view when the user drags the joystick far from the center and a slower navigation through the three-dimensional BIM view when the user drags the joystick a short distance from the center. In some implementations, this non-linear scaling factor is user adjustable as well.
Next at block 510, the computing device executing the disclosed software tool may apply a linear scaling factor to each individual component of the joystick vector. In one example, the computing device executing the disclosed software tool multiplies each component by a scalar value (e.g., 5.0). By doing so, the computing device executing the disclosed software tool provides a particular sensitivity to the Walk navigational control 402. In this respect, a higher scalar value will cause the device executing the disclosed software tool to move the perspective by a larger step size for a given movement of the joystick, whereas a lower scalar value will cause the device executing the disclosed software tool to move the perspective by a smaller step size for a given movement of the joystick. In some implementations, this linear scale factor is user-adjustable.
Next at block 512, after applying the above-described rules, the computing device executing the disclosed software tool may break each remaining component of the joystick vector into component parts specific to the scaled model. For instance, using trigonometry, the computing device executing the disclosed software tool breaks the X-component of the joystick vector into an X-movement-component, which reflects how much of the X-component of the joystick vector translates to movement along the lateral X-axis of the scaled model; and a Y-movement-component, which reflects how much of the X-component of the joystick vector translates to movement along the lateral Y-axis of the scaled model. The computing device executing the disclosed software tool does the same computation for the Y-component of the joystick vector as well. Specifically, the computing device executing the disclosed software tool breaks the Y-component of the joystick vector into an X-movement-component, which reflects how much of the Y-component of the joystick vector translates to movement along the lateral X-axis of the scaled model; and a Y-movement-component, which reflects how much of the Y-component of the joystick vector translates to movement along the lateral Y-axis of the scaled model.
Breaking each remaining component of the joystick vector into component parts specific to the scaled model typically depends on the initial lateral angle of the orientation component. Thus, when breaking each remaining component of the joystick vector into component parts specific to the scaled model, the computing device typically accounts for this initial lateral angle and calculates the component parts based on this initial lateral angle. To illustrate an example of this, in the example starting with a joystick vector of 50% at 45°, assume an initial lateral angle of the perspective's orientation to be 80° (in other words, it can be said that the “camera angle” in this example is oriented toward the “North-East,” 80° off due-North and 10° off due-East), although other orientations are possible in other examples. Here, the X-movement-component of the X-component of the joystick can be calculated by multiplying the X-component of the joystick vector by)cosine(80°, yielding 6.14, and the Y-movement-component of the of the X-component of the joystick vector can be calculated by multiplying the X-component of the joystick vector by) sine(80°, yielding 34.81. Similarly, the X-movement-component of the Y-component of the joystick can be calculated by multiplying the Y-component of the joystick vector by)sine(80°, yielding 34.81, and the Y-movement-component of the of the Y-component of the joystick vector can be calculated by multiplying the Y-component of the joystick vector by)cosine(80°, yielding 6.14. In other examples with other initial lateral angles of the orientation component and other joystick vectors, other movement components are possible.
Next at block 514, the computing device executing the disclosed software tool may then combine the two X-movement-components (i.e., the X-movement-component calculated from the X-component of the joystick vector and the X-movement-component calculated from the Y-component of the joystick vector) to determine the total amount of movement of the perspective along the lateral X-axis of the scale model. Likewise, the computing device executing the disclosed software tool may combine the two Y-movement-components (i.e., the Y-movement-component calculated from the X-component of the joystick vector and the Y-movement-component calculated from the Y-component of the joystick vector) to determine the total amount of movement of the perspective along the lateral Y-axis of the scale model. The computing device may combine the respective components in either an additive manner, a subtractive manner, or a combination of the two, depending on the initial lateral angle of the orientation component and the angle of the joystick vector.
For instance, if the initial lateral angle of the orientation component added to the angle of the joystick vector (sometimes referred to as the “resultant angle”) results in an angle between 0° and 90° inclusive, then the movement components are added together such that it results in a net movement in the positive X-direction and the Y-direction (or no movement along a particular axis if the resultant angle is exactly 0° or 90°). If the resultant angle is an angle greater than 90° and less than or equal to 180°, then the movement components are added together such that it results in a net movement in the positive X-direction but a net movement in the negative Y-direction (or no movement along the X-axis if the resultant angle is exactly 180°). If the resultant angle is an angle greater than 180° and less than or equal to 270°, then the movement components are added together such that it results in a net movement in the negative X-direction and the Y-direction (or no movement along the Y-axis if the resultant angle is exactly 270°). If the resultant angle is an angle greater than 270° and less than or equal to 360°, then the movement components are added together such that it results in a net movement in the negative X-direction but a net movement in the positive Y-direction (or no movement along the X-axis if the resultant angle is exactly 360° or) 0°. Of course, other ways to combine the movement components are possible as well.
Once the computing device appropriately combines the respective movement components, the computing device may then reposition the perspective in accordance with the calculated total amount of movement along the lateral X-axis of the scale model and the total amount of movement along the lateral Y-axis of the scale model and thereby render a new three-dimensional BIM view at this new perspective. Once the computing device executing the disclosed software tool renders a new three-dimensional BIM view, the computing device executing the disclosed software tool may return to the beginning of the process, where, if the user is still providing input via the Walk navigational control 402 of the GUI (e.g., if the user is holding the joystick at a particular position, or if the user has dragged the joystick to a new position), the device executing the disclosed software tool may receive an indication of this user input and identify a new perspective in accordance with the procedure set forth above.
In an alternative implementation of the Walk navigation control 402, the device executing the disclosed software tool may be configured to detect a user input received via the Walk navigational control 402 and responsively change the position of the perspective along one or more of the two lateral axes and the vertical z-axis. Like the implementation above, when a user touches and drags the joystick in a particular direction, the device executing the disclosed software tool receives an indication of the direction in which the user dragged the joystick and an indication of how far from the origin the user dragged the joystick. But rather than adjusting the perspective within just the two lateral axes, the device executing the disclosed software tool adjusts the perspective such that it appears to the user that the three-dimensional BIM view is being navigated along the plane of the orientation of the current perspective. Thus, in one example, where the current orientation of the perspective is 45° along the vertical axis (i.e., a view about halfway between looking straight up and straight level with the ground), then movement of the perspective will be adjusted upwards along this 45° plane.
To facilitate this, this process steps carried out by the device executing the disclosed software tool are largely the same, except that that once the joystick vector is broken down into corresponding X- and Y-components, the Y-component is further broken down into a Z-component and a resulting Y component by using trigonometry.
For instance, using the example joystick vector described above, the Y-component of the joystick vector was determined to be 35.4%. In accordance with this alternative implementation and using an example orientation angle along the vertical axis of 45°, the device executing the disclosed software tool further breaks down this Y-component into a Z-component by multiplying 35.4% by)sine(45°, yielding a Z-component of 25%, and a resulting-Y-component by multiplying 35.4% by)cosine(45°, yielding a resulting-Y-component of 25%. The device executing the disclosed software tool adjusts the perspective along the z-axis of the scale model by this determined Z-component and continues to determine an adjusted position along the lateral axes of the scale model using the same process steps as described above, but in place of the Y-component, the device executing the disclosed software tool uses the resulting-Y-component determined in this step.
With respect to the Up/Down navigational control 304, the computing device executing the disclosed software tool may be further configured to detect a user input received via the Up/Down navigational control 404 and responsively change the position of the perspective of the three-dimensional BIM view along the vertical axis. As depicted in
The computing device executing the disclosed software tool may determine a new position along the vertical axis of the scaled model based on a user input received via the Up/Down navigational control 404 in largely the same way as set forth above, but because the Up/Down movement occurs in only one direction, the device executing the disclosed software tool may not break the joystick vector into components. For instance, according to one example implementation of the Up/Down navigational control 404, the device executing the disclosed software tool may engage in the following processing steps in response to receiving a user input via the Up/Down navigational control 404.
First, as mentioned, a user may provide an input via the GUI by touching and dragging the joystick of Up/Down navigational control 404 in a particular direction away from the center. Responsively, the computing device executing the disclosed software tool receives an indication of the direction the user dragged the joystick (e.g., the up direction or the down direction) and an indication of the magnitude of the joystick vector (e.g., the distance from the center to which the user dragged the joystick, which may, for example, take the form of a number on a percentage scale, where 0% corresponds to no movement from the center and 100% corresponds to the maximum allowable movement from the center). These indications together form what was referred to as a joystick vector. Again, one example of a joystick vector is 25% in the Up direction, which in this context represents a user input that dragged the joystick one-quarter of the maximum distance in the Up direction. Other examples are possible as well.
Second, the computing device executing the disclosed software tool may compare the magnitude of the joystick vector to a threshold magnitude (e.g., 10%). If the magnitude of the joystick vector is smaller than this threshold magnitude, then the device executing the disclosed software tool ignores the user input received via the Up/Down navigational control 404 and does not further process determination of a new perspective based on that user input. In some examples, this threshold is user adjustable.
Third, the computing device executing the disclosed software tool may apply a non-linear scaling factor to the joystick vector. In one example, the software tool squares the magnitude of the joystick vector, but in other examples, the device executing the disclosed software tool may cube the magnitude or apply some other non-linear scaling factor. By doing so, the computing device executing the disclosed software tool provides, what appears to the user as, a faster navigation through the three-dimensional BIM view when the user drags the joystick farther from the center and a slower navigation through the three-dimensional BIM view when the user drags the joystick a shorter distance from the center. In some examples, this non-linear scaling factor is user adjustable.
Fourth, the computing device executing the disclosed software tool may apply a linear scaling factor to the joystick vector. In one example, the device executing the disclosed software tool multiplies the magnitude of the joystick vector by a scalar value (e.g., 5.0). By doing so, the device executing the disclosed software tool provides a particular sensitivity to the Up/Down navigational control 404. In this respect, a higher scalar value will cause the software tool to move the perspective by a larger step size for a given movement of the joystick, whereas a lower scalar value will cause the software tool to move the perspective by a smaller step size for a given movement of the joystick. In some examples, this linear scale factor is user-adjustable.
Fifth, after applying the above described rules, the computing device executing the disclosed software tool may then move the perspective a particular distance either up or down the vertical axis of the scaled model (depending on whether the user dragged the joystick in either the Up or the Down direction) based on the scaled joystick vector. The computing device executing the disclosed software tool may render a new three-dimensional BIM view from this new perspective. Once the device executing the disclosed software tool renders a new three-dimensional BIM view, the software tool returns to the beginning of the process, where, if the user is still providing a user input to the Up/Down navigational control 404 via the GUI (e.g., if the user is holding the joystick at a particular position, or if the user has dragged the joystick to a new position), the computing device executing the disclosed software tool receives an indication of this user input and identifies a new perspective in accordance with the procedure set forth above. The computing device executing the disclosed software tool may determine a new position along the vertical axis of the scaled model based on a user input received via the Up/Down navigational control 404 in other ways as well.
With respect to the Look navigational control 406, the device executing the disclosed software tool may be further configured to detect a user input received via the Look navigational control 406 and responsively change the orientation of the perspective. As depicted in
First, as mentioned, a user may provide an input via the GUI by touching and dragging the joystick of Look navigational control 406 in a particular direction away from the center. Responsively, the computing device executing the disclosed software tool receives an indication of the direction the user dragged the joystick (e.g., on a scale from 0° to 360°) and an indication of the distance from the center to which the user dragged the joystick (e.g., on a percentage scale, where 0% corresponds to no movement from the center and 100% corresponds to the maximum allowable movement from the center). In one implementation, these indications together form what is referred to as a joystick vector. One example of a joystick vector is 75% at 315°, which in this context represents a user input that dragged the joystick three-quarters to the maximum distance in a direction that is about halfway between the straight up direction and the straight left direction, but of course other examples are possible as well.
Second, the device executing the disclosed software tool may change the orientation of the perspective based on the joystick vector. For instance, the device executing the disclosed software tool rotates the orientation of the perspective along an angle that corresponds to the direction of the joystick vector. In the example given above, the joystick vector points in the 315° direction; thus, the device executing the disclosed software tool rotates the orientation of the current perspective along the 315° angle. The device executing the disclosed software tool rotates the orientation a particular number of degrees in the above-determined direction based on the magnitude of the joystick vector. In one example implementation, the device executing the disclosed software tool rotates the orientation of the current perspective by the same number of degrees as the magnitude. Thus, in the example given above, because the magnitude of the joystick vector is 75%, the device executing the disclosed software tool rotates the orientation of the current perspective by 75° in the 315° direction. In other implementations, however, the device executing the disclosed software tool scales the magnitude of the joystick vector and rotates the orientation of the current perspective by some scaled number of degrees. In any case, by rotating the orientation of the current perspective a particular number of degrees based on the magnitude of the joystick vector, the device executing the disclosed software tool provides, what appears to the user as, a faster rotation of the current perspective when the user drags the joystick far from the center and a slower rotation of the current perspective when the user drags the joystick a short distance from the center. In some examples, whether and to what extent the device executing the disclosed software tool applies a scale factor to the magnitude of this joystick vector is user adjustable.
With respect to the 2D inset control 408, the computing device executing the disclosed software tool may be further configured to detect a user input received via the 2D inset navigational control 308 and responsively change the position and the orientation of the perspective. As depicted in
In any case, when a user provides a user input (such as a touch or tap) within the 2D inset navigational control 408 and drags in a particular direction, the computing device executing the disclosed software tool may receive an indication of the position at which the user touched as well as the direction the user dragged. Based on these two indications, the computing device executing the disclosed software tool may identify a position along the lateral X-axis and the lateral Y-axis of the scaled model and an orientation at which to render a new three-dimensional BIM view.
To help illustrate this process,
In one implementation, the computing device executing the disclosed software tool keeps the other aspect of the perspective the same as it was before the user provided a user input via the 2D inset navigation control 408, namely the vertical angle of the orientation of the perspective. But in alternate implementations, the device executing the disclosed software tool resets this aspect to a predetermined vertical angle setting, such as a vertical angle that is level with the ground (i.e., 90°).
In an alternate implementation, the device executing the disclosed software tool may change the position and orientation of the of the perspective after a user touches, hold the touch for a threshold period of time (e.g., 1.0 seconds), and then drag in a particular direction. By waiting for a threshold period of time before registering a touch as a request to change position and orientation, the device executing the disclosed software tool may reduce the likelihood of inadvertent perspective changes.
Referring back to
In operation, when the computing device receives a user input via the elevation control (such as a touch or tap on one of the lines in elevation control 412), the device executing the disclosed software tool may, in response, adjust the position of the perspective along the vertical Z-axis to a corresponding predetermined position. For instance, in the example depicted in
Example embodiments of the disclosed innovations have been described above. Those skilled in the art will understand, however, that changes and modifications may be made to the embodiments described without departing from the true scope and sprit of the present invention, which will be defined by the claims.
For instance, those in the art will understand that the disclosed approach for workflows for navigating through three-dimensional BIM views may be implemented in other construction-related areas. The disclosed approaches for navigating through three-dimensional BIM views could be used in other contexts as well.
Further, to the extent that examples described herein involve operations performed or initiated by actors, such as “humans,” “operators,” “users” or other entities, this is for purposes of example and explanation only. The claims should not be construed as requiring action by such actors unless explicitly recited in the claim language.
This application claims the benefit of priority under 35 U.S.C. § 119(e) to U.S. provisional application No. 62/760,904, filed on Nov. 13, 2018 and titled “Managing Coordination Issues and Navigating Building Information Models,” the contents of which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62760904 | Nov 2018 | US |