IP Library Granted Patent US 12,511,813
Granted Patent B1
US 12,511,813 · App. 18/204,771 · Granted Dec 30, 2025

Techniques for providing proprietary tile-based and/or non-tile-based graphics processing to an open-source infrastructure modeling platform

Inventor: Paul Connelly (Coatesville, PA)
Assignee: Bentley Systems, Incorporated
G06T15/005G06F8/36
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,511,813
App. No.
18/204,771
Granted
Dec 30, 2025
Kind
B1
Abstract

In example embodiments, a proprietary implementation of tile-based and/or non-tile-based graphics processing is provided at run-time as a binary for use in an open-source infrastructure modeling platform. An open-source repository from which the infrastructure modeling platform is built includes a backend module and definitions of the interface of a visualization module from a private repository that implements the tile-based and/or non-tile-based processing. The open-source repository lacks code for the underlying implementation of the visualization module. The implementation of the visualization module is instead maintained in a private repository and built therefrom. In operation, the backend module calls an exposed function of a DLL that returns a pointer to a binary implementation of the visualization module. When graphics of an infrastructure model are required, the backend module utilizes the defined interface with the pointer to request tile-based and/or non-tile-based processing from the visualization module.

Claims (107)

1 . A method for rendering an infrastructure model within an open-source infrastructure modeling platform, comprising:

calling, by a backend module of an open-source infrastructure modeling platform executing on a client device or one or more cloud computing devices, a function of a dynamically loaded module (DLL) to obtain a pointer to an implementation of a visualization module built from a private repository that implements tile-based graphics processing;

determining a need to render graphics for at least a portion of the infrastructure model, wherein the determining the need to render graphics comprises:

receiving, by the backend module from the frontend module, an initial request for the description of a tile tree to which a tile belongs,

calling, by the backend module, the visualization module to obtain the description of the tile tree,

receiving, by the backend module from the frontend module, a subsequent request to generate graphics for a tile in the tile tree;

utilizing, by the backend module, an interface of the visualization module with the pointer to request tile-based processing of graphics by the implementation, wherein the request includes an identification of a set of elements that intersect a volume of the tile; and

receiving processed graphics produced by the visualization module at a frontend module of the open-source infrastructure modeling platform for display to a user.

2 . The method of claim 1 , wherein the graphics are received into a local cache at the backend module, and the providing the graphics to a frontend module further comprises:

enqueueing and returning status of the request for processing graphics;

upon completion of the request for processing graphics, providing an indication the graphics are in the local cache to the frontend module; and

fetching, by the backend module, the graphics for the tile from the local cache.

3 . The method of claim 1 , wherein the graphics are received into an external cache separate from the backend module, and the providing the graphics to a frontend module further comprises:

enqueueing and returning status of the request for processing graphics;

upon completion of the request for processing graphics, providing an indication the graphics are in the external cache to the frontend module; and

fetching, by the frontend module, the graphics for the tile from the external cache.

4 . The method of claim 1 , wherein the request for processing graphics requests non-tile-based processing and includes identification of a set of elements, or identification of a symbology and geometric primitives, and the determining the need to render graphics further comprises:

receiving, by the backend module from the frontend module, identification of the set of elements or identification of the symbology and geometric primitives.

5 . The method of claim 4 , wherein the graphics are received by the backend module and provided by the backend module to the frontend module.

6 . A method for rendering an infrastructure model within an open-source infrastructure modeling platform, comprising:

calling, by a backend module of an open-source infrastructure modeling platform executing on a client device or one or more cloud computing devices, a function of a dynamically loaded module (DLL) to obtain a pointer to an implementation of a visualization module built from a private repository that implements tile-based graphics processing and non-tile-based graphics processing;

determining a need to render graphics for at least a portion of the infrastructure model;

utilizing, by the backend module, an interface of the visualization module with the pointer to request tile-based and/or non-tile-based processing of graphics by the implementation, wherein the interface of the visualization module includes a primary interface for tile-based graphics processing and a supporting interface for non-tile-based graphics processing, and the request includes at least one of an identification of a set of elements that intersect a volume of a tile, identification of a set of elements, or an identification of a symbology and geometric primitives; and

receiving processed graphics produced by the visualization module at a frontend module of the open-source infrastructure modeling platform for display to a user.

7 . The method of claim 6 , wherein the primary interface includes one or more types selected from the group consisting of:

an Error type for an indication of kinds of errors that may occur during processing of a request by the visualization module;

a Tile Content type for storing the graphics;

a Pole State type for an indication of results/status of the request for processing graphics;

a Tile Content Source type for an indication of a method by which the frontend module may retrieve graphics returned by the visualization module;

a Tile Tree type for a description of a tile tree to which the tile belongs;

a Tile Tree Identifier type for information used to interpret the description of the tile tree in order to identify a particular tile tree; and

a Tile Content Identifier type for information used to describe the graphics to be produced from the tile within the tile tree.

8 . The method of claim 7 , wherein the primary interface includes one or more operations selected from the group consisting of:

a Get Current Version Format operation that provides a maximum version of graphics format understood by the visualization module;

a Set Use Tile Cache operation that enables or disables use of a local cache at the backend module;

a Get Tile Tree operation that obtains a current description of a tile tree;

a Purge Tile Tree operation that removes extant tile trees from memory;

a Pole Tile Content operation that returns results/status of the request for processing graphics;

a Get Tile Content operation that fetches graphics for a specific tile or produces graphics for the specific tile;

a Cancel Content Requests operation that cancels the request for processing graphics;

a Set Tracking Geometry operation that toggles tracking of changes to geometry contained within the infrastructure model; and

an Add Changes operation that updates state to record addition, deletion and/or modification of elements with the infrastructure model.

9 . The method of claim 7 , wherein the supporting interface includes one or more types selected from the group consisting of:

a Request type for description of source of geometry, a unique request ID and parameters specifying how the geometry is to be converted into graphics; and

a Results type for an object that resolves asynchronously to the graphics or an error.

10 . The method of claim 7 , wherein the supporting interface includes one or more operations selected from the group consisting of:

an Enqueue operation that adds the request for processing graphics to a queue awaiting processing;

a Cancel operation that cancels the request for processing graphics; and

a Terminate operation that cancels all requests in the queue.

11 . The method of claim 6 , wherein the request for processing graphics requests tile-based processing and includes identification of a set of elements that intersect a volume of a tile, and the determining the need to render graphics further comprises:

receiving, by the backend module from the frontend module, an initial request for the description of a tile tree to which the tile belongs;

calling, by the backend module, the visualization module to obtain the description of the tile tree; and

receiving, by the backend module from the frontend module, a subsequent request to generate graphics for a tile in the tile tree.

12 . The method of claim 11 , wherein the graphics are received into a local cache at the backend module, and the providing the graphics to a frontend module further comprises:

enqueueing and returning status of the request for processing graphics;

upon completion of the request for processing graphics, providing an indication the graphics are in the local cache to the frontend module; and

fetching, by the backend module, the graphics for the tile from the local cache.

13 . The method of claim 11 , wherein the graphics are received into an external cache separate from the backend module, and the providing the graphics to a frontend module further comprises:

enqueueing and returning status of the request for processing graphics;

upon completion of the request for processing graphics, providing an indication the graphics are in the external cache to the frontend module; and

fetching, by the frontend module, the graphics for the tile from the external cache.

14 . The method of claim 6 , wherein the request for processing graphics requests non-tile-based processing and includes identification of a set of elements, or identification of a symbology and geometric primitives, and the determining the need to render graphics further comprises:

receiving, by the backend module from the frontend module, identification of the set of elements or identification of the symbology and geometric primitives.

15 . A non-transitory electronic device readable medium having instructions stored thereon for an open-source infrastructure modeling platform, wherein the instructions when executed by one or more processors of one or more computing devices are operable to:

call a function to obtain a pointer to an implementation of a visualization module built from a private repository that implements tile-based graphics processing;

determine a need to render graphics for at least a portion of the infrastructure model by:

receiving an initial request for the description of a tile tree to which a tile belongs,

calling the visualization module to obtain the description of the tile tree, and

receiving a subsequent request to generate graphics for the tile in the tile tree;

utilize an interface of a visualization module with the pointer to request tile-based processing of graphics by the implementation, wherein the request includes at least an identification of a set of elements that intersect a volume of the tile; and

receive graphics for display.

16 . The non-transitory electronic device readable medium of claim 15 , wherein the graphics are received into a local cache, and the instructions when executed are further operable to:

enqueue and return status of the request for processing graphics;

upon completion of the request for processing graphics, provide an indication the graphics are in the local cache; and

fetch the graphics for the tile from the local cache.

17 . The non-transitory electronic device readable medium of claim 15 , wherein the graphics are received into an external cache, and the instructions when executed are further operable to:

enqueue and return status of the request for processing graphics;

upon completion of the request for processing graphics, provide an indication the graphics are in the external cache; and

fetch the graphics for the tile from the external cache.

18 . The non-transitory electronic device readable medium of claim 15 , wherein the implementation of the visualization module also implements non-tile-based graphics processing of graphics, and the instructions when executed are further operable to:

utilize the interface of the visualization module with the pointer to request non-tile-based processing of graphics by the implementation, wherein the request for non-tile-based processing of graphics includes identification of a set of elements, or identification of a symbology and geometric primitives; and

receive additional graphics for display.

19 . The non-transitory electronic device readable medium of claim 15 , wherein the interface of the visualization module includes a primary interface for tile-based graphics processing, and the primary interface includes one or more types selected from the group consisting of:

an Error type for indication of kinds of errors that may occur during processing of a request by the visualization module;

a Tile Content type for storing the graphics;

a Pole State type for an indication of status of the request for processing graphics;

a Tile Content Source type for an indication of a method by which the frontend module may retrieve graphics returned by the visualization module;

a Tile Tree type for a description of a tile tree to which the tile belongs;

a Tile Tree Identifier type for information used to interpret the description of the tile tree in order to identify a particular tile tree; and

a Tile Content Identifier type for information used to describe the graphics to be produced from the tile within the tile tree.

20 . The non-transitory electronic device readable medium of claim 15 , wherein the interface of the visualization module includes a primary interface for tile-based graphics processing, and the primary interface includes one or more operations selected from the group consisting of:

a Get Current Version Format operation that provides a maximum version of graphics format understood by the visualization module;

a Set Use Tile Cache operation that enables or disables use of a local cache at the backend module;

a Get Tile Tree operation that obtains a current description of a tile tree;

a Purge Tile Tree operation that removes extant tile trees from memory;

a Pole Tile Content operation that returns status of the request for processing graphics;

a Get Tile Content operation that fetches graphics for a specific tile from or produces graphics for the specific tile;

a Cancel Content Requests operation that cancels the request for processing graphics;

a Set Tracking Geometry operation that toggles tracking of changes to geometry contained within the infrastructure model; and

an Add Changes operation that updates state to record addition, deletion and/or modification of elements with the infrastructure model.

21 . The non-transitory electronic device readable medium of claim 18 , wherein the interface of the visualization module includes a supporting interface for non-tile-based graphics processing, and the supporting interface includes one or more types selected from the group consisting of:

a Request type for description of source of geometry, a unique request ID and parameters specifying how the geometry is to be converted into graphics; and

a Results type for an object that resolves asynchronously to the graphics or an error.

22 . The non-transitory electronic device readable medium of claim 18 , wherein the interface of the visualization module includes a supporting interface for non-tile-based graphics processing, and the supporting interface includes one or more operations selected from the group consisting of:

an Enqueue operation that adds the request for processing graphics to a queue awaiting processing;

a Cancel operation that cancels the request for processing graphics; and

a Terminate operation that cancels all requests in the queue.

Assignments (2)
SECURITY INTEREST Recorded Oct 25, 2024
From: BENTLEY SYSTEMS, INCORPORATED
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 069268/0042 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2023
From: CONNELLY, PAUL
To: BENTLEY SYSTEMS, INCORPORATED
Reel/Frame 063832/0640 →
References Cited (62)
US 6341291B1 · Bentley et al. · 2002 [cited by applicant]
US 8706692B1 · Luthra · 2014 [cited by applicant]
US 8719229B1 · Awe et al. · 2014 [cited by applicant]
US 9053080B2 · Look et al. · 2015 [cited by applicant]
US 9390201B2 · Rameau et al. · 2016 [cited by applicant]
US 9430229B1 · Van Zijst et al. · 2016 [cited by applicant]
US 9575764B1 · Turner et al. · 2017 [cited by applicant]
US 10311170B2 · Heidinger et al. · 2019 [cited by applicant]
US 11100703B2 · Connelly et al. · 2021 [cited by applicant]
US 11113847B2 · Connelly et al. · 2021 [cited by applicant]
US 11144309B2 · Wilson et al. · 2021 [cited by applicant]
US 11645296B1 · Bentley et al. · 2023 [cited by applicant]
US 12229550B2 · Bentley et al. · 2025 [cited by applicant]
US 20050198244A1 · Eilam · 2005 [cited by applicant]
US 20070021955A1 · Tolone · 2007 [cited by applicant]
US 20070299937A1 · Winter et al. · 2007 [cited by applicant]
US 20080140732A1 · Wilson et al. · 2008 [cited by applicant]
US 20110004827A1 · Doerr · 2011 [cited by examiner]
US 20110113359A1 · Massey et al. · 2011 [cited by applicant]
US 20110126275A1 · Anderson · 2011 [cited by applicant]
US 20110264678A1 · Mital et al. · 2011 [cited by applicant]
US 20120096070A1 · Bryzak · 2012 [cited by applicant]
US 20120284684A1 · Michaely et al. · 2012 [cited by applicant]
US 20130036400A1 · Bak et al. · 2013 [cited by applicant]
US 20140013099A1 · Sekiguchi et al. · 2014 [cited by applicant]
US 20140053145A1 · Steigleder · 2014 [cited by applicant]
US 20140358860A1 · Wautier · 2014 [cited by applicant]
US 20150106790A1 · Bigwood et al. · 2015 [cited by applicant]
US 20150229638A1 · Loo · 2015 [cited by applicant]
US 20150286558A1 · Bartlow et al. · 2015 [cited by applicant]
US 20160162363A1 · Letkeman · 2016 [cited by applicant]
US 20170123934A1 · Bentley · 2017 [cited by applicant]
US 20170220606A1 · Wang et al. · 2017 [cited by applicant]
US 20170277761A1 · Bentley et al. · 2017 [cited by applicant]
US 20180144016A1 · Bestfleisch et al. · 2018 [cited by applicant]
US 20190004925A1 · Buckingham et al. · 2019 [cited by applicant]
US 20190079958A1 · Bentley et al. · 2019 [cited by applicant]
US 20190081847A1 · Bentley et al. · 2019 [cited by applicant]
US 20190108245A1 · Bentley et al. · 2019 [cited by applicant]
US 20190354540A1 · Stigsen · 2019 [cited by applicant]
US 20200117445A1 · Wilson et al. · 2020 [cited by applicant]
US 20200303060A1 · Haemel · 2020 [cited by examiner]
US 20220076503A1 · Connelly · 2022 [cited by applicant]
US 20230177229A1 · Marini et al. · 2023 [cited by applicant]
US 20230244684A1 · Bentley et al. · 2023 [cited by applicant]
CN 1825306A · 2006 [cited by applicant]
CN 105912411A · 2016 [cited by applicant]
CN 106462639A · 2017 [cited by applicant]
CN 106575227A1 · 2017 [cited by applicant]
WO WO2014193458A1 · 2014 [cited by applicant]
Chinese Search Report for Chinese Application No. 201980082365.4 dated Jun. 12, 2023, pp. 1-2. [cited by applicant]
“Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” International Filing Date: Oct. 1, 2019, International Application N… [cited by applicant]
Scott, Tamara, “How to Use an API: Just the Basics,” Retrieved from the Internet: <https://technologyadvice.com/blog/information-technology/how-to-use-an-api/>, Dec. 19, 2016, pp. 1-11. [cited by applicant]
U.S. Appl. No. 16/156,824, filed Oct. 10, 2018 by Ramanujam Raman et al. for Technique for Generating a Change Cache Database Utilized to Inspect Changes Made to a Repository, pp. 1-35. [cited by applicant]
U.S. Appl. No. 16/559,057, filed Sep. 3, 2019 by Keith A. Bentley et al. for Techniques for Decoupling Access to Infrastructure Models, pp. 1-26. [cited by applicant]
Chinese Office Action for Chinese Application No. 201980067119.1 dated Jul. 30, 2024, pp. 1-24. [cited by applicant]
Chinese Search Report for Chinese Application No. 201980067119.1 dated Jul. 29, 2024, pp. 1-5. [cited by applicant]
Brun, Yuriy, et al., “Early Detection of Collaboration Conflicts and Risks,” IEEE, IEEE Computer Society, IEEE Transactions on Software Engineering, IEEE Service Center, Los Alamitos, CA, US, vol. 39, No. 10, Oct. 1, 20… [cited by applicant]
“Chinese Search Report for Chinese Application No. 2019800823654”, dated May 19, 2024, pp. 1-2. [cited by applicant]
“Chinese Search Report for Chinese Application No. 2019800671191”, dated Dec. 4, 2024, pp. 1-2. [cited by applicant]
“Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” International Filing Date: Oct. 1, 2019, International Application N… [cited by applicant]
U.S. Appl. No. 18/213,588, filed Jun. 23, 2023 by Paul Connelly for Techniques for Providing Proprietary Solid Modeling to an Open-Source Infrastructure Modeling Platform, pp. 1-38. [cited by applicant]