RU2736628C1 - Method and system for rendering 3d models in a browser using distributed resources - Google Patents

Method and system for rendering 3d models in a browser using distributed resources Download PDF

Info

Publication number
RU2736628C1
RU2736628C1 RU2020121817A RU2020121817A RU2736628C1 RU 2736628 C1 RU2736628 C1 RU 2736628C1 RU 2020121817 A RU2020121817 A RU 2020121817A RU 2020121817 A RU2020121817 A RU 2020121817A RU 2736628 C1 RU2736628 C1 RU 2736628C1
Authority
RU
Russia
Prior art keywords
objects
server
dimensional model
cubes
list
Prior art date
Application number
RU2020121817A
Other languages
Russian (ru)
Inventor
Дамир Ахатович Шавалеев
Денис Олегович Аксёнов
Евгений Уралович Хафизов
Михаил Александрович Рябов
Руслан Ахсарбекович Гелиев
Original Assignee
Общество с ограниченной ответственностью "ЭсЭнЭйч МейстерСофт"
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Общество с ограниченной ответственностью "ЭсЭнЭйч МейстерСофт" filed Critical Общество с ограниченной ответственностью "ЭсЭнЭйч МейстерСофт"
Priority to RU2020121817A priority Critical patent/RU2736628C1/en
Priority to PCT/RU2020/000373 priority patent/WO2021235971A1/en
Application granted granted Critical
Publication of RU2736628C1 publication Critical patent/RU2736628C1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

FIELD: image processing means.
SUBSTANCE: invention relates to means of performing 3D rendering (visualization) on user configurations in conditions of limited computational resources. At least one three-dimensional model is obtained on the server. Each object in the three-dimensional model is broken down into an array of triangles and placed into the objects storage by its unique identifier. A spatial index is formed in the database of all objects from the obtained three-dimensional model. A visibility pyramid is formed, which consists of a predetermined number of cubes and a request is sent to the server to obtain a list of objects included in the given cubes. A list of objects for visualization is formed by primary rejection of three-dimensional objects according to the method of clipping by entering into the requested cubes at the server side based on the spatial index of each object. Objects are sorted from the found list from the larger to the lower based on a predetermined criterion. An array of unique identifiers of the sorted objects is sent to the user's browser from the server. Objects are rendered based on unique identifiers obtained at the previous step.
EFFECT: high speed of processing and visualizing 3D objects.
13 cl, 8 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[001] Данное техническое решение в общем относится к вычислительной области, а в частности к способам и системам для осуществления 3D рендеринга (визуализации) на пользовательских конфигурациях в условиях ограниченных вычислительных ресурсов.[001] This technical solution generally relates to the computing field, and in particular to methods and systems for performing 3D rendering (rendering) on custom configurations in conditions of limited computing resources.

УРОВЕНЬ ТЕХНИКИTECHNOLOGY LEVEL

[002] В настоящее время современные решения в системах автоматизированного проектирования (CAD), архитектурном моделировании, разработке компьютерных игр, технологиях VR и AR требует интерактивной визуализации динамических данных очень больших объемов, на порядки превосходящих имеющиеся вычислительные мощности.[002] Currently, modern solutions in computer-aided design (CAD) systems, architectural modeling, computer games development, VR and AR technologies require interactive visualization of dynamic data of very large volumes, orders of magnitude exceeding the available computing power.

[003] Из уровня техники известен продукт Autodesk online viewer (https//viewer.autoriesk.com/), который позволяет просматривать 2D- и 3D-файлы САП. Данное решение очень хорошо работает с 3D в браузере. Однако, вектор оптимизации основан на сжатии исходной модели, а так как техники сжатия моделей имеют конечный предел, на больших моделях (кол-во объектов модели(ей) >1 млн) такой подход не работает.[003] An Autodesk online viewer (https // viewer.autoriesk.com /) is known in the art, which allows you to view 2D and 3D CAD files. This solution works very well with 3D in a browser. However, the optimization vector is based on compression of the original model, and since the compression techniques of models have a finite limit, this approach does not work on large models (the number of objects in the model (s)> 1 million).

[004] Также из уровня техники известен патент № US 10339696 B2 «On demand geometry and acceleration structure creation with discrete production scheduling» (патентообладатель: Imagination Technologies Ltd, дата публикации: 02.07.2019). В данном техническом решении раскрываются системы и методы обработки геометрии для процессов растеризации и трассировки лучей, которые предусматривают предварительную обработку геометрии источника, например, путем трассировки лучей или другой процедурной модификации геометрии источника, для создания окончательной геометрии, на которой будет основываться рендеринг. Ускоряющая структура (или ее часть) для использования во время трассировки лучей определяется на основе окончательной геометрии. Только крупнозернистые элементы ускоряющей структуры могут быть отрисованы или сохранены, и мелкозернистая структура в конкретном крупнозернистом элементе может быть получена в ответ на набор лучей, готовых к прохождению в крупнозернистом элементе. Конечная геометрия может быть воссоздана в ответ на запрос от механизма растеризации и от блоков пересечения лучей, которым требуется такая геометрия для тестирования пересечения с примитивами.[004] Also known from the prior art patent No. US 10339696 B2 "On demand geometry and acceleration structure creation with discrete production scheduling" (patent holder: Imagination Technologies Ltd, publication date: 02.07.2019). This technical solution discloses geometry processing systems and methods for rasterization and ray tracing processes that involve preprocessing the source geometry, for example, by ray tracing or other procedural modification of the source geometry, to create the final geometry on which the rendering will be based. The acceleration structure (or part of it) for use during ray tracing is determined based on the final geometry. Only the coarse-grained elements of the accelerating structure can be rendered or stored, and the fine-grained structure in a particular coarse element can be obtained in response to a set of beams ready to pass through the coarse element. The target geometry can be recreated in response to requests from the rasterization engine and from ray intersection units that require such geometry to test intersection with primitives.

[005] Также известен источник информации US 8593459 B2 «Tree insertion depth adjustment based on view frustum and distance culling» (патентообладатель: International Business Machines Corp, дата публикации: 26.11.2013). В данном решении раскрывается способ использования иерархии ограничивающего объема для трассировки лучей, в котором определяют на вычислительном устройстве расстояние между ограничивающим объемом множества ограничивающих объемов и эталоном, в котором множество ограничивающих объемов содержит разделенные части данных изображения, и при этом структура данных включает в себя множество узлов, соответствующих множеству ограничивающих объемов; устанавливают, в соответствии с расстоянием, порогового значения конечного узла для узла, соответствующего ограничивающему объему, причем пороговое значение конечного узла представляет собой количество примитивов, которые должны быть сохранены в узле до разделения; и изменение размера ограничивающего тома, основанное, по меньшей мере, частично на расстоянии, и основанное, по меньшей мере, частично на определении, что число примитивов, которые должны быть размещены в узле, соответствующем ограничивающему объему, превышает пороговое значение конечного узла.[005] Also known as a source of information US 8593459 B2 "Tree insertion depth adjustment based on view frustum and distance culling" (patent holder: International Business Machines Corp, publication date: 11/26/2013). This solution discloses a method of using a hierarchy of bounding volumes for ray tracing, in which the distance between the bounding volume of a plurality of bounding volumes and a reference is determined on a computing device, in which the plurality of bounding volumes contains divided portions of image data, and wherein the data structure includes a plurality of nodes corresponding to a set of bounding volumes; setting, in accordance with the distance, a threshold value of the end node for the node corresponding to the limiting volume, the threshold value of the end node being the number of primitives to be stored in the node before splitting; and resizing the bounding volume based at least in part on the distance and based at least in part on the determination that the number of primitives to be placed in a node corresponding to the bounding volume exceeds the target node's threshold.

[006] Однако решения, известные из уровня техники, обладают низкой скоростью и требуют значительной вычислительной нагрузки при работе в веб-браузере на клиенте.[006] However, prior art solutions are slow and computationally intensive when running in a web browser on a client.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[001] Данное техническое решение направлено на устранение недостатков, свойственных решениям, известным из уровня техники.[001] This technical solution is aimed at eliminating the disadvantages inherent in solutions known from the prior art.

[002] Технической проблемой или технической задачей, решаемой в данном техническом решении, является создание технического решения, позволяющего визуализировать и перестраивать 3D модели, осуществлять пользовательское взаимодействие с 3D моделями в реальном времени. Данное решение должно обеспечивать возможность работать пользователю с моделями, которые не могут быть полностью загружены на оборудование пользователя (например, персональный компьютер, или планшет, или мобильный телефон).[002] A technical problem or a technical problem solved in this technical solution is the creation of a technical solution that allows visualizing and rebuilding 3D models, to carry out user interaction with 3D models in real time. This solution should provide the ability for the user to work with models that cannot be fully loaded onto the user's equipment (for example, a personal computer, or a tablet, or a mobile phone).

[003] Техническим результатом, достигающимся при решении вышеуказанной технической проблемы, является повышение скорости обработки и визуализации 3D объектов.[003] The technical result achieved by solving the above technical problem is to increase the speed of processing and visualization of 3D objects.

[004] Дополнительным техническим результатом является обеспечение работы с 3D моделями на одной сцене, состоящими из большого количества исходных САП моделей (файлов) и большого количества 3D объектов (больше 1 млн).[004] An additional technical result is the provision of working with 3D models on one scene, consisting of a large number of original CAD models (files) and a large number of 3D objects (more than 1 million).

[005] Также при реализации данного технического решения эффективно используются серверные мощности, в том числе за счет горизонтального масштабирования. Таким образом, пользователь, работающий на десктопе/планшете/телефоне, для расчета рендера 3D сцены задействует один и более серверов. Все высоконагруженные операции переносятся и обрабатываются с клиента на серверную сторону.[005] Also, when implementing this technical solution, server capacities are effectively used, including due to horizontal scaling. Thus, a user working on a desktop / tablet / phone uses one or more servers to calculate the rendering of a 3D scene. All high-load operations are transferred and processed from the client to the server side.

[006] Указанный технический результат достигается за счет осуществления способа рендеринга 3D моделей в браузере с использованием распределенных ресурсов, выполняемый по меньшей мере одним вычислительным устройством, в котором получают по меньшей мере одну трехмерную модель на сервере; разбивают каждый объект в трехмерной модели на массив треугольников и помещают в хранилище объектов по его уникальному идентификатору; формируют пространственный индекс в базе данных всех объектов из полученной трехмерной модели; формируют пирамиду видимости, состоящую из заранее заданного количества кубов и отправляют на сервер запрос для получения списка объектов, входящих в данные кубы; формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на стороне сервера на основании пространственного индекса каждого объекта; осуществляют сортировку объектов из найденного списка на основании заранее заданного критерия; направляют в браузер пользователя с сервера массив уникальных идентификаторов отсортированных объектов; осуществляют рендеринг объектов на основании уникальных идентификаторов, полученных на предыдущем шаге.[006] The specified technical result is achieved by implementing a method for rendering 3D models in a browser using distributed resources, performed by at least one computing device, in which at least one three-dimensional model is obtained on the server; break each object in the 3D model into an array of triangles and place it in the object storage by its unique identifier; form a spatial index in the database of all objects from the obtained three-dimensional model; form a pyramid of visibility, consisting of a predetermined number of cubes and send a request to the server to obtain a list of objects included in these cubes; generating a list of objects for rendering by first culling three-dimensional objects using the clipping method by entering the requested cubes on the server side based on the spatial index of each object; sorting objects from the found list based on a predetermined criterion; sending an array of unique identifiers of sorted objects to the user's browser from the server; render objects based on the unique identifiers obtained in the previous step.

[007] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем через web-браузер.[007] In some embodiments of the technical solution, at least one three-dimensional model is obtained on the server, downloaded by the user through a web browser.

[008] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем из CAD-файла.[008] In some embodiments of the technical solution, at least one three-dimensional model is obtained on the server, loaded by the user from a CAD file.

[009] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере в формате RVM/ATT или IFC.[009] In some embodiments of the technical solution, at least one 3D model is obtained on the server in RVM / ATT or IFC format.

[0010] В некоторых вариантах реализации технического решения полученной трехмерной модели объекты представлены в виде дерева.[0010] In some embodiments of the technical solution of the obtained three-dimensional model, objects are represented in the form of a tree.

[0011] В некоторых вариантах реализации технического решения каждый объект в полученной трехмерной модели содержит уникальный идентификатор объекта и/или ссылку на родительский объект, и/или матрицу пространственного преобразования относительно родительского объекта, и/или материалы объекта, и/или 2D/3D геометрия объекта, и/или свойства каждого объекта (атрибуты).[0011] In some embodiments of the technical solution, each object in the resulting three-dimensional model contains a unique object identifier and / or a reference to the parent object, and / or a spatial transformation matrix relative to the parent object, and / or materials of the object, and / or 2D / 3D geometry object, and / or properties of each object (attributes).

[0012] В некоторых вариантах реализации технического решения в качестве пространственного индекса используют разбиение всей области пространства с фиксированным шагом по каждому измерению или восьмеричные деревья, или kD-деревья, или BSP-деревья, или BVH (Bounding Volume Hierarchy), или Interval Tree, или R-деревья.[0012] In some embodiments of the technical solution, as a spatial index, a partition of the entire area of space with a fixed step for each dimension is used, or octal trees, or kD trees, or BSP trees, or BVH (Bounding Volume Hierarchy), or Interval Tree, or R-trees.

[0013] В некоторых вариантах реализации технического решения формируют пространственный индекс следующим образом:[0013] In some embodiments of the technical solution, the spatial index is generated as follows:

a. для каждого объекта трехмерной модели находят его матрицу трансформации относительно начала координат с учетом структуры дерева трехмерной модели;a. for each object of the three-dimensional model, find its transformation matrix relative to the origin, taking into account the tree structure of the three-dimensional model;

b. для каждой геометрии объекта применяют операцию трансформации, получая геометрию всех объектов относительно одного начала координат в мировых координатахb. for each geometry of the object, a transformation operation is applied, obtaining the geometry of all objects relative to one origin in world coordinates

c. полученную трансформированную геометрию помещают в базу данных по его уникальному идентификатору;c. the resulting transformed geometry is placed in the database by its unique identifier;

d. для каждого объекта с трансформированной геометрией вычисляют пространственный индекс и помещают в базу данных.d. for each object with the transformed geometry, a spatial index is calculated and placed in the database.

[0014] В некоторых вариантах реализации технического решения отправляют на сервер запрос для отображения, представляющий собой JSON - массив координат.[0014] In some embodiments of the technical solution, a request for display is sent to the server, which is a JSON array of coordinates.

[0015] В некоторых вариантах реализации технического решения при получении с сервера массива уникальных идентификаторов найденных отсортированных объектов сравнивают этот список с имеющимся кэшем объектов, причем[0015] In some embodiments of the technical solution, when an array of unique identifiers of the found sorted objects is received from the server, this list is compared with the available cache of objects, and

• все отсутствующие в кэше объектов UID помечаются как новые;• all UID objects missing from the cache are marked as new;

• объекты, которые присутствуют в кэше объектов, но отсутствуют в усеченной пирамиде видимости, помечаются как устаревшие и удаляются из кэша;• objects that are present in the cache of objects, but are not in the truncated pyramid of visibility, are marked as obsolete and removed from the cache;

• для новых объектов осуществляют фоновую загрузку материалов и геометрий в соответствующие кэши.• for new objects, background loading of materials and geometries into the corresponding caches is performed.

[0016] В некоторых вариантах реализации технического решения осуществляют рендеринг только тех объектов, которые присутствуют в кэше, на основании уникальных идентификаторов.[0016] In some implementations of the technical solution, only those objects that are present in the cache are rendered based on unique identifiers.

[0017] В некоторых вариантах реализации технического решения при сортировке объектов заранее заданным критерием является угловой размер каждого объекта и/или дистанция до камеры, и/или занимаемый объем, и/или площадь объекта.[0017] In some embodiments of the technical solution, when sorting objects, a predetermined criterion is the angular size of each object and / or the distance from the camera and / or the occupied volume and / or area of the object.

[0018] Также указанный технический результат достигается благодаря осуществлению системы рендеринга 3D моделей в браузере с использованием распределенных ресурсов, которая содержит по меньшей мере один сервер, выполненный с возможностью получения по меньшей мере одной трехмерной модели от клиента; разбиения каждого объекта в трехмерной модели на массив треугольников и помещения в хранилище объектов по его уникальному идентификатору; формирования пространственного индекса в базе данных всех объектов из полученной трехмерной модели; формирования списка объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на основании пространственного индекса каждого объекта; сортировки объектов из найденного списка от большего к меньшему на основании заранее заданного критерия направления клиенту массива уникальных идентификаторов отсортированных объектов; по меньшей мере один клиент, выполненный с возможностью направления по меньшей мере одной трехмерной модели на сервер; формирования пирамиды видимости, состоящей из заранее заданного количества кубов и направления на сервер запроса для получения списка объектов, входящих в данные кубы; осуществления рендеринга объектов на основании уникальных идентификаторов, полученных ранее.[0018] Also, the specified technical result is achieved by implementing a system for rendering 3D models in a browser using distributed resources, which contains at least one server configured to receive at least one three-dimensional model from the client; splitting each object in a three-dimensional model into an array of triangles and placing it in the object storage by its unique identifier; forming a spatial index in the database of all objects from the obtained three-dimensional model; generating a list of objects for visualization by first culling three-dimensional objects using the clipping method by entering the requested cubes based on the spatial index of each object; sorting objects from the found list from largest to smallest based on a predetermined criterion for sending an array of unique identifiers of sorted objects to the client; at least one client configured to send at least one three-dimensional model to the server; forming a visibility pyramid consisting of a predetermined number of cubes and sending a request to the server to obtain a list of objects included in these cubes; rendering objects based on unique identifiers obtained earlier.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS

[0019] Признаки и преимущества настоящего технического решения станут очевидными из приводимого ниже подробного описания и прилагаемых чертежей, на которых:[0019] The features and advantages of the present technical solution will become apparent from the following detailed description and the accompanying drawings, in which:

[0020] На Фиг. 1 показана общая схема работы способа рендеринга 3D моделей в браузере с использованием распределенных ресурсов.[0020] FIG. 1 shows the general scheme of the method of rendering 3D models in a browser using distributed resources.

[0021] На Фиг. 2 показан пример реализации загрузки 3D модели на сервер с клиента.[0021] FIG. 2 shows an example of the implementation of loading a 3D model to the server from the client.

[0022] На Фиг. 3 показан пример реализации триангуляции объектов трехмерной модели и присвоение каждому объекту уникального идентификатора.[0022] FIG. 3 shows an example of the implementation of triangulation of objects of a three-dimensional model and assignment of a unique identifier to each object.

[0023] На Фиг. 4 показан вариант реализации системы рендеринга 3D моделей в браузере с использованием распределенных ресурсов в виде блок-схемы.[0023] FIG. 4 shows an embodiment of a system for rendering 3D models in a browser using distributed resources in the form of a block diagram.

[0024] На Фиг. 5 показан пример реализации выделения из трехмерной модели набор различной информации и сохранения по различным хранилищам данных.[0024] FIG. 5 shows an example of the implementation of the selection from a three-dimensional model of a set of various information and storage in various data stores.

[0025] На Фиг. 6 показан пример реализации формирования списка объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по пирамиде видимости на стороне сервера.[0025] FIG. 6 shows an example of the implementation of the formation of a list of objects for visualization by means of primary culling of three-dimensional objects using the clipping method along the visibility pyramid on the server side.

[0026] На Фиг. 7 показан вариант реализации разбивания усеченной пирамиды видимости на n кубов.[0026] FIG. 7 shows an embodiment of dividing the truncated visibility pyramid into n cubes.

[0027] На Фиг. 8 показана блок-схема визуализации (рендеринга) трехмерной сцены и работа с кэшем на клиенте.[0027] FIG. 8 shows a block diagram of rendering (rendering) of a three-dimensional scene and working with the cache on the client.

ПОДРОБНОЕ ОПИСАНИЕ ТЕХНИЧЕСКОГО РЕШЕНИЯDETAILED DESCRIPTION OF THE TECHNICAL SOLUTION

[0028] Данное техническое решение может быть реализовано на компьютере, в виде системы или машиночитаемого носителя, содержащего инструкции для выполнения вышеупомянутого способа.[0028] This technical solution can be implemented on a computer, in the form of a system or computer-readable medium containing instructions for performing the above method.

[0029] Техническое решение может быть реализовано в виде распределенной компьютерной системы.[0029] The technical solution can be implemented as a distributed computer system.

[0030] В данном изобретении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций).[0030] In this invention, a system means a computer system, a computer (electronic computer), CNC (numerical control), PLC (programmable logic controller), computerized control systems and any other devices capable of performing a given, well-defined sequence of operations (actions, instructions).

[0031] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).[0031] By a command processor is meant an electronic unit or an integrated circuit (microprocessor) that executes machine instructions (programs).

[0032] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.[0032] An instruction processor reads and executes machine instructions (programs) from one or more storage devices. Data storage devices can be, but are not limited to, hard disks (HDD), flash memory, ROM (read only memory), solid-state drives (SSD), optical drives.

[0033] Ниже будут описаны понятия и определения, необходимые для подробного раскрытия осуществляемого технического решения.[0033] The following will describe the concepts and definitions necessary for a detailed disclosure of the implemented technical solution.

[0034] Модель (3D-модель) - исходная трехмерная модель (состоящая из 3D-объектов), представленная в одном или нескольких из существующих 3D-форматов (Autodesk FBX и пр.), в отношении которых решается задача интерактивной 3D-визуализации.[0034] Model (3D model) - an initial three-dimensional model (consisting of 3D objects), represented in one or more of the existing 3D formats (Autodesk FBX, etc.), in relation to which the task of interactive 3D visualization is being solved.

[0035] Сетка (Mesh, Геометрия объекта) - трехмерная сетка, совокупность точек и граней которой описывают геометрию соответствующего 3D-объекта.[0035] Mesh (Geometry of an object) - a three-dimensional mesh, a collection of points and faces which describe the geometry of the corresponding 3D-object.

[0036] Макет модели (Layout) - набор данных, описывающих перечень и иерархическую вложенность (родитель-ребенок) объектов 3D-модели, ссылки на геометрию (в случае партий - на геометрию эталонного объекта) в виде UUID или иных идентификаторов, и параметры их пространственного преобразования относительно родительских объектов (трансформы из локальных в родительскую систему координат).[0036] Layout of the model (Layout) - a set of data describing the list and hierarchical nesting (parent-child) of 3D-model objects, links to geometry (in the case of batches - to the geometry of the reference object) in the form of UUIDs or other identifiers, and their parameters spatial transformation relative to parent objects (transforms from local to parent coordinate system).

[0037] Матрицы пространственного преобразования (Transforms, Трансформы) - численные матрицы 4×4, описывающие преобразования над пространственным положением объекта: сдвиг, поворот, масштаб.[0037] Spatial transformation matrices (Transforms) are 4 × 4 numerical matrices that describe transformations over the spatial position of an object: shift, rotation, scale.

[0038] Клиентская часть (клиент, клиентский рендер, клиентский вьюер) - клиентская часть программного решения, исполняемая в среде web-браузера (JS), WASM и т.п., не ограничиваясь, и отвечающая за интерактивную 3D-визуализацию исходной модели.[0038] Client part (client, client renderer, client viewer) is a client part of a software solution executed in a web browser (JS), WASM, etc., but not limited to, and is responsible for interactive 3D rendering of the original model.

[0039] Реестр объектов к отрисовке - перечень объектов, содержащий только видимые в текущем кадре объекты, которые подлежат отрисовке на экране. Является результатом выполнения ОС-вычислений.[0039] Registry of objects to be drawn - a list of objects containing only objects visible in the current frame that are to be drawn on the screen. It is the result of performing OS calculations.

[0040] Канал обмена данными (web-socket, http, https, grpc и т.д.) - распределенная часть программного решения (используется как на клиентской, так и на серверной стороне решения), используемая для обмена информацией о состоянии 3D-объектов и сцены в целом.[0040] A communication channel (web-socket, http, https, grpc, etc.) is a distributed part of a software solution (used on both the client and server side of the solution) used to exchange information about the state of 3D objects and the scene in general.

[0041] Информация о состоянии - совокупность данных, описывающих текущее положение камеры в кадре, разрешение экрана, размер окна (в котором производится отрисовка), параметры отсечения и выбраковки объектов, а также пространственные смещения объектов от их предыдущего положения в виде трансформов (если объекты двигались).[0041] State information - a set of data describing the current position of the camera in the frame, screen resolution, window size (in which rendering is performed), parameters for clipping and culling objects, as well as spatial displacements of objects from their previous position in the form of transforms (if objects moved).

[0042] Буфер чтения - буфер в GPU-памяти, используемый для отрисовки текущего кадра. Каждая отрисовка (graphics pipeline) производится на базе информации, размещенной в этом буфере (непрерывный цикл).[0042] Read Buffer - A buffer in GPU memory used to draw the current frame. Each drawing (graphics pipeline) is performed based on the information stored in this buffer (continuous loop).

[0043] Буфер записи - буфер в GPU-памяти, который используется для подготовки нового буфера чтения в случае, если сцена в «текущем» кадре изменилась (сдвинулись объекты, повернулась камера и т.д.). После того, как буфер записи полностью подготовлен - отрисовка переключается на него (он становится буфером чтения), а предшествующий буфер чтения используется в последующем как буфер записи (меняются местами).[0043] Write buffer is a buffer in GPU memory, which is used to prepare a new read buffer in case the scene in the "current" frame has changed (objects moved, the camera turned, etc.). After the write buffer is fully prepared, rendering switches to it (it becomes a read buffer), and the previous read buffer is used later as a write buffer (swapped).

[0044] Партия объектов (Batch, инстансы, instances) - группировка объектов идентичной геометрии (т.е. которые отличаются только разными сдвигами/поворотами/ масштабом) в одну партию, для которой задается описание геометрии эталонного объекта, а остальные - задаются в виде трансформов из объектного (т.е. эталонного объекта) в мировое пространство.[0044] A batch of objects (Batch, instances, instances) is a grouping of objects of identical geometry (ie, which differ only in different shifts / rotations / scales) into one batch, for which a description of the geometry of the reference object is set, and the rest are set in the form transforms from an object (i.e. a reference object) to world space.

[0045] Объектно-ориентированный ограничивающий параллелепипед (ОВВ, ООВВ, Object-Oriented Bounding Box) - одна из вариаций технологии ограничивающих объемов, используемой для упрощения вспомогательных вычислений при 3D-визуализациях путем проведения тестов (вычислений) над упрощенным представлением объектов (используется в случаях, когда вычисления по точной геометрии объектов занимают неоправданно много времени / ресурсов).[0045] Object-Oriented Bounding Box (OBB, OOBB, Object-Oriented Bounding Box) is one of the variations of the bounding volume technology used to simplify auxiliary computations in 3D visualizations by performing tests (calculations) on a simplified representation of objects (used in cases when calculations on the exact geometry of objects take an unreasonable amount of time / resources).

[0046] 3D-рендеринг (рендеринг) - создание цифрового растрового изображения по разработанной трехмерной сцене при помощи специальных компьютерных программ. Термин используется в художественной и технической компьютерной графике.[0046] 3D-rendering (rendering) - the creation of a digital raster image on the developed three-dimensional scene using special computer programs. The term is used in artistic and technical computer graphics.

[0047] Key-value хранилище - база данных на основе пар «ключ-значение» - это тип нереляционных баз данных, в котором для хранения данных используется простой метод «ключ-значение». База данных на основе пар «ключ-значение» хранит данные как совокупность пар «ключ-значение», в которых ключ служит уникальным идентификатором. Как ключи, так и значения могут представлять собой что угодно: от простых до сложных составных объектов. Базы данных с использованием пар «ключ-значение» поддерживают высокую разделяемость и обеспечивают беспрецедентное горизонтальное масштабирование, недостижимое при использовании других типов баз данных.[0047] Key-value storage - a database based on key-value pairs is a type of non-relational database that uses a simple key-value method to store data. A key-value-pair database stores data as a collection of key-value pairs in which the key serves as a unique identifier. Both keys and values can be anything from simple to complex composite objects. Databases using key / value pairs are highly separable and provide unprecedented scale-out not possible with other types of databases.

[0048] Шаг 110: получают по меньшей мере одну трехмерную модель на сервере.[0048] Step 110: obtain at least one 3D model on the server.

[0049] Первоначально пользователь технического решения инициирует загрузку трехмерной модели 230 (иногда - 3D модель), как показано на Фиг. 2, в web-браузере клиента 210 на сервер 240 или посредством мобильного устройства связи пользователя, например, через мобильное приложение посредством сети передачи данных 220.[0049] Initially, the user of the technical solution initiates the download of a 3D model 230 (sometimes a 3D model) as shown in FIG. 2, in the web browser of the client 210 to the server 240 or via the user's mobile communication device, for example, via a mobile application via the data network 220.

[0050] Трехмерная модель 230 может быть загружена в форматах данных RVM/ATT, IFC и т.д., не ограничиваясь. Данное техническое решение поддерживает множество различных форматов файлов (.dwg,.dgn,.ipt,.rvt,.rvm, т.д.), что позволяет собрать консолидированную 3D модель, используя модели, выгруженные из разных САПР (англ. CAD или CADD, система автоматизированного проектирования) в собственных форматах.[0050] The 3D model 230 can be loaded in RVM / ATT, IFC, etc. data formats, but not limited to. This technical solution supports many different file formats (.dwg, .dgn, .ipt, .rvt, .rvm, etc.), which allows you to assemble a consolidated 3D model using models downloaded from different CAD systems (CAD or CADD , computer-aided design system) in their own formats.

[0051] В некоторых вариантах реализации трехмерная модель 230 может отображаться частично по мере загрузки содержимого. В случае наличия текстур исходная модель может отображаться с ними и без них, со структурой модели или нет - это все в зависимости от шаблона просмотра.[0051] In some implementations, 3D model 230 may be partially displayed as content is loaded. If there are textures, the original model can be displayed with and without them, with the model structure or not - this is all depending on the view template.

[0052] В некоторых вариантах реализации для загрузки и просмотра трехмерной модели 230 на клиенте 210 могут использовать технологию WebGL.[0052] In some implementations, WebGL technology may be used to download and view 3D model 230 on client 210.

[0053] Сервер 240 в одном из вариантов воплощения, может включать отдельные серверы или серверы, работающие на виртуальной машине центра хранения и обработки данных, где может быть виртуализировано множество серверов для обеспечения осуществления требуемого объема вычислений. Клиент 210 расположен в месте нахождения пользователя, чтобы получать и обрабатывать вводимые данные и передавать их на серверы 240, а также получать данные для рендеринга, который будет описан ниже. Клиент 210 и серверы 240 взаимодействуют через сеть передачу данных 220, например, такую как Интернет. В других вариантах воплощения клиент 210 может быть любым устройством, портативным или не портативным, беспроводным или не беспроводным, таким, чтобы клиент 210 мог взаимодействовать с сетью 220 и обеспечить доступ к дисплею для отображения трехмерной модели 230 и загрузки, и позволить пользователю осуществлять ввод для возможности интерактивного управления. В одном из вариантов воплощения клиентом 210 является тонкий клиент. Тем не менее, в других вариантах воплощения в качестве клиента 210 может выступать компьютер общего назначения, компьютер специального назначения, игровая приставка, персональный компьютер, портативный компьютер, планшетный компьютер, мобильное вычислительное устройство, портативное игровое устройство, мобильный телефон, телевизионная приставка, интерфейс/устройство потокового мультимедиа, телевизор высокой четкости или сетевой дисплей, или любое другое вычислительное устройство, которое можно сконфигурировать для получения требуемой функциональности клиента 210, как определено здесь. В одном из вариантов воплощения сервер 240 сконфигурирован с возможностью обнаружения типа клиентского устройства, используемого пользователем, и обеспечения восприятия трехмерной модели 230, соответствующей клиентскому устройству пользователя. Например, могут быть оптимизированы настройки изображения, аудионастройки и другие типы настроек клиентского устройства пользователя.[0053] Server 240, in one embodiment, may include separate servers or servers running on a data center virtual machine where multiple servers may be virtualized to provide the required amount of computation. Client 210 is located at the user's location to receive and process input and transmit it to servers 240, as well as receive data for rendering, which will be described below. Client 210 and servers 240 communicate over a communications network 220, such as, for example, the Internet. In other embodiments, client 210 may be any device, portable or non-portable, wireless or non-wireless, such that client 210 can interact with network 220 and provide display access to display 3D model 230 and download, and allow a user to input for possibilities of interactive control. In one embodiment, the client 210 is a thin client. However, in other embodiments, the client 210 may be a general-purpose computer, a special-purpose computer, a game console, a personal computer, a laptop computer, a tablet computer, a mobile computing device, a portable gaming device, a mobile phone, a set-top box, an interface / a streaming media device, high definition television or network display, or any other computing device that can be configured to provide the desired functionality of client 210 as defined herein. In one embodiment, the server 240 is configured to detect the type of client device being used by the user and provide a sense of the 3D model 230 corresponding to the user's client device. For example, picture settings, audio settings, and other types of settings on the user's client device can be optimized.

[0054] В различных вариантах воплощения степень обработки, выполняемой клиентом 210, может изменяться в отношении обработки ввода и вывода. Однако, говоря упрощенно, состояние трехмерной модели в основном сохраняется и выполняется на сервере 240, при этом клиент 210 в основном функционирует для получения и передачи данных, вводимых пользователем, а также для финального рендеринга на финальном шаге работы технического решения. Клиент 210 может быть самостоятельным устройством, которое подключено к дисплею и предоставляет возможность для загрузки и отображения на дисплее. В других вариантах воплощения клиент 210 может быть встроен в дисплей. В одном из вариантов воплощения дисплей является сетевым дисплеем, предоставляя среду операционной системы для программ или «приложений», использующих возможности сетевого подключения дисплея. В таком варианте воплощения клиент 210 может быть определен приложением, выполняемым в среде, предоставленной операционной системой дисплея.[0054] In various embodiments, the degree of processing performed by client 210 may vary with respect to input and output processing. However, in simple terms, the state of the 3D model is mainly stored and executed on the server 240, while the client 210 mainly functions to receive and transmit data entered by the user, as well as for final rendering at the final stage of the technical solution. The client 210 can be a stand alone device that is connected to the display and provides the ability to download and display on the display. In other embodiments, the client 210 may be embedded in a display. In one embodiment, the display is a network display, providing an operating system environment for programs or "applications" that use the display's network connectivity. In such an embodiment, the client 210 may be defined by an application running in an environment provided by the display operating system.

[0055] Шаг 120: разбивают каждый объект в трехмерной модели на массив треугольников и помещают в хранилище объектов по его уникальному идентификатору.[0055] Step 120: Each object in the 3D model is split into an array of triangles and placed in the object store by its unique identifier.

[0056] Затем каждый объект разбивают на массив треугольников и помещают в хранилище 3D объектов по его уникальному идентификатору, как показано на Фиг. 3. В других вариантах реализации могут быть четырехточечные объекты и т.д.[0056] Then, each object is split into an array of triangles and placed in the 3D object store by its unique identifier, as shown in FIG. 3. In other implementations, there may be four-point objects, etc.

[0057] Соответственно хранилище 3D объектов является всего лишь одним примером пригодного хранилища информации, и можно использовать любой пригодный тип хранилища данных. Например, хранилище 3D объектов может включать в себя реляционную базу данных, иерархическую базу данных, сетевую базу данных, базу данных, содержащуюся в памяти, объектно-ориентированную базу данных, хранилище данных, любое другое пригодное хранилище или базу данных для поддержания информации или их комбинацию. На самом деле в некоторых вариантах осуществления хранилище 3D объектов может содержать единую физическую базу данных, тогда как в других вариантах осуществления хранилище 3D объектов может распределяться по множественным разным физическим положениям.[0057] Accordingly, a 3D object store is just one example of a suitable information store, and any suitable type of data store can be used. For example, a 3D object store may include a relational database, a hierarchical database, a networked database, an in-memory database, an object-oriented database, a data store, any other suitable store or database to maintain information, or a combination of these. ... Indeed, in some embodiments, the 3D object store may contain a single physical database, while in other embodiments, the 3D object store may be distributed across multiple different physical locations.

[0058] Разбиение объектов на треугольники объясняется следующими причинами:[0058] The division of objects into triangles is due to the following reasons:

• треугольник является простейшим полигоном, вершины которого однозначно задают грань;• a triangle is the simplest polygon, the vertices of which uniquely define a face;

• любую область можно гарантировано разбить на треугольники;• any area can be guaranteed to be divided into triangles;

• вычислительная сложность алгоритмов разбиения на треугольники существенно меньше, чем при использовании других полигонов;• the computational complexity of the algorithms for partitioning into triangles is significantly less than when using other polygons;

• реализация процедур рендеринга наиболее проста для области, ограниченной треугольником;• implementation of rendering procedures is the most simple for the area bounded by a triangle;

• для треугольника легко определить три его ближайших соседа, имеющих с ним общие грани.• for a triangle, it is easy to determine its three nearest neighbors that have common faces with it.

[0059] Процесс разбиения полигональной области со сложной конфигурацией в набор треугольников называется триангуляцией. При анализе или синтезе сложных поверхностей их аппроксимируют сеткой треугольников, и впоследствии оперируют с простейшими полигональными областями, т.е. с каждым из треугольников.[0059] The process of dividing a polygonal region with a complex configuration into a set of triangles is called triangulation. When analyzing or synthesizing complex surfaces, they are approximated by a grid of triangles, and subsequently operated with the simplest polygonal areas, i.e. with each of the triangles.

[0060] В некоторых вариантах реализации любая поверхность объекта может быть аппроксимирована с необходимой точностью сеткой треугольников. Точность аппроксимации определяется количеством треугольников и способом их выбора. Для качественной визуализации объекта, находящегося вблизи точки наблюдения, требуется учесть во много раз больше треугольников, чем в ситуации, когда тот же объект расположен на удалении. Даже достаточно грубая сетка полезна на практике, так как методы сглаживания, применяемые в процессе отображения, могут значительно улучшить представление о кривизне поверхности. В некоторых вариантах реализации в данном техническом решении могут использовать триангуляцию Делоне.[0060] In some implementations, any surface of an object can be approximated with the required accuracy by a grid of triangles. The accuracy of the approximation is determined by the number of triangles and the way they are selected. For high-quality visualization of an object located near the observation point, it is required to take into account many times more triangles than in a situation when the same object is located at a distance. Even a coarse mesh is useful in practice, as the anti-aliasing techniques applied during the rendering can greatly improve the representation of the curvature of the surface. In some implementations, this technical solution may use Delaunay triangulation.

[0061] В целом преимуществом данного технического решения является то, что не приходится упрощать исходные 3D объекты, вместо этого один раз вычисляют данные для пространственного индекса. И для вычисления Frustrum View не важно, насколько детальные были 3D объекты, таким образом не решается задача «качественной визуализации объекта».[0061] In general, the advantage of this technical solution is that you do not have to simplify the original 3D objects, instead, the data for the spatial index is calculated once. And for the calculation of Frustrum View it does not matter how detailed the 3D objects were, thus the problem of "high-quality visualization of the object" is not solved.

[0062] Трехмерная модель может состоять из набора объектов (например, представленных в виде дерева). Каждый объект модели можно представить в общем виде:[0062] The three-dimensional model can be composed of a set of objects (eg, represented as a tree). Each object of the model can be represented in general terms:

a. Уникальный идентификатор объекта (обычно UUID), которое обычно является случайным значением;a. The unique identifier of the object (usually a UUID), which is usually a random value;

b. Ссылка на родительский объект, если таковой существует, т.е. под ссылкой подразумевается, что объект хранит информацию на свой родительский объект (его уникальный идентификатор - UUID);b. A reference to the parent object, if one exists, i.e. a link means that an object stores information on its parent object (its unique identifier is UUID);

c. Матрица пространственного преобразования относительно родительского объекта (если задан родитель, то все операции трансформации происходят относительно него). Если родитель отсутствует, считается что это матрица пространственного преобразования относительно начала координат;c. Spatial transformation matrix relative to the parent object (if a parent is specified, then all transformation operations occur relative to it). If the parent is absent, it is assumed to be a spatial transformation matrix relative to the origin;

d. Материал объекта. Материал может описывать цвет, прозрачность, интенсивность, отражающую способность, текстуру и т.д.;d. Object material. A material can describe color, transparency, intensity, reflectivity, texture, etc .;

e. 2D/3D геометрия объекта в виде набора координат вершин треугольников;e. 2D / 3D geometry of an object in the form of a set of coordinates of the vertices of triangles;

f. Свойства каждого объекта (атрибуты). Это могут быть служебные данные САПР систем (дата редактирования объекта, автор изменения и т.д.), вспомогательные атрибуты (тип конструкции, класс объекта, справочные данные и т.д.).f. Properties of each object (attributes). This can be the service data of CAD systems (date of object editing, author of the change, etc.), auxiliary attributes (type of construction, class of object, reference data, etc.).

[0063] Например, на Фиг. 3 показано, как крыша здания как объект трехмерной сцены имеет уникальный идентификатор объекта UUID=301, стена имеет уникальный идентификатор 302 и т.д. В конкретном, а не схематическом варианте реализации идентификатор может принимать значение UUID=00112233-4455-6677-8899-aabbccddeeff.[0063] For example, in FIG. 3 shows how the roof of a building as a 3D scene object has a unique object identifier UUID = 301, a wall has a unique identifier 302, etc. In a specific, rather than schematic, implementation, the identifier may take the value UUID = 00112233-4455-6677-8899-aabbccddeeff.

[0064] На следующем шаге выделяют из модели набор различной информации и сохраняют по различным хранилищам данных, как показано на Фиг. 5. Для каждого формата существует синтаксический анализатор, который читает CAD - файла информацию, описанную выше.[0064] In the next step, a set of different information is extracted from the model and stored in different data stores, as shown in FIG. 5. For each format there is a parser that reads the CAD file information described above.

[0065] Шаг 130: формируют пространственный индекс в базе данных всех объектов из полученной трехмерной модели.[0065] Step 130: generate a spatial index in the database of all objects from the obtained 3D model.

[0066] Сначала формируют пространственный индекс в базе данных всех 3D объектов из полученной трехмерной модели. Пространственный индекс является стандартным приемом, известным из уровня техники, позволяющим заметно снизить сложность запросов о взаимном расположении объектов в пространстве, являются различные типы так называемых пространственных индексов (англ. spatial index). Пространственный индекс - это некоторая структура данных (чаще всего иерархическая), строящаяся обычно на этапе подготовки сцены. В качестве пространственного индекса могут использоваться разбиение всей области пространства (обычно вокруг этой области описывается ограничивающий прямоугольный параллелепипед, который и разбивается) с фиксированным шагом по каждому измерению, восьмеричные деревья, kD-деревья, BSP-деревья, BVH (Bounding Volume Hierarchy), Interval Tree, R-деревья и т.д., не ограничиваясь.[0066] First, a spatial index is generated in the database of all 3D objects from the obtained 3D model. The spatial index is a standard technique known from the prior art, which allows to significantly reduce the complexity of queries about the relative position of objects in space, there are various types of so-called spatial indexes. A spatial index is some kind of data structure (most often hierarchical), usually built at the stage of stage preparation. As a spatial index, a partition of the entire area of space can be used (usually a bounding rectangular parallelepiped is described around this area, which is broken) with a fixed step for each dimension, octal trees, kD trees, BSP trees, BVH (Bounding Volume Hierarchy), Interval Tree, R-trees, etc., not limited to.

[0067] В конкретном варианте реализации в качестве пространственного индекса используются R-деревья.[0067] In a particular implementation, R-trees are used as the spatial index.

[0068] Пространственный индекс объектов формируют следующим образом:[0068] The spatial index of objects is generated as follows:

a. для каждого объекта трехмерной модели находят его матрицу трансформации относительно начала координат (мировое пространство) с учетом структуры дерева трехмерной модели (т.е. с учетом всех родителей), что позволяет вместо использования дерева модели, перейти к работе с плоским списком объектов, где не нужно учитывать иерархию структуры дерева 3D модели.a. for each object of the three-dimensional model, its transformation matrix is found relative to the origin (world space), taking into account the structure of the tree of the three-dimensional model (i.e., taking into account all parents), which allows, instead of using the model tree, go to work with a flat list of objects where you need to take into account the hierarchy of the tree structure of the 3D model.

b. затем для каждой геометрии объекта (у каждого 3D объекта есть mesh, описание его геометрии, в конкретном варианте реализации представляющий из себя набор «треугольников») применяют операцию трансформации, например, сдвиг, поворот или масштаб, что позволяет получить геометрию всех объектов относительно одного начала координат (в мировых координатах), например, (0;0,0). Полученную трансформированную геометрию помещают в базу данных по его уникальному идентификатору;b. then, for each geometry of the object (each 3D object has a mesh, a description of its geometry, in a specific implementation it is a set of "triangles"), a transformation operation is applied, for example, shift, rotation or scale, which allows you to get the geometry of all objects relative to one origin coordinates (in world coordinates), for example, (0; 0,0). The resulting transformed geometry is placed in the database by its unique identifier;

c. для каждого объекта с трансформированной геометрией (в мировых координатах) вычисляют пространственный индекс и помещают в базу данных.c. for each object with the transformed geometry (in world coordinates), a spatial index is calculated and placed in the database.

[0069] Далее помещают в хранилище материалов 520 данные о материале каждого 3D объекта по его уникальному идентификатору, как показано на Фиг. 5, посредством работы парсера 510.[0069] Next, material data of each 3D object is placed in the material store 520 by its unique identifier, as shown in FIG. 5 through the operation of the parser 510.

[0070] Информация читается синтаксическим анализатором 510 (иногда парсером) из CAD файла по любому 3D объекту и сохраняется в хранилище атрибутов 530, например, в следующем виде:[0070] Information is read by a parser 510 (sometimes a parser) from a CAD file on any 3D object and stored in an attribute store 530, for example, in the following form:

a. Материал = сталь;a. Material = steel;

b. Проектировщик = Васин А.А.;b. Designer = Vasin A.A .;

c. Дата установки = 19.12.2019.c. Installation date = 19.12.2019.

[0071] Например, 3D-модель здания состоит из набора свойств (атрибутов) объекта, это может быть стена, колонна или дверь и т.д. Свойство объекта (или атрибут) содержит в себе необходимую информацию об объекте, которая дополняет геометрические характеристики, причем парсер 510 аналогично осуществляет анализ CAD-файла и сохраняет всю геометрическую информацию в хранилище 3D геометрии 540. Рассмотрим, например, объект «Дверь» - у нее есть высота и ширина проема, количество полотен (однопольная, полуторная или двупольная), параметры заполнения (глухая или остекленная) - все эти характеристики определяются геометрией элемента. Но этого недостаточно для полноценного описания проекта. Двери, например, могут быть противопожарными и, в этом случае, необходимо указать предел огнестойкости. Это уже информационная составляющая, которая и является метаинформацией объектов.[0071] For example, a 3D building model consists of a set of properties (attributes) of an object, it can be a wall, a column or a door, etc. An object property (or attribute) contains the necessary information about the object, which complements the geometric characteristics, and the parser 510 similarly analyzes the CAD file and stores all geometric information in the storage of 3D geometry 540. Consider, for example, the "Door" object - it has there is the height and width of the opening, the number of canvases (single-floor, one-and-a-half or double-floor), filling parameters (blind or glazed) - all these characteristics are determined by the geometry of the element. But this is not enough for a full description of the project. Doors, for example, can be fireproof and, in this case, it is necessary to indicate the fire resistance limit. This is the informational component, which is the metainformation of objects.

[0072] Шаг 140: формируют пирамиду видимости, состоящую из заранее заданного количества кубов и отправляют на сервер запрос для получения списка объектов, входящих в данные кубы.[0072] Step 140: form a pyramid of visibility, consisting of a predetermined number of cubes and send a request to the server to obtain a list of objects included in these cubes.

[0073] Шаг 150: формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на стороне сервера на основании пространственного индекса каждого объекта.[0073] Step 150: a list of objects to be rendered is generated by first culling three-dimensional objects using a clipping method by entering the requested cubes on the server side based on the spatial index of each object.

[0074] Далее формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по пирамиде видимости на стороне сервера, используя пространственный индекс всех объектов, как показано на Фиг. 6, подразумевающий априорное исключение объектов, находящихся вне поля зрения камеры.[0074] Next, a list of objects to be rendered is generated by first culling three-dimensional objects using the server-side pyramid clipping method using the spatial index of all objects as shown in FIG. 6, which implies a priori exclusion of objects outside the camera's field of view.

[0075] В уровне техники известно, что для всех вершин в пространстве трехмерной сцены ограничивающим объемом является усеченная пирамида видимости (англ. View Frustum, Frustum), а в пространстве камеры усеченная пирамида преобразуется в единичный куб.[0075] In the prior art, it is known that for all vertices in the space of a three-dimensional scene, the bounding volume is a View Frustum (Frustum), and in the camera space the truncated pyramid is transformed into a unit cube.

[0076] Таким образом, нет необходимости отрисовывать объекты, находящиеся сзади или сбоку от камеры и не попадающие в поле зрения. Отрисовываются только те объекты, которые находятся в поле видимости камеры, или в объеме видимости камеры. Этот объем и является усеченной пирамидой, все что находится вне пирамиды находится и вне экрана.[0076] Thus, there is no need to draw objects that are behind or to the side of the camera and do not fall into the field of view. Only those objects are drawn that are in the camera's field of view, or in the camera's field of view. This volume is a truncated pyramid, everything that is outside the pyramid is also outside the screen.

[0077] Исходя из сказанного выше, для определения видимости объекта необходимо проверить, находится ли обрабатываемый объект внутри усеченной пирамиды, либо домножить координаты объекта на матрицу проецирования и проверить, находится ли объект внутри единичного куба. В некоторых вариантах осуществления на видимость проверяются только несложные геометрические фигуры, состоящие из нескольких вершин, и, если вся фигура оказывается вне видимости, то часть сцены, заключенная в нее, может быть отброшена. В роли таких фигур (ограничивающих объемов) могут выступать фигуры, известные и применяемые из уровня техники, например, сфера, параллелепипеды (ООВВ, ААВВ) и т.д. Таким образом, несложно организовать отсечение компактных моделей (в том числе динамических).[0077] Based on the above, to determine the visibility of an object, it is necessary to check if the object being processed is inside the truncated pyramid, or multiply the coordinates of the object by the projection matrix and check if the object is inside the unit cube. In some embodiments, only simple geometrical figures consisting of several vertices are checked for visibility, and if the entire figure is out of sight, then the part of the scene enclosed in it can be discarded. The role of such figures (bounding volumes) can be figures known and used from the prior art, for example, a sphere, parallelepipeds (OOBB, AABB), etc. Thus, it is not difficult to organize cutting off of compact models (including dynamic ones).

[0078] Далее разбивают пирамиду на n кубов (например, на 100) и отправляют на сервер запрос для отображения (представляющий собой JSON - массив координат) только данных n кубов, как показано на Фиг. 7. Чем больше n, тем выше точность приближенного вычисления усеченной пирамиды видимости.[0078] Next, the pyramid is split into n cubes (for example, by 100) and a request is sent to the server to display (representing a JSON array of coordinates) only the n cubes data, as shown in FIG. 7. The larger n, the higher the accuracy of the approximate calculation of the truncated visibility pyramid.

[0079] На сервере есть сервис, который находит пересечения n кубов с 3D объектами модели. Для оптимизации данной операции используется пространственный индекс. Пространственный индекс существенно позволяет ускорить операцию «попадает ли объект в один из n кубов». В итоге получают только те объекты, которые имеют пересечение с кубами, т.е. те объекты, которые попадают в усеченную пирамиду видимости. Вычислить пересечение по кубам гораздо эффективнее чем по пирамиде, т.е. мы приближенно вычисляем, что попадает в усеченную пирамиду видимости, теряем в точности, но выигрываем в скорости.[0079] The server has a service that finds the intersections of n cubes with 3D model objects. A spatial index is used to optimize this operation. The spatial index significantly speeds up the operation "does an object fall into one of n cubes". As a result, only those objects are obtained that have intersections with cubes, i.e. those objects that fall into the truncated pyramid of visibility. Computing the intersection by cubes is much more efficient than by the pyramid, i.e. we roughly calculate what falls into the truncated pyramid of visibility, lose in accuracy, but gain in speed.

[0080] В конкретном варианте реализации по всем этим полученным 3D объектам из пересечения, найденным из пространственного индекса, на сервере вычисляется угловой размер, который представляет собой размер объекта, который наблюдается на сетчатке глаза или камере. Угловой размер (иногда также угол зрения) - это угол между прямыми линиями, соединяющими диаметрально противоположные крайние точки измеряемого (наблюдаемого) объекта и глаз наблюдателя, который принимает значения от 0 до 360 градусов. Под угловым размером может также пониматься не плоский угол, под которым виден объект, а телесный угол.[0080] In a particular implementation, for all of these resulting 3D objects from the intersection found from the spatial index, the server calculates an angular size, which is the size of the object that is observed on the retina or camera. The angular size (sometimes also the angle of view) is the angle between straight lines connecting the diametrically opposite extreme points of the measured (observed) object and the observer's eye, which takes values from 0 to 360 degrees. Angular dimension can also mean not the plane angle at which the object is visible, but the solid angle.

[0081] Шаг 160: осуществляют сортировку объектов из найденного списка от большего к меньшему на основании заранее заданного критерия.[0081] Step 160: sorting the objects from the found list from highest to lowest based on a predetermined criterion.

[0082] Далее сортируют объекты из найденного списка от большего к меньшему по угловому размеру, а потом берут первые к объектов (от 1000 до 50 000). Данный вариант реализации сортировки не является ограничивающим, что является очевидным для эксперта в уровне техники. В некоторых вариантах реализации заранее заданным критерием для осуществления сортировки может являться дистанция до камеры, и/или занимаемый объем, и/или площадь объекта и т.п. Значение к зависит от ресурсов вычислительного устройства и сложности алгоритмов рендера. В конкретном примере реализации на целевом минимальном оборудовании (4cpu, 4gb ram), при k=>50 000 техническое решение начинает существенно медленно работать. Угловой размер измеряется в градусах, соответственно идет сравнение градусов, от большего к меньшему.[0082] Next, objects from the found list are sorted from largest to smallest in angular size, and then the first ones are taken to objects (from 1000 to 50,000). This implementation of sorting is not limiting, which is obvious to the expert in the prior art. In some implementations, the predetermined criterion for sorting may be the distance to the camera and / or the occupied volume and / or area of the object, and the like. The value of k depends on the resources of the computing device and the complexity of the rendering algorithms. In a specific example of implementation on the target minimum hardware (4cpu, 4gb ram), at k => 50,000, the technical solution starts to work significantly slowly. The angular size is measured in degrees, respectively, a comparison of degrees is made, from larger to smaller.

[0083] Шаг 170: направляют в браузер пользователя с сервера массив уникальных идентификаторов отсортированных объектов.[0083] Step 170: sending an array of unique identifiers of sorted objects to the user's browser from the server.

[0084] Затем сервер 810 (бекенд), как показано на Фиг. 8, отправляет на клиент 820 (фронтенд) массив UUID найденных отсортированных объектов.[0084] Then, the server 810 (backend), as shown in FIG. 8, sends to the client 820 (frontend) an array of UUIDs of the found sorted objects.

[0085] Клиент 820 (фронтенд) получает от сервера 810 (бекенд) массив UUID объектов. Т.к. сам UUID объекта не содержит геометрии, клиент 820 начинает загружать соответствующую геометрию для каждого объекта (описано выше) и его материал из соответствующих хранилищ (с сервера 810). Загруженные геометрии и материалы на клиент складывает в локальные кеши. В случае, если последующие запросы возвращают новый массив UUID объектов, в локальные кеши догружается информация по новым объектам (отсутствующие в кеше), а по устаревшим объектам (присутствующие в кеше, но отсутствующие в массиве UUID объектов) удаляется из кеша геометрии и материалов.[0085] Client 820 (frontend) receives from server 810 (backend) an array of UUID objects. Because the object UUID itself does not contain geometry, the client 820 starts loading the corresponding geometry for each object (described above) and its material from the corresponding storages (from the server 810). The loaded geometries and materials on the client are added to local caches. If subsequent requests return a new array of UUID objects, information on new objects (missing in the cache) is loaded into the local caches, and information on obsolete objects (present in the cache, but not in the array of UUID objects) is removed from the cache of geometry and materials.

[0086] Шаг 180: осуществляют рендеринг объектов на основании уникальных идентификаторов, полученных на предыдущем шаге.[0086] Step 180: objects are rendered based on the unique identifiers obtained in the previous step.

[0087] Ниже будет расписана визуализация (рендеринг) по меньшей мере одного объекта и работа с кэшем на клиенте 820. На клиенте 820 (например, в веб-браузере) имеется несколько кэшей:[0087] The rendering (rendering) of at least one object and work with the cache on the client 820 will be described below. On the client 820 (for example, in a web browser) there are several caches:

a. кэш объектов 830, который представляет собой key-value хранилище. Ключом в данном хранилище является уникальный идентификатор объекта (UUID), value хранит следующую информацию:a. object cache 830, which is a key-value store. The key in this storage is the unique identifier of the object (UUID), value stores the following information:

i. уникальный идентификатор материала (UUID);i. unique material identifier (UUID);

ii. уникальный идентификатор геометрии (UUID);ii. the unique identifier of the geometry (UUID);

iii. матрицу трансформации.iii. transformation matrix.

b. кэш материалов 840, который представляет собой key-value хранилище, где ключом является уникальный идентификатор материала (UUID), a value хранит информацию о цвете, прозрачности, интенсивности и т.д.b. material cache 840, which is a key-value store, where the key is a unique material identifier (UUID), and value stores information about color, transparency, intensity, etc.

c. кэш геометрий 850, который представляет собой key-value хранилище, где ключом является уникальный идентификатор геометрии (UUID), a value хранит координаты вершин треугольников, из которых строится 2D/3D объект.c. geometry cache 850, which is a key-value storage, where the key is a unique geometry identifier (UUID), and value stores the coordinates of the vertices of the triangles from which the 2D / 3D object is built.

[0088] В качестве примерного варианта реализации хранилищ на сервере 810 могут использоваться, не ограничиваясь, Redis (база данных в оперативной памяти с дополнительной отказоустойчивостью), Riak (распределенное, репликационное хранилище), Memcached / MemcacheDB (распределенная база данных в оперативной памяти) и т.д. В качестве примерного варианта реализации key-value хранилища могут использоваться, не ограничиваясь hash map.[0088] As an exemplary storage implementation on the server 810, Redis (an in-memory database with additional fault tolerance), Riak (a distributed, replication storage), Memcached / MemcacheDB (a distributed in-memory database) and etc. As an example implementation, key-value stores can be used without being limited to hash maps.

[0089] Размерность каждого кэша ограничена кол-вом к, которое в конкретном варианте реализации принимает значения от 1 000 до 50 000.[0089] The size of each cache is limited by the number of k, which in a particular implementation takes values from 1,000 to 50,000.

[0090] Каждый раз, когда клиент 820 получает результаты выборки frustum в виде массива UUID объектов от сервера 810, клиент 820 сравнивает этот список с имеющимся кэшем объектов, как показано на Фиг. 8. Все отсутствующие в кэше объектов UUID помечаются как новые, а объекты, которые присутствуют в кэше объектов, но отсутствующие в усеченной пирамиде видимости, помечаются как устаревшие и удаляются из кэша (к том числе и из кэша материалов и кэша геометрий). Для новых объектов происходит фоновая загрузка материалов и геометрий в соответствующие кэши (фоновая - означается что оно не блокирует работу пользователя). Все новые объекты разбиваются по пачкам. Отправляют запрос данных по первой пачке, как пришел ответ, отправляют запрос по второй пачке, и т.д.[0090] Each time the client 820 receives the results of the frustum fetch as an array of object UUIDs from the server 810, the client 820 compares this list with the available object cache, as shown in FIG. 8. All UUIDs missing in the object cache are marked as new, and objects that are present in the object cache, but not in the truncated visibility pyramid, are marked as obsolete and removed from the cache (including from the material cache and geometry cache). For new objects, materials and geometries are loaded in the background into the corresponding caches (background - it means that it does not block the user's work). All new objects are divided into batches. They send a request for data on the first packet, how the response came, send a request on the second packet, etc.

[0091] Одной из особенностей является то, что клиент 820 может не ждать полной загрузки данных во все кэши, и осуществлять рендеринг тех 3D объектов, данные по которым уже присутствуют к кэше(ах).[0091] One of the features is that the client 820 may not wait for the complete download of data in all caches, and render those 3D objects, the data for which is already present in the cache (s).

[0092] Ссылаясь на Фиг. 4, данное техническое решение может быть реализовано в виде вычислительной системы 400 рендеринга 3D моделей в браузере с использованием распределенных ресурсов, которая содержит один или более из следующих компонентов:[0092] Referring to FIG. 4, this technical solution can be implemented as a computing system 400 for rendering 3D models in a browser using distributed resources, which contains one or more of the following components:

• компонент 401 обработки, содержащий по меньшей мере один процессор 402,• a processing component 401 comprising at least one processor 402,

• память 403,memory 403,

• компонент 405 мультимедиа,component 405 multimedia,

• компонент 406 аудио,component 406 audio,

• интерфейс 407 ввода / вывода (I / О),interface 407 input / output (I / O),

• сенсорный компонент 408,sensor component 408,

• компонент 409 передачи данных.component 409 data transmission.

[0093] Компонент 401 обработки в основном управляет всеми операциями системы 400, например, осуществляет обработку данных о пользователе или его запросе на поиск билетов, а также управляет дисплеем, телефонным звонком, передачей данных, работой камеры и операцией записи мобильного устройства связи. Компонент 401 обработки может включать в себя один или более процессоров 402, реализующих инструкции для завершения всех или части шагов из указанных выше способов. Кроме того, компонент 401 обработки может включать в себя один или более модулей для удобного процесса взаимодействия между другими модулями 401 обработки и другими модулями. Например, компонент 401 обработки может включать в себя мультимедийный модуль для удобного облегченного взаимодействия между компонентом 405 мультимедиа и компонентом 401 обработки.[0093] The processing component 401 generally controls all of the operations of the system 400, such as processing data about the user or his ticket search request, and also controls the display, phone call, data communication, camera operation, and recording operation of the mobile communication device. The processing component 401 may include one or more processors 402 that implement instructions to complete all or part of the steps from the above methods. In addition, the processing component 401 may include one or more modules for convenient communication between other processing modules 401 and other modules. For example, the processing component 401 may include a media module for convenient, lightweight interaction between the media component 405 and the processing component 401.

[0094] Память 403 выполнена с возможностью хранения различных типов данных для поддержки работы системы 400, например, базу данных с профилями пользователей. Примеры таких данных включают в себя инструкции из любого приложения или способа, контактные данные, данные адресной книги, сообщения, изображения, видео, и т.д., и все они работают на системе 400. Память 403 может быть реализована в виде любого типа энергозависимого запоминающего устройства, энергонезависимого запоминающего устройства или их комбинации, например, статического оперативного запоминающего устройства (СОЗУ), Электрически-Стираемого Программируемого постоянного запоминающего устройства (ЭСППЗУ), Стираемого Программируемого постоянного запоминающего устройства (СППЗУ), Программируемого постоянного запоминающего устройства (ППЗУ), постоянного запоминающего устройства (ПЗУ), магнитной памяти, флэш-памяти, магнитного диска или оптического диска и другого, не ограничиваясь.[0094] Memory 403 is configured to store various types of data to support the operation of system 400, such as a user profile database. Examples of such data include instructions from any application or method, contact information, address book data, messages, images, videos, etc., all of which operate on the system 400. The memory 403 can be implemented as any type of volatile storage device, nonvolatile memory, or a combination thereof, such as static random access memory (SRAM), Electrically Erasable Programmable Read Only Memory (EEPROM), Erasable Programmable Read Only Memory (EPROM), Programmable Read Only Memory (EPROM), Read Only Memory device (ROM), magnetic memory, flash memory, magnetic disk or optical disk and others, but not limited to.

[0095] Компонент 405 мультимедиа включает в себя экран, обеспечивающий выходной интерфейс между системой 400, которая может быть установлена на мобильном устройстве связи пользователя и пользователем. В некоторых вариантах реализации, экран может быть жидкокристаллическим дисплеем (ЖКД) или сенсорной панелью (СП). Если экран включает в себя сенсорную панель, экран может быть реализован в виде сенсорного экрана для приема входного сигнала от пользователя. Сенсорная панель включает один или более сенсорных датчиков в смысле жестов, прикосновения и скольжения по сенсорной панели. Сенсорный датчик может не только чувствовать границу прикосновения субъекта или жест перелистывания, но и определять длительность времени и давления, связанных с режимом работы на прикосновение и скольжение. В некоторых вариантах осуществления компонент 405 мультимедиа включает одну фронтальную камеру и/или одну заднюю камеру. Когда система 400 находится в режиме работы, например, режиме съемки или режиме видео, фронтальная камера и/или задняя камера могут получать данные мультимедиа извне. Каждая фронтальная камера и задняя камера может быть одной фиксированной оптической системой объектива или может иметь фокусное расстояние или оптический зум.[0095] The multimedia component 405 includes a screen that provides an output interface between a system 400 that may be installed on a user's mobile communications device and a user. In some implementations, the screen may be a liquid crystal display (LCD) or a touch panel (TP). If the screen includes a touch panel, the screen may be implemented as a touch screen for receiving input from a user. The touchpad includes one or more touch sensors in terms of gestures, touching, and sliding across the touchpad. The touch sensor can not only sense the subject's touch boundary or swipe gesture, but also detect the length of time and pressure associated with touch and slide behavior. In some embodiments, the multimedia component 405 includes one front camera and / or one rear camera. When the system 400 is in an operating mode, such as shooting mode or video mode, the front camera and / or the rear camera can receive media data from the outside. Each front camera and rear camera can be one fixed lens optical system, or can have focal length or optical zoom.

[0096] Компонент 406 аудио выполнен с возможностью выходного и/или входного аудио сигнала. Например, компонент 406 аудио включает один микрофон (MIC), который выполнен с возможностью получать внешний аудио сигнал, когда система 400 находится в режиме работы, например, режиме вызова, режима записи и режима распознавания речи. Полученный аудио сигнал может быть далее сохранен в памяти 403 или направлен по компоненту 409 передачи данных. В некоторых вариантах осуществления компонент 406 аудио также включает в себя один динамик выполненный с возможностью вывода аудио сигнала.[0096] The audio component 406 is configured to output and / or input an audio signal. For example, the audio component 406 includes a single microphone (MIC) that is configured to receive an external audio signal when the system 400 is in a mode of operation such as a call mode, a recording mode, and a speech recognition mode. The resulting audio signal can be further stored in memory 403 or routed to data transfer component 409. In some embodiments, the audio component 406 also includes one speaker configured to output an audio signal.

[0097] Интерфейс 407 ввода / вывода (I / О) обеспечивает интерфейс между компонентом 401 обработки и любым периферийным интерфейсным модулем. Вышеуказанным периферийным интерфейсным модулем может быть клавиатура, руль, кнопка, и т.д. Эти кнопки могут включать, но не ограничиваясь, кнопку запуска, кнопку регулировки громкости, начальную кнопку и кнопку блокировки.[0097] An input / output (I / O) interface 407 provides an interface between the processing component 401 and any peripheral interface module. The above peripheral interface module can be keyboard, steering wheel, button, etc. These buttons may include, but are not limited to, a start button, a volume button, a start button, and a lock button.

[0098] Сенсорный компонент 408 содержит один или более сенсоров и выполнен с возможностью обеспечения различных аспектов оценки состояния системы 400. Например, сенсормый компонент 408 может обнаружить состояния вкл/выкл системы 400, относительное расположение компонентов, например, дисплея и кнопочной панели, одного компонента системы 400, наличие или отсутствие контакта между субъектом и системой 400, а также ориентацию или ускорение/замедление и изменение температуры системы 400. Сенсорный компонент 408 содержит бесконтактный датчик, выполненный с возможностью обнаружения присутствия объекта, находящегося поблизости, когда нет физического контакта. Сенсорный компонент 408 содержит оптический датчик (например, КМОП или ПЗС-датчик изображения) выполненный с возможностью использования в визуализации приложения. В некоторых вариантах сенсорный компонент 408 содержит датчик ускорения, датчик гироскопа, магнитный датчик, датчик давления или датчик температуры.[0098] The sensor component 408 comprises one or more sensors and is configured to provide various aspects of assessing the state of the system 400. For example, the sensor component 408 can detect on / off states of the system 400, the relative position of components, such as a display and a keypad, of a single component. system 400, presence or absence of contact between a subject and system 400, and orientation or acceleration / deceleration and temperature change of system 400. Sensor component 408 includes a proximity sensor configured to detect the presence of an object in the vicinity when there is no physical contact. Touch component 408 includes an optical sensor (eg, CMOS or CCD image sensor) configured for use in rendering an application. In some embodiments, sensor component 408 comprises an acceleration sensor, gyroscope sensor, magnetic sensor, pressure sensor, or temperature sensor.

[0099] Компонент 409 передачи данных выполнен с возможностью облегчения проводной или беспроводной связи между системой 400 и другими устройствами. Система 400 может получить доступ к беспроводной сети на основе стандарта связи, таких как WiFi, 2G, 3G, 5G, или их комбинации. В одном примерном варианте компонент 409 передачи данных получает широковещательный сигнал или трансляцию, связанную с ними информацию из внешней широковещательной системы управления через широковещательный канал. В одном варианте осуществления компонент 409 передачи данных содержит модуль коммуникации ближнего поля (NFC), чтобы облегчить ближнюю связь. Например, модуль NFC может быть основан на технологии радиочастотной идентификации (RFID), технологии ассоциации передачи данных в инфракрасном диапазоне (IrDA), сверхширокополосных (UWB) технологии, Bluetooth (ВТ) технологии и других технологиях.[0099] The communication component 409 is configured to facilitate wired or wireless communication between the system 400 and other devices. System 400 can access a wireless network based on a communication standard such as WiFi, 2G, 3G, 5G, or a combination thereof. In one exemplary embodiment, the communication component 409 receives a broadcast signal or broadcast associated information from an external broadcast control system via a broadcast channel. In one embodiment, communication component 409 comprises a Near Field Communication (NFC) module to facilitate near field communication. For example, the NFC module may be based on radio frequency identification (RFID) technology, infrared data association (IrDA) technology, ultra-wideband (UWB) technology, Bluetooth (BT) technology, and other technologies.

[00100] В примерном варианте осуществления система 400 может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа 100 рендеринга 3D моделей в браузере с использованием распределенных ресурсов.[00100] In an exemplary embodiment, system 400 may be implemented by one or more Application-Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Units (DSPs), Programmable Logic Devices (PLCs), a logic chip programmed into operating conditions (FPGA), controller, microcontroller, microprocessor, or other electronic components, and can be configured to implement a method 100 for rendering 3D models in a browser using distributed resources.

[00101] В примерном варианте осуществления энергонезависимый машиночитаемый носитель содержит память 403, которая включает инструкции, где инструкции выполняются процессором 401 системы 400 для реализации описанных выше способов рендеринга 3D моделей в браузере с использованием распределенных ресурсов. Например, энергонезависимым машиночитаемым носителем может быть ПЗУ, оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, дискеты, оптические устройства хранения данных и тому подобное.[00101] In an exemplary embodiment, a nonvolatile computer readable medium comprises memory 403 that includes instructions where instructions are executed by processor 401 of system 400 to implement the above-described methods for rendering 3D models in a browser using allocated resources. For example, a nonvolatile computer-readable medium can be ROM, random access memory (RAM), compact disc, magnetic tape, floppy disks, optical storage devices, and the like.

[00102] Вычислительная система 400 может включать в себя интерфейс дисплея, который передает графику, текст и другие данные из коммуникационной инфраструктуры (или из буфера кадра, не показан) для отображения на компоненте 405 мультимедиа. Вычислительная система 400 дополнительно включает в себя устройства ввода или периферийные устройства. Периферийные устройства могут включать в себя одно или несколько устройств для взаимодействия с мобильным устройством связи пользователя, такие как клавиатура, микрофон, носимое устройство, камера, один или более звуковых динамиков и другие датчики. Периферийные устройства могут быть внешними или внутренними по отношению к мобильному устройству связи пользователя. Сенсорный экран может отображать, как правило, графику и текст, а также предоставляет пользовательский интерфейс (например, но не ограничиваясь ими, графический пользовательский интерфейс (GUI)), через который субъект может взаимодействовать с мобильным устройством связи пользователя, например, получать доступ и взаимодействовать с приложениями, запущенными на устройстве.[00102] Computing system 400 may include a display interface that transmits graphics, text, and other data from a communications infrastructure (or from a framebuffer, not shown) for display on a multimedia component 405. Computing system 400 further includes input devices or peripherals. Peripheral devices may include one or more devices for interacting with a user's mobile communications device, such as a keyboard, microphone, wearable device, camera, one or more audio speakers, and other sensors. Peripheral devices can be external or internal to the user's mobile communications device. A touchscreen can display, typically graphics and text, and also provides a user interface (such as, but not limited to, a graphical user interface (GUI)) through which a subject can interact with a user's mobile communication device, such as access and interact with applications running on the device.

[00103] Элементы заявляемого технического решения находятся в функциональной взаимосвязи, а их совместное использование приводит к созданию нового и уникального технического решения. Таким образом, все блоки функционально связаны.[00103] The elements of the proposed technical solution are in a functional relationship, and their joint use leads to the creation of a new and unique technical solution. Thus, all blocks are functionally linked.

[00104] Все блоки, используемые в системе, могут быть реализованы с помощью электронных компонент, используемых для создания цифровых интегральных схем, что очевидно для специалиста в данном уровне техники. Не ограничиваюсь, могут использоваться микросхемы, логика работы которых определяется при изготовлении, или программируемые логические интегральные схемы (ПЛИС), логика работы которых задается посредством программирования. Для программирования используются программаторы и отладочные среды, позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС могут быть программируемые логические контроллеры (ПЛК), базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования; ASIC - специализированные заказные большие интегральные схемы (БИС), которые при мелкосерийном и единичном производстве существенно дороже.[00104] All blocks used in the system can be implemented with electronic components used to create digital integrated circuits, which is obvious to a person skilled in the art. Not limited to, microcircuits can be used, the logic of which is determined during manufacture, or programmable logic integrated circuits (FPGA), the logic of which is set through programming. For programming, programmers and debugging environments are used that allow you to set the desired structure of a digital device in the form of a circuit diagram or a program in special hardware description languages: Verilog, VHDL, AHDL, etc. An alternative to FPGAs can be programmable logic controllers (PLCs), basic matrix crystals ( BMK) requiring a factory production process for programming; ASICs are specialized custom large integrated circuits (LSIs), which are significantly more expensive for small-scale and single-piece production.

[00105] Обычно, сама микросхема ПЛИС состоит из следующих компонент:[00105] Typically, the FPGA itself consists of the following components:

• конфигурируемых логических блоков, реализующих требуемую логическую функцию;• configurable logic blocks that implement the required logic function;

• программируемых электронных связей между конфигурируемыми логическими блоками;• programmable electronic links between configurable logic blocks;

• программируемых блоков ввода/вывода, обеспечивающих связь внешнего вывода микросхемы с внутренней логикой.• programmable input / output blocks providing connection of the external output of the microcircuit with the internal logic.

[00106] Также блоки могут быть реализованы с помощью постоянных запоминающих устройств.[00106] Blocks can also be implemented with read-only memory devices.

[00107] Таким образом, реализация всех используемых блоков достигается стандартными средствами, базирующимися на классических принципах реализации основ вычислительной техники.[00107] Thus, the implementation of all the blocks used is achieved by standard means based on the classical principles of implementing the foundations of computing.

[00108] Как будет понятно специалисту в данной области техники, аспекты настоящего технического решения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего технического решения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, аспекты настоящего технического решения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.[00108] As will be understood by one skilled in the art, aspects of the present technical solution may be implemented as a system, method, or computer program product. Accordingly, various aspects of the present technical solution may be implemented solely as hardware, as software (including application software and so on), or as an embodiment combining software and hardware aspects, which may generally be referred to as a "module" , "System" or "architecture". In addition, aspects of the present technical solution may take the form of a computer program product implemented on one or more computer-readable media having computer-readable program code that is implemented thereon.

[00109] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, аппарат, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними. [00109] Any combination of one or more computer readable media can also be used. The computer-readable storage medium can be, without limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or any suitable combination thereof. More specifically, examples (non-exhaustive list) of a computer-readable storage medium include: electrical connection using one or more wires, a portable computer diskette; hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or Flash memory), fiber optic connection, compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any combination of the above. As used herein, a computer-readable storage medium can be any flexible storage medium that can contain or store a program for use by the system itself, device, apparatus, or in connection therewith.

[00110] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.[00110] Program code embedded in a computer-readable medium can be transmitted using any medium, including, without limitation, wireless, wired, fiber optic, infrared, and any other suitable network or combination of the above.

[00111] Компьютерный программный код для выполнения операций для шагов настоящего технического решения может быть написан на любом языке программирования или комбинаций языков программирования, включая объектно-ориентированный язык программирования, например Python, R, Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на компьютере пользователя полностью, частично, или же как отдельный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере, или же полностью на удаленном компьютере. В последнем случае, удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN), глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).[00111] Computer program code for performing operations for the steps of the present technical solution may be written in any programming language or combinations of programming languages, including an object-oriented programming language such as Python, R, Java, Smalltalk, C ++, and so on, and conventional procedural programming languages such as "C" or similar programming languages. The program code can be executed on the user's computer in whole, in part, or as a separate software package, partially on the user's computer and partially on the remote computer, or completely on the remote computer. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN), a wide area network (WAN), or a connection to an external computer (for example, via the Internet using Internet providers).

[00112] Аспекты настоящего технического решения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего технического решения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, компьютера специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.[00112] Aspects of the present technical solution have been described in detail with reference to block diagrams, schematic diagrams, and / or diagrams of methods, devices (systems), and computer program products in accordance with embodiments of the present technical solution. It will be appreciated that each block from the block diagram and / or diagrams, as well as combinations of blocks from the block diagram and / or diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other data processing device to create a procedure, such that instructions executed by a computer processor or other programmable data processing device create means to implement the functions / actions specified in block or blocks of flowchart and / or diagram.

[00113] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять компьютером, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.[00113] These computer program instructions may also be stored on a computer-readable medium that can control a computer other than a programmable data processing device or other devices that function in a particular way, such that the instructions stored on the computer-readable medium create a device including instructions that perform the functions / actions specified in the block diagram and / or diagram.

Claims (39)

1. Способ рендеринга 3D моделей в браузере с использованием распределенных ресурсов, выполняемый по меньшей мере одним вычислительным устройством и включающий следующие шаги:1. A method for rendering 3D models in a browser using distributed resources, performed by at least one computing device, and includes the following steps: • получают по меньшей мере одну трехмерную модель на сервере;• get at least one 3D model on the server; • разбивают каждый объект в трехмерной модели на массив треугольников и помещают в хранилище объектов по его уникальному идентификатору;• split each object in the 3D model into an array of triangles and place it in the object storage by its unique identifier; • формируют пространственный индекс в базе данных всех объектов из полученной трехмерной модели;• form a spatial index in the database of all objects from the obtained three-dimensional model; • формируют пирамиду видимости, состоящую из заранее заданного количества кубов и отправляют на сервер запрос для получения списка объектов, входящих в данные кубы;• form a visibility pyramid consisting of a predetermined number of cubes and send a request to the server to obtain a list of objects included in these cubes; • формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на стороне сервера на основании пространственного индекса каждого объекта;• form a list of objects for visualization by primary culling of three-dimensional objects using the clipping method by entering the requested cubes on the server side based on the spatial index of each object; • осуществляют сортировку объектов из найденного списка на основании заранее заданного критерия;• carry out sorting of objects from the found list based on a predetermined criterion; • направляют в браузер пользователя с сервера массив уникальных идентификаторов отсортированных объектов;• send an array of unique identifiers of sorted objects to the user's browser from the server; • осуществляют рендеринг объектов на основании уникальных идентификаторов, полученных на предыдущем шаге.• render objects based on the unique identifiers obtained in the previous step. 2. Способ по п. 1, характеризующийся тем, что получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем через web-браузер.2. The method according to claim 1, characterized in that at least one three-dimensional model is obtained on the server, downloaded by the user via a web browser. 3. Способ по п. 1, характеризующийся тем, что получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем из CAD-файла.3. The method according to claim 1, characterized in that at least one three-dimensional model is obtained on the server, downloaded by the user from a CAD file. 4. Способ по п. 1, характеризующийся тем, что получают по меньшей мере одну трехмерную модель на сервере в формате RVM/ATT или IFC.4. The method according to claim 1, characterized in that at least one three-dimensional model is obtained on the server in RVM / ATT or IFC format. 5. Способ по п. 1, характеризующийся тем, что полученной трехмерной модели объекты представлены в виде дерева.5. The method according to claim 1, characterized in that the resulting three-dimensional model of the objects are represented in the form of a tree. 6. Способ по п. 1, характеризующийся тем, что каждый объект в полученной трехмерной модели содержит уникальный идентификатор объекта и/или ссылку на родительский объект, и/или матрицу пространственного преобразования относительно родительского объекта, и/или материалы объекта, и/или 2D/3D геометрию объекта, и/или свойства каждого объекта (атрибуты).6. The method according to claim 1, characterized in that each object in the obtained three-dimensional model contains a unique object identifier and / or a reference to the parent object, and / or a spatial transformation matrix relative to the parent object, and / or materials of the object, and / or 2D / 3D geometry of the object, and / or properties of each object (attributes). 7. Способ по п. 1, характеризующийся тем, что в качестве пространственного индекса используют разбиение всей области пространства с фиксированным шагом по каждому измерению или восьмеричные деревья, или kD-деревья, или BSP-деревья, или BVH (Bounding Volume Hierarchy), или Interval Tree, или R-деревья.7. A method according to claim 1, characterized in that as a spatial index, a partition of the entire area of space with a fixed step along each dimension is used, either octal trees, or kD trees, or BSP trees, or BVH (Bounding Volume Hierarchy), or Interval Tree, or R-trees. 8. Способ по п. 1, характеризующийся тем, что формируют пространственный индекс следующим образом:8. The method according to claim 1, characterized in that the spatial index is formed as follows: a) для каждого объекта трехмерной модели находят его матрицу трансформации относительно начала координат с учетом структуры дерева трехмерной модели;a) for each object of the three-dimensional model, find its transformation matrix relative to the origin, taking into account the tree structure of the three-dimensional model; b) для каждой геометрии объекта применяют операцию трансформации, получая геометрию всех объектов относительно одного начала координат в мировых координатахb) for each object geometry, a transform operation is applied, obtaining the geometry of all objects relative to one origin in world coordinates c) полученную трансформированную геометрию помещают в базу данных по его уникальному идентификатору;c) the resulting transformed geometry is placed into the database by its unique identifier; d) для каждого объекта с трансформированной геометрией вычисляют пространственный индекс и помещают в базу данных.d) for each object with the transformed geometry, the spatial index is calculated and placed in the database. 9. Способ по п. 1, характеризующийся тем, что отправляют на сервер запрос для отображения, представляющий собой JSON - массив координат.9. The method according to claim 1, characterized in that a request is sent to the server for display, which is a JSON array of coordinates. 10. Способ по п. 1, характеризующийся тем, что при получении с сервера массива уникальных идентификаторов найденных отсортированных объектов сравнивают этот список с имеющимся кэшем объектов, причем10. The method according to claim 1, characterized in that when an array of unique identifiers of the found sorted objects is received from the server, this list is compared with the existing cache of objects, and • все отсутствующие в кэше объектов UID помечаются как новые;• all UID objects missing from the cache are marked as new; • объекты, которые присутствуют в кэше объектов, но отсутствуют в усеченной пирамиде видимости, помечаются как устаревшие и удаляются из кэша;• objects that are present in the cache of objects, but are not in the truncated pyramid of visibility, are marked as obsolete and removed from the cache; • для новых объектов осуществляют фоновую загрузку материалов и геометрий в соответствующие кэши.• for new objects, background loading of materials and geometries into the corresponding caches is performed. 11. Способ по п. 1, характеризующийся тем, что осуществляют рендеринг только тех объектов, которые присутствуют в кэше, на основании уникальных идентификаторов.11. The method according to claim 1, characterized in that only those objects that are present in the cache are rendered based on unique identifiers. 12. Способ по п. 1, характеризующийся тем, что при сортировке объектов заранее заданным критерием является угловой размер каждого объекта и/или дистанция до камеры, и/или занимаемый объем, и/или площадь объекта.12. The method according to claim 1, characterized in that when sorting objects, the predetermined criterion is the angular size of each object and / or the distance to the camera and / or the occupied volume and / or area of the object. 13. Система рендеринга 3D моделей в браузере с использованием распределенных ресурсов, содержащая:13. A system for rendering 3D models in a browser using distributed resources, containing: • по меньшей мере один сервер, выполненный с возможностью• at least one server capable of a) получения по меньшей мере одной трехмерной модели от клиента;a) receiving at least one 3D model from the client; b) разбиения каждого объекта в трехмерной модели на массив треугольников и помещения в хранилище объектов по его уникальному идентификатору;b) splitting each object in the 3D model into an array of triangles and placing it in the object store by its unique identifier; c) формирования пространственного индекса в базе данных всех объектов из полученной трехмерной модели;c) forming a spatial index in the database of all objects from the obtained three-dimensional model; d) формирования списка объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на основании пространственного индекса каждого объекта;d) generating a list of objects for rendering by first culling three-dimensional objects using a clipping method by entering the requested cubes based on the spatial index of each object; e) сортировки объектов из найденного списка на основании заранее заданного критерия;e) sorting objects from the found list based on a predetermined criterion; f) направления клиенту массива уникальных идентификаторов отсортированных объектов;f) sending to the client an array of unique identifiers of sorted objects; • по меньшей мере один клиент, выполненный с возможностью• at least one client capable of a) направления по меньшей мере одной трехмерной модели на сервер;a) sending at least one 3D model to the server; b) формирования пирамиды видимости, состоящей из заранее заданного количества кубов и направления на сервер запроса для получения списка объектов, входящих в данные кубы;b) forming a pyramid of visibility, consisting of a predetermined number of cubes and sending a request to the server to obtain a list of objects included in these cubes; с) осуществления рендеринга объектов на основании уникальных идентификаторов, полученных ранее.c) rendering objects based on the unique identifiers obtained earlier.
RU2020121817A 2020-05-17 2020-05-17 Method and system for rendering 3d models in a browser using distributed resources RU2736628C1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2020121817A RU2736628C1 (en) 2020-05-17 2020-05-17 Method and system for rendering 3d models in a browser using distributed resources
PCT/RU2020/000373 WO2021235971A1 (en) 2020-05-17 2020-07-22 Method for rendering 3d models in a browser using distributed resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2020121817A RU2736628C1 (en) 2020-05-17 2020-05-17 Method and system for rendering 3d models in a browser using distributed resources

Publications (1)

Publication Number Publication Date
RU2736628C1 true RU2736628C1 (en) 2020-11-19

Family

ID=73461143

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2020121817A RU2736628C1 (en) 2020-05-17 2020-05-17 Method and system for rendering 3d models in a browser using distributed resources

Country Status (2)

Country Link
RU (1) RU2736628C1 (en)
WO (1) WO2021235971A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113628323A (en) * 2021-07-30 2021-11-09 广州欧科信息技术股份有限公司 Method for quickly constructing digital exhibition file and intelligent terminal

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116543105A (en) * 2023-05-04 2023-08-04 阿里巴巴达摩院(杭州)科技有限公司 Processing method and system of three-dimensional object, electronic equipment and storage medium
CN116630552B (en) * 2023-07-26 2023-11-07 北京中科辅龙智能技术有限公司 Optimized rendering method for large-scale three-dimensional process factory model

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8593459B2 (en) * 2009-01-28 2013-11-26 International Business Machines Corporation Tree insertion depth adjustment based on view frustum and distance culling
RU2526712C2 (en) * 2008-12-01 2014-08-27 РОКСТАР КОНСОРЦИУМ ЮЭс ЛП Method of creating video images of three-dimensional computer virtual environment
US10339696B2 (en) * 2012-11-02 2019-07-02 Imagination Technologies Limited On demand geometry and acceleration structure creation with discrete production scheduling
US20190325634A1 (en) * 2017-06-09 2019-10-24 Sony Interactive Entertainment Inc. Foveal adaptation of particles and simulation models in a foveated rendering system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2526712C2 (en) * 2008-12-01 2014-08-27 РОКСТАР КОНСОРЦИУМ ЮЭс ЛП Method of creating video images of three-dimensional computer virtual environment
US8593459B2 (en) * 2009-01-28 2013-11-26 International Business Machines Corporation Tree insertion depth adjustment based on view frustum and distance culling
US10339696B2 (en) * 2012-11-02 2019-07-02 Imagination Technologies Limited On demand geometry and acceleration structure creation with discrete production scheduling
US20190325634A1 (en) * 2017-06-09 2019-10-24 Sony Interactive Entertainment Inc. Foveal adaptation of particles and simulation models in a foveated rendering system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113628323A (en) * 2021-07-30 2021-11-09 广州欧科信息技术股份有限公司 Method for quickly constructing digital exhibition file and intelligent terminal
CN113628323B (en) * 2021-07-30 2024-05-31 广州欧科信息技术股份有限公司 Method for quickly constructing digital exhibition file and intelligent terminal

Also Published As

Publication number Publication date
WO2021235971A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
RU2736628C1 (en) Method and system for rendering 3d models in a browser using distributed resources
CN111788610B (en) Method and apparatus for generating a three-dimensional reconstruction of a surface in a scene
US20220249949A1 (en) Method and apparatus for displaying virtual scene, device, and storage medium
US9852544B2 (en) Methods and systems for providing a preloader animation for image viewers
US5973699A (en) System and method for increasing the performance for real-time rendering of three-dimensional polygonal data
KR102249577B1 (en) Hud object design and method
US9361665B2 (en) Methods and systems for viewing a three-dimensional (3D) virtual object
CN101414383B (en) Image processing apparatus and image processing method
CN110299042B (en) Immersive nuclear power plant main equipment process simulation deduction method and system
US11328481B2 (en) Multi-resolution voxel meshing
EP2051533A2 (en) 3D image rendering apparatus and method
JP2023171435A (en) Device and method for generating dynamic virtual content in mixed reality
RU2680355C1 (en) Method and system of removing invisible surfaces of a three-dimensional scene
CN115082632A (en) Two-dimensional and three-dimensional integrated GIS system based on WebGL and application
US20200013214A1 (en) Methods and Systems for Viewing a Three-Dimensional (3D) Virtual Object
US20230196673A1 (en) Method and system for providing automated 3d modeling for xr online platform
EP4083794A1 (en) Rendering of persistent particle trails for dynamic displays
CN114020390A (en) BIM model display method and device, computer equipment and storage medium
CN116993894B (en) Virtual picture generation method, device, equipment, storage medium and program product
WO2024093610A1 (en) Shadow rendering method and apparatus, electronic device, and readable storage medium
CN115393494B (en) Urban model rendering method, device, equipment and medium based on artificial intelligence
EP4083793A1 (en) Rendering of persistent particle trails for dynamic displays
JPH07271998A (en) Method and device for three-dimensional display
CN114037791A (en) Three-dimensional model rendering display system based on webgl and using method
CN117745996A (en) Method and device for moving three-dimensional view

Legal Events

Date Code Title Description
PD4A Correction of name of patent owner