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

Автор: Сергей Озеров
Опубликовано в журнале "Компьютерра" №42 от 9 ноября 2004 года.

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

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

С появлением формата U3D подобные 3D-файлы можно будет легко передавать между самыми разными приложениями.

Парадокс: буквально на каждый предмет, выпущенный в «странах с развитой экономикой», существует документация, позволяющая воспроизвести его в деталях. Но вся эта документация после налаживания технологических процессов так и остается лежать без дела — область ее применимости ограничивается специфическими профессиональными пакетами. Если требуется, скажем, создать трехмерную модель автомобиля для виртуальной выставки или игры, то… заново, с нуля, строится совершенно новая модель. Или вы думали, что трехмерные сканеры — игрушка, а не профессиональный инструмент? Потребность в объемных моделях действительно велика. Это всевозможные презентации и описания (Чем разглядывать полторы сотни фотографий объекта, снятых со всевозможных ракурсов, не проще ли так и сяк повертеть трехмерную модель и посмотреть, как она выглядит, будучи окрашена в синий металлик?), составление вспомогательной документации и учебников (В объемной модели процесс, например, замены бензонасоса в двигательном блоке автомобиля становится гораздо нагляднее), создание разнообразных физических моделей (а давайте-ка продуем новую модель в аэродинамической трубе…) и прочее и прочее. Жаль лишь, что дороговизна специализированного оборудования и трудоемкость построения моделей в большинстве случаев ставит крест на подобных затеях. Представьте, что профессиональные графические пакеты поддерживали бы, скажем, только формат TIFF, требующий по 40 Мбайт на приличных размеров картинку и открывающийся только специализированным софтом. И для перевода получающихся изображений в «народный» JPEG нужно было бы изображение распечатывать, а распечатку — сканировать и конвертировать… А ведь нечто подобное сейчас и происходит. Отдельные впечатляющие исключения лишь подтверждают правило — массового перехода на подобные технологии пока не происходит.

К счастью, ожидать падения цен на устройства трехмерного ввода нам скорее всего не придется — благодаря технологии Universal 3D (U3D), представленной на недавнем Intel Developer Forum и усиленно продвигаемой специально образованным консорциумом 3D Industry Forum, в который входят большинство компаний-разработчиков профессиональных CAD-систем и разработчики «потребительских» графических систем (Среди которых Intel и HP, Adobe и Microsoft, Discreet и Unigraphics, ATI и Nvidia, Boeing, Fraunhofer Institute и др). Впрочем, называть U3D технологией вряд ли правильно — это просто некоторый универсальный формат для хранения трехмерных данных, устраивающий всех — и производителей CAD-систем, и потребителей обычных, «упрощенных» трехмерных моделей. Чем же он так хорош?

Прежде всего, удалось создать формат, который поддержали разработчики профессиональных инженерных пакетов (ведь переходить на другие пакеты никто, естественно, не будет, а в тонкостях и ноу-хау закрытых проприетарных форматов с двадцатилетней историей, используемых этими пакетами, разобраться очень и очень сложно). Являясь неким «общим знаменателем», достаточно простым и не включающим в себя каких-либо «фирменных» секретов построения NURBS-кривых, он удобен для экспорта в него исходных чертежей. С другой стороны, формат в полной мере учитывает потребности обычного пользователя — генерирует файлы, достаточно скромного объема (и притом регулируемого!), позволяет осуществлять так называемую инкрементальную загрузку (когда загрузив лишь часть файла, уже можно строить упрощенную модель), обеспечивает расширяемость и обещает получить широкую поддержку со стороны программистов (В следующем квартале Intel обещает выложить библиотеки для работы с U3D под открытой BSD-подобной лицензией OpenSource). Похоже, это именно та самая «золотая середина», которую так долго искали, и едва ли кто-либо сомневается, что корпорация 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 — для объемных. Неплохо, правда?

Впрочем, не торопитесь: ведь флэш занял свое место в современном Интернете далеко не сразу и первая его версия была очень и очень далека от совершенства. Так что ожидать повсеместного использования Universal 3D пока не приходится: технология должна еще пройти солидную обкатку ( Недаром же доклады по этой тематике проходили на IDF под «грифом» Research & Development). Достаточно упомянуть, что расширяемость файлов U3D произвольными данными, заявленная как одно из преимуществ нового стандарта, в первую его версию (проходящую утверждение в комитете TC43 Ecma International) включена не будет. Равно как не стоит ожидать красочной и реалистичной графики: необходимая для этого поддержка шейдеров пока не предусматривается даже во второй версии E3D, которую обещают во втором квартале 2005 года. Впрочем, Intel сил и средств не занимать — посмотрим, что у нее получится. Тем более что корпорация явно старается заручиться поддержкой как OpenSource-сообщества (открытые исходники), так и Microsoft (использование CIL).

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

  • первый квартал 2005 г. — публикация открытого базового профиля и OpenSource-библиотек для работы с U3D;
  • второй квартал 2005 г. — завершение разработки второй версии стандарта;
  • третий квартал 2005 г. — стандартизация Universal 3D в ISO.

  • <<Железный поток
    Все материалы номера
    Лисьи хитрости >>