КГ: вопрос — ответ

Хотел бы извиниться перед постоянными читателями за небольшой перерыв, просто на все не хватает времени. Это в популистских СМИ пишут: «кризис, кризис…», а на самом деле сами представляют его… примерно как Гомер Симпсон (мультсериал «Симпсоны») рассказывал сыну о женщинах: «Понимаешь, сынок, женщина — она как холодильник, примерно два метра ростом, весит около ста килограмм, может готовить лед». Кстати, в «Симпсонах» очень острый и интеллигентный юмор сродни нашим Ильфу и Петрову (если молодежь знает, кто это такие). То есть бывает разная логика, но важен результат. Честно сказать, именно поэтому я не люблю читать «советских газет» и смотреть телевизор.

Итак, сайт, который делают в том числе и те, кто откликнулся из читателей «КГ», откроется примерно в конце февраля 2010-го. Мы сошлись на том, что это будет мощный ИТ-ресурс, связанный со специалистами отрасли и их продвижением. То есть, если простыми словами: будет формироваться команда профессионалов, и не только белорусов (на первых порах программирование, 3D-моделирование/анимация, тестирование, дизайн, web-дизайн), которая впоследствии станет способна выпускать качественные продукты мирового уровня. Я все описал несколькими словами, но там немного сложнее, самое главное, чтобы даже старт был качественным. Думаю, что кризис уже показал многим «эффективность местного ИТ-менеджмента», и мы должны научиться делать фирменные продукты самостоятельно.

Что касается ваших вопросов и моих ответов, то сегодня представляю выжимку из того, что когда-то сохранил для публикации.

Кристофер, может ты знаешь какую-нибудь фичу, которая ускоряет процесс рендеринга в Maya и Cinema4D для hi-poly… у меня восьмисекундная заставка со сложной сценой рассчитывается как минимум 10 часов…

10 часов расчетов для восьми секунд, а это 200 кадров при 25 fps или 240 при 30 fps на высоком разрешении картинки и высокой полигональности — это еще очень мало, то есть сцена у вас не сложная. У меня иногда уходит на такое по нескольку дней. Итак, как максимально оптимизировать рендеринг (визуализацию)?

Во-первых, нужно знать программу, с которой вы работаете. То есть, например, Cinema4D считает быстрее всех (хотя у Maya «движок» не хуже), причем пускает свои расчеты в отдельном потоке, то есть параллельно вы можете спокойно запускать не связанные напрямую с деятельностью программы другие приложения Windows, например, смотреть фильмы и т.п. Все процессы расчетов, так или иначе, увязаны на CPU и оперативной памяти. Поэтому рекомендуется отключить работающие программы, которые не нужны на данный момент, тогда вычисления пройдут быстрее. Это раз. Второй момент, который я, кстати, встретил на одной студии. Там стоял очень мощный компьютер, в него поставили считать HD-заставку (для кино и цифрового телевидения высокого разрешения), и какая ситуация была у них? За четыре часа посчиталось 50%, а вторая половина визуализировалась… три дня. В чем проблема? Я выскажу только свое мнение, потому как оно может быть и не совсем верным, но я покопался и нашел, с моей точки зрения, «виновника». Там в фоновом режиме работала программа, написанная непрофессионалами, а именно, у нее была так называемая «утечка памяти». Причем, очень неслабая. А датировалась программа 2001 годом. Это я к тому, что надо использовать только современный софт. Кроме того, если вы запустите игру, которая работает под DirectX, а ваш 3D-пакет считает под него же, то процесс визуализации останавливается.

Это внешние моменты. А внутренние… нужно переводить весь NURBS в полигональное представление, если есть возможность, то сразу делать триангуляцию (если рендеринг под DirectX), данные хранить не в виде «модификатор что-то делает», а уже иметь полигональный результат. Пример: вы нарисовали образующую, после использовали Lathe («токарный станок») и все так и оставили. Конечно, расчеты будут делаться дольше, потому что программа как считает: смотрит на кривую, потом применяет к ней Lathe, как вы указали (причем Lathe — это NURBS-модификатор, кто бы что ни говорил), создает форму с указанным количеством сегментов разбиения, затем именно при визуализации происходит разбиение этой формы на полигоны, считается и то, какие полигоны должны быть видны, а какие нет. Текстурирование может производиться на разных этапах, потому как это сложный момент. Потом считаются свет, блики, отражения, тени, эффекты линзы (если вы их использовали). В принципе, я подробно описывал сам процесс визуализации в серии материалов «Разработка компьютерных игр» в «КГ» около года назад. Там описаны основные этапы расчетов рендеринга, а сейчас повторять серию из крупных материалов абсолютно не хочется. Проще вам найти статьи на сайте «Компьютерной Газеты» (www.nestor.minsk.by/kg). Вообще, навыки - они приобретаются с практикой. Причем нужно уметь работать с заказчиками. Например, я когда-то делал видео/3D-заставку на hi- poly для компьютерной игры (сама заставка воспроизводилась там как AVI-файл), и ее (игры) авторы решили сделать огромный плакат, выбрав один из кадров. Звонят: «Кристофер, я сейчас подъеду на машине, запусти рендеринг кадра в TIFF с высоким разрешением на 32-битном цвете… через полчаса заеду, заберу». Я говорю: «Во-первых, зачем тебе 32 бита, их немногие программы берут, а печатающие устройства и подавно, во-вторых, я запущу, но считаться это (один кадр) на таком разрешении и с таким качеством будет примерно 10-12 часов. Это тебе не фотошоп».

Из вопроса читателя я понял, что он хорошо владеет 3D, при этом пришел и получил заказ, который его удивил. То есть, человек не ожидал, что сложное 3D рассчитывается долго.

Знаете (это к теме), я недавно включил фильм «Хроники Риддика» с Вином Дизелем и обратил внимание на титры. Что удивило? Я насчитал восемь (может быть, их было и больше) компаний по 3D-графике/анимации, которые работали над этим фильмом. Восемь! Не человек, а компаний. То, что это крупнейшие профессионалы, видно по самому фильму.

…делаю клип в Pinnacle Studio, но задача такая… нужно воспроизвести одновременно 16 видеофайлов одновременно в одном кадре. Pinnacle этого не тянет, друзья советуют Vegas или Premiere…

Вот почему не люблю такие вопросы, так за то, что нужно объяснять очевидные вещи. Ну да, в Pinnacle нет такой многослойности, как в Vegas. Но! Расскажу вам историю середины 90-х. Тогда компьютерные звуковые программы не могли тянуть более двух-четырех wav-треков одновременно. Что мы делали? Сводили два трека в один и так далее.

То есть, вы берете два клипа (AVI или т.п.), совмещаете их между собой, сохраняете в файл AVI без компрессии, то бишь, без потерь в качестве. Потом создаете новый проект, помещаете этот сохраненный AVI на первый трек и добавляете к нему еще один. Сохраняете в AVI-файл без потерь в качестве. И так далее.

Кристофер… я смотрел фильм о съемках «Терминатора-3», так там вырезали зеленый цвет и снимались на зеленом фоне… недавно столкнулся с ТВ, и там все на синем снимают. Может, статью напишете по этому поводу?

О чем? Как вырезается цвет хроматическим ключом? По-моему, об этом написано очень много. Но, кстати, я тоже обратил внимание на то, что в голливудских фильмах используется green box и его аналоги, а на ТВ — blue box. Впрочем, сам процесс вырезания — абсолютно несложный, поэтому каждый поступает по-своему. Например, когда я делаю 3D-«анимашки», которые потом накладываются на видео, всегда рассчитываю цвет. То есть, если в композиции присутствует зеленая трава, то, конечно, общий фон будет синим, если нет, то лучше вырезать зеленый.

Кстати, это старые технологии, современные 3D-пакеты уже «умеют» делать прозрачный фон (наподобие PNG и GIF). То есть цвет вырезать вообще не нужно (если программа делается в Adobe).

А что касается «Терминатора-3», я тоже видел фильм по его созданию, так там лицо Шварценеггера раскрашивали в зеленый цвет, чтобы заменить эти фрагменты на компьютерную графику.

Я вам писал насчет Lua, спасибо, что ответили, мы все прочитали на семейном совете… вы порекомендовали обучать сына C#, нашел наше белорусское методическое пособие, а что за класс…?

Спасибо за доверие. Моя рекомендация — не обращайте внимания на то, что пишется в методичках у нас, особенно БГУИР. Есть программирование реальное, есть теоретическое, а есть и еще одно, местное, где человек с легкостью пишет: «агрегатные функции» или «телематические системы» (хотя за этим скрываются очень простые русские слова), и при этом потом так коверкает русский язык, что невольно думаешь: «Он нормальный? Как там планета системы Зерг? Русский преподавали?». По С# есть много прекрасных книг иностранных авторов, переведенных на русский. Реальное программирование на C# на самом деле очень просто и интересно. Великолепный язык, но по тому примеру пособия, что вы прислали, можно смело ставить двойку его автору. Нужно уметь уходить или уметь держаться.

К слову, всплыла в памяти одна встреча с Юрием Зиссером (TUT.BY). Я тогда даже не помню, зачем зашел; до этого встретился с одним человеком, он мне предложил очередной мега-проект, думаю: «Нужно зайти к Зиссеру, он правду скажет или… ему перекину, у меня нет трех месяцев на реализацию»), завели разговор о программировании, то есть, я объяснил тонкости интересной идеи, Юрий Анатольевич прямо сказал: «Кристофер, я уже давно не программирую, сложно». Как по мне, так это человек максимального ума, причем доказавший, что в Беларуси можно делать удачные интернет-проекты.

Кристофер, вы много пишете об играх, их создании, а какая у вас самая любимая?

Ну, тут секретов вообще нет. Конечно же, Готика-2 (Gothic2) с адд-оном «Ночь ворона». Я считаю эту игру самой сильной в истории геймдева, а играю я примерно с 1985 года (мне тогда 10 лет было). Видел практически все интересное, например, вот сейчас вспомнил Prince, или Dune, или Warcraft, за которыми проводил целые ночи. Также экономические стратегии обожаю, причем не современные, а те, что были раньше. В последние годы игры начали делать как сайты — по шаблонам. Они неинтересны. Например, за Demigod я бы поставил жирную двойку, а кол — за «Хроники Риддика» (они даже не удосужились сделать нормальное управление).

Как математика меня некогда очень заинтересовала старенькая игра Pharaoh от Sierra, потом они точно такой же движок использовали в Caesar и т.п. Я и сейчас ее примерно раз в два месяца загружаю, чтобы «мозг проветрить», настроится на работу. Мозг — он как мышцы, нужно разогревать. То есть, рабочий день я начинаю или с пасьянсов, или с чего-то чуть более интересного. Если я хочу «зависнуть» на пару дней, то включаю что-нибудь из серии «Готик».

Готика-2 — это игра-мечта (это не только мое мнение, так считают многие профи), никакие TESIV Oblivion ее не переплюнули, при этом бюджеты у немцев (Gothic) и американцев (Oblivion) были несопоставимы.

На второе место я бы поставил Need4Speed:Underground 2. Хотя, если честно, когда говорят о смертях людей в результате воздействия компьютерных игр, я бы поставил Need4Speed в таком «черном» рейтинге на первое место (больше, чем Doom и т.п.). С моей точки зрения, автомобиль — это средство передвижения, а не самовыражения. Хотя в игре есть хороший «якорь», прекрасная музыка.

Ну а на третье место я бы сейчас никого не ставил. То есть, мне нравятся Fallout, Prototype (очень качественно сделаны), в свое время меня увлекла Spore, только, по-моему, они с сюжетом не догнали. Украинский «Сталкер» неплох.

Что касается MMORPG… лично я не люблю такие игры. Почему? ОК, объясню. В игры нужно играть, как будто вы находитесь в кино, но управляете процессом. А не так, что кто-то купил за реальных 100 баксов супер-меч… скучно, в общем.

Помню, как проходило собеседование в одной крупной компании, до этого они меня попросили выставить оценку «Героям меча и магии» (Heroes of Might and Magic), кою и разрабатывали (приглашали на позицию «гейм-дизайнер», это «автор сценариев» по-нашему). Я сказал прямо: «Изначально вы слизали идею с Warlords, есть явные пересечения с другими проектами. Последний вариант вообще похож на Warcraft III. Причем неумело слизан и неуклюже сделан. У вас плохо оптимизированный движок, по сценарию нет логики. Вы меня за дебила считаете? Я что, скажу, что все прекрасно?». И после того, как я это высказал «автору» «Героев», пошел домой, включил Gothic3 и прекрасно провел время.

Кстати, многие восхищаются музыкой третьей части Gothic (ее также часто можно услышать по ТВ), но немногие знают, что в качестве оркестратора там работал белорус, Валерий Воронов, ученик нашего композитора Дмитрия Смольского (не путать с певцом). Правда, это по моей информации. Но я послушал концерт композитора Смольского и пришел к выводу: оно. Ошибки быть не может.

В общем, ответил на все вопросы. По программированию все решим в серии «ликбеза».

Кристофер christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 47 за 2009 год в рубрике мультимедиа

©1997-2022 Компьютерная газета