US20200151954A1 - Computer System and Method for Navigating Building Information Model Views - Google Patents
Computer System and Method for Navigating Building Information Model Views Download PDFInfo
- Publication number
- US20200151954A1 US20200151954A1 US16/677,081 US201916677081A US2020151954A1 US 20200151954 A1 US20200151954 A1 US 20200151954A1 US 201916677081 A US201916677081 A US 201916677081A US 2020151954 A1 US2020151954 A1 US 2020151954A1
- Authority
- US
- United States
- Prior art keywords
- perspective
- indication
- direction component
- construction project
- repositioned
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims description 30
- 238000010276 construction Methods 0.000 claims abstract description 122
- 238000003860 storage Methods 0.000 claims description 16
- 238000009877 rendering Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 abstract description 12
- 239000013598 vector Substances 0.000 description 59
- 238000004891 communication Methods 0.000 description 18
- 230000004044 response Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000000007 visual effect Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000003825 pressing Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000012552 review Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009428 plumbing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002023 wood Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
-
- G06F17/5004—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04815—Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/08—Construction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/003—Navigation within 3D models or images
Definitions
- Construction projects are often complex endeavors involving the coordination of many professionals across several discrete phases.
- a construction project commences with a design phase, where architects design the overall shape and layout of a construction project, such as a building.
- 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.
- 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.
- 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.
- construction professionals begin to construct the project based on the finalized plans.
- one phase of a construction project involves the creation, review, and sometimes revision, of plans of the construction project.
- 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.
- 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.).
- 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.).
- BIM building information model
- 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.
- 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.
- repositioning the perspective in a direction other than the direction of the current perspective 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.
- 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.
- the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the perspective directly along the vertical axis.
- 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.
- 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.
- 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.
- GUI graphical user interface
- 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.
- 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.
- FIG. 1 depicts an example network configuration in which example embodiments may be implemented.
- FIG. 2 depicts an example computing device that may be configured carry out one or more of the functions of the present disclosure.
- FIG. 3 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure.
- FIG. 4 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure.
- FIG. 5 depicts an example flow diagram illustrating example functions for repositioning a perspective of a BIM view, according to one embodiment of the present disclosure.
- FIG. 6 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure.
- 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.
- 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.
- 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.
- 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.
- a native application e.g., a mobile application
- web application running on a client station
- FIG. 1 depicts an example network configuration 100 in which example embodiments of the present disclosure may be implemented.
- network configuration 100 includes a back-end platform 102 that may be communicatively coupled to one or more client stations, depicted here, for the sake of discussion, as client stations 112 .
- 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.
- 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.
- 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.
- 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.
- client stations 112 may each be any computing device that is capable of running the front-end software disclosed herein.
- 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.).
- 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.
- PDA personal digital assistant
- each communication path 110 between back-end platform 102 and one of client stations 112 may generally comprise one or more communication networks and/or communications links, which may take any of various forms.
- each respective communication path 110 with back-end platform 102 may include any one or more of point-to-point links, Personal Area Networks (PANs), Local-Area Networks (LANs), Wide-Area Networks (WANs) such as the Internet or cellular networks, cloud networks, and/or operational technology (OT) networks, among other possibilities.
- PANs Personal Area Networks
- LANs Local-Area Networks
- WANs Wide-Area Networks
- OT operational technology
- each respective communication path 110 with back-end platform 102 may be wireless, wired, or some combination thereof, and may carry data according to any of various different communication protocols.
- the respective communication paths 110 between client stations 112 and back-end platform 102 may also include one or more intermediate systems.
- back-end platform 102 may communicate with a given client station 112 via one or more intermediary systems, such as a host server (not shown). Many other configurations are also possible.
- 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.
- 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.
- 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.
- 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.
- back-end platform 102 may also be configured to receive data, such as data related to a construction project, from one or more external data sources, such as an external database and/or another back-end platform or platforms.
- data sources such as an external database and/or another back-end platform or platforms.
- 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.
- FIG. 2 is a simplified block diagram illustrating some structural components that may be included in an example computing device 200 , which could serve as, for instance, the back-end platform 102 and/or one or more of client stations 112 in FIG. 1 .
- computing device 200 may generally include at least a processor 202 , data storage 204 , and a communication interface 206 , all of which may be communicatively linked by a communication link 208 that may take the form of a system bus or some other connection mechanism.
- 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.
- 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.
- 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.
- volatile storage mediums such as random-access memory, registers, cache, etc.
- non-volatile storage mediums such as read-only memory, a hard-disk drive, a solid-state drive, flash memory, an optical-storage device, etc.
- 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.
- data storage 204 may be provisioned with software components that enable the computing device 200 to carry out the operations disclosed herein. These software components may generally take the form of program instructions that are executable by the processor 202 to carry out the disclosed functions, which may be arranged together into software applications, virtual machines, software development kits, toolsets, or the like, all of which are referred to herein as a software tool or software tools. Further, data storage 204 may be arranged to store project-related data in one or more databases, file systems, or the like. Data storage 204 may take other forms and/or store data in other manners as well.
- 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 .
- 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.
- 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 .
- external user-interface equipment sometimes referred to as “peripherals”
- keyboard such as a keyboard, a mouse or trackpad, a display screen, a touch-sensitive interface, a stylus, a virtual-reality headset, speakers, etc.
- 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.
- plans for the construction project involve the creation, review, and sometimes revision, of plans for the construction project.
- plans assist construction professionals in carrying out the construction project.
- 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.
- these visual representations tend to take one of two different forms.
- 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.
- 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.
- 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.
- 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.”
- 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.
- 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).
- the BIM file may contain data that represents each triangle of a given mesh as set of coordinates in three-space.
- 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).
- 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.
- BIM file may contain data that represents each individual physical component in a construction project.
- BIM files may contain additional data that helps to summarize information relating to the various meshes.
- a BIM file may contain, for each mesh, data describing a “bounding box.”
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- BIM viewer software is generally deployed on client stations, such as client stations 112 of FIG. 1 (which, as described above, can generally take the form of a desktop computer, a laptop, a tablet, or the like).
- client stations 112 of FIG. 1 which, as described above, can generally take the form of a desktop computer, a laptop, a tablet, or the like.
- construction professionals can utilize BIM viewer software during all phases of the construction project and can access a BIM file for a particular construction project in an office setting as well as on the construction site.
- BIM viewer software assists construction professionals with, among other things, the design and construction of the project and/or to identify issues that may arise during such construction.
- FIG. 3 depicts an example snapshot 300 of a GUI, which includes a three-dimensional view of a construction project rendered at a particular perspective.
- Snapshot 300 may be generated by, for instance, a software tool running on a client station, such as one of client stations 112 ( FIG. 1 ), accessing a BIM file, and then rendering a three-dimensional view of the construction project based on that BIM file and presenting it via a display interface of that client station.
- a back-end platform such as back-end platform 102 ( FIG.
- Back-end platform 102 may then send these instructions to one of client stations 112 , which in turn may present a three-dimensional view of the construction project via a display interface of that client station based on these instructions. Still other arrangements are possible.
- snapshot 300 includes a three-dimensional view of a construction project from a particular perspective.
- the three-dimensional view depicted in FIG. 3 includes a number of meshes that represent individual physical components of the construction project, such as floors, walls, pipes, ducts, etc.
- a mesh 302 which represents an air duct
- a mesh 304 which represents a support beam.
- other meshes are possible as are other layouts and designs of construction projects.
- 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.
- a lateral angle which reflects the direction of the perspective within a lateral plane
- a vertical angle which reflects the direction of the perspective within a vertical plane.
- 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.
- 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
- an orientation with a lateral angle of 180° may look straight down, although any angle from 0° to 180° is possible.
- 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.
- a client station may do this in various ways.
- 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.
- 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”).
- a touch and drag gesture made with one finger
- 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.
- 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.
- other examples of adjusting the perspective at which the three-dimensional view is presented are possible as well.
- the computing device may only reposition the perspective so long as the user input is ongoing.
- the computing device may only reposition the perspective during the drag portion of the user input.
- the computing device may only reposition the perspective in the direction of the perspective's orientation.
- repositioning the perspective in a direction other than the direction of the current perspective 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.
- 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.
- the disclosed BIM viewer tool may facilitate navigation of the three-dimensional BIM view by adjusting the perspective directly along the vertical axis.
- 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.
- 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.
- FIGS. 4 and 6 generally depict screenshots from operational states of one or more embodiments of the disclosed BIM viewer tool, such as software developed by Procore Technologies, Inc.
- FIG. 5 is a flow diagram 500 that depicts combinations of operations that may be performed by a computing device in accordance with the software technology disclosed herein.
- 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 ( FIG. 2 )).
- a block in a flow diagram may represent circuitry that is wired to perform specific logical functions or steps in a process.
- the blocks shown in the flow diagram may be rearranged into different orders, combined into fewer blocks, separated into additional blocks, and/or removed, based upon the particular embodiment.
- the flow diagram may also be modified to include additional blocks that represent other functionality that is described expressly or implicitly elsewhere herein.
- a BIM viewer tool or “the BIM viewer tool” engaging in one or more operations
- operations may, in practice, be carried out by one or more computing devices executing one or more instances of the disclosed BIM viewer tool.
- a computing device such as computing device 200 ( FIG. 2 ), which as described above, may serve as one or more of client stations 112 ( FIG. 1 ) and/or back-end platform 102 ( FIG. 1 ).
- the operations discussed herein below may be carried out entirely by a single computing device, such as one or more of client stations 112 or by back-end platform 102 , or may be carried out by a combination of computing devices, with some operations being carried out by back-end platform 102 (such as computational processes and data-access operations) and other operations being carried out by one or more of client stations 112 (such as display operations and operations that receive user inputs).
- back-end platform 102 such as computational processes and data-access operations
- client stations 112 such as display operations and operations that receive user inputs.
- other arrangements are possible as well.
- FIG. 4 depicts a snapshot 400 of a GUI, which includes a three-dimensional BIM view of a construction project rendered at a particular perspective.
- Snapshot 400 may be generated by, for instance, the disclosed BIM viewer tool running on a client station, such as one of client stations 112 ( FIG. 1 ), accessing a BIM file, and then rendering a three-dimensional view of the construction project based on that BIM file and presenting it via a display interface of that client station.
- a back-end platform such as back-end platform 102 ( FIG. 1 ) may access a BIM file and may generate a set of instructions for rendering a three-dimensional view of the construction project based on that BIM file. Back-end platform 102 may then send these instructions to one of client stations 112 , which in turn may present a three-dimensional view of the construction project it via a display interface of that client station based on these instructions. Still other arrangements are possible.
- 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 .
- a “Walk” navigational control 402 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 .
- 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.
- 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
- 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.
- 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.
- 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.
- FIG. 5 is a flow diagram depicting example process steps that may be carried out by a computing device executing the disclosed BIM viewer tool, according to one example implementation of the Walk navigational control 402 .
- the example processing steps may be carried out either by a client station that is executing a front-end portion of the software tool, a back-end platform that is executing a front-end portion of the software tool, or some combination thereof.
- 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.
- 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).
- these indications together form what is referred to as a joystick vector.
- joystick vector 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.
- 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%.
- 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.
- a threshold magnitude e.g. 10%
- this threshold is user adjustable.
- the computing device executing the disclosed software tool may apply a non-linear scaling factor to each individual component of the joystick vector.
- 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.
- 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.
- this non-linear scaling factor is user adjustable as well.
- the computing device executing the disclosed software tool may apply a linear scaling factor to each individual component of the joystick vector.
- the computing device executing the disclosed software tool multiplies each component by a scalar value (e.g., 5.0).
- a scalar value e.g., 5.0
- the computing device executing the disclosed software tool provides a particular sensitivity to the Walk navigational control 402 .
- 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.
- this linear scale factor is user-adjustable.
- 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.
- the computing device 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.
- 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.
- 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
- 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.
- 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
- 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.
- other movement components are possible.
- 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.
- 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
- 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.
- 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°).
- 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°.
- other ways to combine the movement components are possible as well.
- 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.
- 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.
- 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 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.
- 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.
- 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.
- 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)
- movement of the perspective will be adjusted upwards along this 45° plane.
- 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.
- the Y-component of the joystick vector was determined to be 35.4%.
- 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.
- 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.
- the Up/Down navigational control 404 may represent a joystick that a user can manipulate by touching and dragging in either the up direction or the down direction.
- the computing 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. Based on these two indications, the computing device executing the disclosed software tool identifies a new position along the vertical axis of the scaled model from which to render a new three-dimensional BIM view.
- 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 .
- 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.
- 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.
- 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.
- 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.
- a threshold magnitude e.g. 10%
- the computing device executing the disclosed software tool may apply a non-linear scaling factor to the joystick vector.
- 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.
- 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.
- this non-linear scaling factor is user adjustable.
- the computing device executing the disclosed software tool may apply a linear scaling factor to the joystick vector.
- the device executing the disclosed software tool multiplies the magnitude of the joystick vector by a scalar value (e.g., 5.0).
- a scalar value e.g., 5.0
- the device executing the disclosed software tool provides a particular sensitivity to the Up/Down navigational control 404 .
- 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.
- this linear scale factor is user-adjustable.
- 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.
- 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.
- 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.
- the Look navigational control 306 may represent a joystick that a user can manipulate by touching and dragging in any 360° 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.
- the device executing the disclosed software tool identifies an angle along which to rotate the orientation of the three-dimensional BIM view and a speed at which to apply this rotation. For instance, according to one example implementation of the Look navigational control 406 , the device executing the disclosed software tool may engage in the following processing steps in response to receiving a user input via the Look navigational control 406 .
- 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.
- 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).
- these indications together form what is referred to as a joystick vector.
- joystick vector 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.
- 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.
- 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.
- the device executing the disclosed software tool rotates the orientation of the current perspective by 75° in the 315° direction.
- 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.
- 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.
- 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.
- 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.
- the 2D inset control 408 includes a 2D image of the construction project at the elevation of the current three-dimensional BIM view, and an indicator 440 that represents the position and orientation of the current three-dimensional BIM view.
- the current perspective of the three-dimensional BIM view is somewhere within the first floor.
- the 2D inset navigational control 408 depicts a 2D view of the first floor.
- the indicator 440 depicts the position of the perspective with respect to the scaled model and the orientation of the perspective.
- the computing device executing the disclosed software tool generates the 2D image from a blueprint file provided to or otherwise accessible by the BIM viewer software tool. In other cases, the device executing the disclosed software tool generates the 2D image based on the BIM file or BIM files from which the current three-dimensional BIM view is generated.
- 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.
- FIG. 6 depicts an enlarged view of another example 2D inset navigational control 600 , which includes 2D image 608 .
- the computing device executing the disclosed software tool may receive an indication of the position of this touch and the direction of the drag.
- the computing device executing the disclosed software tool may then translate the position of the touch to an X coordinate positioned along the lateral X-axis of the scaled model and a Y-coordinate positioned along the lateral Y-axis of the scaled model.
- the computing device executing the disclosed software tool may translate the direction of the drag to a particular orientation angle along the lateral axis. Subsequent to this, this, the computing device executing the disclosed software tool may render a new three-dimensional BIM view at a perspective defined by the determined X-coordinate and Y-coordinate, a predetermined Z coordinate, and the determined orientation angle along the lateral axis. In this implementation, the device executing the disclosed software tool may use a predetermined point along the vertical Z-axis at which to render the new three-dimensional BIM view. This predetermined point along the vertical Z-axis may, in some implementations, be user adjustable.
- 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°).
- 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.
- a threshold period of time e.g. 1.0 seconds
- the device executing the disclosed software tool may reduce the likelihood of inadvertent perspective changes.
- the device executing the disclosed software tool may be further configured to detect a user input received via the elevation control 312 and responsively change the position of the perspective along the vertical Z-axis.
- the elevation control 412 includes four lines labeled “1,” “2,” “3,” and “4,” which, in this example, represent the four floors of the construction project (of course, in other examples, other numbers of floors are possible).
- the computing device executing the disclosed software tool may generate the elevation control 312 based on the BIM file or BIM files the software tool uses to generate the three-dimensional BIM view.
- the device executing the disclosed software tool may read the BIM file or BIM files, determine that the construction project includes a building with four floors, and responsively generate an elevation control with four lines, such as the elevation control 412 depicted in FIG. 4 .
- the device executing the disclosed software tool may associate each line of elevation control 412 with a particular position on the vertical Z-axis, such that a three-dimensional BIM view rendered at that particular position on the vertical z-axis provides a suitable view of the corresponding floor of the construction project.
- 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 FIG. 4 , if a user taps on or near the line next to “3,” the device executing the disclosed software tool receives an indication that the user has tapped on or near the line labelled “3” and responsively adjusts the perspective of the three-dimensional BIM view to the predetermined position along the vertical Z-axis that provides a suitable view of the third floor.
- the device executing the disclosed software tool keeps the other aspects of the perspective the same as they were before the user provided a user input via the elevation control 412 , namely the position of the perspective along the lateral X and Y axes and the orientation of the perspective. But in other embodiments, the software tool resets one or more of these other components to predetermined settings. Other examples of responsively changing the position of the perspective along the vertical Z-axis are possible as well.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- General Engineering & Computer Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Development Economics (AREA)
- Human Computer Interaction (AREA)
- Pure & Applied Mathematics (AREA)
- Architecture (AREA)
- Structural Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Civil Engineering (AREA)
- Evolutionary Computation (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
- 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.
- 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.
-
FIG. 1 depicts an example network configuration in which example embodiments may be implemented. -
FIG. 2 depicts an example computing device that may be configured carry out one or more of the functions of the present disclosure. -
FIG. 3 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure. -
FIG. 4 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure. -
FIG. 5 depicts an example flow diagram illustrating example functions for repositioning a perspective of a BIM view, according to one embodiment of the present disclosure. -
FIG. 6 depicts an example output produced by a device executing one embodiment of a software tool according to the present disclosure. - 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,
FIG. 1 depicts anexample network configuration 100 in which example embodiments of the present disclosure may be implemented. As shown inFIG. 1 ,network configuration 100 includes a back-end platform 102 that may be communicatively coupled to one or more client stations, depicted here, for the sake of discussion, asclient stations 112. - 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 ormore 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
FIG. 1 , back-end platform 102 is configured to interact withclient stations 112 overrespective communication paths 110. In this respect, eachcommunication path 110 between back-end platform 102 and one ofclient stations 112 may generally comprise one or more communication networks and/or communications links, which may take any of various forms. For instance, eachrespective communication path 110 with back-end platform 102 may include any one or more of point-to-point links, Personal Area Networks (PANs), Local-Area Networks (LANs), Wide-Area Networks (WANs) such as the Internet or cellular networks, cloud networks, and/or operational technology (OT) networks, among other possibilities. Further, the communication networks and/or links that make up eachrespective communication path 110 with back-end platform 102 may be wireless, wired, or some combination thereof, and may carry data according to any of various different communication protocols. Although not shown, therespective communication paths 110 betweenclient stations 112 and back-end platform 102 may also include one or more intermediate systems. For example, it is possible that back-end platform 102 may communicate with a givenclient station 112 via one or more intermediary systems, such as a host server (not shown). Many other configurations are also possible. - 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, andclient 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 toclient stations 112, such as rendered three-dimensional views, in whichcase 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 whichcase 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 betweenclient stations 112 and back-end platform 102 may take various other forms as well. - Although not shown in
FIG. 1 , back-end platform 102 may also be configured to receive data, such as data related to a construction project, from one or more external data sources, such as an external database and/or another back-end platform or platforms. Such data sources—and the data output by such data sources—may take various forms. - 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. -
FIG. 2 is a simplified block diagram illustrating some structural components that may be included in anexample computing device 200, which could serve as, for instance, the back-end platform 102 and/or one or more ofclient stations 112 inFIG. 1 . In line with the discussion above,computing device 200 may generally include at least aprocessor 202,data storage 204, and acommunication interface 206, all of which may be communicatively linked by acommunication link 208 that may take the form of a system bus or some other connection mechanism. -
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 thatprocessor 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 thatdata 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
FIG. 2 ,data storage 204 may be provisioned with software components that enable thecomputing device 200 to carry out the operations disclosed herein. These software components may generally take the form of program instructions that are executable by theprocessor 202 to carry out the disclosed functions, which may be arranged together into software applications, virtual machines, software development kits, toolsets, or the like, all of which are referred to herein as a software tool or software tools. Further,data storage 204 may be arranged to store project-related data in one or more databases, file systems, or the like.Data storage 204 may take other forms and/or store data in other manners as well. -
Communication interface 206 may be configured to facilitate wireless and/or wired communication with configured other computing devices or systems, such as one ormore client stations 112 when computingdevice 200 serves as back-end platform 102, or as back-end platform 102 when computingdevice 200 serves as one ofclient 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 withcomputing 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 ofFIG. 1 (which, as described above, can generally take the form of a desktop computer, a laptop, a tablet, or the like). As such, construction professionals can utilize BIM viewer software during all phases of the construction project and can access a BIM file for a particular construction project in an office setting as well as on the construction site. Accordingly, BIM viewer software assists construction professionals with, among other things, the design and construction of the project and/or to identify issues that may arise during such construction. - 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,
FIG. 3 depicts anexample snapshot 300 of a GUI, which includes a three-dimensional view of a construction project rendered at a particular perspective.Snapshot 300 may be generated by, for instance, a software tool running on a client station, such as one of client stations 112 (FIG. 1 ), accessing a BIM file, and then rendering a three-dimensional view of the construction project based on that BIM file and presenting it via a display interface of that client station. Alternatively, a back-end platform, such as back-end platform 102 (FIG. 1 ) may access a BIM file and may generate a set of instructions for rendering a three-dimensional view of the construction project based on that BIM file. Back-end platform 102 may then send these instructions to one ofclient stations 112, which in turn may present a three-dimensional view of the construction project via a display interface of that client station based on these instructions. Still other arrangements are possible. - As depicted,
snapshot 300 includes a three-dimensional view of a construction project from a particular perspective. The three-dimensional view depicted inFIG. 3 includes a number of meshes that represent individual physical components of the construction project, such as floors, walls, pipes, ducts, etc. In particular, depicted inFIG. 3 is, among others, amesh 302, which represents an air duct, and amesh 304, which represents a support beam. Of course, in other examples, other meshes are possible as are other layouts and designs of construction projects. - 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
FIGS. 4-6 .FIGS. 4 and 6 generally depict screenshots from operational states of one or more embodiments of the disclosed BIM viewer tool, such as software developed by Procore Technologies, Inc., whereasFIG. 5 is a flow diagram 500 that depicts combinations of operations that may be performed by a computing device in accordance with the software technology disclosed herein. - 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 (
FIG. 2 )). In other cases, a block in a flow diagram may represent circuitry that is wired to perform specific logical functions or steps in a process. Moreover, the blocks shown in the flow diagram may be rearranged into different orders, combined into fewer blocks, separated into additional blocks, and/or removed, based upon the particular embodiment. The flow diagram may also be modified to include additional blocks that represent other functionality that is described expressly or implicitly elsewhere herein. - 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 (
FIG. 2 ), which as described above, may serve as one or more of client stations 112 (FIG. 1 ) and/or back-end platform 102 (FIG. 1 ). In this respect, it should be further understood that, depending on the implementation, the operations discussed herein below may be carried out entirely by a single computing device, such as one or more ofclient stations 112 or by back-end platform 102, or may be carried out by a combination of computing devices, with some operations being carried out by back-end platform 102 (such as computational processes and data-access operations) and other operations being carried out by one or more of client stations 112 (such as display operations and operations that receive user inputs). However, other arrangements are possible as well. - In accordance with one example of the disclosed BIM viewer tool,
FIG. 4 depicts asnapshot 400 of a GUI, which includes a three-dimensional BIM view of a construction project rendered at a particular perspective.Snapshot 400 may be generated by, for instance, the disclosed BIM viewer tool running on a client station, such as one of client stations 112 (FIG. 1 ), accessing a BIM file, and then rendering a three-dimensional view of the construction project based on that BIM file and presenting it via a display interface of that client station. Alternatively, a back-end platform, such as back-end platform 102 (FIG. 1 ) may access a BIM file and may generate a set of instructions for rendering a three-dimensional view of the construction project based on that BIM file. Back-end platform 102 may then send these instructions to one ofclient stations 112, which in turn may present a three-dimensional view of the construction project it via a display interface of that client station based on these instructions. Still other arrangements are possible. - 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, an2D inset control 408, and anelevation 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 Walknavigational control 402 and responsively change the position of the perspective along one or more of the two lateral axes. As depicted, the Walknavigational 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
FIG. 5 , which is a flow diagram depicting example process steps that may be carried out by a computing device executing the disclosed BIM viewer tool, according to one example implementation of the Walknavigational control 402. As mentioned, the example processing steps may be carried out either by a client station that is executing a front-end portion of the software tool, a back-end platform that is executing a front-end portion of the software tool, or some combination thereof. - 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 Walknavigational 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 Walknavigational 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 Walknavigational 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/Downnavigational control 404 and responsively change the position of the perspective of the three-dimensional BIM view along the vertical axis. As depicted inFIG. 3 , the Up/Downnavigational control 404 may represent a joystick that a user can manipulate by touching and dragging in either the up direction or the down direction. In some implementations, when a user touches and drags the joystick in a particular direction, the computing 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. Based on these two indications, the computing device executing the disclosed software tool identifies a new position along the vertical axis of the scaled model from which to render a new three-dimensional BIM view. - 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/Downnavigational 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/Downnavigational 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/Downnavigational 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 Looknavigational control 406 and responsively change the orientation of the perspective. As depicted inFIG. 4 , the Look navigational control 306 may represent 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 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. Based on these two indications, the device executing the disclosed software tool identifies an angle along which to rotate the orientation of the three-dimensional BIM view and a speed at which to apply this rotation. For instance, according to one example implementation of the Looknavigational control 406, the device executing the disclosed software tool may engage in the following processing steps in response to receiving a user input via the Looknavigational control 406. - 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 inFIG. 4 , the2D inset control 408 includes a 2D image of the construction project at the elevation of the current three-dimensional BIM view, and anindicator 440 that represents the position and orientation of the current three-dimensional BIM view. For instance, as depicted inFIG. 4 , the current perspective of the three-dimensional BIM view is somewhere within the first floor. Thus, the 2D insetnavigational control 408 depicts a 2D view of the first floor. And theindicator 440 depicts the position of the perspective with respect to the scaled model and the orientation of the perspective. In some implementations, the computing device executing the disclosed software tool generates the 2D image from a blueprint file provided to or otherwise accessible by the BIM viewer software tool. In other cases, the device executing the disclosed software tool generates the 2D image based on the BIM file or BIM files from which the current three-dimensional BIM view is generated. - 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,
FIG. 6 depicts an enlarged view of another example 2D insetnavigational control 600, which includes2D image 608. In accordance with one example implementation, assume a user touched the 2D insetnavigational control 600 atposition 630 and dragged in a direction represented byarrow 632. Responsively, the computing device executing the disclosed software tool may receive an indication of the position of this touch and the direction of the drag. The computing device executing the disclosed software tool may then translate the position of the touch to an X coordinate positioned along the lateral X-axis of the scaled model and a Y-coordinate positioned along the lateral Y-axis of the scaled model. Further, the computing device executing the disclosed software tool may translate the direction of the drag to a particular orientation angle along the lateral axis. Subsequent to this, this, the computing device executing the disclosed software tool may render a new three-dimensional BIM view at a perspective defined by the determined X-coordinate and Y-coordinate, a predetermined Z coordinate, and the determined orientation angle along the lateral axis. In this implementation, the device executing the disclosed software tool may use a predetermined point along the vertical Z-axis at which to render the new three-dimensional BIM view. This predetermined point along the vertical Z-axis may, in some implementations, be user adjustable. - 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
FIG. 4 and with respect to theelevation control 412, the device executing the disclosed software tool may be further configured to detect a user input received via the elevation control 312 and responsively change the position of the perspective along the vertical Z-axis. As depicted inFIG. 4 , theelevation control 412 includes four lines labeled “1,” “2,” “3,” and “4,” which, in this example, represent the four floors of the construction project (of course, in other examples, other numbers of floors are possible). In one implementation, the computing device executing the disclosed software tool may generate the elevation control 312 based on the BIM file or BIM files the software tool uses to generate the three-dimensional BIM view. In one example of this, the device executing the disclosed software tool may read the BIM file or BIM files, determine that the construction project includes a building with four floors, and responsively generate an elevation control with four lines, such as theelevation control 412 depicted inFIG. 4 . In addition, in some implementations, the device executing the disclosed software tool may associate each line ofelevation control 412 with a particular position on the vertical Z-axis, such that a three-dimensional BIM view rendered at that particular position on the vertical z-axis provides a suitable view of the corresponding floor of the construction project. - 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
FIG. 4 , if a user taps on or near the line next to “3,” the device executing the disclosed software tool receives an indication that the user has tapped on or near the line labelled “3” and responsively adjusts the perspective of the three-dimensional BIM view to the predetermined position along the vertical Z-axis that provides a suitable view of the third floor. In one implementation, the device executing the disclosed software tool keeps the other aspects of the perspective the same as they were before the user provided a user input via theelevation control 412, namely the position of the perspective along the lateral X and Y axes and the orientation of the perspective. But in other embodiments, the software tool resets one or more of these other components to predetermined settings. Other examples of responsively changing the position of the perspective along the vertical Z-axis are possible as well. - 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.
Claims (20)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/677,081 US20200151954A1 (en) | 2018-11-13 | 2019-11-07 | Computer System and Method for Navigating Building Information Model Views |
EP24150118.8A EP4390805A2 (en) | 2018-11-13 | 2019-11-11 | Computer system and method for navigating building information model views |
PCT/US2019/060795 WO2020102113A1 (en) | 2018-11-13 | 2019-11-11 | Computer system and method for navigating building information model views |
EP19885797.1A EP3881171B1 (en) | 2018-11-13 | 2019-11-11 | Computer system and method for navigating building information model views |
AU2019380266A AU2019380266A1 (en) | 2018-11-13 | 2019-11-11 | Computer system and method for navigating building information model views |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862760904P | 2018-11-13 | 2018-11-13 | |
US16/677,081 US20200151954A1 (en) | 2018-11-13 | 2019-11-07 | Computer System and Method for Navigating Building Information Model Views |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200151954A1 true US20200151954A1 (en) | 2020-05-14 |
Family
ID=70550505
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/276,272 Active US10963598B2 (en) | 2018-11-13 | 2019-02-14 | Computer system and method for managing coordination issues in construction projects |
US16/677,081 Abandoned US20200151954A1 (en) | 2018-11-13 | 2019-11-07 | Computer System and Method for Navigating Building Information Model Views |
US17/072,505 Active US11531792B2 (en) | 2018-11-13 | 2020-10-16 | Computer system and method for managing coordination issues in construction projects |
US17/217,645 Active US11436387B2 (en) | 2018-11-13 | 2021-03-30 | Computer system and method for managing coordination issues in construction projects |
US18/084,313 Active US11893316B2 (en) | 2018-11-13 | 2022-12-19 | Computer system and method for managing coordination issues in construction projects |
US18/545,892 Pending US20240193318A1 (en) | 2018-11-13 | 2023-12-19 | Computer System and Method for Managing Coordination Issues in Construction Projects |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/276,272 Active US10963598B2 (en) | 2018-11-13 | 2019-02-14 | Computer system and method for managing coordination issues in construction projects |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/072,505 Active US11531792B2 (en) | 2018-11-13 | 2020-10-16 | Computer system and method for managing coordination issues in construction projects |
US17/217,645 Active US11436387B2 (en) | 2018-11-13 | 2021-03-30 | Computer system and method for managing coordination issues in construction projects |
US18/084,313 Active US11893316B2 (en) | 2018-11-13 | 2022-12-19 | Computer system and method for managing coordination issues in construction projects |
US18/545,892 Pending US20240193318A1 (en) | 2018-11-13 | 2023-12-19 | Computer System and Method for Managing Coordination Issues in Construction Projects |
Country Status (4)
Country | Link |
---|---|
US (6) | US10963598B2 (en) |
EP (2) | EP4390805A2 (en) |
AU (2) | AU2019380266A1 (en) |
WO (2) | WO2020102113A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10878138B2 (en) | 2017-02-23 | 2020-12-29 | Mitek Holdings, Inc. | Method of managing proxy objects |
CN113537744A (en) * | 2021-07-06 | 2021-10-22 | 国网福建省电力有限公司经济技术研究院 | BIM platform of multi-subtask model and use method |
WO2022266153A1 (en) * | 2021-06-15 | 2022-12-22 | Procore Technologies, Inc. | Mobile viewer object statusing |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11574086B2 (en) | 2019-02-15 | 2023-02-07 | Procore Technologies, Inc. | Generating technical drawings from building information models |
EP3924862A4 (en) * | 2019-02-15 | 2022-12-07 | Procore Technologies, Inc. | Generating technical drawings from building information models |
US20240070333A1 (en) * | 2022-08-30 | 2024-02-29 | Hexagon Technology Center Gmbh | Virtual environment for large-scale capital projects |
US11803358B1 (en) * | 2022-09-29 | 2023-10-31 | Atlassian Pty Ltd. | Adaptive issue type identification platform |
CN118228721B (en) * | 2024-05-27 | 2024-07-30 | 中铁四局集团有限公司 | BIM technology-based data exchange analysis processing system and method |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6346938B1 (en) | 1999-04-27 | 2002-02-12 | Harris Corporation | Computer-resident mechanism for manipulating, navigating through and mensurating displayed image of three-dimensional geometric model |
CA2369122C (en) * | 1999-06-04 | 2008-01-22 | Rex J. Crookshanks | Building construction bid and contract management system, internet-based method and computer program therefor |
US7904322B2 (en) * | 2000-10-24 | 2011-03-08 | Gauger Derek K | Network based, interactive project management apparatus and method |
US20040015556A1 (en) | 2002-05-10 | 2004-01-22 | Renu Chopra | Software-based process/issue management system |
US20080071562A1 (en) * | 2006-03-21 | 2008-03-20 | Hts, Llc | Tracking and Reporting Construction, Completion, and Inspection Status |
US20100077316A1 (en) * | 2006-11-22 | 2010-03-25 | Omansky Adam H | Method and system for inspectng and managing information |
US10628535B2 (en) * | 2007-02-01 | 2020-04-21 | Autodesk, Inc. | Complete energy analytical model building information modeling (BIM) integration |
US9098647B2 (en) | 2008-03-10 | 2015-08-04 | Apple Inc. | Dynamic viewing of a three dimensional space |
WO2011091158A2 (en) | 2010-01-20 | 2011-07-28 | Edward Ruben Mislavsky | System and method for performing project management attendant to any of various types of projects |
US8898158B2 (en) * | 2010-03-25 | 2014-11-25 | Aconex Limited | System and method for providing an enhanced facility plan |
US20120203806A1 (en) | 2011-02-07 | 2012-08-09 | Ivan Panushev | Building information management system |
US9898862B2 (en) * | 2011-03-16 | 2018-02-20 | Oldcastle Buildingenvelope, Inc. | System and method for modeling buildings and building products |
US8843350B2 (en) | 2011-06-03 | 2014-09-23 | Walter P. Moore and Associates, Inc. | Facilities management system |
US20140218360A1 (en) * | 2011-09-21 | 2014-08-07 | Dalux Aps | Bim and display of 3d models on client devices |
US9070216B2 (en) * | 2011-12-14 | 2015-06-30 | The Board Of Trustees Of The University Of Illinois | Four-dimensional augmented reality models for interactive visualization and automated construction progress monitoring |
US20140344181A1 (en) | 2013-05-17 | 2014-11-20 | Tiffany Hosey Brown | Construction trade building information management system, software and method |
MX2016007771A (en) * | 2013-12-16 | 2017-03-10 | Latista Tech Inc | Project management system providing optimized interaction with digital models. |
US10127507B2 (en) | 2014-01-09 | 2018-11-13 | Latista Technologies, Inc. | Project management system providing interactive issue creation and management |
KR101827227B1 (en) | 2017-12-19 | 2018-03-22 | 이승호 | Smart Plant Multidimensional Space 3D Piping Design Collaboration Service Method |
-
2019
- 2019-02-14 US US16/276,272 patent/US10963598B2/en active Active
- 2019-11-07 US US16/677,081 patent/US20200151954A1/en not_active Abandoned
- 2019-11-11 EP EP24150118.8A patent/EP4390805A2/en active Pending
- 2019-11-11 WO PCT/US2019/060795 patent/WO2020102113A1/en unknown
- 2019-11-11 EP EP19885797.1A patent/EP3881171B1/en active Active
- 2019-11-11 WO PCT/US2019/060796 patent/WO2020102114A1/en active Application Filing
- 2019-11-11 AU AU2019380266A patent/AU2019380266A1/en active Pending
- 2019-11-11 AU AU2019379111A patent/AU2019379111A1/en active Pending
-
2020
- 2020-10-16 US US17/072,505 patent/US11531792B2/en active Active
-
2021
- 2021-03-30 US US17/217,645 patent/US11436387B2/en active Active
-
2022
- 2022-12-19 US US18/084,313 patent/US11893316B2/en active Active
-
2023
- 2023-12-19 US US18/545,892 patent/US20240193318A1/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10878138B2 (en) | 2017-02-23 | 2020-12-29 | Mitek Holdings, Inc. | Method of managing proxy objects |
US11314903B2 (en) | 2017-02-23 | 2022-04-26 | Mitek Holdings, Inc. | Method of managing proxy objects |
US11687684B2 (en) | 2017-02-23 | 2023-06-27 | Mitek Holdings, Inc. | Method of managing proxy objects |
WO2022266153A1 (en) * | 2021-06-15 | 2022-12-22 | Procore Technologies, Inc. | Mobile viewer object statusing |
US11797147B2 (en) | 2021-06-15 | 2023-10-24 | Procore Technologies, Inc. | Mobile viewer object statusing |
CN113537744A (en) * | 2021-07-06 | 2021-10-22 | 国网福建省电力有限公司经济技术研究院 | BIM platform of multi-subtask model and use method |
Also Published As
Publication number | Publication date |
---|---|
EP4390805A2 (en) | 2024-06-26 |
WO2020102114A1 (en) | 2020-05-22 |
WO2020102113A1 (en) | 2020-05-22 |
EP3881171A1 (en) | 2021-09-22 |
US11893316B2 (en) | 2024-02-06 |
US11436387B2 (en) | 2022-09-06 |
US20210286914A1 (en) | 2021-09-16 |
US10963598B2 (en) | 2021-03-30 |
US20230222255A1 (en) | 2023-07-13 |
AU2019379111A1 (en) | 2021-06-24 |
EP3881171B1 (en) | 2024-01-03 |
EP3881171A4 (en) | 2022-07-06 |
US20240193318A1 (en) | 2024-06-13 |
US11531792B2 (en) | 2022-12-20 |
AU2019380266A1 (en) | 2021-06-24 |
US20210064794A1 (en) | 2021-03-04 |
US20200151287A1 (en) | 2020-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11380057B2 (en) | Generating technical drawings from building information models | |
EP3881171B1 (en) | Computer system and method for navigating building information model views | |
US11182513B2 (en) | Generating technical drawings from building information models | |
US11282217B2 (en) | Pattern matching tool | |
US11790608B2 (en) | Computer system and methods for optimizing distance calculation | |
US20230185984A1 (en) | Generating Technical Drawings From Building Information Models | |
US11841924B2 (en) | Drawing matching tool | |
WO2020167562A1 (en) | Generating technical drawings from building information models | |
US12020394B1 (en) | Visualization tool for cross sections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: NOTICE OF APPEAL FILED |
|
STCV | Information on status: appeal procedure |
Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS |
|
STCV | Information on status: appeal procedure |
Free format text: BOARD OF APPEALS DECISION RENDERED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |