Изобретение относится в целом к области компьютерной графики. Более конкретно, изобретение относится к интегрированию трехмерной графики в двумерной системе компоновки изображений.
УРОВЕНЬ ТЕХНИКИ
Пределы традиционной модели организации доступа к графике в компьютерных системах достигаются в настоящий момент, частично потому что быстродействие памяти и шины отстает от прогресса в главных процессорах и/или графических процессорах. Вообще, современная модель подготовки кадра с использованием битовых массивов нуждается в обработке слишком больших данных для того, чтобы не отставать от скорости обновления аппаратных устройств, когда требуются сложные графические эффекты. В результате, при попытке выполнить сложные графические эффекты с использованием традиционных графических моделей, вместо выполнения изменений, которые приводят к воспринимаемому визуальному эффекту своевременно для следующего кадра, изменения могут быть добавлены в течение других кадров, вызывая результаты, которые являются визуально нежелательными.
Сверх того, эта проблема усугубляется внедрением трехмерной (3D) графики и спецэффектов, таких как анимация отображаемых 3D изображений. Что нужно, так это система графической генерации и компоновки изображений, которая может визуализировать 3D изображения в реальном времени, создавая изображения в качестве изображений, вызываемых компьютерной программой. Дополнительно, создание 3D изображений должно быть интегрировано в двумерное (2D) отображение графической информации, как требуется для обеспечения смешения 3D и 2D изображений на дисплее. Данное имеет место по отношению к этим соображениям и другим, к которым пришло настоящее изобретение.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Вышеприведенная и другие проблемы решаются посредством интегрирования объектов 3D моделей в иерархию объектов 2D визуалов и единообразной обработки 3D изображений и 2D изображений для визуализации на 2D дисплее. Обработка объектов 3D и объектов 2D визуалов в иерархии визуалов интегрирована таким образом, что обработка без труда переключается между 3D и 2D операциями. Более того, количество переходов между обработкой объектов 2D визуалов и объектов 3D моделей во время создания отображаемого изображения не имеет архитектурных ограничений. Таким образом, пользователь свободно может создавать графику, внедряя 3D изображения в 2D изображения и 2D изображения в 3D изображения до бесконечности. Например, диалоговое окно пользовательского интерфейса может быть текстурировано на сфере, которая отображается как часть другого диалогового окна, которое в свою очередь текстурировано на конусе.
В соответствии с другим аспектом настоящее изобретение относится к структуре данных для объединения объектов компьютерных программ для создания 3D изображений и 2D изображений в иерархии объектов дерева визуалов, имеющую объекты 2D визуалов и объекты 3D сцены, указывающие на объекты 3D моделей. Структура данных содержит иерархию дерева объектов, один или более объектов 2D визуалов, и один или более объектов 3D-ссылки или сцены, указывающие на объекты 3D моделей. Объекты 2D визуалов определяют операции, рисующие 2D изображение. Объекты 3D ссылки или сцены определяют ссылки, указывающие на объекты с операциями, которые совместно рисуют двумерное представление трехмерной сцены, составленной из одной или более 3D моделей. Объекты 3D ссылки или сцены указывают на объекты 3D моделей и объект камеры. Объект камеры определяет двумерный вид 3D сцены. Объекты 3D моделей рисуют 3D модели и определяют информацию сетки, используемую в рисовании контуров модели и информацию материала, используемую в рисовании поверхностной текстуры модели. Информация материала (информация о материале) для поверхностной текстуры модели может быть определена объектом 2D визуала, объектом 3D ссылки или сцены или иерархией дерева объектов 2D визуалов и/или объектов 3D ссылки сцены.
В соответствии с другим аспектом настоящее изобретение относится к способу для обработки иерархии объектов визуала компьютерных программ для создания смеси двумерных (2D) и трехмерных (3D) изображений в качестве выходного сигнала из компьютера. Способ содержит обход ветви иерархии первого дерева объектов визуала для обработки объектов листьев и объектов ветвей и обнаружения, является ли следующий необработанный объект визуала объектом 2D визуала или объектом 3D визуала. Если обнаружен 2D объект, вызывается 2D процесс для обработки объекта визуала. Если обнаружен 3D объект, вызывается 3D процесс для обработки объекта визуала. 3D процесс устанавливает вид из камеры и рисует изображения одной или более 3D моделей, определенных объектом 3D визуала. Изображения рисуются на основе вида из камеры на одну или более 3D моделей.
Изобретение может быть осуществлено как компьютерный процесс, вычислительная система или продукт изготовления, такой как компьютерный программный продукт или машиночитаемый носитель. Машиночитаемый носитель может быть компьютерным запоминающим носителем, считываемым компьютерной системой и кодирующим компьютерную программу инструкций для выполнения компьютерного процесса. Машиночитаемый носитель может также быть распространяемым сигналом по несущей, считываемым компьютерной системой и кодирующим компьютерную программу инструкций для выполнения компьютерного процесса.
Эти и различные другие признаки, а также преимущества, которые характеризуют настоящее изобретение, очевидны из приведенного ниже подробного описания и обзора связанных чертежей.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 иллюстрирует иерархию объектов визуала, организованную в соответствии с одним из вариантов настоящего изобретения для внедрения 3D объектов в дерево визуалов 2D объектов.
Фиг.2 иллюстрирует пример пригодной среды вычислительной системы, в которой изобретение может быть реализовано.
Фиг.3 - структурная схема, в целом представляющая разбитую на уровни архитектуру графики, в которую может быть включено настоящее изобретение.
Фиг.4 - представление графа сцены визуалов и ассоциированных компонентов для обработки графа сцены, например посредством обхода графа сцены для предоставления графических команд и других данных.
Фиг.5 - представление графа сцены визуалов проверки, визуалов рисования и созданных ассоциированных примитивов рисования.
Фиг.6 иллюстрирует детальный пример участка иерархии дерева визуалов, где объект 3D визуала указал на объект 3D модели, имеющий объект 3D примитива с содержимым 3D визуала, который дополнительно указывает на 3D сцену, составленную из группы 3D моделей с одной такой 3D моделью, имеющей объект 2D визуала в качестве материального содержимого.
Фиг.7 иллюстрирует параметры камеры, используемые при определении вида из камеры или 2D вида 3D сцены или модели.
Фиг.8 - блок-схема последовательности операций, иллюстрирующая операционный поток для обработки объектов 2D визуалов в дереве визуалов и переход к обработке объектов 3D визуала в том же дереве визуалов.
Фиг.9 - блок-схема последовательности операций, иллюстрирующая операционный поток для обработки объектов 3D визуала в дереве визуалов и переход к обработке объекта 2D визуала в том же дереве визуалов.
Фиг.10 - примерное дерево объектов визуала, иллюстрирующее обработку посредством блок-схем последовательности операций с фиг.8 и 9.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В соответствии с одними из вариантов осуществления изобретения, фиг.1 иллюстрирует объекты 3D ссылки или сцены, интегрированные в иерархию дерева объектов визуала таким образом, что дерево имеет как объекты 2D визуалов, так и объекты визуалов 3D ссылки или сцены. "Визуал", когда в данном документе ассоциирован с объектами, представляет собой рисунок, визуализируемый на экране компьютерного дисплея посредством объекта. В этой примерной иллюстрации дерева визуалов, корневой объект 10 визуала имеет четыре дочерних элемента с чередующимися вариантами осуществления для одного дочернего, который является дочерним элементом 3D сцены. Дочерними элементами 2D визуала являются объекты 12, 14 и 16, а один из объектов 18 и 20 3D сцены в альтернативе является четвертым дочерним элементом корневого объекта 10 визуала.
Объект 18 3D сцены является объектом 18 3D визуала и содержит ссылку или указатель 23 на объект(ы) 24 3D моделей и ссылку или указатель 25 на объект 22 камеры для просмотра 3D моделей в качестве 2D изображений. Объекты 3D визуалов более подробно описываются в приведенной в качестве перекрестной ссылки патентной заявке, озаглавленной "Прикладной программный интерфейс 3D построения модели" и цитированный выше. Камера 22 видит 3D модель(и), рисуемую объектом(ами) 24, как 3D сцену. Объект(ы) 24 3D моделей и объект 22 камеры вместе создают 2D изображение 3D сцены на экране компьютерного дисплея. Объект 20 3D сцены является объектом 2D визуала с контекстом рисования. В этом варианте осуществления изобретения контекст рисования объекта 2D визуала содержит ссылку или указатель 27 на объект(ы) 24 3D моделей и ссылку или указатель 29 на объект 22 камеры.
Для создания изображения и визуализации отображения ветви дерева визуалов обходятся и обрабатываются слева направо; таким образом, последовательность визуализации на фиг.1 показана слева направо. Объект 2D визуала с контекстом рисования и обработка дерева визуалов описана обычным образом в переданной заявке, озаглавленной "Интерфейс графа визуализации и сцены", цитированной выше в перекрестной ссылке на родственную заявку. Краткий обзор данной обработки включен в данный документ в описание фиг.3-5.
Для иллюстрирования того, как отображение изображения создается в этой последовательности визуализации, предполагается, что объект 12 2D визуала создает треугольник, объект 14 2D визуала формирует окружность, а объект 16 2D визуала формирует квадрат. Объект 18 3D визуала 3D сцены или объект 20 2D визуала 3D сцены формирует 3D сцену как осматриваемую из камеры. Так как последовательность визуализации осуществляется слева направо, и позднее визуализируемые объекты перекрывают ранее визуализируемые объекты, дерево 8 визуалов будет порождать изображение 25 отображения на фиг.1. Другими словами, треугольник, порождаемый из визуала 12, и окружность, порождаемая из визуала 14, перекрываются квадратом, обеспечиваемой визуалом 16, так как визуал 16 обрабатывается после визуалов 12 и 14. Аналогично, 2D вид 3D сцены, созданной объектами 18 и 20 3D сцены, генерируется после окружности и перекрывает окружность. Посредством обеспечения объектов 3D сцены, содержащих 3D сцену и виртуальную камеру для осмотра сцены, 3D сцена преобразуется в 2D изображение, которое может быть визуализировано как другое изображение из дерева визуалов. Дополнительно, поскольку изображения скорее рисуются, а не являются растровыми изображениями, отображение может быть визуализировано в реальном времени на экране компьютерного дисплея или как другой компьютерный выходной видеосигнал.
В другом существенном признаке изобретения, объект(ы) 24 3D моделей имеют информацию 26 о материале или текстуре. Информация 26 материала может указывать на другое дерево визуалов, представленное объектом 28 визуалов. Этот объект 28 визуалов может иметь объекты 2D визуалов и объекты 3D сцены точно так же, как корневой объект дерева 10 визуалов. Таким образом, иерархия дерева визуалов может внедрять объекты 3D сцены в дерево визуалов с 2D объектами, дополнительно, второе дерево визуалов с 2D объектами и объектами 3D сцены может в свою очередь быть внедренным в 3D модели объектов 3D сцены в первом дереве визуалов. Это последовательное чередующееся внедрение 3D и 2D объектов в иерархию дерева может продолжаться столько раз, сколько требуется создателю графической программы для создания желаемого отображения смешанных 2D и 3D изображений.
Более подробное объяснение интеграции 3D объектов с 2D объектами в иерархии дерева визуалов показано на фиг.6. Тем не менее, фигуры 2-5 описаны для предоставления примерной рабочей среды и программной среды для обработки интегрированной иерархии дерева визуалов.
ПРИМЕРНАЯ РАБОЧАЯ СРЕДА
Фиг.2 иллюстрирует пример пригодной вычислительной среды 100 системы, в которой настоящее изобретение может быть реализовано. Среда 100 вычислительной системы является только одним из примеров подходящей вычислительной среды и не имеет намерением предлагать какое бы то ни было ограничение объема использования или функциональных возможностей изобретения. Вычислительная среда 100 также не должна быть истолкована как имеющая какую бы то ни было зависимость или требование, относящиеся к любому одному или сочетанию компонентов, проиллюстрированных в примерной рабочей среде 100.
Изобретение является работоспособным с многочисленными другими конфигурациям или средами вычислительных систем общего применения или специального назначения. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут быть пригодными для использования с изобретением, включают в себя, но не в качестве ограничения, персональные компьютеры, серверные компьютеры, «карманные» или портативные устройства, «блокнотные» устройства, многопроцессорные системы, основанные на микропроцессорах системы, компьютерные приставки к телевизору, программируемую бытовую электронную аппаратуру, сетевые ПК (персональные компьютеры, PC), миникомпьютеры, универсальные вычислительные машины, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и тому подобное.
Изобретение может быть описано в общем контексте машинно-исполняемых инструкций, к примеру, программных модулей, исполняемых компьютером. Как правило, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Изобретение, к тому же, может быть осуществлено на практике в распределенной вычислительной среде, где задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть передачи данных. В распределенном вычислительном окружении программные модули могут быть расположены в носителе хранения как локальной, так и удаленной вычислительной машины, включающем в себя запоминающие устройства памяти.
Со ссылкой на фиг.2 примерная система для реализации изобретения включает в себя вычислительное устройство общего применения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в качестве ограничения, процессор 120 (устройство обработки данных), системную память 130 и системную шину 121, которая соединяет различные системные компоненты, в том числе системную память с процессором 120. Системная шина 121 может быть любой из некоторых типов шинных структур, в том числе шиной памяти или контроллером памяти, шиной подключения периферийных устройств, и локальной шиной, использующей любую из многообразия шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину стандартной архитектуры для промышленного применения (ISA), шину микроканальной архитектуры (MCA), шину расширенной ISA (EISA), локальную шину ассоциации по стандартизации в области видеотехники (VESA), ускоренный графический порт (AGP) и шину соединения периферийных компонентов (PCI), также известную как шина Mezzanine.
Вычислительная система 110 типично включает в себя множество машиночитаемых носителей. Машиночитаемые носители могут быть любыми доступными носителями, которые могут быть доступны вычислительной машине 110 и включают в себя как энергозависимые, так и энергонезависимые, съемные или несъемные носители. В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные запоминающие носители и среду связи. Компьютерные запоминающие носители включают в себя как энергозависимые и энергонезависимые носители, так и съемные и несъемные носители, реализованные в рамках любого способа или технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные запоминающие носители включают в себя, но не в качестве ограничения, ОЗУ (оперативное запоминающее устройство, RAM), ПЗУ (постоянное запоминающее устройство, ROM), EEPROM (электрически стираемое и программируемое ПЗУ), флэш-память или память другой технологии, CD-ROM (ПЗУ на компакт-диске), универсальные цифровые диски (DVD) или другое оптическое дисковое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитное дисковое запоминающее устройство или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован, чтобы хранить желаемую информацию и к которому может быть осуществлен доступ компьютером 110. Среда связи в типичном случае воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как сигнал несущей или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, который имеет одну или более его характеристик, установленных или изменяемых таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных включают в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическую, РЧ (радиочастотную, RF), инфракрасную и другую беспроводную среду. Сочетания любых из вышеописанных также должны быть включены в пределы объема машиночитаемых носителей. Системная память 130 включает в себя компьютерные запоминающие носители в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами в пределах компьютера 110, к примеру, во время запуска, типично хранится в ПЗУ 131. ОЗУ 132 типично содержит модули данных и/или программ, которые доступны непосредственно и/или, собственно, являются приводимыми в действие процессором 120. В качестве примера, а не ограничения, фиг.2 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Вычислительная машина 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители. Исключительно в качестве примера, фиг.2 иллюстрирует накопитель 141 на жестком диске, который выполняет считывание с или запись на несъемные энергонезависимые носители, магнитный дисковод 151, который выполняет считывание с или запись на съемный энергонезависимый магнитный диск 152, и оптический дисковод 155, который выполняет считывание с или запись на съемный энергонезависимый оптический диск 156, такой как CD-ROM или другие оптические носители. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители, которые могут быть использованы в примерной рабочей среде, включают в себя, но не в качестве ограничения, кассеты магнитной ленты, карты флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и тому подобное. Накопитель 141 на жестком диске типично подключен к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, а привод 151 магнитного диска и привод 155 оптического диска типично подключены к системной шине 121 посредством интерфейса съемной памяти, такого как интерфейс 150.
Накопители и их ассоциируемые компьютерные запоминающие носители, описанные выше и проиллюстрированные на фиг.2, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг.2, например, накопитель 141 на жестком диске проиллюстрирован в качестве сохраняющего операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Заметим, что эти компоненты могут быть либо такими же или отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программ здесь снабжены другими номерами, чтобы проиллюстрировать, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в вычислительную машину 110 через устройства ввода, такие как планшет для ввода (устройство ввода аналоговых данных) 164, микрофон 163, клавиатура 162 и координатно-указательное устройство 161, как правило, указываемое ссылкой как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую панель, спутниковую антенну, сканер или подобное. Эти и другие устройства ввода часто подключены к процессору 120 через пользовательский интерфейс 160 ввода, который соединен с системной шиной, но могут быть подключены посредством других интерфейсов и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191, или другой вид устройства отображения, также подключен к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. Монитор 191 может также быть интегрирован с сенсорным экраном 193 или подобным, который может вводить цифровые входные данные, такие как написанный от руки текст, в компьютерную систему 110 через интерфейс, такой как сенсорный экран 192. Заметим, что монитор и/или панель сенсорного ввода могут быть физически объединены в корпус, в котором заключено вычислительное устройство 110, такое как планшетная персональная вычислительная машина, в котором панель 164 сенсорного ввода служит по существу как планшет 164. В дополнение, вычислительные машины, такие как вычислительное устройство 110, могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 195 и печатающее устройство 196, которые могут быть присоединены через интерфейс 194 периферийного вывода или подобный.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, таких как удаленный компьютер 180. Удаленный компьютер 180 может быть еще одним персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим узлом сети, и типично включает в себя многие или все из элементов, описанных выше относительно компьютера 110, хотя, только запоминающее устройство 181 памяти проиллюстрировано на фиг.2. Изображенные на фиг.2 логические соединения включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но также могут включать в себя другие сети. Такие сетевые среды являются обычными в офисах, корпоративных компьютерных сетях, сетях интранет (локальных сетях, основанных на технологиях Интернет) и сети Интернет.
При использовании в сетевой среде LAN компьютер 110 подключен к LAN 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN персональный компьютер 110 типично включает в себя модем 172 или другое средство для установления соединений через WAN 173, такую как сеть Интернет. Модем 172, который может быть внутренним или внешним, может быть присоединен к системной шине 121 посредством интерфейса 160 пользовательского ввода, или другим подходящим механизмом. В сетевой среде программные модули, изображенные относительно компьютера 110, или их части, могут быть сохранены в удаленном запоминающем устройстве памяти. В качестве примера, а не ограничения, фиг.2 иллюстрирует удаленные прикладные программы 185 в качестве находящихся в устройстве 181 памяти. Следует принять во внимание, что показанные сетевые соединения являются примерными, и может быть использовано другое средство установления линии связи между компьютерами.
ПРОГРАММНАЯ СРЕДА ДЛЯ ОБРАБОТКИ ИЕРАРХИИ ДЕРЕВА ВИЗУАЛОВ
Фиг.3 представляет общую разделенную на уровни архитектуру 200, в которой могут быть обработаны деревья визуалов. Как представлено на фиг.3, программный код 202 (например, прикладная программа или компонент операционной системы или подобный) может быть разработан для вывода графических данных одним или более различными способами, включая посредством формирования 204 изображения, посредством элементов 206 векторной графики, и/или посредством вызовов функции/метода, помещенных непосредственно в уровень 212 прикладного программного интерфейса (API) визуалов, в соответствии с аспектом настоящего изобретения. Вообще, формирование 204 изображения обеспечивает программный код 202 с механизмом для загрузки, редактирования и сохранения изображений, например битовых карт. Как описано ниже, эти изображения могут быть использованы другими частями системы, и также существует способ использовать код рисования примитивов, чтобы непосредственно рисовать изображение. Элементы 206 векторной графики предоставляют другой путь рисования графики, согласующейся с остальной частью объектной модели (описан ниже). Элементы 206 векторной графики могут быть созданы посредством языка разметки, который интерпретирует система 208 элементов/свойств и презентационная система 210 для того, чтобы выполнять соответствующие вызовы уровня 212 API визуалов.
Многоуровневая графическая архитектура 200 включает в себя высокоуровневый механизм 214 компоновки изображений и анимации, который включает в себя, или иначе ассоциировано с кэширующей структурой 216 данных. Кэширующая структура 216 данных содержит граф сцены, содержащий иерархически упорядоченные объекты, которые управляются в соответствии с определенной объектной моделью, как описано ниже. Вообще, уровень 212 API визуалов предоставляет программный код 202 (и презентационной системы 210) с интерфейсом для кэширующей структуры 216 данных, включая возможность создания объектов, открытия и закрытия объектов для предоставления им данных, и так далее. Другими словами, высокоуровневый механизм 214 компоновки изображений и анимации предоставляет уровень 212 API унифицированной среды, посредством которого разработчики могут выражать намерения о графическом представлении и среде для отображения графической информации, и снабжает лежащую в основе платформу достаточной информацией, так что платформа может оптимизировать использование аппаратных средств для программного кода. Например, лежащая в основе платформа будет нести ответственность за кэширование, согласование ресурсов и интеграцию носителей.
Высокоуровневый механизм 214 компоновки изображений и анимации передает поток команд и возможно другие данные (например, указатели на битовые карты) быстрому, низкоуровневому механизму 218 компоновки изображений и анимации. В качестве используемых в настоящем документе термины "высокоуровневый" и "низкоуровневый", подобны используемым в других вычислительных сценариях, при этом, в общем случае, чем ниже компонент программного обеспечения относительно более высоких компонентов, тем ближе более низкий компонент к аппаратным средствам. Таким образом, например, графическая информация, отправляемая от высокоуровневого механизма 214 компоновки изображений и анимации, может быть получена в низкоуровневом механизме 218 компоновки изображений и анимации, где информация используется, чтобы отправлять графические данные в графическую подсистему, включающую в себя аппаратные средства 222.
Высокоуровневый механизм 214 компоновки изображений и анимации вместе с программным кодом 202 создают граф сцены для представления сцены графики, подготовленной программным кодом 202. Например, каждый элемент, который должен быть нарисован, может быть загружен вместе с командами рисования, которые система может кэшировать в структуре 216 данных графа сцены. Как описано ниже, существует несколько различных способов для определения структуры 216 данных, и того, что рисуется. Дополнительно, высокоуровневый механизм 214 компоновки изображений и анимации интегрируется с системами 220 синхронизации и анимации для обеспечения декларативного (или другого) управления анимацией (например, анимационные интервалы) и управления временной синхронизацией. Заметим, что анимационная система позволяет анимировать значения, которые должны быть перенаправлены по существу куда угодно в системе, включая, например, на уровень 208 свойств элемента, внутри уровня 212 API визуалов, и в любой из других ресурсов. Система синхронизации открыта для воздействия на уровне элементов и визуалов.
Низкоуровневый механизм 218 компоновки изображений и анимации управляет компоновкой изображений, анимацией и визуализацией сцены, которая затем подается к графической подсистеме 222. Низкоуровневый механизм 218 компонует визуализации для сцен многочисленных приложений и вместе с визуализирующими компонентами осуществляет фактическую визуализацию графики на экране. Заметим, однако, что иногда выполнение на более высоких уровнях может быть необходимо и/или полезно для некоторых из визуалов. Например, пока нижние уровни обслуживают запросы от множества приложений, более высокие уровни инициируются на основе каждого приложения, в соответствии с чем возможно выполнять посредством механизмов 204 формирования изображения требующую временных затрат или специфическую для приложения визуализацию на более высоких уровнях, и передавать ссылки на битовую карту нижним уровням.
Фиг.4 и 5 показывают примерные графы 300 и 400 сцены соответственно, в том числе базовый объект, упоминаемый как визуал. Вообще, визуал содержит объект, который представляет пользователю виртуальную поверхность и имеет визуальное представление на дисплее. Как представлено на фиг.4, визуал 302 верхнего уровня (или корневой) подсоединен к объекту 304 диспетчера визуалов, который также имеет связь (например, посредством дескриптора) с окном (HWnd) 306 или сходным элементом, в котором графические данные являются выходными для программного кода. VisualManager (диспетчер визуалов) 304 управляет рисованием визуалов верхнего уровня (и любых дочерних элементов этого визуала) для данного окна 306. Для того чтобы рисовать, менеджер 304 визуалов обрабатывает (например, обходит или передает) граф сцены, как запланировано диспетчером 308, и доставляет графические команды и другие данные компоненте 218 нижнего уровня (фиг.3) для ее соответствующего окна 306. Обработка графа сцены обычно планируется посредством диспетчера 308 со скоростью, которая является относительно более медленной, чем скорость обновления низкоуровневой компоненты 218 и/или графической подсистемы 222. Фиг.4 показывает несколько дочерних визуалов 310-315, упорядоченных иерархически ниже визуала 302 верхнего уровня (корневого), некоторые из которых представлены как наполненные посредством контекста 316, 317 рисования (показанного пунктирными прямоугольниками для отражения их временной сущности) с ассоциированными списками 318 и 319 инструкций, соответственно, например содержащими рисуемые примитивы и другие визуалы. Визуалы могут также содержать другую информацию свойств, как показано в следующем примере класса визуалов:
Как можно видеть, визуалы предлагают услуги посредством предоставления свойств преобразования, окружения, непрозрачности и возможно других, которые могут быть установлены и/или прочитаны с помощью метода get (получить). В дополнение, визуал имеет флаги, управляющие тем, как он участвует в проверке наличия данных. Свойство Show (Показать) используется для того, чтобы показать/спрятать визуал, например, когда Ложь, визуал невидим, в противном случае - видим.
Преобразование, устанавливаемое посредством свойства transform (преобразовать), определяет систему координат для подграфа визуала. Система координат перед преобразованием называется предтрансформационной системой координат, система после преобразования называется посттрансформационной системой координат, то есть, визуал с преобразованием является эквивалентным визуалу с узлом преобразования в качестве родителя. Более полное описание дерева визуалов и системы компоновки изображений включено в родственную патентную заявку, озаглавленную "Интерфейс визуализации и графа сцены" приведенную в качестве перекрестной ссылки выше.
ИНТЕГРАЦИЯ ВИЗУАЛИЗАЦИИ 3D В ИЕРАРХИЮ ДЕРЕВА ВИЗУАЛОВ
Принимая во внимание вышеописанную аппаратную и программную среду, фиг.6 иллюстрирует интеграцию объектов 3D сцены в иерархию дерева визуалов, также имеющую 2D объекты. Как описано выше со ссылкой на фиг.1 объект 3D визуала сцены создает 2D изображение - вид из камеры на 3D сцену. Как описано выше для фиг.1, объект 3D сцены реализуется как объект 3D визуала с указателем на 3D модель(и) или объект 2D визуала, имеющий контекст рисования с указателем на 3D модель(и). Так же, как описано для фиг.1, здесь может иметь место второй указатель, показанный на фиг.1, на объект камеры. В примере на фиг.6 указатель от объекта 3D сцены на 3D модель(и) представлен посредством стрелки 602. Этот указатель 602 указывает на примитив 604 3D модели, который будет рисовать 3D объект, и использует информацию 606 сетки и информацию 608 о материале при рисовании 3D объекта.
Информация 606 сетки относится к сетке из 2D фигур, которая может быть использована для аппроксимации 3D контуров 3D модели. Например, если рисуют прижимание ячеистой сети ткани на 3D модель, такую как стул, сеть принимает очертания стула. В типичном случае сетка составлена из плоских треугольных фигур. Треугольники обычно довольно маленькие и по существу формируют мелкую сетку, которая может быть использована для следования 3D контурам. В дополнение к треугольникам могут быть использованы другие 2D фигуры с более чем тремя сторонами или даже непрерывными сторонами для формирования сетки, но треугольники являются предпочтительными, потому что три точки треугольника определяют плоскость, и это упрощает расчет сетки.
Информация 608 о материале, которая также является информацией, ассоциированной для объекта 604 3D модели, относится к текстуре, используемой для заполнения поверхности на изображении 3D модели. Текстура может быть затемнением, цветом, или дополнительными визуальными изображениями. На фиг.6 дополнительное визуальное изображение для материала является объектом 610 3D сцены.
Объект 610 3D визуала сцены может быть объектом 3D визуала, либо объектом 2D визуала, как изображено на фиг.1. В любом из двух случаев он будет иметь указатель на 3D модели и указатель на объект камеры. Указатель 612 указывает на объект камеры для того, чтобы определять параметры камеры для визуализации 2D вида 3D сцены. Указатель 616 на 3D объекты на фиг.6 является частью 3D содержимого 612. Указатель 616 указывает на корневой объект 618 объектов 3D моделей, составляющих дерево 3D визуалов. Корневой объект является объектом 618 группы 3D моделей. Объект группы 3D моделей служит в качестве либо корневого узла, либо узла сбора в дереве 3D визуалов, содержащем в себе один или более объект примитива 3D модели. Объекты примитива будут на листьях ветвей в дереве 3D визуалов и содержат информацию рисования для создания 3D модели. На фиг.6 присутствуют два объекта примитивов 3D модели - примитив 620 и примитив 622, и объект 624 освещения 3D модели. Содержимое информации освещения объекта 624 освещения определяет свет, освещающий 3D сцену, составленную из 3D моделей и, если применимо, направление световых лучей. Содержимое информации рисования каждого из примитивов 3D модели включает в себя информацию сетки и информацию материала. Это содержимое показано только для примитива 622 в качестве информации 626 сетки и информации 628 материала. Информация 628 материала может иметь просто информацию содержимого рисования или она может иметь объект 2D визуала, или объект 3D сцены, или оба. На примере на фиг.6 информация 628 материала имеет объект 630 2D визуала.
Чтобы сделать обзор интеграции, которая проиллюстрирована посредством фиг.6, фиг.6 начинается со стрелки от объекта 3D сцены, такого как объект 18 или объект 20 на фиг.1, до объекта 604 3D модели. Объект 604 3D модели имеет информацию 608 материала, которая имеет дополнительный объект 3D сцены, указывающий на объект 618 группы 3D моделей и объект 614 камеры. В 3D сцене, определенной 3D группой 618 вместе с ее дочерними элементами, объект 622 3D примитива имеет информацию материала, указывающую на объект 630 2D визуала. Таким образом, иерархия дерева визуалов с объектами 2D визуалов может иметь интегрированную в нее 3D сцену, созданную посредством объекта 3D сцены. В свою очередь, объект 3D модели в дереве 3D сцены может иметь информацию, указывающую на второе дерево визуалов, которое имеет интегрированный в него дополнительный объект 2D визуала, объект 3D сцены или оба типа объектов. Эта интеграция объектов 3D сцены и объектов 2D визуалов может продолжаться до бесконечности.
Одним из важных признаков изобретения является тот факт, что объекты визуалов и объекты 3D моделей не хранят битовые карты изображений, которые должны генерироваться, а вместо этого предоставляют команды для рисования изображений, в то время, как обрабатывается дерево визуалов. Непосредственно выше описана обработка такого дерева визуалов. Обработка дерева визуалов 3D сцены является аналогичной, но добавляет несколько операций для создания 2D вида 3D сцены, определенной объектами 3D сцены.
Объект 3D сцены создает вид из камеры, то есть 2D вид 3D сцены. Вид из камеры задается посредством параметров, которые идентифицируют "местоположение" виртуальной камеры, "смотреть на" или направление обзора для камеры и "поле" зрения из камеры. Пример параметров камеры проиллюстрирован на фиг.7, где местоположение камеры или точка обзора расположена в X, Y, Z координатах 2, 7, 0. "Смотреть на" или направление обзора камеры задан посредством XYZ-местоположения "смотреть на", имеющего значения 6, 1, 2. Поле зрения камеры указано как 30 градусов. Эти параметры камеры используются для установки камеры или 2D вида во время рисования 3D моделей, созданных 3D примитивами.
Эти параметры камеры отражают перспективу камеры. Могут быть использованы другие камеры, такие как те, что описаны обычным образом в переданной патентной заявке, озаглавленной "Прикладной программный интерфейс построения 3D модели", цитированной выше в перекрестной ссылке на родственную заявку. Например, ортогональная камера может обеспечивать ортогональный вид, где все световые лучи параллельны и главными параметрами камеры являются цель, или "смотреть на", направление и поле зрения.
Фиг.8 и 9 иллюстрируют последовательность операций для обработки дерева визуалов, содержащего и объекты 2D визуалов и объекты 3D сцены. Фиг.10 упоминается при описании фиг.8 и 9 как пример дерева визуалов, которое обрабатывается операциями на фиг.8 и 9. Логические операции на фиг.8 и 9 выполняются (1) как последовательность выполняемых компьютером действий или программных модулей, работающих на компьютерной системе и/или (2) взаимосвязанные машинные логические схемы или схемные модули внутри компьютерной системы. Реализация является предметом выбора, зависящего от требований к производительности компьютерной системы, реализующей изобретение. Соответственно, логические операции, составляющие варианты осуществления настоящего изобретения, описанного в данном документе, упоминаются под разными именами как операции, структурные устройства, действия или модули. Специалист в данной области техники признает, что эти операции, структурные устройства, действия и модули могут быть реализованы в виде программного обеспечения, программно-аппаратных средств, в цифровой логике специального назначения, и любой их комбинацией без отступления от объема и области применения настоящего изобретения, как перечислено в формуле изобретения, приложенной к настоящему документу.
В примере на фиг.10 дерево визуалов представляет окно на экране компьютерного дисплея. Корневой объект 1002 2D визуала для окна имеет три дочерних, объект 1004 визуала панели, объект 1006 визуала флаговой кнопки, и объект 1008 3D визуала. Объект 1004 визуала панели является объектом визуала контейнера и имеет два дочерних, объект 1010 визуала кнопки и объект 1012 визуала полосы прокрутки. Таким образом, программист создает окно с кнопкой, полосой прокрутки и флаговой кнопкой вместе с объектом 3D сцены для предоставления 3D сцены, просматриваемой как 2D изображение.
Объект 1008 3D сцены указывает на параметры камеры 1011 с помощью указателя 1009 и указывает на 3D сцену 1016 с помощью указателя 1014. 3D сцена состоит из двух объектов 1018 и 1020 групп 3D моделей, двух объектов 1024 и 1025 3D примитивов моделей и объектов 1022 освещения 3D моделей. Каждый из 3D примитивов содержит контекст рисования и в каждом случае они иллюстрируют разную возможность контекста рисования. Объект 1022 освещения задает освещение моделей, рисуемых объектом 1024 примитива, так как объект 1022 освещения и объект 1024 примитива являются дочерними для объекта 1020 группы. Объект 1024 примитива содержит информацию 1026 сетки и информацию 1028 материала. Примитив 1025 содержит информацию 1027 сетки и информацию 1029 материала. Информация 1029 материала указывает на дополнительное дерево визуалов, которое имеет корень 1030 дерева визуалов, и объект 1032 2D визуала и объект 1034 3D сцены.
Последовательность операций для обработки дерева визуалов на фиг.10 начинается на фиг.8, которая показывает обработку объекта 2D визуала вместе с мостом к обработке объекта 3D сцены. Как очевидно в описании этой последовательности операций, последовательность на фиг.8 и 9 является рекурсивной последовательностью. Последовательность операций обрабатывает ветвь дерева до листьев, а затем обрабатывает другие ветви вплоть до листьев. Как изображено на фиг.1, последовательность обхода дерева и визуализации изображения выполняется слева направо; однако она может быть организована любым количеством способов, как например, справа налево по дереву, или посредством длины ветвей или любого другого приоритета для обхода дерева, который может пожелать реализовать программист.
Фиг.8 начинает обработку дерева визуалов на фиг.10, когда обработка дерева визуалов вызывается операцией вызова (не показана) вне фиг.8. Эта операция вызова является первичным вызывающим оператором обработки для создания окна, начиная с объекта 1002 окна. Поток операций, создающий окно, входит во вход 800 обработки дерева визуалов. Операция 801 перемещения перемещает обработку к следующему объекту в дереве, который не был обработан. Первым таким объектом является объект 1002 окна. Поток операций входит в цикл 802, который содержит операцию 803 вызова и дальнейшую операцию 704 проверки объектов. В то время как обрабатываются объекты 2D визуалов, операции в цикле 802 ведут обработку по дереву.
Операция 803 вызова вызывает точку 805 входа в 2D обработку. В точке 805 входа поток операций переправляется к операции 806 проверки 3D сцены. Операция 806 проверки определяет, является ли объект объектом 3D сцены или объектом 2D визуала. Если он является объектом 2D визуала, как в этом случае для объекта 1002 окна на фиг.10, поток операций переходит по "Нет" к операции 808 обработки визуала. Операция 808 обработки выполняет объект 1004 окна для рисования изображения окна. Операция 808 описана в родственной патентной заявке, приведенной в качестве перекрестной ссылки и озаглавленной "Интерфейс визуализации и графа сцены". После того, как операция 808 обработки визуала закончена, операция 810 возврата возвращает поток операций к операции 803 вызова.
В операции 803 вызова поток переходит к операции 804 проверки наличия дополнительных объектов. Операция 804 проверки наличия дополнительных объектов обнаруживает, есть ли дополнительные объекты для обработки в дереве визуалов. Если они есть, поток операций переходит по "Да" к операции 801 перемещения. Операция 801 перемещения переходит вниз по наиболее левой ветви дерева к объекту 1004 панели на фиг.10, который является следующим необработанным объектом. Ветви дерева будут обработаны слева направо.
Объект 1004 панели является другим объектом 2D визуала и обрабатывается тем же способом, как описано для объекта 1002 окна. Операция возврата снова возвращает поток к операции 803 вызова и поток переправляется к операции 801 перемещения. Обработка затем переходит к первому дочернему элементу объекта 1004 панели, которым является объект 1010 2D визуала кнопки. Объект кнопки обрабатывается так же, как описано выше для объекта 1002, и поток возвращается к операции 803 вызова и отсюда - к операции 801 перемещения. Следующим необработанным объектом в той же ветви является объект 1012 визуала полосы прокрутки. Он является объектом 2D визуала, и поток операций будет снова переходить к обработке операции 808 2D визуала через операцию 806 проверки 3D сцены. Операция 808 2D визуала будет обрабатывать объект 1012 визуала полосы прокрутки тем же способом, что и описанный выше для обработки объекта 1002 окна. Поток операций снова возвращается к операции 803 вызова, и операция 801 перемещения идет по дереву визуалов на фиг.6 к первому объекту в следующей ветви, то есть объекту 1006 флаговой кнопки.
После того, как объект 1006 2D визуала флаговой кнопки обработан, операция 801 перемещения переходит по дереву к объекту 1008 3D сцены. Объект 1008 3D сцены будет обнаружен операцией 806 проверки, и поток операций будет переходить по ветви "Да" для вызова обработки 3D сцены в операции 812 вызова. Последовательность операций обработки 3D сцены проиллюстрирована на фиг.9, и операция 812 вызова передает поток операций к точке 900 входа 3D сцены на фиг.9.
На фиг.9 операция 901 перехода переводит обработку к следующему объекту в дереве 3D сцены, который не был обработан. Первым таким объектом является объект 1018 3D группы, который также является корневым узлом дерева 3D сцены. Поток операций входит в цикл 902, который содержит операцию 903 вызова и операцию 904 проверки последующих объектов. В то время как обрабатываются объекты 3D моделей в дереве 1016 3D сцены, поток операций по циклу 902 ведет обработку по ветвям дерева 3D сцены слева направо.
Операция 903 вызова вызывает точку 909 входа модуля 3D обработки. В точке 909 входа поток операций переправляется к операции 914 проверки объекта группы. Первым объектом является объект 1018 3D группы. Операция 914 проверки группы будет обнаруживать объект группы и переводить поток операций к операции 930 обработки 3D группы. Операция группы может быть операцией преобразования или другими операциями, такими как операция усечения модели, операция затенения, операция над проволочным каркасом и т.д. После операции 930 обработки группы операция 920 возврата к вызвавшей программе снова возвращает поток к операции 903 вызова.
Операция 903 возврата к вызвавшей программе вынуждает поток проходить по циклу 902 к операции 904 проверки наличия дополнительных объектов. Операция 904 проверки наличия дополнительных объектов обнаруживает, есть ли дополнительные объекты для обработки в дереве 3D сцены. Если они есть, поток операции переходит по ветви "Да" к операции 901 перехода. Операция 901 перехода переходит вниз по наиболее левой ветви дерева 3D сцены к объекту 1020 3D группы на фиг.10, который является следующим необработанным объектом. Ветви дерева будут обработаны слева направо.
Объект 1020 3D модели является еще одним объектом группы и операция 914 проверки группы будет переводить поток по ветви "Да" к операции 930 обработки группы для обработки объекта 1020 группы. Операция 920 возврата снова возвращает поток к операции 903 вызова, и поток переправляется к операции 901 перехода. Обработка переходит к объекту 1022 освещения 3D модели, который является следующим необработанным объектом в той же ветви дерева 1016 3D сцены. Операция проверки объекта группы переводит поток к операции 916 проверки объекта освещения. Обнаруживается объект 1022 освещения и передается к операции 918 обработки объекта освещения. Операция обработки освещения устанавливает свет для 3D сцены, собранной посредством объекта 1020 3D группы, и поток затем переходит к операции 920 возврата к вызвавшей программе.
Поток возвращается к операции 903 вызова и отсюда к операции 901 перехода. Следующим необработанным объектом в той же ветви является объект 1024 3D примитива. Объекты примитивов рисуют 3D модели. Проверка 914 объекта группы и проверка 916 объекта освещения дают отрицательный результат, когда обнаруживают объект 1024 примитива. Соответственно, поток операций переходит по ветви "Нет" от проверки 916 объекта освещения к операции 922 извлечения камеры, которая извлекает параметры камеры. Затем операция 924 установки вида устанавливает камеру или 2D вид, и поток операций переходит к операции 926 проверки 2D содержимого. Поскольку объекты 1024 примитивов на фиг.10 не имеют объектов визуала и, таким образом, не имеют присоединенного 2D содержимого, поток операций переходит по "Нет" к операции 928 рисования примитива. Операция 928 рисования примитива рисует 3D модель, основываясь на информации 1026 сетки и информации 1029 материала, содержащейся в объекте 1024 примитива 3D модели. Модель рисуется от ракурса вида из камеры, основанного на параметрах камеры. Результатом является 2D изображение 3D модели, которая освещается в соответствии с объектом 1022 освещения. На операции 920 возврата к вызвавшей программе, поток операций снова возвращается к операции 903 вызова. Операция 904 проверки наличия дополнительных объектов обнаруживает, что есть дополнительные объекты в дереве 3D сцены, подлежащие обработке. Операция 901 перехода идет по 3D дереву сцены к следующей ветви и к объекту 1025 3D примитива, следующему необработанному объекту.
Объект 1025 3D примитива в действительности имеет информацию 1029 материала, которая включает объекты 2D визуалов и 3D сцены в информации материала. Соответственно, поток операций переходит от операции 926 проверки 2D содержимого по ветви "Да" для вызова операции 932 обработки дерева визуалов. Вызов обработки дерева визуалов вызывает точку 800 входа дерева визуалов на фиг.8, и операция 801 перемещения переводит управление к обработке объекта 1030 2D визуала. Операция 803 вызова вызывает 2D обработку, и объект 1030 2D визуала обрабатывается посредством операции 808 обработки визуалов. Поток операций переходит к операции 810 возврата к вызвавшей программе и возвращается к операции 803 вызова. Операция 801 перехода затем идет по дереву 2D содержимого к объекту 1032 2D визуала. 2D обработка вызывается снова для обработки объекта 1032 2D визуала. Объект 1032 обрабатывается посредством операции обработки визуалов и поток операций возвращается к циклу 802. Теперь операция 801 перехода переводит управление к объекту 1034 3D сцены.
Операция 803 вызова вызывает 2D процесс и объект 1034 3D сцены будет обнаружен посредством операции 806 проверки 3D сцены. Как результат, операция 812 вызова вызывает обработку 3D сцены на фиг.9 для обработки объектов 3D модели (не показана) 3D сцены. Обработка будет такой же, как та, что описана выше в примере 3D сцены 1016. Объект 1034 3D сцены на фиг.9 вызывается для обработки моделей 3D сцены, представленных объектом 1034 3D визуала, и когда рисуется последняя модель для объекта 1034 3D сцены, поток операций переходит к операции 920 возврата к вызвавшей программе на фиг.9. Вызвавшей программой в данной ситуации является операция 903 вызова.
Операция 903 вызова передает поток к проверке 904 наличия дополнительных объектов, обнаруживающей, что больше не существует объектов, ассоциированных с объектом 1034 3D сцены. Поток операций переходит по ветви "Нет" для возврата к вызывающей операции 906, которая передает поток управления обратно на операцию 812 вызова. Операция вызова передает поток управления к операции 803 вызова. Операция 804 проверки наличия дополнительных объектов обнаруживает, что не существует более объектов, которые должны быть обработаны, для дерева 2D содержимого, составленного из объектов 1030, 1032 и 1034. В соответствии с этим поток переходит по ветви "Нет" для возврата к операции 814 вызова. В этом случае возврат совершается к операции 932 вызова, который вызывал обработку дерева визуалов для обработки дерева 2D содержимого. Операция 934 рисования 3D примитива теперь рисует 3D модель для объекта 1025 примитива, с использованием информации о материале, представленной объектами 1030, 1032 дерева 2D содержимого. Операция 920 возврата к вызывающему затем возвращает поток к операции 903 вызова.
Затем операция 904 проверки наличия дополнительных объектов не обнаруживает больше объектов в дереве 3D сцены и передает поток к операции 906 возврата к вызвавшей программе. Операция 906 возврата теперь возвращает управление к операции 812 вызова 3D сцены на фиг.8. Управление затем передается назад к операции 803 вызова посредством операции 810. Операция 804 проверки наличия дополнительных объектов обнаруживает, что дерево визуалов по фиг.10 полностью обработано и поэтому передает поток операций к операции 810 возврата к вызвавшей программе. Операция возврата к вызвавшей программе передает управление программой обратно к вызвавшей программе 932. Операция 932 вызова вызывает 2D обработку на фиг.8, которая теперь обрабатывает объект 1030 2D визуала. Объект 1030 2D визуала является корневым объектом для информации 1028 материала. Операция 808 обработки визуалов обрабатывает корневой объект 1030, и операция 810 возврата к вызвавшей программе передает управление программой обратно к первоначально вызвавшей программе (не показана), которая вызвала обработку дерева визуалов на фиг.10. Это завершает обработку примера дерева визуалов на фиг.10 с его интегрированными объектами 3D сцены и визуальными 2D объектами.
Хотя изобретение было описано на языке, характерном для структурных признаков и/или методологических действий, необходимо понимать, что изобретение, определенное в прилагаемой формуле, не обязательно ограничено описанными характерными признаками или действиями. Следовательно, специфические структурные черты, действия, средства раскрыты как примерные варианты осуществления, реализующие заявленное изобретение.
Различные варианты осуществления, описанные выше, предоставлены только в качестве иллюстрации и не подразумевались для ограничения изобретения. Специалисты в данной области техники без труда признают различные модификации и изменения, которые могут быть сделаны для настоящего изобретения без следования примерным вариантам осуществления и приложениям, описанным в данном документе, и без уклонения от истинного объема и области применения настоящего изобретения, которые изложены в следующей формуле изобретения.
название | год | авторы | номер документа |
---|---|---|---|
ВИЗУАЛЬНЫЙ И ПРОСТРАНСТВЕННЫЙ ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ | 2003 |
|
RU2324229C2 |
УРОВЕНЬ ИНТЕГРАЦИИ СРЕД | 2004 |
|
RU2360275C2 |
ЯЗЫК РАЗМЕТКИ И ОБЪЕКТНАЯ МОДЕЛЬ ДЛЯ ВЕКТОРНОЙ ГРАФИКИ | 2003 |
|
RU2321892C2 |
ИНТЕРФЕЙСЫ ВИЗУАЛЬНОГО ОБЪЕКТА И ГРАФА СЦЕНЫ | 2004 |
|
RU2363984C2 |
СПОСОБ И СИСТЕМА УДАЛЕНИЯ НЕВИДИМЫХ ПОВЕРХНОСТЕЙ ТРЁХМЕРНОЙ СЦЕНЫ | 2017 |
|
RU2680355C1 |
СИСТЕМА И СПОСОБ ДЛЯ УНИФИЦИРОВАННОЙ МАШИНЫ КОМПОНОВКИ В СИСТЕМЕ ОБРАБОТКИ ГРАФИКИ | 2004 |
|
RU2355031C2 |
КООРДИНАЦИЯ АНИМАЦИЙ И МУЛЬТИМЕДИА ПРИ ВЫВОДЕ НА КОМПЬЮТЕРНЫЙ ДИСПЛЕЙ | 2005 |
|
RU2391709C2 |
ИНТЕРФЕЙС ПРОГРАММИРОВАНИЯ ДЛЯ КОМПЬЮТЕРНОЙ ПЛАТФОРМЫ | 2004 |
|
RU2371758C2 |
СПОСОБ И СИСТЕМА РЕНДЕРИНГА 3D МОДЕЛЕЙ В БРАУЗЕРЕ С ИСПОЛЬЗОВАНИЕМ РАСПРЕДЕЛЕННЫХ РЕСУРСОВ | 2020 |
|
RU2736628C1 |
КОМПОНУЮЩИЙ АДМИНИСТРАТОР ОКОН РАБОЧЕГО СТОЛА | 2004 |
|
RU2360284C2 |
Изобретение относится к области компьютерной графики. Техническим результатом является обеспечение возможности внедрения трехмерной графики в двухмерную систему компоновки изображения. В способе иерархия объектов (2D) визуалов и объектов (3D) сцены объединены для единообразной обработки для визуализации (2D) изображений, включающих (2D) вид (3D) сцены на (2D) компьютерном дисплее. Структура данных содержит иерархию дерева объектов, один или более объектов (2D) визуала, и один или более объектов (3D) ссылки или сцены, указывающие на объекты (3D) моделей. Объекты (2D) визуалов определяют операции, рисующие (2D) изображение. Объекты (3D) ссылки или сцены определяют ссылки, указывающие на объекты с операциями, которые вместе рисуют двумерное представление трехмерной сцены, составленной из одной или более (3D) моделей. Объекты (3D) ссылки или сцены указывают на объекты (3D) моделей и объект камеры. Объект камеры определяет двумерный вид (3D) сцены. Объекты (3D) моделей рисуют (3D) модели и определяют информацию сетки, используемую в рисовании контуров модели, и информацию о материале, используемую в рисовании поверхностной текстуры модели. 3 н. и 16 з.п. ф-лы, 10 ил.
1. Считываемый компьютером носитель, содержащий команды рисования изображений на основе интеграции объектов компьютерных программ для создания трехмерных (3D) изображений и двумерных (2D) изображений, причем упомянутые объекты хранятся на упомянутом носителе в виде структуры данных иерархии объектов дерева визуалов, имеющей объекты 2D визуалов и объекты 3D визуалов, при этом команды при их выполнении компьютером вынуждают этот компьютер выполнять этапы:
рисование 2D изображения согласно операциям, определенным одним или более объектами 2D визуала в упомянутой иерархии дерева,
рисование согласно операциям, определяемым хранящимися в упомянутой структуре одним или более объектами 3D сцены, двухмерного вида трехмерной сцены, составленной из одной или более 3D моделей, причем объекты 3D сцены ссылаются на один или более объектов 3D модели и по меньшей мере один объект камеры;
причем каждый из одного или более объектов 3D моделей определяет 3D модель для 3D сцены;
при этом рисование двумерного вида из камеры на 3D сцену определяется объектом камеры.
2. Считываемый компьютером носитель по п.1, в котором один или более из объектов 3D моделей определяет информацию о материале для текстуры поверхности модели.
3. Считываемый компьютером носитель по п.2, в котором рисование двумерного изображения для текстуры поверхности выполняют на основе информации о материале, содержащей объект 2D визуала.
4. Считываемый компьютером носитель по п.2, в котором информация о материале для текстуры модели дополнительно содержит объект 3D сцены.
5. Считываемый компьютером носитель по п.2, в котором информация о материале для текстуры модели дополнительно содержит иерархию дерева визуалов объектов визуала.
6. Считываемый компьютером носитель по п.1, в котором объект 3D сцены содержит:
объект 3D визуала, имеющий указатель на объекты 3D модели и указатель на по меньшей мере один объект камеры.
7. Считываемый компьютером носитель по п.1, в котором объект 3D сцены содержит:
объект 2D визуала, имеющий контекст рисования, определяющий указатель на объекты 3D модели и на по меньшей мере один объект камеры.
8. Способ обработки иерархии объектов визуалов компьютерной программы для создания смеси двумерных и трехмерных изображений в качестве выходного сигнала из компьютера, содержащий этапы, на которых:
создают структуру данных, содержащую объекты визуалов и описывающую иерархию первого дерева объектов,
последовательно переходят от одного объекта к другому в упомянутой
структуре согласно ветвям упомянутой иерархии первого дерева объектов визуала для обработки объектов, являющихся листьями и ветвями упомянутого дерева;
обнаруживают, является ли следующий необработанный объект визуала объектом 2D визуала или объектом 3D сцены; и
вызывают 2D обработку для обработки объекта визуала, если обнаружен объект 2D визуала, и вызывают 3D обработку для обработки объекта 3D модели, если обнаружен объект 3D сцены.
9. Способ по п.8, в котором 3D обработка содержит этапы, на которых:
устанавливают вид из камеры; и
рисуют изображения одной или нескольких 3D моделей, определенных одним или более объектами 3D моделей, при этом изображения являются основанными на виде из камеры одной или более 3D моделей.
10. Способ по п.8, в котором 3D модели определены как иерархия второго дерева одного или более объектов 3D модели, указываемых объектом 3D сцены.
11. Способ по п.10, в котором один или более объектов 3D модели во втором дереве определяет(ют) иерархию третьего дерева объектов визуалов для использования при рисовании 3D моделей.
12. Способ по п.11, в котором иерархия третьего дерева имеет по меньшей мере один объект 2D визуала, который в свою очередь определяет иерархию четвертого дерева объектов 3D модели, посредством чего объекты 3D сцены и объекты 2D визуалов могут быть интегрированы во множество последовательных объектов согласно ветвям иерархии дерева объектов и обрабатываемых соответствующей 2D обработкой или 3D обработкой.
13. Считываемый компьютером носитель, на котором хранится структура данных объектов компьютерной программы для интеграции объектов визуалов для двумерных изображений и объектов визуалов для двумерных изображений трехмерных моделей, при этом упомянутый носитель также содержит команды, которые при их выполнении вынуждают компьютер выполнять этапы:
создание двумерных изображений на основе хранящиеся в упомянутой структуре иерархии дерева визуалов из объектов визуалов;
рисование изображения согласно хранящимся в упомянутой структуре одному или более объектам визуалов, являющихся объектом 3D сцены, ссылающимся на 3D модель и двумерный вид 3D модели;
при этом хранящаяся в упомянутой структуре 3D модель определена посредством иерархии второго дерева объектов; и
рисование изображения согласно хранящимся в упомянутой структуре объектам второго дерева, содержащим по меньшей мере объект рисования, определяющий операции для рисования 3D модели, и объект визуала освещения, определяющий освещение 3D модели.
14. Считываемый компьютером носитель по п.13, в котором двумерный вид 3D моделей определен, исходя из перспективы определенного первого местоположения и определенного второго местоположения; и первое и второе местоположения определяют направление взгляда для просмотра 3D модели.
15. Считываемый компьютером носитель по п.14, в котором первым местоположением является точка расположения камеры, а вторым местоположением является точка расположения "смотреть на".
16. Считываемый компьютером носитель по п.14, в котором объект рисования содержит информацию о материале, используемую в текстурировании поверхностей модели.
17. Считываемый компьютером носитель по п.16, в котором информация о материале определяет иерархию третьего дерева объектов.
18. Считываемый компьютером носитель по п.17, в котором структура данных дополнительно содержит:
один или более объектов иерархии третьего дерева, являющихся объектами 3D сцены, ссылающимися на вторую 3D модель и двумерный вид второй 3D модели;
вторую 3D модель, определенную посредством иерархии четвертого дерева объектов;
и объекты этого четвертого дерева содержат по меньшей мере объект рисования, определяющий операции для рисования 3D модели, и объект визуала освещения, определяющий освещение 3D модели.
19. Считываемый компьютером носитель по п.18, в котором объекты рисования в структуре данных дополнительно содержат в себе информацию сетки для определения плоских фигур для аппроксимации контуров 3D модели.
Печь для непрерывного получения сернистого натрия | 1921 |
|
SU1A1 |
СПОСОБ И УСТРОЙСТВО СЖАТИЯ ВИДЕОИНФОРМАЦИИ | 1997 |
|
RU2209527C2 |
JP 2004005596, 08.01.2004 | |||
Переносная печь для варки пищи и отопления в окопах, походных помещениях и т.п. | 1921 |
|
SU3A1 |
Авторы
Даты
2009-06-27—Публикация
2004-07-29—Подача