Архивы: по дате | по разделам | по авторам

Графический формат Universal 3D

АрхивТехнологии
15.11.2004

Промышленное производство немыслимо без чертежей. Недаром черчение является первейшей дисциплиной в технических вузах.

Промышленное производство немыслимо без чертежей. Недаром черчение является первейшей дисциплиной в технических вузах. Любую деталь - даже заурядный болт с гайкой, прежде чем воплотить в металл, рисуют на бумаге. А автомобили или самолеты - это уже горы и горы документации, описывающей все до последней мелочи.

Пожалуй, это именно тот случай, когда появление компьютеров радикально изменило труд инженеров: работать с электронными чертежами и архивами проще на порядки. Так что нет ничего удивительного в том, что большинство современных профессиональных пакетов, предназначенных для инженерной графики, ведут свою историю аж с 1980-ых годов, когда о графических оболочках еще только мечтали (с тех пор, кстати, встроенная командная строка - неотъемлемая часть подобных редакторов). Архивы электронной документации за четверть века скопились огромные и продолжают непрерывно расти. Вот только попробуйте-ка открыть на своем компьютере DWG-файл? Ну, или хотя бы DXF или DWS?

Парадокс: буквально на каждый предмет, выпущенный в "странах с развитой экономикой", существует документация, позволяющая воспроизвести его в деталях. Но вся эта документация после налаживания технологических процессов так и остается лежать без дела - область ее применимости ограничивается специфическими профессиональными пакетами. Если требуется, скажем, создать трехмерную модель автомобиля для виртуальной выставки или игры, то… заново, с нуля, строится совершенно новая модель. Или вы думали, что трехмерные сканеры - игрушка, а не профессиональный инструмент?

Потребность в объемных моделях действительно велика. Это всевозможные презентации и описания (чем разглядывать полторы сотни фотографий объекта, снятых со всевозможных ракурсов, не проще ли так и сяк повертеть трехмерную модель и посмотреть, как она выглядит, будучи окрашена в синий металлик?), составление вспомогательной документации и учебников (в объемной модели процесс, например, замены бензонасоса в двигательном блоке автомобиля становится гораздо нагляднее), создание разнообразных физических моделей (а давайте-ка продуем новую модель в аэродинамической трубе…) и прочее, и прочее. Жаль лишь, что дороговизна специализированного оборудования и трудоемкость построения моделей в большинстве случаев ставит крест на подобных затеях.

Представьте, что профессиональные графические пакеты поддерживали бы, скажем, только формат TIFF, требующий по 40 Мбайт на приличных размеров картинку и открывающийся только специализированным софтом. И для перевода получающихся изображений в "народный" JPEG нужно было бы изображение распечатывать, а распечатку - сканировать и конвертировать… А ведь нечто подобное сейчас и происходит. Отдельные впечатляющие исключения лишь подтверждают правило - массового перехода на подобные технологии пока не происходит.

К счастью, ожидать падения цен на устройства трехмерного ввода нам, скорее всего, не придется: благодаря технологии Universal 3D (U3D), представленной на недавнем Intel Developer Forum и усиленно продвигаемой специально образованным консорциумом 3D Industry Forum, в который входят большинство компаний-разработчиков профессиональных CAD-систем и разработчики "потребительских" графических систем (среди которых Intel и HP, Adobe и Microsoft, Discreet и Unigraphics, ATI и nVidia, Boeing, Институт Фраунгофера и др). Впрочем, называть U3D технологией вряд ли правильно. Это просто некоторый универсальный формат для хранения трехмерных данных, устраивающий всех - и производителей CAD-систем, и потребителей обычных, "упрощенных" трехмерных моделей. Чем же он так хорош?

Прежде всего, удалось создать формат, который поддержали разработчики профессиональных инженерных пакетов (ведь переходить на другие пакеты никто, естественно, не будет, а в тонкостях и ноу-хау закрытых проприетарных форматов с двадцатилетней историей, используемых этими пакетами, разобраться очень и очень сложно). Являясь неким "общим знаменателем", достаточно простым и не включающим в себя каких-либо "фирменных" секретов построения NURBS-кривых, он удобен для экспорта в него исходных чертежей. С другой стороны, формат в полной мере учитывает потребности обычного пользователя: генерирует файлы достаточно скромного объема (и притом регулируемого!), позволяет осуществлять так называемую инкрементальную загрузку (когда загрузив лишь часть файла, уже можно строить упрощенную модель), обеспечивает расширяемость и обещает получить широкую поддержку со стороны программистов (в следующем квартале Intel обещает выложить библиотеки для работы с U3D под открытой BSD-подобной лицензией open-source). Похоже, это именно та самая "золотая середина", которую так долго искали, и едва ли кто-либо сомневается, что корпорация Intel, располагающая огромными ресурсами, не сможет раскрутить новый формат. Так что готовимся к очередной трехмерной революции.

Как и JPEG в обычной графике, Universal 3D является lossy-форматом, то есть форматом с потерей данных. Графика строго полигональная (никаких сплайнов и вообще кривых), причем U3D-файл строится таким образом, что вначале описывается некоторая "максимально упрощенная" трехмерная модель, а затем - процесс ее усложнения. Грубо говоря, описывается что-то вроде того, что "в этом месте не один полигон, а целых три, с такой-то общей границей". По мере загрузки файла первоначальная модель обрастает деталями, становясь все менее угловатой. Это называется continuous level of detail, то есть непрерывный уровень детализации. Оборвав процесс в каком-то месте, мы можем получить любой промежуточный уровень детализации модели между "простейшим" и "полностью детализованным". При этом, пока загрузка продолжается, с упрощенной моделью можно уже начинать работать.

Уровни "минимальной" и "максимальной" детализации можно регулировать при сохранении модели и таким образом варьировать объем файла. Данные хранятся в файле в виде отдельных блоков - блока геометрии, блока анимации и пр., что позволяет в дальнейшем расширять формат за счет добавления новых блоков: старые библиотеки просмотра эти блоки попросту проигнорируют. Каждый блок сжимается по специально подобранным для этого типа данных алгоритмам. То есть геометрические данные, например, сжимаются аналогом LZW (.zip), данные о текстурах сжимаются с потерями в JPEG и т.д. В итоге, размеры U3D-файла получаются очень и очень небольшими - вплоть до десятков-сотен килобайт на полноценную трехмерную модель (сравните с многомегабайтными оригиналами)!

Удобным и эффективным способом сжатия и отображения трехмерных данных достоинства Universal 3D не исчерпываются. Так, например, в U3D поддерживается анимация (на основе традиционных ключевых кадров, keyframes), а при современном уровне развития техник "оживления" трехмерной модели это дорогого стоит.

Но самое интересное, пожалуй, заключено в технике инкапсуляции в файл с трехмерной моделью разнообразного кода. Именно так: файл в формате U3D может включать в себя полноценные программы (разработчики называют их плагинами). Например, плагины геометрии, позволяющие обойтись вообще без сохранения в файле сложной геометрической модели и сгенерировать ее на лету самостоятельно. Или текстурные плагины, такие как кодеки, позволяющие хранить в файле Universal 3D текстуры в формате JPEG 2000 и раскодировать их на любом компьютере, даже изначально не умеющем с этим форматом работать. Плагины анимации, плагины взаимодействия с пользователем… ничего и близкого ни у кого еще не было. В качестве языка для плагинов используется стандартный кроссплатформный .Net-язык CIL (Common Intermediate Language) и среда CLR (Common Language Runtime); программы для него можно создавать на C# или Managed C. Возможности для расширения и создания уникальных разработок - широчайшие, так что уже в ближайшее время мы наверняка увидим немало трехмерных интерфейсов на основе U3D. Да и не только интерфейсов: по большому счету, перед нами заявка на "трехмерный Flash". Только технология Macrovision создавалась для плоских объектов, а Universal 3D - для объемных. Неплохо, правда?

Впрочем, не торопитесь. Ведь Flash занял свое место в современном интернете далеко не сразу, и первая его версия была очень и очень далека от совершенства. Так что ожидать повсеместного использования Universal 3D пока не приходится: технология должна еще пройти солидную обкатку (недаром же доклады по этой тематике проходили на IDF под "грифом" Research & Development).

Достаточно упомянуть, что расширяемость файлов U3D произвольными данными, заявленная как одно из преимуществ нового стандарта, в первую его версию (проходящую утверждение в комитете TC43 Ecma International) включена не будет. Равно как не стоит ожидать красочной и реалистичной графики: необходимая для этого поддержка шейдеров пока не предусматривается даже во второй версии E3D, которую обещают во втором квартале 2005 года. Впрочем, Intel сил и средств не занимать. Посмотрим, что у нее получится. Тем более, что корпорация явно старается заручиться поддержкой как сообщества открытых исходников, так и Microsoft (использование CIL).

Напоследок ближайшие планы развития Universal 3D: четвертый квартал 2004 г., первый (закрытый) стандарт U3D:

  • первый квартал 2005 г. - публикация открытого базового профиля и библиотек open-source для работы с U3D
  • второй квартал 2005 г. - завершение разработки второй версии стандарта
  • третий квартал 2005 г. - стандартизация Universal 3D в ISO.
  • - Из журнала "Компьютерра"

    © ООО "Компьютерра-Онлайн", 1997-2024
    При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.