СПОСОБ И СИСТЕМА РЕНДЕРИНГА 3D МОДЕЛЕЙ В БРАУЗЕРЕ С ИСПОЛЬЗОВАНИЕМ РАСПРЕДЕЛЕННЫХ РЕСУРСОВ
METHOD AND SYSTEM FOR RENDERING 3D MODELS IN A BROWSER USING DISTRIBUTED RESOURCES

ОБЛАСТЬ ТЕХНИКИ
[001] Данное техническое решение в общем относится к вычислительной области, а в частности к способам и системам для осуществления 3D рендеринга (визуализации) на пользовательских конфигурациях в условиях ограниченных вычислительных ресурсов.
УРОВЕНЬ ТЕХНИКИ
[002] В настоящее время современные решения в системах автоматизированного проектирования (CAD), архитектурном моделировании, разработке компьютерных игр, технологиях VR и AR требует интерактивной визуализации динамических данных очень больших объемов, на порядки превосходящих имеющиеся вычислительные мощности.
[003] Из уровня техники известен продукт Autodesk online viewer (https//viewer.autoriesk.com/), который позволяет просматривать 2D- и 3D-файлы САП. Данное решение очень хорошо работает с 3D в браузере. Однако, вектор оптимизации основан на сжатии исходной модели, а так как техники сжатия моделей имеют конечный предел, на больших моделях (кол-во объектов модели(ей) >1 млн) такой подход не работает.
[004] Также из уровня техники известен патент № US 10339696 B2 «On demand geometry and acceleration structure creation with discrete production scheduling» (патентообладатель: Imagination Technologies Ltd, дата публикации: 02.07.2019). В данном техническом решении раскрываются системы и методы обработки геометрии для процессов растеризации и трассировки лучей, которые предусматривают предварительную обработку геометрии источника, например, путем трассировки лучей или другой процедурной модификации геометрии источника, для создания окончательной геометрии, на которой будет основываться рендеринг. Ускоряющая структура (или ее часть) для использования во время трассировки лучей определяется на основе окончательной геометрии. Только крупнозернистые элементы ускоряющей структуры могут быть отрисованы или сохранены, и мелкозернистая структура в конкретном крупнозернистом элементе может быть получена в ответ на набор лучей, готовых к прохождению в крупнозернистом элементе. Конечная геометрия может быть воссоздана в ответ на запрос от механизма растеризации и от блоков пересечения лучей, которым требуется такая геометрия для тестирования пересечения с примитивами.
[005] Также известен источник информации US 8593459 B2 «Tree insertion depth adjustment based on view frustum and distance culling» (патентообладатель: International Business Machines Corp, дата публикации: 26.11.2013). В данном решении раскрывается способ использования иерархии ограничивающего объема для трассировки лучей, в котором определяют на вычислительном устройстве расстояние между ограничивающим объемом множества ограничивающих объемов и эталоном, в котором множество ограничивающих объемов содержит разделенные части данных изображения, и при этом структура данных включает в себя множество узлов, соответствующих множеству ограничивающих объемов; устанавливают, в соответствии с расстоянием, порогового значения конечного узла для узла, соответствующего ограничивающему объему, причем пороговое значение конечного узла представляет собой количество примитивов, которые должны быть сохранены в узле до разделения; и изменение размера ограничивающего тома, основанное, по меньшей мере, частично на расстоянии, и основанное, по меньшей мере, частично на определении, что число примитивов, которые должны быть размещены в узле, соответствующем ограничивающему объему, превышает пороговое значение конечного узла.
[006] Однако решения, известные из уровня техники, обладают низкой скоростью и требуют значительной вычислительной нагрузки при работе в веб-браузере на клиенте.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[001] Данное техническое решение направлено на устранение недостатков, свойственных решениям, известным из уровня техники.
[002] Технической проблемой или технической задачей, решаемой в данном техническом решении, является создание технического решения, позволяющего визуализировать и перестраивать 3D модели, осуществлять пользовательское взаимодействие с 3D моделями в реальном времени. Данное решение должно обеспечивать возможность работать пользователю с моделями, которые не могут быть полностью загружены на оборудование пользователя (например, персональный компьютер, или планшет, или мобильный телефон).
[003] Техническим результатом, достигающимся при решении вышеуказанной технической проблемы, является повышение скорости обработки и визуализации 3D объектов.
[004] Дополнительным техническим результатом является обеспечение работы с 3D моделями на одной сцене, состоящими из большого количества исходных САП моделей (файлов) и большого количества 3D объектов (больше 1 млн).
[005] Также при реализации данного технического решения эффективно используются серверные мощности, в том числе за счет горизонтального масштабирования. Таким образом, пользователь, работающий на десктопе/планшете/телефоне, для расчета рендера 3D сцены задействует один и более серверов. Все высоконагруженные операции переносятся и обрабатываются с клиента на серверную сторону.
[006] Указанный технический результат достигается за счет осуществления способа рендеринга 3D моделей в браузере с использованием распределенных ресурсов, выполняемый по меньшей мере одним вычислительным устройством, в котором получают по меньшей мере одну трехмерную модель на сервере; разбивают каждый объект в трехмерной модели на массив треугольников и помещают в хранилище объектов по его уникальному идентификатору; формируют пространственный индекс в базе данных всех объектов из полученной трехмерной модели; формируют пирамиду видимости, состоящую из заранее заданного количества кубов и отправляют на сервер запрос для получения списка объектов, входящих в данные кубы; формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на стороне сервера на основании пространственного индекса каждого объекта; осуществляют сортировку объектов из найденного списка на основании заранее заданного критерия; направляют в браузер пользователя с сервера массив уникальных идентификаторов отсортированных объектов; осуществляют рендеринг объектов на основании уникальных идентификаторов, полученных на предыдущем шаге.
[007] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем через web-браузер.
[008] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере, загруженную пользователем из CAD-файла.
[009] В некоторых вариантах реализации технического решения получают по меньшей мере одну трехмерную модель на сервере в формате RVM/ATT или IFC.
[0010] В некоторых вариантах реализации технического решения полученной трехмерной модели объекты представлены в виде дерева.
[0011] В некоторых вариантах реализации технического решения каждый объект в полученной трехмерной модели содержит уникальный идентификатор объекта и/или ссылку на родительский объект, и/или матрицу пространственного преобразования относительно родительского объекта, и/или материалы объекта, и/или 2D/3D геометрия объекта, и/или свойства каждого объекта (атрибуты).
[0012] В некоторых вариантах реализации технического решения в качестве пространственного индекса используют разбиение всей области пространства с фиксированным шагом по каждому измерению или восьмеричные деревья, или kD-деревья, или BSP-деревья, или BVH (Bounding Volume Hierarchy), или Interval Tree, или R-деревья.
[0013] В некоторых вариантах реализации технического решения формируют пространственный индекс следующим образом:
a. для каждого объекта трехмерной модели находят его матрицу трансформации относительно начала координат с учетом структуры дерева трехмерной модели;
b. для каждой геометрии объекта применяют операцию трансформации, получая геометрию всех объектов относительно одного начала координат в мировых координатах
c. полученную трансформированную геометрию помещают в базу данных по его уникальному идентификатору;
d. для каждого объекта с трансформированной геометрией вычисляют пространственный индекс и помещают в базу данных.
[0014] В некоторых вариантах реализации технического решения отправляют на сервер запрос для отображения, представляющий собой JSON - массив координат.
[0015] В некоторых вариантах реализации технического решения при получении с сервера массива уникальных идентификаторов найденных отсортированных объектов сравнивают этот список с имеющимся кэшем объектов, причем
• все отсутствующие в кэше объектов UID помечаются как новые;
• объекты, которые присутствуют в кэше объектов, но отсутствуют в усеченной пирамиде видимости, помечаются как устаревшие и удаляются из кэша;
• для новых объектов осуществляют фоновую загрузку материалов и геометрий в соответствующие кэши.
[0016] В некоторых вариантах реализации технического решения осуществляют рендеринг только тех объектов, которые присутствуют в кэше, на основании уникальных идентификаторов.
[0017] В некоторых вариантах реализации технического решения при сортировке объектов заранее заданным критерием является угловой размер каждого объекта и/или дистанция до камеры, и/или занимаемый объем, и/или площадь объекта.
[0018] Также указанный технический результат достигается благодаря осуществлению системы рендеринга 3D моделей в браузере с использованием распределенных ресурсов, которая содержит по меньшей мере один сервер, выполненный с возможностью получения по меньшей мере одной трехмерной модели от клиента; разбиения каждого объекта в трехмерной модели на массив треугольников и помещения в хранилище объектов по его уникальному идентификатору; формирования пространственного индекса в базе данных всех объектов из полученной трехмерной модели; формирования списка объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на основании пространственного индекса каждого объекта; сортировки объектов из найденного списка от большего к меньшему на основании заранее заданного критерия направления клиенту массива уникальных идентификаторов отсортированных объектов; по меньшей мере один клиент, выполненный с возможностью направления по меньшей мере одной трехмерной модели на сервер; формирования пирамиды видимости, состоящей из заранее заданного количества кубов и направления на сервер запроса для получения списка объектов, входящих в данные кубы; осуществления рендеринга объектов на основании уникальных идентификаторов, полученных ранее.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0019] Признаки и преимущества настоящего технического решения станут очевидными из приводимого ниже подробного описания и прилагаемых чертежей, на которых:
[0020] На Фиг. 1 показана общая схема работы способа рендеринга 3D моделей в браузере с использованием распределенных ресурсов.
[0021] На Фиг. 2 показан пример реализации загрузки 3D модели на сервер с клиента.
[0022] На Фиг. 3 показан пример реализации триангуляции объектов трехмерной модели и присвоение каждому объекту уникального идентификатора.
[0023] На Фиг. 4 показан вариант реализации системы рендеринга 3D моделей в браузере с использованием распределенных ресурсов в виде блок-схемы.
[0024] На Фиг. 5 показан пример реализации выделения из трехмерной модели набор различной информации и сохранения по различным хранилищам данных.
[0025] На Фиг. 6 показан пример реализации формирования списка объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по пирамиде видимости на стороне сервера.
[0026] На Фиг. 7 показан вариант реализации разбивания усеченной пирамиды видимости на n кубов.
[0027] На Фиг. 8 показана блок-схема визуализации (рендеринга) трехмерной сцены и работа с кэшем на клиенте.
ПОДРОБНОЕ ОПИСАНИЕ ТЕХНИЧЕСКОГО РЕШЕНИЯ
[0028] Данное техническое решение может быть реализовано на компьютере, в виде системы или машиночитаемого носителя, содержащего инструкции для выполнения вышеупомянутого способа.
[0029] Техническое решение может быть реализовано в виде распределенной компьютерной системы.
[0030] В данном изобретении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций).
[0031] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).
[0032] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.
[0033] Ниже будут описаны понятия и определения, необходимые для подробного раскрытия осуществляемого технического решения.
[0034] Модель (3D-модель) - исходная трехмерная модель (состоящая из 3D-объектов), представленная в одном или нескольких из существующих 3D-форматов (Autodesk FBX и пр.), в отношении которых решается задача интерактивной 3D-визуализации.
[0035] Сетка (Mesh, Геометрия объекта) - трехмерная сетка, совокупность точек и граней которой описывают геометрию соответствующего 3D-объекта.
[0036] Макет модели (Layout) - набор данных, описывающих перечень и иерархическую вложенность (родитель-ребенок) объектов 3D-модели, ссылки на геометрию (в случае партий - на геометрию эталонного объекта) в виде UUID или иных идентификаторов, и параметры их пространственного преобразования относительно родительских объектов (трансформы из локальных в родительскую систему координат).
[0037] Матрицы пространственного преобразования (Transforms, Трансформы) - численные матрицы 4×4, описывающие преобразования над пространственным положением объекта: сдвиг, поворот, масштаб.
[0038] Клиентская часть (клиент, клиентский рендер, клиентский вьюер) - клиентская часть программного решения, исполняемая в среде web-браузера (JS), WASM и т.п., не ограничиваясь, и отвечающая за интерактивную 3D-визуализацию исходной модели.
[0039] Реестр объектов к отрисовке - перечень объектов, содержащий только видимые в текущем кадре объекты, которые подлежат отрисовке на экране. Является результатом выполнения ОС-вычислений.
[0040] Канал обмена данными (web-socket, http, https, grpc и т.д.) - распределенная часть программного решения (используется как на клиентской, так и на серверной стороне решения), используемая для обмена информацией о состоянии 3D-объектов и сцены в целом.
[0041] Информация о состоянии - совокупность данных, описывающих текущее положение камеры в кадре, разрешение экрана, размер окна (в котором производится отрисовка), параметры отсечения и выбраковки объектов, а также пространственные смещения объектов от их предыдущего положения в виде трансформов (если объекты двигались).
[0042] Буфер чтения - буфер в GPU-памяти, используемый для отрисовки текущего кадра. Каждая отрисовка (graphics pipeline) производится на базе информации, размещенной в этом буфере (непрерывный цикл).
[0043] Буфер записи - буфер в GPU-памяти, который используется для подготовки нового буфера чтения в случае, если сцена в «текущем» кадре изменилась (сдвинулись объекты, повернулась камера и т.д.). После того, как буфер записи полностью подготовлен - отрисовка переключается на него (он становится буфером чтения), а предшествующий буфер чтения используется в последующем как буфер записи (меняются местами).
[0044] Партия объектов (Batch, инстансы, instances) - группировка объектов идентичной геометрии (т.е. которые отличаются только разными сдвигами/поворотами/ масштабом) в одну партию, для которой задается описание геометрии эталонного объекта, а остальные - задаются в виде трансформов из объектного (т.е. эталонного объекта) в мировое пространство.
[0045] Объектно-ориентированный ограничивающий параллелепипед (ОВВ, ООВВ, Object-Oriented Bounding Box) - одна из вариаций технологии ограничивающих объемов, используемой для упрощения вспомогательных вычислений при 3D-визуализациях путем проведения тестов (вычислений) над упрощенным представлением объектов (используется в случаях, когда вычисления по точной геометрии объектов занимают неоправданно много времени / ресурсов).
[0046] 3D-рендеринг (рендеринг) - создание цифрового растрового изображения по разработанной трехмерной сцене при помощи специальных компьютерных программ. Термин используется в художественной и технической компьютерной графике.
[0047] Key-value хранилище - база данных на основе пар «ключ-значение» - это тип нереляционных баз данных, в котором для хранения данных используется простой метод «ключ-значение». База данных на основе пар «ключ-значение» хранит данные как совокупность пар «ключ-значение», в которых ключ служит уникальным идентификатором. Как ключи, так и значения могут представлять собой что угодно: от простых до сложных составных объектов. Базы данных с использованием пар «ключ-значение» поддерживают высокую разделяемость и обеспечивают беспрецедентное горизонтальное масштабирование, недостижимое при использовании других типов баз данных.
[0048] Шаг 110: получают по меньшей мере одну трехмерную модель на сервере.
[0049] Первоначально пользователь технического решения инициирует загрузку трехмерной модели 230 (иногда - 3D модель), как показано на Фиг. 2, в web-браузере клиента 210 на сервер 240 или посредством мобильного устройства связи пользователя, например, через мобильное приложение посредством сети передачи данных 220.
[0050] Трехмерная модель 230 может быть загружена в форматах данных RVM/ATT, IFC и т.д., не ограничиваясь. Данное техническое решение поддерживает множество различных форматов файлов (.dwg,.dgn,.ipt,.rvt,.rvm, т.д.), что позволяет собрать консолидированную 3D модель, используя модели, выгруженные из разных САПР (англ. CAD или CADD, система автоматизированного проектирования) в собственных форматах.
[0051] В некоторых вариантах реализации трехмерная модель 230 может отображаться частично по мере загрузки содержимого. В случае наличия текстур исходная модель может отображаться с ними и без них, со структурой модели или нет - это все в зависимости от шаблона просмотра.
[0052] В некоторых вариантах реализации для загрузки и просмотра трехмерной модели 230 на клиенте 210 могут использовать технологию WebGL.
[0053] Сервер 240 в одном из вариантов воплощения, может включать отдельные серверы или серверы, работающие на виртуальной машине центра хранения и обработки данных, где может быть виртуализировано множество серверов для обеспечения осуществления требуемого объема вычислений. Клиент 210 расположен в месте нахождения пользователя, чтобы получать и обрабатывать вводимые данные и передавать их на серверы 240, а также получать данные для рендеринга, который будет описан ниже. Клиент 210 и серверы 240 взаимодействуют через сеть передачу данных 220, например, такую как Интернет. В других вариантах воплощения клиент 210 может быть любым устройством, портативным или не портативным, беспроводным или не беспроводным, таким, чтобы клиент 210 мог взаимодействовать с сетью 220 и обеспечить доступ к дисплею для отображения трехмерной модели 230 и загрузки, и позволить пользователю осуществлять ввод для возможности интерактивного управления. В одном из вариантов воплощения клиентом 210 является тонкий клиент. Тем не менее, в других вариантах воплощения в качестве клиента 210 может выступать компьютер общего назначения, компьютер специального назначения, игровая приставка, персональный компьютер, портативный компьютер, планшетный компьютер, мобильное вычислительное устройство, портативное игровое устройство, мобильный телефон, телевизионная приставка, интерфейс/устройство потокового мультимедиа, телевизор высокой четкости или сетевой дисплей, или любое другое вычислительное устройство, которое можно сконфигурировать для получения требуемой функциональности клиента 210, как определено здесь. В одном из вариантов воплощения сервер 240 сконфигурирован с возможностью обнаружения типа клиентского устройства, используемого пользователем, и обеспечения восприятия трехмерной модели 230, соответствующей клиентскому устройству пользователя. Например, могут быть оптимизированы настройки изображения, аудионастройки и другие типы настроек клиентского устройства пользователя.
[0054] В различных вариантах воплощения степень обработки, выполняемой клиентом 210, может изменяться в отношении обработки ввода и вывода. Однако, говоря упрощенно, состояние трехмерной модели в основном сохраняется и выполняется на сервере 240, при этом клиент 210 в основном функционирует для получения и передачи данных, вводимых пользователем, а также для финального рендеринга на финальном шаге работы технического решения. Клиент 210 может быть самостоятельным устройством, которое подключено к дисплею и предоставляет возможность для загрузки и отображения на дисплее. В других вариантах воплощения клиент 210 может быть встроен в дисплей. В одном из вариантов воплощения дисплей является сетевым дисплеем, предоставляя среду операционной системы для программ или «приложений», использующих возможности сетевого подключения дисплея. В таком варианте воплощения клиент 210 может быть определен приложением, выполняемым в среде, предоставленной операционной системой дисплея.
[0055] Шаг 120: разбивают каждый объект в трехмерной модели на массив треугольников и помещают в хранилище объектов по его уникальному идентификатору.
[0056] Затем каждый объект разбивают на массив треугольников и помещают в хранилище 3D объектов по его уникальному идентификатору, как показано на Фиг. 3. В других вариантах реализации могут быть четырехточечные объекты и т.д.
[0057] Соответственно хранилище 3D объектов является всего лишь одним примером пригодного хранилища информации, и можно использовать любой пригодный тип хранилища данных. Например, хранилище 3D объектов может включать в себя реляционную базу данных, иерархическую базу данных, сетевую базу данных, базу данных, содержащуюся в памяти, объектно-ориентированную базу данных, хранилище данных, любое другое пригодное хранилище или базу данных для поддержания информации или их комбинацию. На самом деле в некоторых вариантах осуществления хранилище 3D объектов может содержать единую физическую базу данных, тогда как в других вариантах осуществления хранилище 3D объектов может распределяться по множественным разным физическим положениям.
[0058] Разбиение объектов на треугольники объясняется следующими причинами:
• треугольник является простейшим полигоном, вершины которого однозначно задают грань;
• любую область можно гарантировано разбить на треугольники;
• вычислительная сложность алгоритмов разбиения на треугольники существенно меньше, чем при использовании других полигонов;
• реализация процедур рендеринга наиболее проста для области, ограниченной треугольником;
• для треугольника легко определить три его ближайших соседа, имеющих с ним общие грани.
[0059] Процесс разбиения полигональной области со сложной конфигурацией в набор треугольников называется триангуляцией. При анализе или синтезе сложных поверхностей их аппроксимируют сеткой треугольников, и впоследствии оперируют с простейшими полигональными областями, т.е. с каждым из треугольников.
[0060] В некоторых вариантах реализации любая поверхность объекта может быть аппроксимирована с необходимой точностью сеткой треугольников. Точность аппроксимации определяется количеством треугольников и способом их выбора. Для качественной визуализации объекта, находящегося вблизи точки наблюдения, требуется учесть во много раз больше треугольников, чем в ситуации, когда тот же объект расположен на удалении. Даже достаточно грубая сетка полезна на практике, так как методы сглаживания, применяемые в процессе отображения, могут значительно улучшить представление о кривизне поверхности. В некоторых вариантах реализации в данном техническом решении могут использовать триангуляцию Делоне.
[0061] В целом преимуществом данного технического решения является то, что не приходится упрощать исходные 3D объекты, вместо этого один раз вычисляют данные для пространственного индекса. И для вычисления Frustrum View не важно, насколько детальные были 3D объекты, таким образом не решается задача «качественной визуализации объекта».
[0062] Трехмерная модель может состоять из набора объектов (например, представленных в виде дерева). Каждый объект модели можно представить в общем виде:
a. Уникальный идентификатор объекта (обычно UUID), которое обычно является случайным значением;
b. Ссылка на родительский объект, если таковой существует, т.е. под ссылкой подразумевается, что объект хранит информацию на свой родительский объект (его уникальный идентификатор - UUID);
c. Матрица пространственного преобразования относительно родительского объекта (если задан родитель, то все операции трансформации происходят относительно него). Если родитель отсутствует, считается что это матрица пространственного преобразования относительно начала координат;
d. Материал объекта. Материал может описывать цвет, прозрачность, интенсивность, отражающую способность, текстуру и т.д.;
e. 2D/3D геометрия объекта в виде набора координат вершин треугольников;
f. Свойства каждого объекта (атрибуты). Это могут быть служебные данные САПР систем (дата редактирования объекта, автор изменения и т.д.), вспомогательные атрибуты (тип конструкции, класс объекта, справочные данные и т.д.).
[0063] Например, на Фиг. 3 показано, как крыша здания как объект трехмерной сцены имеет уникальный идентификатор объекта UUID=301, стена имеет уникальный идентификатор 302 и т.д. В конкретном, а не схематическом варианте реализации идентификатор может принимать значение UUID=00112233-4455-6677-8899-aabbccddeeff.
[0064] На следующем шаге выделяют из модели набор различной информации и сохраняют по различным хранилищам данных, как показано на Фиг. 5. Для каждого формата существует синтаксический анализатор, который читает CAD - файла информацию, описанную выше.
[0065] Шаг 130: формируют пространственный индекс в базе данных всех объектов из полученной трехмерной модели.
[0066] Сначала формируют пространственный индекс в базе данных всех 3D объектов из полученной трехмерной модели. Пространственный индекс является стандартным приемом, известным из уровня техники, позволяющим заметно снизить сложность запросов о взаимном расположении объектов в пространстве, являются различные типы так называемых пространственных индексов (англ. spatial index). Пространственный индекс - это некоторая структура данных (чаще всего иерархическая), строящаяся обычно на этапе подготовки сцены. В качестве пространственного индекса могут использоваться разбиение всей области пространства (обычно вокруг этой области описывается ограничивающий прямоугольный параллелепипед, который и разбивается) с фиксированным шагом по каждому измерению, восьмеричные деревья, kD-деревья, BSP-деревья, BVH (Bounding Volume Hierarchy), Interval Tree, R-деревья и т.д., не ограничиваясь.
[0067] В конкретном варианте реализации в качестве пространственного индекса используются R-деревья.
[0068] Пространственный индекс объектов формируют следующим образом:
a. для каждого объекта трехмерной модели находят его матрицу трансформации относительно начала координат (мировое пространство) с учетом структуры дерева трехмерной модели (т.е. с учетом всех родителей), что позволяет вместо использования дерева модели, перейти к работе с плоским списком объектов, где не нужно учитывать иерархию структуры дерева 3D модели.
b. затем для каждой геометрии объекта (у каждого 3D объекта есть mesh, описание его геометрии, в конкретном варианте реализации представляющий из себя набор «треугольников») применяют операцию трансформации, например, сдвиг, поворот или масштаб, что позволяет получить геометрию всех объектов относительно одного начала координат (в мировых координатах), например, (0;0,0). Полученную трансформированную геометрию помещают в базу данных по его уникальному идентификатору;
c. для каждого объекта с трансформированной геометрией (в мировых координатах) вычисляют пространственный индекс и помещают в базу данных.
[0069] Далее помещают в хранилище материалов 520 данные о материале каждого 3D объекта по его уникальному идентификатору, как показано на Фиг. 5, посредством работы парсера 510.
[0070] Информация читается синтаксическим анализатором 510 (иногда парсером) из CAD файла по любому 3D объекту и сохраняется в хранилище атрибутов 530, например, в следующем виде:
a. Материал = сталь;
b. Проектировщик = Васин А.А.;
c. Дата установки = 19.12.2019.
[0071] Например, 3D-модель здания состоит из набора свойств (атрибутов) объекта, это может быть стена, колонна или дверь и т.д. Свойство объекта (или атрибут) содержит в себе необходимую информацию об объекте, которая дополняет геометрические характеристики, причем парсер 510 аналогично осуществляет анализ CAD-файла и сохраняет всю геометрическую информацию в хранилище 3D геометрии 540. Рассмотрим, например, объект «Дверь» - у нее есть высота и ширина проема, количество полотен (однопольная, полуторная или двупольная), параметры заполнения (глухая или остекленная) - все эти характеристики определяются геометрией элемента. Но этого недостаточно для полноценного описания проекта. Двери, например, могут быть противопожарными и, в этом случае, необходимо указать предел огнестойкости. Это уже информационная составляющая, которая и является метаинформацией объектов.
[0072] Шаг 140: формируют пирамиду видимости, состоящую из заранее заданного количества кубов и отправляют на сервер запрос для получения списка объектов, входящих в данные кубы.
[0073] Шаг 150: формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по вхождению в запрошенные кубы на стороне сервера на основании пространственного индекса каждого объекта.
[0074] Далее формируют список объектов для визуализации посредством первичной выбраковки трехмерных объектов по методу отсечения по пирамиде видимости на стороне сервера, используя пространственный индекс всех объектов, как показано на Фиг. 6, подразумевающий априорное исключение объектов, находящихся вне поля зрения камеры.
[0075] В уровне техники известно, что для всех вершин в пространстве трехмерной сцены ограничивающим объемом является усеченная пирамида видимости (англ. View Frustum, Frustum), а в пространстве камеры усеченная пирамида преобразуется в единичный куб.
[0076] Таким образом, нет необходимости отрисовывать объекты, находящиеся сзади или сбоку от камеры и не попадающие в поле зрения. Отрисовываются только те объекты, которые находятся в поле видимости камеры, или в объеме видимости камеры. Этот объем и является усеченной пирамидой, все что находится вне пирамиды находится и вне экрана.
[0077] Исходя из сказанного выше, для определения видимости объекта необходимо проверить, находится ли обрабатываемый объект внутри усеченной пирамиды, либо домножить координаты объекта на матрицу проецирования и проверить, находится ли объект внутри единичного куба. В некоторых вариантах осуществления на видимость проверяются только несложные геометрические фигуры, состоящие из нескольких вершин, и, если вся фигура оказывается вне видимости, то часть сцены, заключенная в нее, может быть отброшена. В роли таких фигур (ограничивающих объемов) могут выступать фигуры, известные и применяемые из уровня техники, например, сфера, параллелепипеды (ООВВ, ААВВ) и т.д. Таким образом, несложно организовать отсечение компактных моделей (в том числе динамических).
[0078] Далее разбивают пирамиду на n кубов (например, на 100) и отправляют на сервер запрос для отображения (представляющий собой JSON - массив координат) только данных n кубов, как показано на Фиг. 7. Чем больше n, тем выше точность приближенного вычисления усеченной пирамиды видимости.
[0079] На сервере есть сервис, который находит пересечения n кубов с 3D объектами модели. Для оптимизации данной операции используется пространственный индекс. Пространственный индекс существенно позволяет ускорить операцию «попадает ли объект в один из n кубов». В итоге получают только те объекты, которые имеют пересечение с кубами, т.е. те объекты, которые попадают в усеченную пирамиду видимости. Вычислить пересечение по кубам гораздо эффективнее чем по пирамиде, т.е. мы приближенно вычисляем, что попадает в усеченную пирамиду видимости, теряем в точности, но выигрываем в скорости.
[0080] В конкретном варианте реализации по всем этим полученным 3D объектам из пересечения, найденным из пространственного индекса, на сервере вычисляется угловой размер, который представляет собой размер объекта, который наблюдается на сетчатке глаза или камере. Угловой размер (иногда также угол зрения) - это угол между прямыми линиями, соединяющими диаметрально противоположные крайние точки измеряемого (наблюдаемого) объекта и глаз наблюдателя, который принимает значения от 0 до 360 градусов. Под угловым размером может также пониматься не плоский угол, под которым виден объект, а телесный угол.
[0081] Шаг 160: осуществляют сортировку объектов из найденного списка от большего к меньшему на основании заранее заданного критерия.
[0082] Далее сортируют объекты из найденного списка от большего к меньшему по угловому размеру, а потом берут первые к объектов (от 1000 до 50 000). Данный вариант реализации сортировки не является ограничивающим, что является очевидным для эксперта в уровне техники. В некоторых вариантах реализации заранее заданным критерием для осуществления сортировки может являться дистанция до камеры, и/или занимаемый объем, и/или площадь объекта и т.п. Значение к зависит от ресурсов вычислительного устройства и сложности алгоритмов рендера. В конкретном примере реализации на целевом минимальном оборудовании (4cpu, 4gb ram), при k=>50 000 техническое решение начинает существенно медленно работать. Угловой размер измеряется в градусах, соответственно идет сравнение градусов, от большего к меньшему.
[0083] Шаг 170: направляют в браузер пользователя с сервера массив уникальных идентификаторов отсортированных объектов.
[0084] Затем сервер 810 (бекенд), как показано на Фиг. 8, отправляет на клиент 820 (фронтенд) массив UUID найденных отсортированных объектов.
[0085] Клиент 820 (фронтенд) получает от сервера 810 (бекенд) массив UUID объектов. Т.к. сам UUID объекта не содержит геометрии, клиент 820 начинает загружать соответствующую геометрию для каждого объекта (описано выше) и его материал из соответствующих хранилищ (с сервера 810). Загруженные геометрии и материалы на клиент складывает в локальные кеши. В случае, если последующие запросы возвращают новый массив UUID объектов, в локальные кеши догружается информация по новым объектам (отсутствующие в кеше), а по устаревшим объектам (присутствующие в кеше, но отсутствующие в массиве UUID объектов) удаляется из кеша геометрии и материалов.
[0086] Шаг 180: осуществляют рендеринг объектов на основании уникальных идентификаторов, полученных на предыдущем шаге.
[0087] Ниже будет расписана визуализация (рендеринг) по меньшей мере одного объекта и работа с кэшем на клиенте 820. На клиенте 820 (например, в веб-браузере) имеется несколько кэшей:
a. кэш объектов 830, который представляет собой key-value хранилище. Ключом в данном хранилище является уникальный идентификатор объекта (UUID), value хранит следующую информацию:
i. уникальный идентификатор материала (UUID);
ii. уникальный идентификатор геометрии (UUID);
iii. матрицу трансформации.
b. кэш материалов 840, который представляет собой key-value хранилище, где ключом является уникальный идентификатор материала (UUID), a value хранит информацию о цвете, прозрачности, интенсивности и т.д.
c. кэш геометрий 850, который представляет собой key-value хранилище, где ключом является уникальный идентификатор геометрии (UUID), a value хранит координаты вершин треугольников, из которых строится 2D/3D объект.
[0088] В качестве примерного варианта реализации хранилищ на сервере 810 могут использоваться, не ограничиваясь, Redis (база данных в оперативной памяти с дополнительной отказоустойчивостью), Riak (распределенное, репликационное хранилище), Memcached / MemcacheDB (распределенная база данных в оперативной памяти) и т.д. В качестве примерного варианта реализации key-value хранилища могут использоваться, не ограничиваясь hash map.
[0089] Размерность каждого кэша ограничена кол-вом к, которое в конкретном варианте реализации принимает значения от 1 000 до 50 000.
[0090] Каждый раз, когда клиент 820 получает результаты выборки frustum в виде массива UUID объектов от сервера 810, клиент 820 сравнивает этот список с имеющимся кэшем объектов, как показано на Фиг. 8. Все отсутствующие в кэше объектов UUID помечаются как новые, а объекты, которые присутствуют в кэше объектов, но отсутствующие в усеченной пирамиде видимости, помечаются как устаревшие и удаляются из кэша (к том числе и из кэша материалов и кэша геометрий). Для новых объектов происходит фоновая загрузка материалов и геометрий в соответствующие кэши (фоновая - означается что оно не блокирует работу пользователя). Все новые объекты разбиваются по пачкам. Отправляют запрос данных по первой пачке, как пришел ответ, отправляют запрос по второй пачке, и т.д.
[0091] Одной из особенностей является то, что клиент 820 может не ждать полной загрузки данных во все кэши, и осуществлять рендеринг тех 3D объектов, данные по которым уже присутствуют к кэше(ах).
[0092] Ссылаясь на Фиг. 4, данное техническое решение может быть реализовано в виде вычислительной системы 400 рендеринга 3D моделей в браузере с использованием распределенных ресурсов, которая содержит один или более из следующих компонентов:
• компонент 401 обработки, содержащий по меньшей мере один процессор 402,
• память 403,
• компонент 405 мультимедиа,
• компонент 406 аудио,
• интерфейс 407 ввода / вывода (I / О),
• сенсорный компонент 408,
• компонент 409 передачи данных.
[0093] Компонент 401 обработки в основном управляет всеми операциями системы 400, например, осуществляет обработку данных о пользователе или его запросе на поиск билетов, а также управляет дисплеем, телефонным звонком, передачей данных, работой камеры и операцией записи мобильного устройства связи. Компонент 401 обработки может включать в себя один или более процессоров 402, реализующих инструкции для завершения всех или части шагов из указанных выше способов. Кроме того, компонент 401 обработки может включать в себя один или более модулей для удобного процесса взаимодействия между другими модулями 401 обработки и другими модулями. Например, компонент 401 обработки может включать в себя мультимедийный модуль для удобного облегченного взаимодействия между компонентом 405 мультимедиа и компонентом 401 обработки.
[0094] Память 403 выполнена с возможностью хранения различных типов данных для поддержки работы системы 400, например, базу данных с профилями пользователей. Примеры таких данных включают в себя инструкции из любого приложения или способа, контактные данные, данные адресной книги, сообщения, изображения, видео, и т.д., и все они работают на системе 400. Память 403 может быть реализована в виде любого типа энергозависимого запоминающего устройства, энергонезависимого запоминающего устройства или их комбинации, например, статического оперативного запоминающего устройства (СОЗУ), Электрически-Стираемого Программируемого постоянного запоминающего устройства (ЭСППЗУ), Стираемого Программируемого постоянного запоминающего устройства (СППЗУ), Программируемого постоянного запоминающего устройства (ППЗУ), постоянного запоминающего устройства (ПЗУ), магнитной памяти, флэш-памяти, магнитного диска или оптического диска и другого, не ограничиваясь.
[0095] Компонент 405 мультимедиа включает в себя экран, обеспечивающий выходной интерфейс между системой 400, которая может быть установлена на мобильном устройстве связи пользователя и пользователем. В некоторых вариантах реализации, экран может быть жидкокристаллическим дисплеем (ЖКД) или сенсорной панелью (СП). Если экран включает в себя сенсорную панель, экран может быть реализован в виде сенсорного экрана для приема входного сигнала от пользователя. Сенсорная панель включает один или более сенсорных датчиков в смысле жестов, прикосновения и скольжения по сенсорной панели. Сенсорный датчик может не только чувствовать границу прикосновения субъекта или жест перелистывания, но и определять длительность времени и давления, связанных с режимом работы на прикосновение и скольжение. В некоторых вариантах осуществления компонент 405 мультимедиа включает одну фронтальную камеру и/или одну заднюю камеру. Когда система 400 находится в режиме работы, например, режиме съемки или режиме видео, фронтальная камера и/или задняя камера могут получать данные мультимедиа извне. Каждая фронтальная камера и задняя камера может быть одной фиксированной оптической системой объектива или может иметь фокусное расстояние или оптический зум.
[0096] Компонент 406 аудио выполнен с возможностью выходного и/или входного аудио сигнала. Например, компонент 406 аудио включает один микрофон (MIC), который выполнен с возможностью получать внешний аудио сигнал, когда система 400 находится в режиме работы, например, режиме вызова, режима записи и режима распознавания речи. Полученный аудио сигнал может быть далее сохранен в памяти 403 или направлен по компоненту 409 передачи данных. В некоторых вариантах осуществления компонент 406 аудио также включает в себя один динамик выполненный с возможностью вывода аудио сигнала.
[0097] Интерфейс 407 ввода / вывода (I / О) обеспечивает интерфейс между компонентом 401 обработки и любым периферийным интерфейсным модулем. Вышеуказанным периферийным интерфейсным модулем может быть клавиатура, руль, кнопка, и т.д. Эти кнопки могут включать, но не ограничиваясь, кнопку запуска, кнопку регулировки громкости, начальную кнопку и кнопку блокировки.
[0098] Сенсорный компонент 408 содержит один или более сенсоров и выполнен с возможностью обеспечения различных аспектов оценки состояния системы 400. Например, сенсормый компонент 408 может обнаружить состояния вкл/выкл системы 400, относительное расположение компонентов, например, дисплея и кнопочной панели, одного компонента системы 400, наличие или отсутствие контакта между субъектом и системой 400, а также ориентацию или ускорение/замедление и изменение температуры системы 400. Сенсорный компонент 408 содержит бесконтактный датчик, выполненный с возможностью обнаружения присутствия объекта, находящегося поблизости, когда нет физического контакта. Сенсорный компонент 408 содержит оптический датчик (например, КМОП или ПЗС-датчик изображения) выполненный с возможностью использования в визуализации приложения. В некоторых вариантах сенсорный компонент 408 содержит датчик ускорения, датчик гироскопа, магнитный датчик, датчик давления или датчик температуры.
[0099] Компонент 409 передачи данных выполнен с возможностью облегчения проводной или беспроводной связи между системой 400 и другими устройствами. Система 400 может получить доступ к беспроводной сети на основе стандарта связи, таких как WiFi, 2G, 3G, 5G, или их комбинации. В одном примерном варианте компонент 409 передачи данных получает широковещательный сигнал или трансляцию, связанную с ними информацию из внешней широковещательной системы управления через широковещательный канал. В одном варианте осуществления компонент 409 передачи данных содержит модуль коммуникации ближнего поля (NFC), чтобы облегчить ближнюю связь. Например, модуль NFC может быть основан на технологии радиочастотной идентификации (RFID), технологии ассоциации передачи данных в инфракрасном диапазоне (IrDA), сверхширокополосных (UWB) технологии, Bluetooth (ВТ) технологии и других технологиях.
[00100] В примерном варианте осуществления система 400 может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа 100 рендеринга 3D моделей в браузере с использованием распределенных ресурсов.
[00101] В примерном варианте осуществления энергонезависимый машиночитаемый носитель содержит память 403, которая включает инструкции, где инструкции выполняются процессором 401 системы 400 для реализации описанных выше способов рендеринга 3D моделей в браузере с использованием распределенных ресурсов. Например, энергонезависимым машиночитаемым носителем может быть ПЗУ, оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, дискеты, оптические устройства хранения данных и тому подобное.
[00102] Вычислительная система 400 может включать в себя интерфейс дисплея, который передает графику, текст и другие данные из коммуникационной инфраструктуры (или из буфера кадра, не показан) для отображения на компоненте 405 мультимедиа. Вычислительная система 400 дополнительно включает в себя устройства ввода или периферийные устройства. Периферийные устройства могут включать в себя одно или несколько устройств для взаимодействия с мобильным устройством связи пользователя, такие как клавиатура, микрофон, носимое устройство, камера, один или более звуковых динамиков и другие датчики. Периферийные устройства могут быть внешними или внутренними по отношению к мобильному устройству связи пользователя. Сенсорный экран может отображать, как правило, графику и текст, а также предоставляет пользовательский интерфейс (например, но не ограничиваясь ими, графический пользовательский интерфейс (GUI)), через который субъект может взаимодействовать с мобильным устройством связи пользователя, например, получать доступ и взаимодействовать с приложениями, запущенными на устройстве.
[00103] Элементы заявляемого технического решения находятся в функциональной взаимосвязи, а их совместное использование приводит к созданию нового и уникального технического решения. Таким образом, все блоки функционально связаны.
[00104] Все блоки, используемые в системе, могут быть реализованы с помощью электронных компонент, используемых для создания цифровых интегральных схем, что очевидно для специалиста в данном уровне техники. Не ограничиваюсь, могут использоваться микросхемы, логика работы которых определяется при изготовлении, или программируемые логические интегральные схемы (ПЛИС), логика работы которых задается посредством программирования. Для программирования используются программаторы и отладочные среды, позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС могут быть программируемые логические контроллеры (ПЛК), базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования; ASIC - специализированные заказные большие интегральные схемы (БИС), которые при мелкосерийном и единичном производстве существенно дороже.
[00105] Обычно, сама микросхема ПЛИС состоит из следующих компонент:
• конфигурируемых логических блоков, реализующих требуемую логическую функцию;
• программируемых электронных связей между конфигурируемыми логическими блоками;
• программируемых блоков ввода/вывода, обеспечивающих связь внешнего вывода микросхемы с внутренней логикой.
[00106] Также блоки могут быть реализованы с помощью постоянных запоминающих устройств.
[00107] Таким образом, реализация всех используемых блоков достигается стандартными средствами, базирующимися на классических принципах реализации основ вычислительной техники.
[00108] Как будет понятно специалисту в данной области техники, аспекты настоящего технического решения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего технического решения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, аспекты настоящего технического решения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.
[00109] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, аппарат, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними.
[00110] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.
[00111] Компьютерный программный код для выполнения операций для шагов настоящего технического решения может быть написан на любом языке программирования или комбинаций языков программирования, включая объектно-ориентированный язык программирования, например Python, R, Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на компьютере пользователя полностью, частично, или же как отдельный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере, или же полностью на удаленном компьютере. В последнем случае, удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN), глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).
[00112] Аспекты настоящего технического решения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего технического решения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, компьютера специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.
[00113] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять компьютером, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.