Владимир Забелин. "Аутсорс: по обе стороны баррикад".

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

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

В этой статье я попытаюсь проанализировать взаимодействие пары "заказчик — аутсорсер", как с точки зрения аутсорсера, так и с точки зрения заказчика, обратить внимание на наиболее тонкие места этого взаимодействия, порождающие недопонимание и конфликты. Советов я постараюсь не давать, поскольку нет ничего более бесполезного, чем чужой совет, но выводы из моего личного опыта каждый читатель сможет сделать самостоятельно.

Сейчас мои интересы лежат в области рига персонажей для анимационных фильмов и сериалов, поэтому, естественно, основной  темой обсуждения будет взаимодействие заказчика и ригера-аутсорсера.


1. Аутсорс vs. штатный сотрудник. 

Итак, первый вопрос: зачем вообще обращаться за созданием персонажных ригов "на сторону"? Не проще ли обойтись собственными силами, то есть штатными сотрудниками?

Риг – это один из наиболее технически сложных этапов создания персонажа и требует участия ригера почти во всех этапах разработки и эксплуатации персонажа: от создания концепта до рендера и компоуза. Действительно, еще на этапе создания концепта персонажа необходимо понимать - как будут реализованы те или иные особенности персонажа и могут ли они вообще быть реализованы в рамках используемых в проекте технологий? Ограничивать художника в его творчестве, конечно, нельзя, но своевременно намекнуть о невыполнимости его фантазий просто необходимо.

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

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

На этапе моделирования взаимодействие ригера и моделера также категорически необходимо. Ведь модель должна не только иметь заданную форму, но и корректно деформироваться при анимации, что в свою очередь налагает определенные ограничения на топологию модели (размер и форму ячеек сетки, наличие эдж-лупов в местах активных деформаций, согласование линий сетки и направление растяжений и сжатий и т.п.) Моделер, конечно, в общих чертах обязан знать правила моделирования анимационных персонажей, но что касается особенностей топологии в проблемных местах в каждом конкретном случае – здесь требовать от моделера идеала было бы наивно, и ригер просто обязан проконтролировать соответствие топологии сетки требованиям будущего рига.

Наиболее частые ошибки при моделировании – это несогласованность сеток по границам соприкосновения, излишне "честное" моделирование тех частей одежды или тела персонажа, которые никто никогда не увидит, "звездочки" на линии активной деформаци. В частности, если персонаж имеет глубокое декольте на платье, то крайне желательно, чтобы линии сетки грудной клетки и выреза платья согласовывались бы "луп в луп", то есть были бы продолжением одна другой, в противном случае предотвратить проникновение платья в тело (или наоборот - тела сквозь платье) будет довольно затруднительно. Моделеры обычно перестраховываются в своей работе и в результате возникают казусные ситуации. Как-то я получил персонаж со штанинами, заправленными в высокие сапоги. При ближайшем рассмотрении обнаружилось, что были трудолюбиво вымоделены не только штаны и сапоги, но также и нога, стопа с пальцами и даже надетый на ногу носок, то есть те детали, которые никто никогда не увидит. 

В процессе анимации, как правило, возникают ситуации, которые ригер не мог себе вообразить даже в самых страшных кошмарах. Во-первых, это могут быть ошибки рига, вызванные совокупностью факторов, каждый из которых вполне безобиден. Например, мелкие ошибки скининга могут проявиться при удалении персонажа от центра на 10 000 или 100 000 размерных единиц при одновременном вращении во всех плоскостях на 3600 градусов. В моей практике были случаи, когда при удалении персонажа от начала координат на достаточно большую величину,  у него внезапно под глазом вырастала шишка (это было связано с использованием кватернионного скининга одновременно с геометрическим инфлюенс-объектом),  или при вращении персонажа в нескольких плоскостях его ресницы  заворачивались внутрь глаза (это было связано с ошибками в использовании ориентационных констрейнов). Во-вторых, аниматор в процессе работы ради достижения определенного силуэта или решения особо выразительной эмоциональной задачи может поставить персонаж в совершенно невозможную (с точки зрения здравого смысла ригера) позу, на корректность которой риг не проверялся, и значит потребуется что-то подправить в риге.

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

Весь этот длинный анализ производственного процесса приводит к неутешительным выводам:

1. "Услуги" ригера необходимы на всем протяжении производственного процесса, а не только на этапе подготовки готовой модели к анимации. Аутсорсер не будет просто так участвовать в процессе препродакшена, и уж, конечно, от него невозможно потребовать внесение изменений в риг, необходимость в которых может возникнуть в процессе эксплуатации персонажа. Персонаж сдан, акт приемки подписан, поход в бухгалтерию состоялся. Все обязательства  выполнены. А это значит, что как минимум один ригер достаточно высокой квалификации должен находиться в штате, чтобы сопровождать весь производственный процесс  и что использование аутсорсеров – это крайне вынужденная мера.

1-й закон Мерфи о ригерах: "Лучше один ригер в штате, чем два на аутсорсе".

2. Требования к работе аутсорсера должны быть выше, чем требования к работе штатных сотрудников. Дело в том, что ошибки в своей работе совершают все, но исправлять ошибки аутсорсера, обнаруженные в процессе реальной работы, то есть после формального окончания сотрудничества, придется кому-то другому. И этому "кому-то другому" придется вникнуть в логику и технологию работы аутсорсера, выяснить причину возникновения ошибки и найти пути ее устранения. В моей практике были случаи, когда мелкий на первый взгляд недочет оказывался результатом использования совершенно не подходящих технологий, то есть носил принципиальный, системный характер и для его исправления приходилось полностью переделывать "как бы готовый" риг.

2. Аутсорс случился: что делать и кто виноват?

Можно сколько угодно рассуждать о преимуществах и недостатках аутсорса в отечественной CG-индустрии, но жизнь рано или поздно вносит свои коррективы. Прежде всего то, что касается ригеров: их количество меньше числа запущенных в производство проектов. Говоря проще, ригеры в дефиците. Речь, конечно, идет о специалистах с опытом, способных решать любые производственные задачи, а не о выпускниках разнообразных скороспелых онлайн и оффлайн курсов "Риг персонажей для чайников".

В условиях дефицита кадров на рынке труда студии просто вынуждены привлекать аутсорсеров. И здесь уж, как говорится "не до жиру, был бы ригер". В поле зрения менеджеров по персоналу попадает любой компьютерщик, способный отличить прямую кинематику от обратной.

2-ой закон Мерфи о ригерах: "На безригерстве кто угодно - ригер".

Итак, я – ригер. Меня пригласили что-то там поделать для кого-то там. Еще и долго упрашивали. И условия предложили сказочные. В такой ситуации внезапно просыпается чувство безграничной собственной гениальности и это чувство стремительно и не контролируемо растет в сторону безусловной вселенской конгениальности. К сожалению, это чувство ошибочное и чем раньше с ним удастся совладать, тем лучше и для плодотворного сотрудничества на текущем проекте и для всей последующей карьеры аутсорсера.

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

- Мы бы хотели, чтобы ваш взрыв был похож на вот этот.

- Ну я же не ILM,  вы хоть понимаете, сколько такой взрыв требует вычислительной мощности и сколько он стоит?

- Это не ILM. Это делалось у нас на студии.

Шок…

- Зачем же тогда я вам нужен, если вы и сами все умеете?

- У нас рук не хватает. Как делать мы знаем, но нам просто нужны руки. Вы казались подходящим по квалификации кандидатом, который сможет выполнить поставленную задачу в срок и без проблем.

Холодный душ. Оказывается, я совсем не гениальный, а просто подходящий кандидат. И никому не нужна моя гениальность, а нужны мои руки. С гениальностью у заказчика и так все нормально. Конечно, пришлось докупить память, договариваться об аренде компьютера помощнее, но нужного вида космический взрыв был в результате получен…

К чему вся эта история? Аутсорсеры, помните, что когда вас приглашают поучаствовать в проекте, скорее всего вы – просто руки, которых не хватает. А как и что нужно делать - заказчик знает не хуже вас. Эта простая мысль поможет избежать множества конфликтов и перенаправит ваше сотрудничество с заказчиком в конструктивное русло. Не исключено, что сотрудничество будет взаимовыгодное, ведь заказчик получает хорошо выполненную работу, а вы не только материальное вознаграждение и строчку в титрах, но и новые знания.

3. Три источника и три составные части проблем аутсорса.

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

В условиях конкуренции исполнители часто пользуются принципом: главное - ввязаться в драку, а там посмотрим (главное - получить заказ, и уже потом вникать в суть работы). При этом происходит подмена понятий и заказчик из работодателя превращается в зарплатодателя. Я бы выделил 3 наиболее распространенные ошибки, которые совершают исполнители при заключении договора и выполнении удаленной работы. Ошибки, может быть, и не смертельные, но и ни к чему хорошему не приводящие.

Итак, первое – это недооценка технического задания. Обычно это следствие желания получить заказ любой ценой. Ведь важно начать работу, а потом будь, что будет… Альтернатива проста: либо все получится, либо всегда можно убедить заказчика, что его требования невыполнимы, что техническое задание составлено неправильно,  что  так никто не делает, что это стоит совсем других денег. И в крайнем случае, если ни один из аргументов не сработает, то уж какую-то оплату с заказчика можно будет получить, ведь "я же работал".

Вот пару примеров: нам нужно было оснастить лица нескольких второстепенных персонажей лицевым ригом Михаила Бажуткина. При этом основной скелет был кастомный, то есть названия и ориентация костей отличались от стандартного скелета Бажуткина и, следовательно, использование скриптов, идущих в комплекте с лицевым ригом Бажуткина было невозможно. Требовалась адаптация всей конструкции под устройство нашего кастомного рига. Мы это все четко прописали во втором пункте технических требований. Аутсорсер, взявшийся за эту работу уверил нас, что с нужным нам лицевым ригом хорошо знаком, сроки вполне комфортные и никаких проблем не будет.  Отлично. Ждем... За день до оговоренного срока  я получаю разгромно-возмущенное послание от аутсорсера, что предоставленные ему модели несовместимы с нужным лицевым ригом, адаптация лицевого рига под наш "кривой" скелет требует совсем других сроков и другого уровня оплаты и еще 38 пунктов в том же духе, открывающих глаза мировой общественности на незнакомство заказчика (то есть меня) с основами компьютерной графики в целом и технологии рига персонажей в частности.  Что в сухом остатке? Человек не стал утруждать себя чтением технического задания,  взялся за работу,  для выполнения которой не обладал достаточной квалификацией, да еще и приступил к ее выполнению за день до окончания срока. Сотрудничества не получилось, а мы (заказчики) потеряли кучу времени.

Не менее показателен и другой пример. Мы искали исполнителей для рига персонажей, одетых в длинные (до середины бедра) жилетки, застегнутые на металлические пуговицы. При этом симуляцию ткани по условиям нашего производственного процесса мы использовать не могли, нужно было обойтись только скинингом. И в техническом задании появился пункт о необходимости дополнительного рига для придания одежде естественных (в рамках здравого смысла) деформаций при ходьбе, наклонах и прочих действиях персонажа.

Все, кто хоть раз имел дело с юбочками, более-менее понимаюттехнологию скининга этих предметов одежды: к поясу персонажа прикрепляется несколько цепочек костей (обычно от 4 до 8), отвечающих за деформацию определенного сектора юбки и связанных через технологию управляемых ключей (drivenkey) cположением ног персонажа. Если юбка короткая, а система дополнительных костей настроена аккуратно, то такой риг дает вполне приемлемый результат. Естественно, это не единственный способ достижения нужного результата. Нам не хотелось ограничивать творческий порыв наших исполнителей, поэтому пункт о дополнительном сетапе для одежды был сформулирован так, чтобы аутсорсер мог сам выбрать наиболее комфортный для него способ. Лишь бы работало.

1-й закон множественности для Autodesk Maya: "В Maya всегда существует более одного способа решения поставленной задачи".

3-й закон Мерфи о ригерах: "Из всех возможных методов решения поставленной задачи с максимальной вероятностью будет выбран самый неправильный".

Надо ли говорить, что по истечении оговоренного срока мы получили персонаж, в котором и жилетка, и пуговицы, и пряжка, и ремень и все остальные любовно замоделенные детали одежды были без затей прискинены к основному скелету, и при наклонах персонажа его замечательные металлические пуговицы то растягивались, то сжимались, то скручивались в спираль, полы жилетки вели себя как жестяные ведра, а широкий кожаный ремень… Слово "кожаный" в описании ремня приобрело  абсолютно противоположный смысл.

В ответ на вполне законное с нашей стороны недоумение, что одежда ведет себя мягко выражаясь не совсем адекватно,  даже в самом широкой трактовке словосочетания "здравый смысл" мы получили железобетонный аргумент: "Так это надо тогда дополнительный сетап делать!".

Конечно, надо было. И его необходимость оговаривалась в техническом задании. В общем, как говорится, "не срослось". Риг пришлось доводить до ума на студии.  Заняло-то  это всего пару дней.

Вторая, не менее распространенная ошибка – недостаточная погруженность в инструмент. Или недостаточное владение инструментом. Или просто недостаток квалификации. В принципе, в этом нет ничего постыдного. Более того, для профессионального роста нужно выбирать те задачи, в результате выполнения которых мы получаем новый опыт, новые знания. Но вот отношение к собственному незнанию – это важно. Сократовское "Я знаю, что ничего не знаю" – путь к совершенству,  паниковско-балагановское "Ты кто такой? - А ты сам кто такой?" – перспектива навсегда остаться невеждой с комплексом непризнанного гения.

Но вернемся к взаимоотношениям заказчик – аутсорсер-исполнитель. Как я уже говорил выше, требования к качеству работ, выполняемых вне стен студии естественным образом должно быть выше, чем к работам штатных сотрудников. Вполне может оказаться, что требования, к которым привык исполнитель, могут отличаться от требований производственного процесса заказчика. А заказчик хочет получить в оговоренный срок качественно выполненную работу,  а не погрязнуть в словесных перепалках на тему "что можно, а что нельзя делать" и что "это нам не задавали, это мы не проходили". Чтобы избежать конфликтов и получить не только удовольствие, но и пользу от проделанной работы,  аутсорсеру стоит очень внимательно подходить к оценке собственных сил, знаний и умений и их соответствию предстоящей работе. Внимательно изучить требования задачи, исходный материал, наметить возможные пути решения, может быть даже провести какие-то предварительные эксперименты, чтобы получить полную уверенность, что задание исполнимо. И может быть даже отказаться от работы, если нет уверенности в собственных силах. 

Но даже при самом тщательном анализе предстоящей работе в процессе ее выполнения могут всплыть какие-то разногласия.

4-ый закон Мерфи о ригерах:  "Самый эффективный путь решения реализуется только с помощью неизученных инструментов ".

Можно попытаться понять причину разногласий и исправить работу в соответствии с замечаниями заказчика (и это правильный путь), а можно просто игнорировать эти замечания, ибо "это невозможно" или "это требует полной переделки всей работы, и должно быть дополнительно оплачено". Второй путь малоперспективен.

Опять же приведу примеры. Как мы знаем, для сохранения объема конечностей при скручивающих деформациях (twist) в кости рук, ног и всяческих лап или крыльев вставляются несколько промежуточных суставов, с тем чтобы перераспределить вращение, например кисти руки по всей длине предплечья. 3-х суставов обычно вполне достаточно для решения этой задачи. Естественно, что при этом геометрия конечности должна иметь необходимое количество поперечных лупов.  А именно, не менее 3-х.

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

Так вот, отдали мы как-то на аутсорс риг трех примерно одинаковых по дизайну и по исполнению персонажей группе товарищей-ригеров. В ответ получили на одном персонаже ни одной twist/bendкости ("Зачем это надо - вообще не знаю, никогда не делал, у нас в играх никаких twist/bend нет"), на втором twist/bend система из 3 промежуточных костей ("Ну, вроде всегда так делали, да и на руке у персонажа всего 4 поперечных лупа"), а на третьем – twist/bend систему из 12 промежуточных костей на 4-х поперечных лупах ("А че, мне не жалко, могу и 20 сделать"). После обсуждения все персонажи были унифицированы. Мы получили корректно выполненную работу, двое из трех риггеров получили новые знания, сотрудничество продолжилось.

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

- Маловато будет! Нам нужен еще третий контрол.  На середину груди.

- Да что! Какой такой третий контрол? Это почти невозможно! Это мне все тело персонажа вручника перелопачивать надо! Это знаете какая работа? Это знаете сколько стоит? Вы вообще знаете, как этот авториг устроен, чтоб такие требования предъявлять???? (Все происходило именно с таким количеством восклицательных и вопросительных знаков.)

- Знаем. Чтобы создать нужный нам третий контрол нужно на этапе генерации скелета в поле "Количество инверсно кинематических контролов спины" вписать цифру "3" вместо стоящей там по умолчанию цифры "2". Работа примерно на 1.5 секунды. Спасибо за сотрудничество.

Наконец, третий источник проблем – использование непроверенных методов. Конечно, все мы стремимся к совершенству. Или думаем, что стремимся к совершенству. Или, по крайней мере, хотим думать, что когда-нибудь вырвемся из трясины обыденности и устремимся к совершенству в светлое прекрасное "завтра". И, пожалуй, ничто не доставляет большего удовольствия в профессиональном плане, чем красивое, элегантное решение новой сложной задачи. И это вдвойне приятно, если эта задача решена для внешнего заказчика.

С одним только "но". Если задача решена корректно. Коллеги! Экспериментировать на аутсорсе – это жестоко. Красивый, элегантный, новый (а значит непроверенный) метод решения с большой вероятностью может оказаться неправильным. И выясниться это, скорее всего, на этапе активного производства в "боевых" условиях, когда сроки горят и дедлайн надвигается "стремительно падающим домкратом", штатный ригер слег с нервным срывом, а аутсорсер-исполнитель давно отдыхает на Мальдивах на честно заработанный гонорар. Вообще, обнаружить что-то сильно нетривиальное, но неработоспособное  в готовом от аутсорсера  риге – это ночной кошмар любого руководителя отдела рига. Во-первых, найти ошибку в нетривиальной реализации рига, спрятанную под тридцатью слоями visibilityи пятью уровнями вложенных групп cмногообещающими названиями "SDK", "DNA","DONT_TUCH" или "HANDS_OFF"– это та еще задачка, способная довести до истерики самого выдержанного специалиста. Во-вторых, найденную ошибку нужно ведь еще и исправить, что скорее всего будет означать полную переделку "готовой" работы.

Итак, примеры. Как-то на аутсорсе сделали нам крылатого персонажа. И все вроде бы было неплохо, крылышки работают, лапки трепыхаются. Но вот что-то скин никак не симметризуется. Что не делаю, левая сторона и правая сторона работают по разному. И ошибки скининга такие явные, что пренебречь ими ну никак нельзя.  Начал копать глубже. Вот кости, вот деформации. Стоп. Применен нетривиальный метод опосредованного (indirect) скинига. Кости двигают кривые, по кривым строится сплайновая поверхность, эта поверхность является wrap-объектом, который уже и деформирует поверхность крыла. "Узнаю брата Колю!" – в аналогичной ситуации воскликнул небезызвестный нам всем Остап Бендер. Аналогичный метод я описывал в книге "Понимая Maya" в главе, посвященной сетапу крыла. Но я говорил об этом методе как об одном из возможных, но далеко не лучшем. И, если меня склероз еще не до конца победил, не рекомендовал его использовать. Риг этого персонажа пришлось полностью переделать, поскольку, ошибки используемого метода были неустранимы. Проще говоря, этот метод совсем не подходил для нашего персонажа.

Второй пример имеет скорее трагикомический оттенок. Был у нас один важный персонаж, лицевой риг для которого делался на аутсорсе. Риг получился хоть и сложный (и, соответственно,"тяжелый"), но с широкими функциональными возможностями. Короче, аниматоров он полностью устраивал. Работа с персонажем шла полным ходом. Есть километры готового материала, анимация сдается и принимается. То есть все супер. Но есть основной закон Мерфи обо всем: "Если все идет хорошо, значит вы чего-то не заметили".

Точнее - все было супер, пока персонаж не отправился на рендер и нашему персонажу не включили ресницы. (Как я уже говорил, риг получился сложным и медленным, и чтоб как-то ускорить работу, ресницы персонажа аниматоры скрывали). И выяснилось, что в большинстве сцен ресницы персонажа растут внутрь глаза. А где-то ведут себя вполне благопристойно,  как и положено настоящим ресницам. Естественно, с аутсорсером, изготовившим это "чудо" уже давно все вопросы закрыты, все "спасибо" сказаны, руки пожаты, мужские скупые слезы расставания пролиты. Надо разбираться.  Выяснилось примерно следующее: ребра геометрии век (ребра - они же "эджи" на современном жаргоне) были скопированы с сохранением истории, объединены в сплайновую кривую, на эту сплайновую кривую навешена инверсно кинематическая цепочка, на кости которой и была прискинена геометрия ресниц. Выглядит все весьма элегантно и остроумно. И работает. До тех пор, пока персонаж не начинает поворачиваться вокруг вертикальной оси. Дело в том, что та самая сплайновая кривая,  на которую навешена инверсно-кинематическая цепочка костей, пересоздается в каждом кадре заново с ориентацией вдоль мировых осей координат и ничего не знает о поворотах персонажа, с ребрами которого она была порождена.

Закон Мерфи о павлинах: "Какой-такой павлин-мавлин?"

Поэтому ресницы не реагировали на поворот головы персонажа и всегда росли на восток.
Трагичность ситуации заключалась в том, что пришлось срочно придумывать и реализовывать универсальную систему рига ресниц, комичность в том, в том, что персонаж с ресницами у нас был только один.

Заключение. Делать-то что?

Взаимоотношения  заказчика и исполнителя, конечно, гораздо сложнее и многообразнее и я не претендую на то, чтобы дать полный и всеобъемлющий анализ этой стороны человеческих взаимоотношений. Можно ругать заказчиков. Можно ругать исполнителей. Можно ругать всех, начиная от дворника и кончая президентом. На то у нас и свобода слова вместе с демократией. И все будут чувствовать себя правыми. Но путь конфликта, путь конфронтации – это не универсальный путь достижения гармонии, побывав по обе стороны баррикад, я вполне понимаю претензии обеих сторон друг к другу. Но! У меня есть и богатый положительный опыт работы с аутсорсом/на аутсорсе. Ведь это очень здорово - найти общие точки соприкосновения, понять заказчика и выдать ему результат, за который тебе скажут спасибо, обсуждать не нюансы технического задания, а способ сделать результат лучше и интереснее. Заниматься Творчеством а не казуистикой.

Как говорит нам теория тестирования, ошибки совершают все. И всегда. Избежать их невозможно, но можно попробовать уменьшить их количество.

Maya – сложное программное обеспечение, написанное людьми. Значит, в природе Mayaзаложены ошибки, никуда от этого не деться. Тем не менее, проверенные способы борьбы с этими ошибками давно известны и хорошо себя зарекомендовали.

Первый и самый главный – перед работой с Mayaвымыть руки с мылом. Этот способ применяется майщиками,  начиная с самой первой версии программы. Не знаю почему, но это работает.

Второй, пожалуй мой любимый, - "Бритва Оккама" или принцип минимизации мышления, который в вольной формулировке звучит примерно так: "Самый простой способ и является самым верным". Еще известен в формулировке: "Самый короткий путь тот, который ты знаешь". Стремление к простоте  решения позволяет избежать множества ошибок. Усложнение, как правило, ведет к увеличению их числа.

И, конечно, универсальные принципы всех времен и народов – законы Мерфи и Паркинсона. Они же законы бутерброда. Существует много формулировок этих законов применительно к разным областям человеческой деятельности, но для компьютерщик, пожалуй должен всегда помнить о двух: "Из всех возможных неблагоприятных событий с максимальной вероятностью происходит то, которое наносит максимальный урон в самое неподходящее время" и "Все неприятности, которые могут случится обязательно произойдут. Неприятности, которые не могут случится никогда произойдут чуть позже".

Спасибо тем, кто дочитал этот длинный текст до конца. Всем удачи. Пусть ваши руки всегда будут чистыми, головы - светлыми, а проекты – умопомрачительными.

P.S. Автор книги "Понимая Maya", безусловно, Сергей Цыпцын. Думаю, никто до сих пор не понимает, как ему удалось выполнить такой колоссальный объем работы. Я-то уж точно не понимаю. Ситуация немного проясняется, если посмотреть на последние страницы книги. Это страницы с благодарностями. Благодарностями тем людям, которые Сергею помогали. Кто чем мог.  Свою посильную лепту внес и ваш покорный слуга.

Владимир Забелин,

кандидат физико-математических наук,

Autodesk Authorized Instructor,

Autodesk Authorized Author,

в компьютерной графике  с 1992 года.          


725 0 850 16
7
2017-10-16
Отлично написано! Хороший слог. Почаще пишите!)
2017-10-17
Браво, очень дельно, пишите почаще, поддерживаем пост в соц.сетях 40 000 подписчиков и выводим на главную!
2017-10-17
Прекрасная статья, благодарю!
2017-10-17
Респект! =)
2017-10-18
Ни прибавить, ни отнять) Все как есть.
2018-04-26
Прочитал на одном дыхании. Спасибо за прекрасную статью! Тоже всегда мою руки, прежде чем сесть работать. И еще протираю сначала стол и все предметы на нем. Помогает.
2020-04-22
Великолепная статья, большое спасибо!
RENDER.RU