В поисках кода, или Математика игрушек

Дмитрий УшаковДмитрий Ушаков

От редакции isicad.ru: Презентация пакета с открытым кодом OpenSubdiv для высокопроизводительных расчетов поверхностей подразделения побудила Дмитрия Ушакова изучить историю создания «Истории игрушек» и объяснить нашим читателям, как все это связано с перспективами развития САПР.

Примеру компании Matra Datavision, опубликовавшей больше десяти лет назад исходный код своего ядра твердотельного моделирования под названием Open CASCADE на днях последовала студия Pixar Animation.

Эта компания, основанная в 1979 г. Джорждем Лукасом в рамках его студии Lucasfilm, в 1986 г. была продана Стиву Джобсу за $10 млн., который в течение следующих 20 лет привел ее к всемирному успеху и продал компании Уолта Диснея за $7.4 млрд. И хотя массовый зритель знает Pixar прежде всего по анимационным фильмам, установившим рекорды кассовых сборов («История игрушек», «Корпорация монстров», «В поисках Немо», «Тачки» и др.), специалистам в области геометрического моделирования эта компания известна совсем другими достижениями.

Эд Кэтмалл Большинству этих невидимых публике достижений компания обязана Эдвину Кэтмаллу (Edwin Catmull). Родившийся за месяц до окончания второй мировой войны Эдвин с детства грезил профессией аниматора, создавая собственные мультфильмы, изображения которых оживали при перелистывании блокнота. Повзрослев, Эдвин обнаружил в себе математический талант и после окончания школы изучал физику и информатику в Университете Юты. После окончания университета он некоторое время поработал в компании Boeing, но вскоре вернулся в университет, чтобы пройти обучение в аспирантуре.

Вернувшись в альма-матер в 1970 г., он стал студентом Айвэна Сазерлэнда (Ivan Sutherland), знаменитого пионера компьютерной графики, создавшего в 1963 г. первую в мире САПР Sketchpad. Познакомившись с исследованиями Сазерлэнда, Кэтмалл понял, что его собственное призвание состоит в том, чтобы, объединив свою детсткую страсть к анимации с математическими исследованиями, создать первый в мире анимационный фильм с помощью компьютера.

Совместно с другими аспирантами в Университете Юты он занимался самыми разными аспектами компьютерной графики, имеющими отношение к анимации: моделированием поверхностей свободной формы, отображением текстур на эти поверхности, алгоритмом Z-буфера. В результате он смог осуществить свою мечту, создав в 1972 г. первый в мире анимационный фильм с помощью технологий трехмерного моделирования (главную роль в фильме сыграла компьютерная модель кисти левой руки Эдвина Кэтмалла). Вы и сегодня можете насладиться соответствующим “Making of”-роликом:

Работая над получением цифровой модели кисти (и других аналогичных объектов), Эдвин Кэтмалл - совместно с другим аспирантом Джеймсом Кларком (James H. Clark), будущим основателем Silicon Graphics и Netscape – изобрел метод получения гладкой поверхности по полигональной сетке путем рекурсивного обрезания углов по несложному алгоритму.

Алгоритм рекурсивного построения поверхности подразделения Кэтмалла-Кларка по базовой сетке

Алгоритм рекурсивного построения поверхности подразделения Кэтмалла-Кларка по базовой сетке

Поверхность подразделения Кэтмалла-Кларка является обобщением кубического B-сплайна (см. "NURBS и САПР: 30 лет вместе") и – в отличие от других аналогичных конструктивов (типа поверхности подразделения Ду-Сабина) – может быть вычислена напрямую (без использования рекурсии). Вообще, поверхности подразделения (subdivision surface) позволяют представить гладкие поверхности компактным образом. Это свойство широко используется для представления различных объектов живой природы, поэтому поверхности такого типа получили широкое распространение в системах неинженерных трехмерного моделирования (типа 3ds Max, CINEMA 4D, Maya, modo, Zbrush и др.)

После окончания аспирантуры и защиты диссертации Эдвин Кэтмалл стал работать в Нью-Йоркском институте технологии, где под его руководством собралась сильная команда специалистов в области компьютерной графики и анимации, разработавшая такие программные пакеты как Paint, Tween и SoftCel.

Наконец, в 1979 году случилось то, что перевернуло всю киноиндустрию: Джордж Лукас, незадолго до этого создавший первую (по хронологии сюжета – четвертую) часть своих «Звездных войн», осознал громадные перспективы компьютерной графики для киноиндустрии и как раз искал того, кто может реализовать его амбициозные идеи. Понятно, что от такого предложения Кэтмалл отказаться не мог, став в том же году вице-президентом отдела компьютерной графики в Lucasfilm. Под его руководством началась работа по созданию RenderMan –мощного пакета для конвертации трехмерных сцен в фотореалистичные изображения, использованного затем для создания таких кинематографических шедевров как «История игрушек» и «В поисках Немо». Продажи лицензий на ПО RenderMan до сих пор составляет важную часть бизнеса Pixar (стоимость одной коммерческой лицензии - $2000). За ооздание RenderMan Эд Кэтмалл был отмечен многочисленными наградами, включая "Оскара" от Американской академии киноискусств.

Когда Джобс выкупил у Лукаса права на соответствующие технологии и основал Pixar Animation Studios, Эдвин стал директором по технологии новообразованной компании (в своей книге "Стив Джобс" Айзексон красочно описал ключевую роль, сыгранную Кэтмаллом в этой сделке). Спустя 20 лет он вместе с другими сотрудниками Pixar стал частью империи Уолта Диснея, заняв пост президента Walt Disney Animation Studios и Pixar Animation Studios, который он занимает и поныне.

Кэтмалл, Джобс и Лассетер

Эд Кэтмалл, Стив Джобс и Джон Лассетер (режиссер фильмов "История игрушек" и "Тачки")

Скорее всего, именно Эдвин Кэтмалл лично принял решение, которое на днях было анонсировано на SIGGRAPH и произвело большое впечатление на всех, имеющих дело с трехмерным моделированием: часть кода RenderMan – а именно та, что отвечает за высокопроизводительные вычисления поверхностей подразделения на современных параллельных архитектурах, теперь доступна любому желающему совершенно бесплатно – исходный код опубликован в публичном репозитории GitHub под названием Open Subdiv.

Согласно данному на сайте описанию, OpenSubdiv является набором библиотек с открытым кодом, которые реализуют высокопроизводительные вычисления поверхностей подразделения на массивных параллельных архитектурах CPU и GPU. Код оптимизирован для отрисовки деформируемых поверхностей подразделения со статической (неизменяемой в процессе деформации) топологией в интерактивном режиме. Полученные с помощью этого кода финальные поверхности с вычислительной точностью совпадают с поверхностями RenderMan. Более того, Pixar утверждает, что в точности тот же код используется в компании для производства анимационных фильмов.

Пример работы с Pixar OpenSubdiv

Пример работы с Pixar OpenSubdiv

OpenSubdiv распространяется на условиях Microsoft Public License, допускающей свободное использование этого кода как в коммерческих продуктах, так и в в составе других систем с открытым кодом. Презентация бета-версии OpenSubdiv произошла на конференции SIGGRAPH 2012, где представители компании заявили о намерении вскоре выпустить полноценный релиз и постоянно улучшать код:

Для компиляции кода требуется свободно распространяемая в открытом коде библиотека GLEW (OpenGL Extension Wrangler Library) и опционально компоненты CUDA (для программирования на основе параллельных GPU фирмы NVIDIA), OpenCL (обобщенный фреймворк для программирования GPU), GLUT (библиотека системных утилит для OpenGL), Ptex (система текстурирования, разработанная Walt Disnay Animation Studios) и Maya SDK.

По мнению экспертов, данный шаг Pixar направлен на продвижение своего основного продукта RenderMan. Теперь разработчики приложений для трехмерного моделирования получили возможность генерировать поверхности подразделения, полностью совместимые с этим ПО, что позволит избежать проблем при рендеринге. Это похоже на инициативу компании McNeel & Associates, которая открыла код своего формата данных .3dm в виде библиотеки openNURBS, снабдив его в том числе и функциями для расчета NURBS. И тем самым существенно облегчила разработчикам других приложений решение проблем совместимости своего формата данных с Rhino 3D.

Поверхности подразделения находят все более широкое применение в промышленном дизайне. Пионерами здесь стали компании Dassault Systemes (с революционным продуктом CATIA Imagine & Shape) и Autodesk (поглотившая таких технологических лидеров, как Alias и T-Splines). T-Splines, кстати, как раз разработала уникальную технологию, интегрирующую NURBS (основной способ представления поверхностей в инженерных САПР) с поверхностями подразделения (играющими важную роль в промышленном дизайне). Очевидно, что наличие возможностей моделирования на основе поверхностей подразделения становится важным конкурентным преимуществом при выборе интегрированного MCAD-пакета. Впрочем, ни ACIS, ни Parasolid (самые массовые ядра геометрического моделирования для САПР) поверхности подразделения пока не поддерживают (равно как не поддерживают они и массовые параллельные архитектуры). Следовательно, у создаваемого сейчас Российского национального геометрического ядра есть реальный шанс обойти конкурентов. Воспользуются ли этим шансом разработчики? Поживем – увидим.


Источник.