Русский
Русский
English
Статистика
Реклама

3d графика

3D Говорящие Головы. Третий проект центра разработки Intel в России

23.07.2020 10:06:27 | Автор: admin

Согласно известной шутке все мемуары в книжных магазинах должны располагаться в разделе Фантастика. Но в моём случае это и правда так! Давным-давно в далёкой-далёкой галактике в российском центре разработки Intel мне довелось участвовать в реально фантастическом проекте. Проекте настолько удивительном, что я хочу воспользоваться своим служебным положением редактора блога Intel в личных целях, и в рамках цикла 20 лет 20 проектов рассказать про эту работу.
3D Talking Heads (Трехмерные Говорящие Головы) это показывающий язык и подмигивающий бронзовый бюст Макса Планка; обезьянка, в реальном времени копирующая вашу мимику; это 3D модель вполне узнаваемой головы вице-президента Intel, созданная полностью автоматически по видео с его участием, и еще много всего Но обо всём по порядку.

Синтетическое видео: MPEG-4 совместимые 3D Говорящие Головы полное название проекта, осуществленного в Нижегородском Центре Исследований и Разработки Intel в 2000-2003 годах. Разработка представляла собой набор трёх основных технологий, которые можно использовать как совместно, так и по отдельности во многих приложениях, связанных с созданием и анимацией синтетических трехмерных говорящих персонажей.

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

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

А связующим звеном между этими тремя с половиной пунктами, а также привязкой к Intel служат четыре буквы и одна цифра: MPEG-4.

MPEG-4


Немногие знают, что появившийся в 1998 году стандарт MPEG-4 помимо кодирования обычных, реальных видео и аудио потоков предусматривает кодирование информации о синтетических объектах и их анимации так называемое синтетическое видео. Одним из таких объектов и является человеческое лицо, точнее голова, заданная в виде триангулированной поверхности сетки в 3D пространстве. MPEG-4 определяет на лице человека 84 особые точки Feature Points (FP): уголки и середины губ, глаз, бровей, кончик носа и т.д.

К этим особым точкам (или ко всей модели в целом в случае поворотов и наклонов) и применяются анимационные параметры Facial Animation Parameters (FAP), описывающие изменение положения и выражения лица по сравнению с нейтральным состоянием.


Иллюстрация из спецификации MPEG-4. Особые точки модели. Как видите, модель может шмыгать носом и шевелить ушами.

То есть, описание каждого кадра синтетического видео, показывающего говорящего персонажа, выглядит как небольшой набор параметров, по которым MPEG-4 декодер должен анимировать модель.

Какую модель? В MPEG-4 есть два варианта. Либо модель создается энкодером и передается декодеру один раз в начале последовательности, либо у декодера есть своя, проприетарная модель, которая и используется в анимации.

При этом, единственные требования MPEG-4 к модели: хранение в VRML-формате и наличие особых точек. То есть, моделью может служить как фотореалистичная копия человека, чьи FAP используются для анимации, так и модель любого другого человека, и даже говорящий чайник главное, чтобы у него, помимо носика, были рот и глаза.


Одна из наших MPEG-4 совместимых моделей самая улыбчивая

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


Модель, модель, а почему у тебя такие большие глаза и зубы? Чтобы лучше себя анимировать!

Откуда берутся персонализированные модели для анимации? Как получить FAP? И, наконец, как осуществить реалистичную анимацию и визуализацию на основе этих FAP? На все эти вопросы MPEG-4 не даёт никаких ответов так же, как и любой стандарт сжатия видео ничего не говорит о процессе съёмки и содержании кодируемых им фильмов.

До чего дошел прогресс? До невиданных чудес!


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

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

Именно это и было реализовано в нижегородском Intel. Идея возникла сперва как часть реализации библиотеки MPEG Processing Library, разрабатываемой в свое время в Intel, а потом выросла не просто в полноценный spin-off, а в настоящий фантастический блокбастер.


Синтетический Валерий Федорович Курякин, продюсер, режиссер-постановщик, автор сценария, а местами и каскадёр проекта в то время руководитель группы разработчиков Intel.

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


Конвейер проекта по производству синтетических клонов образца 2003 года

Во-вторых, фантастическим было сочетание существовавшего в то время железа и реализованных в проекте технологических решений, а также планов по их использованию. Так, на момент начала проекта в моем кармане лежала Нокия 3310, на рабочем столе стоял Pentium III-500MHz, а особо критичные к производительности алгоритмы для работы в реальном времени тестировались на сервере Pentium 4-1.7GHz со 128 Mb оперативной памяти.

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


$137 миллионов составили затраты на фильм, созданный на рендер-ферме из ~1000 компьютеров Pentium III. Постер с сайта www.thefinalfantasy.com

Но давайте посмотрим, что же получилось у нас.

Распознавание и отслеживание лица, получение FAP.


Эта технология была представлена в двух вариантах:

  • режим реального времени (25 кадров в секунду на уже упомянутом процессоре Pentium 4-1.7GHz), когда отслеживается человек, непосредственно стоящий перед видеокамерой, соединенной с компьютером;
  • оффлайн режим (со скоростью 1 кадр в секунду на том же компьютере), когда распознавание и трекинг происходят по предварительно записанному видеофрагменту.

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

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

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


Качество распознавания и отслеживания FP образца 2003 года

Конечно, технология была несовершенна. Распознавание и отслеживание сбоили, если у человека в кадре были усы, очки или глубокие морщины. Но за три года работы качество значительно повысилось. Если в первых версиях для распознавания движения моделям при съемках видео приходилось наклеивать на соответствующие FP точки лица особые метки белые бумажные кружки, полученные при помощи офисного дырокола, то в финале проекта ничего подобного, конечно же не требовалось. Более того, нам удалось достаточно устойчиво отслеживать положение зубов и направление взгляда и это на разрешении видео с вебкамер того времени, где такие детали были едва различимы!


Это не ветрянка, а кадры из детства технологии распознавания. Intel Principle Engineer, а в то время начинающий сотрудник Intel Александр Бовырин учит синтетическую модель читать стихи

Анимация


Как уже было неоднократно сказано, анимация модели в MPEG-4 полностью определяется FAP. И всё было бы просто, если бы не пара проблем.
Во-первых, тот факт, что FAP из видео последовательности извлекаются в 2D, а модель трёхмерная, и требуется как-то достраивать третью координату. То есть, радушная улыбка в профиль (а у пользователей должна быть возможность этот профиль увидеть, иначе смысла в 3D немного) не должна превращаться в зловещую ухмылку.
Во-вторых, как тоже было сказано, FAP описывают движение особых точек, которых в модели около восьмидесяти, в то время как хоть сколько-нибудь реалистичная модель в целом состоит из нескольких тысяч вершин (в нашем случае от четырех до восьми тысяч), и нужны алгоритмы, вычисляющие смещение всех остальных точек модели на основе смещений FP.

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

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


Улыбка непростое дело для 3D модели и её создателей

Создание 3D модели конкретного человека.


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

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


Наш сферический человек в вакууме модель для персонализации

То есть, происходят глобальная и локальная деформации 3D сетки для соответствия пропорциям черт лица прототипа, выделенным на его фото\видео, после чего на модель накладывается фактура прототипа то есть, текстура, созданная из тех же входных изображений. В результате и получается синтетическая модель. Делается это один раз для каждой модели, конечно же, оффлайн, и конечно же, не так просто.

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


Это не кадр из фильмов ужасов, а текстура 3D-модели Pat Gelsinger, созданной с его разрешения при демонстрации проекта на Intel Developer Forum в 2003 году

Первоначальная версия технологий персонализации модели по двум фото была реализована самими участниками проекта в Intel. Но по достижении определённого уровня качества и осознании ограниченности своих возможностей, было решено передать эту часть работы исследовательской группе Московского Государственного Университета, имевшей опыт в данной области. Результатом работы исследователей из МГУ под руководством Дениса Иванова стало приложение Head Calibration Environment, выполнявшее все вышеописанные операции по созданию персонализированной модели человека по его фото в анфас и профиль.

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

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


Верхний ряд виртуальные люди, нижний реальные.

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

Визуализация.


Для демонстрации результатов работы всех вышеописанных технологий был создан специальный плеер MPEG-4 синтетического видео. На вход плеер принимал VRML файл с моделью, поток (или файл) с FAP, а также потоки (файлы) с реальным видео и аудио для синхронизированного показа с синтетическим видео с поддержкой режима картинка в картинке. При демонстрации синтетического видео пользователю давалась возможность приблизить модель, а также посмотреть на неё со всех сторон, просто повернув мышью под произвольным углом.



Хотя плеер и был написан для Windows, но с учетом возможного портирования в будущем на другие OS, в том числе мобильные. Поэтому в качестве 3D библиотеки была выбрана классическая OpenGL 1.1 безо всяких расширений.

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

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


Такой он, синтетический реализм.

Но плеером дело не ограничилось. Для удобства использования технологий и передачи их во внешний мир была создана объектная библиотека Intel Facial Animation Library, содержащая функции для анимации (3D трансформации) и визуализации модели, так что любой желающий (и имеющий источник FAP) вызовами нескольких функций СоздатьСцену, СоздатьАктера, Анимировать мог оживить и показать свою модель в своем приложении.

Итоги


Что дало участие в этом проекте лично мне? Конечно же, возможность совместной работы с замечательными людьми над интересными технологиями. В проект меня взяли за знание методов и библиотек рендеринга 3D моделей и оптимизации производительности под х86. Но, естественно, ограничиться 3D не удалось, пришлось пойти в другие измерения. Для написания плеера понадобилось разобраться с парсингом VRML (готовых библиотек для этой цели не имелось), освоить нативную работу с потоками в Windows, обеспечив совместную работу нескольких тредов с синхронизацией 25 раз в секунду, не забыв про взаимодействие с пользователем, и даже продумать и реализовать интерфейс. Позже к этому списку добавилось участие в улучшении алгоритмов отслеживания лица. А необходимость постоянно интегрировать и просто сочетать с плеером написанные другими членами команды компоненты, а также представлять проект во внешнем мире значительно прокачала мои навыки коммуникации и координации.

Что дало участие в этом проекте Intel? В результате нашей командой был создан продукт, способный служить хорошим тестом и демонстрацией возможностей платформ и продуктов Intel. Причем, как железа CPU и GPU, так и программного обеспечения наши головы (и реальные и синтетические) внесли свой вклад в улучшение библиотеки OpenCV.

Кроме этого, можно смело утверждать, что проект оставил видимый след в истории по итогам работы его участниками были написаны статьи и представлены доклады на профильные конференции по компьютерному зрению и компьютерной графике, российские (GraphiCon), и международные.
А демонстрационные приложения 3D Talking Heads показаны Intel на десятках выставок, форумов и конгрессов по всему мирy.

За прошедшее время технологии, конечно, сильно продвинулись, соответственно, упростив автоматическое создание и анимацию синтетических персонажей. Появились Intel Real Sense камеры с определением глубины, а нейронные сети на основе больших данных научились генерировать реалистичные изображения даже несуществующих людей.
Но, всё же, размещенные в публичном доступе наработки проекта 3D Talking Heads продолжают просматривать до сих пор.
Посмотрите на нашего юного, почти двадцатилетнего, синтетического говорящего MPEG-4 героя и вы:

Подробнее..

Второй день 3DEXPERIENCE World 2021 как это было

26.02.2021 16:11:32 | Автор: admin

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

Прозвучало несколько убедительных отзывов от компаний-клиентов, которые интенсивно используют инструменты 3DEXPERIENCE Works для воплощения своих задумок в реальность. Одной из таких компаний стартапу Skinny Guy Campers 3DEXPERIENCE SOLIDWORKS помогает реализовать планы по расширению бизнеса.

Представитель компании Square Robot рассказал, как им удалось укрепить свои конкурентные преимущества, расширив возможности проектирования и производства с помощью инструментов комплекса 3DEXPERIENCE Works. Далее участникам представили компанию Seed Terminator, которая использует 3DEXPERIENCE Works для адаптации своей продукции к различным сельскохозяйственным машинам и сорности посевов.

Выступление Фрэнка Стивенсона, в послужном списке которого должности ведущего дизайнера и директора по дизайну в крупных автоконцернах, таких как McLaren, Ferrari, Maserati, Fiat и MINI, было (что вполне предсказуемо) посвящено скорости. Он рассказал, как сократить циклы разработки, как использовать стремительно развивающиеся инструменты проектирования и что нужно сделать для поддержки человеческого звена в системе человек-машина.

Хотите увидеть гонку на Луне или прокатиться на летающем такси? Стивенсон показал примеры своих текущих проектов и действительно, это что-то за рамками привычного нам мира! Смотрите запись его презентации на платформе виртуального мероприятия (вкладка Agenda).

Глубокое погружение

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

Участники секции Доступное управление данными познакомились с тремя компаниями, которые используют возможности облака для хранения своих данных, исключив традиционные хлопоты, связанные с локальным развертыванием. Обсуждалось также, почему эффективное управление данными имеет решающее значение для успеха разработки.

Секция Будущее проектирования и производства проводилась совместно с создателями телепрограммы Titans of CNC. Они рассказали о компании, которая смогла выполнить проект в чрезвычайно сжатые сроки, организовав безопасное и надежное взаимодействие всех сторон с использованием SOLIDWORKS и мощной платформы 3DEXPERIENCE.

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

Отдельные секции Паспорт экосистемы стартапов для регионов Северной Америки, Европы, Азии и южной части Тихого океана были посвящены проблемам и перспективам, возникающим у основателей стартапов при запуске новой продукции, а также динамике современного рынка. Участники поделились информацией о том, чего ожидают инвесторы, каковы текущие тенденции в отрасли и как стартапы переходят от идей к производству.

Во второй день 3DEXPERIENCE World мы обсудили много вопросов. Мы научились анализировать потребительские впечатления. Завтра, как гласит программа третьего дня, мы глубже погрузимся в связи и отношения и совсем не важно, что физически мы находимся далеко друг от друга.

Рекомендуем вам посмотреть видео ниже, чтобы не пропустить ни одного яркого момента.

Хотите узнать больше? Скачайте бесплатно электронную книгу о ключевых обновлениях и технических преимуществах SOLIDWORKS 2021

Подробнее..

Решения SOLIDWORKS для управления инженерными данными новые возможности 2021 версий

17.03.2021 12:07:26 | Автор: admin

В 2021 версиях управлять данными стало еще проще, а сэкономленное при этом время инженеры могут посвятить повышению качества продукции, которую они разрабатывают. В семейство решений для управления инженерными данными входят SOLIDWORKS PDM Standard, SOLIDWORKS PDM Professional и SOLIDWORKS Manage.

Давайте посмотрим на самые яркие новинки в 2021 версиях.

Новые возможности SOLIDWORKS PDM

Теперь вы можете добавлять команды доступа к файлам, такие как Разрегистрация, Регистрация и Получить последнюю версию на панель быстрого доступа. Это делает работу более удобной и освобождает место для отображения стандартных команд в строке меню Проводника. Управлять визуальным представлением элементов хранилища можно с помощью опций области Структура панели Вид.

Просмотр иерархии связей между файлами стал графическим! Теперь вы можете просматривать информацию на вкладках Содержит и Где используется в древовидном формате (вид Treehouse). Отображение миниатюр и краткой информации о файлах облегчает визуализацию структуры связей.

Еще одно усовершенствование на вкладке Спецификация при отображении связей теперь учитываются все опции для конфигураций SOLIDWORKS (ранее не распознавалась опция Promote).

Новые возможности SOLIDWORKS Manage

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

Для копирования спецификаций в другие изделия, а также для удобства работы с несколькими записями одновременно в SOLIDWORKS Manage введены немодальные окна, одновременно открывающие доступ к нескольким наборам свойств.

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

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

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

SOLIDWORKS PDM и SOLIDWORKS Manage помогают вам собирать и организовывать инженерные данные. Подробнее о том, что было добавлено в последнюю версию продукта, можно узнать на странице Новые возможности SOLIDWORKS 2021. Если вы хотите получить демо-версию, обращайтесь к авторизованному партнеру в вашем регионе.

Скачайте брошюру "Пять причин улучшить управление данными в промышленном производстве" и обеспечьте рост, поддерживая конкурентное преимущество благодаря PDM

Подробно ознакомиться с функционалом и новшествами SOLIDWORKS 2021 предлагаем вам, посмотрев видео на официальном канале Dassault Systemes в России:

1.SOLIDWORKS 2021 | Повышение производительности и новый подход к проектированию

2.Что нового в SOLIDWORKS SIMULATION 2021

3.SOLIDWORKS CAM 2021 | Нововведения в моделировании механической обработки

4.SOLIDWORKS PLASTICS 2021 | Новый взгляд на процессы литья полимеров под давлением

5.SOLIDWORKS PDM 2021 | Обмен данными с внешними системами

Подробнее..

Оптимизация 3D-графики под WebGL (опыт PLANT-SIM)

09.10.2020 12:10:51 | Автор: admin

В этой статье речь пойдет об оптимизации Unity-сцены проекта Plantsim 1.0.: о визуальной части цифровой копии предприятия Tennessee Eastman Process, реализованного на Unity 2017.1.1f1.


image


Заметка от партнера IT-центра МАИ и организатора магистерской программы VR/AR & AI компании PHYGITALISM.


В первой версии работа осуществлялась с использованием мощного компьютера, а так же стороннего вычислительного устройства PLC. Отличие новой версии заключается в том, что теперь это WEB-приложение, реализованное с помощью WebGL, и для его работы потребуется только ноутбук.


Платформа Unity Команда Зачем
PlantSim 1.0 PC на базе: Intel i7 Nvidia GTX 1070ti 2017.3.0f3 Default Pipeline Несколько 3D художников Энтузиазм моделить и творить красоту
PlantSim 2.0 Ноутбук: Intel i5 Nvidia 1050ti Google Chrome 2019.2.15f1 LWPR Один 3D художник Ещё больше энтузиазма победить страшную задачу

Таблица сравнения разработки проектов


В сравнении с приложением PlantSim 1.0, заметно снижение требований к характеристикам компьютера. Поэтому оптимизация стала главной задачей для PlantSim 2.0.


image
Пайплайн разработки PlantSim 2.0


Анализ предстоящей работы


WebGL это работа 3D графики с использованием возможностей браузеров Google Chrome, Mozilla, Safari. Первостепенными задачами для нас являлись оптимизация, сохранение того же уровня реализма и поддержание работоспособности приложения на 30FPS+. Для этого нам предстояло работать в пайплайне мобильной разработки.


image
Unity: WebGL Build


Красивой визуализации в WebGL добиться можно, но сложно. Имеется ряд особенностей, о которых желательно знать, если вы собираетесь сделать подобный проект самостоятельно и/или работаете с 3D графикой впервые.


Перед тем, как начать непосредственно работу над 3D, мы выстроили четкий план со списком моделей, которые необходимо оптимизировать.


image
Таблица с планом оптимизации для отслеживания хода работы


Вот краткий список моделей, что присутствовали в сцене раньше:


  • OutPutTank 2 шт
  • Reactor 1 шт, модель была раздельная
  • ReactorExplosion 1 шт, отдельная анимации разлета уничтоженного реактора
  • Condenser 1 шт
  • Separator 1 шт
  • PipesSystem различная система труб на сцене
  • Stripper 1 шт
  • Valve 6 шт
  • Tank 4 шт
  • Refrigerator 1 шт
  • Compressor 3 шт
    В PlantSim 1.0 на сцене было 189 736 трисов, и главной задачей для нас была оптимизация модели на 60%. Таким образом мы получим 75 895 треугольников, что будет удовлетворять нашему полигональному бюджету.
    image
    График расчета суммарного предполагаемого количества полигонов после оптимизации

Оптимизация меша


Оценивая старые модели, я заметил, что некоторые объекты были разделены и представляли собой уникальный меш, с собственными материалами, а иногда даже несколькими. Например:


image
Модель Reactor (PlantSim 1.0) анализ иерархии и сетки


  • Нелогичные наименования объектов
  • Много отдельных элементов
  • Сложная топология

Сам Reactor имел 21998 треугольников. По плану нам было необходимо избавиться от всего лишнего и малозначительного, и получить 8800 треугольников. Перед тем, как начать оптимизировать, мы проанализировали объекты вновь и заметили новую важную деталь: модели OutPutTank, Reactor и Striper имели одни и те же элементы основание и лестницу. Это означало, что эти элементы можно дублировать и использовать для них один материал.


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


image
Модель Reactor (PlantSim 2.0) оптимизированная иерархия и сетка


  • Исправили наименования объектов
  • Уменьшили количество отдельных элементов
  • Упростили и оптимизировали топологию

Объект ReactorExplosion имел сложную анимацию взрыва, красивую и эффектную разлет маленьких кусков реактора с сохранением только его основания. После первой полной сборки сцены наш FPS сильно проседал непосредственно на моменте взрыва, который помимо этой анимации меша так же имел и анимацию, состоящую из 1000 частиц инструмента Particle System. Появился вопрос, что создавало трудности для отрисовки: анимация или частицы? Мы обсудили задачу с Unity разработчиком и выявили, что оба фактора слишком тяжелые для WebGL движка, поэтому было решено оптимизировать эффект взрыва, используя 5 частиц (это возможно благодаря FlipBook текстурам). Со стороны разработки так же была необходима оптимизация анимации внутри Unity.


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


С анимацией было сложнее, так как каждый осколок Reactor был индивидуальным и имел свою запеченную анимацию это и тянуло WebGL вниз по FPS. Со стороны Unity разработки было предложено запечь всю анимацию в один объект, а метод отрисовки с Mesh renderer переключить на Skinned mesh renderer. Таким образом вместо одновременного перемещения тысячи transform points у нас была цепочка костей и один transform points (Origin самого объекта). Как итог, FPS вырос с 35 во время воспроизведения эффекта до 1520 во время запуска анимации, благо этот фриз сохранялся лишь 0,5 секунды. Кстати, ReactorExplosion объект имел 41220 треугольников, и в угоду экономии времени, которого было мало, было решено не создавать новую анимацию с нуля, а использовать старую, оптимизируя описанным способом.


В итоге работа по оптимизации меша закончилась успешно. Выше мы упоминали, что на сцене располагалось 189736 треугольников (если не учитывать ReactorExplosion, то 148516 треугольников). Отнимая 60% всей геометрии, мы хотим получить на выходе 59403 треугольника (после оптимизации). У нас получилось 61064 треугольника, что превысило наши планы по оптимизации, но все равно было намного ниже полигонального бюджета, выставленного в самом начале проекта. С учетом ReactorExplosion было 102284 треугольника, что так же было около границы обозначенного бюджета.


Задача выполнена, переходим к текстурированию.


image
График расчета суммарного фактического количества полигонов после оптимизации


Текстурирование


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


  • Base Color/Albedo RGBA изображение, определяющее, какой цвет у поверхностей. Иногда идет с Alpha каналом прозрачности поверхностей.
  • Ambient Occlusion Ч/Б изображение с информацией затенений объекта.
  • Metallness Ч/Б изображение, определяющее металлическую природу поверхности.
  • Smoothness Ч/Б изображение, определяющее степень размытости поверхности или ее мелких отдельных деталей.
  • Normal Map RGB изображение, симулирующее светотень от мелких неровностей поверхности.
  • Height Map Ч/Б изображение, отвечающее за степень искажения неровностей поверхности. Часто используется в связке с Normal Map.
  • Emission RGB изображение, отвечающее за самосвечение отдельных участков или всей поверхности объекта. Может влиять на Global Illumination параметры, то есть участвовать в освещении других объектов в сцене.
    image
    Набор текстур для модели Striper из проекта PlantSim 2.0

Благодаря текстурным картам имитируются поверхности на моделях. После анализа списка можно заметить сходства помимо RGB текстур мы имеем много черно-белых карт. Что же это значит для оптимизации?


Дело в том, что отдельно R G и B, а также A каналы и представляют собой черно-белый слой. А значит отдельно в одну текстуру RGBа можно зашифровать сразу четыре текстуры. Как это работает:


image
Комбинирование четырех ч/б текстурных карт в одну текстуру


Далее эту Combine texture расшифровывают и отдают в отдельные каналы материала в Unity.
Также хотелось бы упомянуть Normal Map. Эта текстура мощный инструмент для оптимизации модели, с помощью нее возможно избавиться от мелкой детализации модели и впоследствии отобразить при рендеринге на сцене.


image
Сравнение двух моделей Compressor


На этом примере наглядно видна разница поверхностей старой модели и новой, оптимизированной. Данную текстуру создают двумя способами:


  1. Отрисовка вручную в специальных программах, например Substance Painter, используя подготовленные кисти неровностей.
  2. Запекание неровностей с HighPoly модели (с повышенной детализацией, фасками, неровностями и углублениями) на LowPoly модель, которая максимально оптимизирована. Данную процедуру используют как в Substance Painter, так и в Blender инструментах.

Материалы и шейдеры


Использование одного и того же контента повторно это экономия места на UV развертках, которая позволяет уделить больше внимания деталям в освободившемся пространстве. В нашем случае это были элементы основания реакторов и лестницы.


image
Набор материалов на различных объектах. Один цвет один материал


На примере с помощью цвета отображено, какие материалы используются на том или ином объекте. Можно заметить, что один и тот же материал используются на разных объектах, то есть они имеют одну UV развертку. Это важный момент, так как если объект маленький и незначительный, значит сама UV развертка будет маленькой и менее детальной для объекта.


Объединение подобных объектов с другими позволяет экономить на количестве суммарно используемых текстурных карт.


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


Запекание света


Давайте поговорим о том, как работает свет в Unity, а именно о типе освещения Global Illumination. Это честный способ отображения отражения света от поверхности объекта и создания теней. В Unity тени строятся по двум типам объектов Dynamic и Static объекты.


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


В случае статичных объектов подразумевается, что они находятся в покое, а тени всегда сохраняют свое положение. Как раз для таких объектов можно запечь тень объекта на пространство в специальный Lightmap текстуры. Учитывая задачу оптимизации и отказ от Realtime просчета теней, это наиболее оптимальный подход.
image
Представление сцены без Lightmap текстурной карты и после ее создания
В PlantSim 2.0 мы запекали тени от всех объектов, если они не участвовали в анимациях.


Хитрости в работе с WebGL


К финалу разработки мы стали сражаться за количество FPS уже в собранных билдах, отслеживая напрямую в Google Chrome. Сохранялась проблема почему FPS на ноутбуке c i7 процессором и GTX 1070ti не повышается больше 30, а наоборот, иногда даже проседает. Ведь не может быть так, что всей проделанной работы было недостаточно.


Перед тем, как запускать проект на референсном ноутбуке заказчика, мы проводили тесты на различных устройствах (ноутбуки, персональные компьютеры), и анализировали FPS, которое показывало приложение.


image
Таблица стресс-тестов на различных устройствах. Скриншоты фиксируют одинаковую ситуацию и количество FPS в данный момент.


В тестировании участвовали как мощные ноутбуки на базе Windows и Apple MacBook PRO, так и слабые ноутбуки, на которых не предполагалась работа с 3D графикой. Для чистоты тестирования мы так же использовали стационарный компьютер с RTX 2080ti (кстати, на нем FPS был стабильно 60). FPS оказался разным у всех устройств.


Разгадка оказалась куда проще, чем предполагалось изначально. Дело в том, что работу браузера Google Chrome определяет некоторые факторы:


  1. Подключен ли ноутбук к зарядке? Если нет, то вероятно, что мощность видеокарты значительно снижена из за экономии аккумулятора.
  2. Есть ли на ноутбуке интегрированная видеокарта (видеокарта, которая встроена в центральный процессор или материнскую плату)?

Проверить первый пункт достаточно легко, второй уже сложнее. Мы попробовали дать конкретную задачу для приложения Google Chrome, сделать запуск с параметрами повышенной мощности, однако результатов это не давало. Видеокарты фирмы NVIDIA имеют отдельное приложение по управлению ресурсами видеокарты на устройстве NVIDIA control panel. В этом приложении мы нашли Google Chrome и вручную выставили работу с помощью дискретной видеокарты, а не интегрированной.


image
Окно Nvidia Control Panel настройки производительности для отдельного приложения


В итоге, после очередного тестирования билда на Google Chrome, счетчик FPS победно показывал 7090 это означало, что во всех предыдущих тестированиях в отрисовке 3D графики браузера участвовала куда более слабая видеокарта (интегрированная), из-за стараний ноутбука сэкономить заряд батареи.


Вывод


Разработка проекта такого рода специфична, но во многом интересна, так как WebGL это новое направление работы с 3D графикой и представление ее в WEB.


Все описанные методы выше не новые, но важные и влияют на скорость загрузки приложения, и насколько будет комфортно пользователю просматривать в браузере.


Полезные ссылки:


WebGL Wikipedia
Unity Wikipedia
Unity Официальный сайт
Unity WebGL Builds
Unity WebGl Development
UV развертки Wikipedia
Texturing mapping Wikipedia
PBR материалы Habr
3D modeling Wikipedia
PlantSim 1.0
PlantSim 2.0

Подробнее..

Молекулярная биология и Houdini летом двадцатого

09.11.2020 14:21:24 | Автор: admin

Вот что получилось. А ниже история движения из точки А в точку B.

Ссылка на проект

1.


Я учился в школе. И учебники по биологии, физике, химии отличались вялостью картинок. Если фотка, то чёрно-белая, обилие схем и текста. Сочного, красивого текста, рассказывающего, как выглядит вирус или днк.

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

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


Мампап, а чего у вас в учебнике нет красивых фоток? Зачем эта бледность и уныние? Вы не можете увидеть красоту и не хотите, чтобы я её увидел? Ну ладно, я тогда пойду продавать машины или в архитекторы, они классные. Не буду учёным. Это скучно.
Мы считаем, что тебе достаточно текста и схем. И вот тебе ещё более точный текст и очень красивая схема.
Мампап, у вас немножко мир поменялся. Он теперь тоже весь в тексте и схемах.
Немедленно верни обратно! Немедленно!
Ладно. Схемы, тексты, а как это всё выглядит? Где фотки? Видосики?
Видишь ли, все эти атомы, вирусы, они настолько маленькие, что мы не можем их увидеть. Поэтому вот тебе схемы и текст.
Мампап, но ведь в кино все эти взрывы, бабахи и разбитые машины тоже нарисовано. Они же выглядят очень.
Да. Видишь ли, на это у нас есть бюджет.
А на меня?
Мороженое будешь?
Буду.

Грустная история. Правда? Мне грустно. Я считаю, что красивым, завораживающим можно сделать что угодно. А что это там такое красивое/загадочное/героичное/стильное/трогательное? Хочу подойти поближе и заниматься этим на всю жизнь.

Мы поднаторели в придании войне эстетики, в придании аппетитности бургерам, в умении рассказывать трогательные истории про обувь. Можно ли что-то сочное/яркое/завораживающее/настоящее показать про науку?

Мой ответ да.

2.


И на этой волне летом 2020 года я в задумчивости рассматривал в своём любимом Houdini, как выглядят разные белки/протеины. Их я загрузил с сайта www.rcsb.org формат pdb, к моей радости, является нативным для Houdini.

Меня завораживает их крохотность/эволюционная сложность и одновременно простота. Вот смотрите. Это днк, шаперон и иммуноглобулин.

1. Модели: Днк, шаперон и иммуноглобулин

И мне захотелось рассказать о них. Я не знал о них ничего. Никакого сценария у меня тоже не было.

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

А что рассказать, Алёха, ты же не молекулярный биолог? Да, я не молекулярный биолог. И я понял, что не хочу идти путём популяризатора науки, который своими словами рассказывает о чём-то, не имея образования в данной области. Я хочу быть научно достоверным. Точным. Что же делать?

Нужно найти консультанта по молекулярной биологии!

И вскоре такой человек нашёлся Валерия Архипова молекулярный биолог. Мы живём в разных часовых поясах. В нашем случае разница в четыре часа. В целом это нам не мешало.
И в дальнейшем все свои вопросы по научной части я адресовал Валерии.

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

2. Второй релиз ролика. Три склеенных скриншота. Длительность аж целых 17 секунд...

И тут пришло понимание. Мы можем больше!

Антитело не само по себе существует. Это ответ иммунной системы на что-то. На что? Вирус! Иммуноглобулин же прикрепляется к вирусу! И тем самым мешает вирусу заразить клетку.

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

3. 4 релиз нашего ролика. ротавирус в окружении антител.

Вирус настоящий. Всамделишный. Называется ротавирус. Ротавирус, например, является частой Причиной диареи у детей. Вот, как он выглядит в базе. В его внешней оболочке порядка 6 000 000 атомов. И тут меня ждал неприятный сюрприз. Дело в том, что большие структуры хранятся в базе протеинов в другом формате - не pdb. Они хранятся в формате cif. Houdini не понимает этот формат. К счастью, он текстовый. Разобравшись в его логике я написал небольшой парсер, который вытаскивает из файла нужные мне данные. Размер файла модели ротавируса занимает порядка 600мб. Время на его сборку и отображение во вьпорте Houdini занимает две минуты.

Пока мы работали над роликом, вокруг меня начинали вырастать новые слова и смыслы. Я не знал о существовании иммуноглобулина. Серьёзно. И ещё большей проблемой было задать вопрос. Потому что я не знал слов, кроме универсального слова штуковина. И я был похож на пускателя пузырей ртом.

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

Далее мы поняли, что нам нужно показать, как работает иммуноглобулин. Он буквально прицепляется к торчащим во все стороны эээ шипам наподобие ключ/замок. И тогда вирус не может прицепиться к клетке и заразить её. И процесс этот абсолютно хаотичный. Иммуноглобулин может не столкнуться с вирусом и пролететь мимо.

4. 6 релиз нашего ролика. Зарождение эстетики.

Я раскрасил прилепившиеся антитела. И тут я увидел, что начинает появляться какая-то эстетика/стиль. Что микромир нужно рисовать красиво/вкусно, а не только научно достоверно. И что именно в этом месте возникает любопытство и желание изучать и заниматься молекулярной биологией. Из красивых схем и точных слов это желание не возникает. Особенно оно не возникает у школьника. Нужны именно красивые картинки. Плюс мы показываем вещи, как они выглядят. Такая возможность появилась очень недавно. И я говорю не о микроскопии, а о трёхмерном моделировании. Когда можно показать сам объект, но, что я считаю важнейшим взаимодействия объектов и показать событие из абсолютно любой точки для наблюдателя, хоть изнутри вируса, хоть из Солнца.

Думаю, что между точно и красиво нужны компромиссы. И двигаться можно, как в одну, так и в другую сторону.

И, если модели объектов у нас выполнены в достаточной для нашей задачи точности, то что можно сказать про эстетическое наполнение? Какие у меня есть для этого ресурсы/возможности?

Можно сделать разные диаметры у атомов, Основные элементы, из которых собран наш иммуноглобулин углерод, сера, водород, кислород и азот. Диаметры элементов различаются приблизительно в 4 раза. Это можно показать в одном месте, как факт, что атомы различаются. И мы это сделали в части ролика, где показывали иммуноглобулин без вируса. Но это же можно сделать и для всего ролика. Это будет честно. Но нужно ли? Или можно упростить?

Еще можно добавить цвета.Блики. Размытое отражение. Прозрачность. HDRI. Подповерхностное рассеивание света. Прямой свет. Тени. Затенение. Фактуру на сами атомы, типа царапин или сколов краски. Глубину резкости и моушн блюр. Вот так, пожалуй, выглядит список всех возможностей.

Я оставил цвет. Которого нет на самом деле, потому что объекты очень маленькие для световых волн. Поэтому объекты такого размера чёрно-белые. Цвет позволяет делать акценты, создавать настроение, цветом можно показывать агрессию и беззащитность, радость. Поэтому я его оставил.

Оставил затенение. Это мягкий рассеянный свет. Как в пасмурную погоду. Он есть и на фотографиях клеток.

Оставил моушн блюр с глубиной резкости. Эти два эффекта есть и в микромире и они очень и очень добавляют подлинности картинке. Я могу сделать маленькую глубину резкости и тогда появится приятное глазу размытие.

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

А вот от всего остального отказался. В силу своей малости атомы не могут быть в царапках или потёртостях. HDRI мы не увидим т. к. объекты чёрно-белые. Разные размеры атомов мы показали, на примере иммуноглобулина в начале ролика. После этого все шарики имели более-менее один диаметр. Прямой свет и тень возможен только на крупных структурах. Колониях бактерий, клетках. В случае с антителами и вирусами нет. Кстати, сама модель атома шарик тоже гм не совсем честна. Ведь, по сути, элемент ядро с облаком электронов на орбиталях. И на сферу это совсем непохоже.

Теперь, когда стало понятно, какие средства я могу использовать в работе, а от каких пришлось отказаться, я поработал ещё с материалами вируса и остановился вот на таком решении.

5. 10 релиз нашего ролика. Красные прикрепившиеся антитела. Голубые нет.

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

6. Ротавирус близко-близко. Видны атомы.

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

Я нахожу структуры белков/протеинов/вирусов/клеток очень красивыми вблизи. Когда они огромные, тогда их вещественность становится ощутимой. А что, если подойти поближе, а не пытаться увидеть всю структуру/иммуноглобулин целиком?

7. Фрагмент тяжёлых и лёгких цепей иммуноглобулина.

Мне нравится!

А теперь совместим ближний и дальний план с помощью полиэкрана. И оп!

8. Иммуноглобулин. Аминокислоты. Цвета рандомные.

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

Пора было высаживать наш вирус на клетку. Но какую? Нам нужна была клетка, которую заражает именно наш вирус. И это клетка эпителия. На картинке серое море внизу поверхность клетки мембрана. Все модели в сцене в масштабе. Вирус приблизительно в 100-1000 раз меньше клетки.

И в последнем шоте мы показали клетку эпителия, заражённую вирусом, а рядом вирус, которому налипшие антитела мешают эту же клетку заразить.

9. Два вируса. Один прилепился к клетке эпителия. Второй, облепленный антителами, менее удачен.

Размытые голубые пятна антитела. Я добавил на рендере моушн блюр и глубину резкости. Рендер сделан в Mantra. Её неспешность мне хоть как-то позволили нивелировать 16 ядер от AMD.

И, когда осталось посчитать весь ролик, я очень сильно сомневался, что смогу за приемлемое время отрендерить 1920x1080. Поэтому я склонялся в пользу формата 1280х720. Но нет, тесты показали, что можно посчитать и 2к. В итоге время рендера кадра 2-20 минут. С честной глубиной резкости и моушн блюром. Отсчитать 1200 кадров заняло неделю.

Финальное сведение всех секвенций, цветокоррекция, титры и монтаж сделаны в Blender. В последующих проектах я от него откажусь в пользу AE, в котором на данный момент не работаю. Ну, вот наверное и всё. В Houdini, в котором я любитель, можно делать гораздо более сложные штуки. Реалистичные спецэффекты в кино, вода, огонь, взрывы, разрушения. Вот это вот всё. И наши задачи самый несложный уровень, доступный в этом софте.

А сейчас я перечислю слова, которым не нашлось места в нашем ролике, но которые тоже про иммунную систему, частью которой является и иммуноглобулин.

IgA. IgD. IgE. IgM. Фагоциты. Агглютинация. Комплемент. Преципитация. Лизис. Аллергия. Апоптоз. Натуральные киллеры. Вакцина. В-лимфоциты. Аутоиммунное заболевание. Т-хелперы. Т-лимфоциты. Лимфоцит. Инфицированные клетки. Макрофаг. Т-клетки памяти. B-клетки памяти. Перфорация клеточной мембраны. Гуморальный иммунитет. Клеточный иммунитет. Нейтрофилы. Клетка. Эозинофилы. Базофилы. РНК. ДНК. Иммунные привилегии. Электронные орбитали. Фолдинг. Цитопатическое действие.

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

И самое главное. У нас нет звука. Да. Мы настолько сосредоточились на визуальном и на самой возможности сделать всё самим, что мысль о звуке нас даже не посещала. Уже сильно позже мы поняли, что звук, а, точнее, голос за кадром, очень и очень важен для понимания/упрощения, происходящего на экране.

Ссылка на проект

P.S.

Я отправил ролик двум разным учёным, мнение которых очень важно для меня. И в ответах каждого я увидел слово красота.

3.


Что дальше?

Нам нравится, что у нас получилось. Удалённая работа показала свою состоятельность при увлечённости и мотивации. И то, что мы с Валерией не знакомы очно, никогда друг-друга не видели, общались только в чате watsapp и живём в разных часовых поясах - не мешало нам работать. Наверное, очень большим причиной нашей радости и удовольствия от проекта было отсутствие ожиданий. У нас не было дедлайна, заказчика (им был я), сложных шотов. Рисовали мы ролик один месяц и к началу августа завершили. И я очень признателен Валерии Архиповой и тем людям, которые помогали с работой, консультировали меня по Houdini, высказывали своё мнение: Лёха Бумбурум, Дима Новосельцев, Игорь Харитонов, Саша Соколов, Дима Староверов, Стас Рыхликов, Константин Северинов, Йоха Колудар.

Я увидел, что мы можем делать достойнейшие ролики обладающие эстетической ценностью и научной достоверностью. И сейчас мы работаем над версией ролика со звуком. Я никогда раньше этого не делал.

И ещё мы делаем ролик по CRISPR-Cas9. В этом году за разработку метода редактирования генома Нобелевскую премию по Химии присуждена Дненифер Даудна и Эмманюэль Шарпантье. А это и есть CRISPR-Cas9. И вот вам скриншот из аниматика, над которым мы работаем.

10. Скриншот из аниматика по CRISPR-Cas9. Бактериофаг.
Подробнее..

Симуляция волос и тканей с Unity Cloth на мобильных устройствах

28.09.2020 10:23:58 | Автор: admin


Многие разработчики рано или поздно сталкиваются с задачей достичь реалистичного поведения тканей или волос. Для этого есть целый ряд технологий, однако далеко не все из них подходят для мобильных платформ. Обычно мобильные разработчики запекают анимации, потому что это наименее затратно. Мы же поговорим о симуляции в реальном времени о модуле Unity Cloth.



Unity Cloth это система, основанная на симуляции физики тканей, которая работает вместе с SkinnedMeshRenderer. Она позволяет управлять широким набором параметров, такими как жесткость растяжения или кручения, степень затухания (величина, отвечающая за то, насколько быстро ткань придет в равновесие), симуляция ветра, взаимодействие внутренних столкновений (self-collision), трение, воздействие гравитации, влияние и взаимодействие коллайдеров и пр.

Одна из команд краснодарской студии Plarium изучила применимость Unity Cloth для мобильных устройств.

Часть 1. Симуляция тканей


Мы начали со стресс-тестов, чтобы оценить допустимые границы использования параметров модуля на мобильных устройствах. Первым исследуемым образцом стал высокополигональный многослойный меш накидка с количеством вершин ~ 10k, треугольников ~ 7k. На объект было добавлено 19 капсульных коллайдеров по форме частей тела персонажа. Остальные настройки по умолчанию.

На графике ниже представлена задержка исследуемых метрик в миллисекундах в зависимости от количества инстансов объекта. Тестируемое устройство Xiaomi Mi5 (4 ядра, 2.15 ГГц, 3 ГБ ОЗУ).



Xiaomi Mi5 не самый слабый девайс, но уже на нем видны серьезные потери производительности. На менее мощных устройствах (Lenovo A536, Quad-core, 1.3 ГГц, 1 Гб ОЗУ) они становятся катастрофическими. Далее будем оценивать результаты, которые демонстрирует наиболее слабый девайс.



На одно только обновление физики тканей приходится 775 мс из 800. Попробуем исключить влияние коллайдеров.



Вычисления столкновений коллайдеров сильно снижают перфоманс, при 25 инстансах на сцене присутствовало максимум 475 коллайдеров.

Следующее измерение проведем относительно низкополигональной однослойной модели (153 вершин, 256 треугольников) с меньшим количеством инстансов (до 9) и меньшим количеством коллайдеров (до 8).





Посмотрим, какое влияние оказывают расчеты коллайдеров. Построим соответствующие зависимости на примере одного инстанса объекта на разных устройствах (помимо уже задействованных девайсов берем Asus ZenFone 5, Dual-core, 2 ГГц,1 Гб ОЗУ).



Получившиеся функции хорошо аппроксимируются полиномиальной функцией 2 степени.

Видно, что с низкополигональными объектами ситуация на порядок лучше. На самых древних устройствах на один инстанс объекта в среднем приходится около 1 мс (против ~ 3 мс для высокополигональной модели при прочих равных параметрах), что довольно неплохо.

Далее посмотрим, как влияют на производительность дополнительные параметры.

В тестах использовался однослойный меш чуть большей, чем в предыдущем измерении, детализации (~ 450 вершин, ~ 800 треугольников). В компонент Unity Cloth был добавлен 1 капсульный коллайдер, исследовался 1 инстанс объекта, варьировались дополнительные параметры внутренних столкновений и влияния ветра.





Дополнительная симуляция ветра, как и расчеты внутренних столкновений, ухудшают производительность.

Это особенно ощутимо на более сложных моделях. Проанализируем влияние дополнительных параметров жесткости (растяжение, кручение) и затухания на мешах с количеством вершин ~ 10 000 и ~ 500 с 1 капсульным коллайдером.



Ниже представлены результаты, полученные на наиболее слабом девайсе (Lenovo A536) с варьированием параметров в каждом из замеров.

1. Жесткость: Растяжение и скручивание выкл.
Low-poly: 1.67 мс. High-poly: 145.32 мс.

2. Жесткость: Растяжение вкл. / Скручивание выкл.
Low-poly: 1.79 мс. High-poly: 160.44 мс.

3. Жесткость: Растяжение выкл. / Скручивание вкл.
Low-poly: 1.90 мс. High-poly: 172.19 мс.

4. Жесткость: Растяжение и скручивание вкл.
Low-poly: 1.92 мс. High-poly: 194.50 мс.

5. Жесткость: Растяжение вкл. / Скручивание выкл. Влияние ветра вкл.
Low-poly: 1.69 мс. High-poly: 165.73 мс.

6. Жесткость: Растяжение вкл. / Скручивание выкл. Затухание вкл.
Low-poly: 1.69 мс. High-poly: 172.75 мс.

7. Жесткость: Растяжение вкл. / Скручивание выкл. Влияние ветра вкл. Затухание вкл.
Low-poly: 1.76 мс. High-poly: 173.10 мс.

8. Жесткость: Растяжение вкл. / Скручивание выкл. Внутренние столкновения вкл.
Low-poly: 2.01 мс. High-poly: Unity Crash

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

  • Симуляция ветра добавляет ~ 9% от общей задержки метрики.
  • Симуляция затухания добавляет ~ 12% от общей задержки метрики.
  • Симуляция сжатия/скручивания добавляет ~ 1315% от общей задержки метрики.
  • Симуляция внутренних взаимодействий добавляет ~ 1216% от общей задержки метрики (при малых количествах вершин. Сделать замер с большим количеством не удалось: нагрузка оказалась слишком высокой даже для ПК).

Часть 2. Симуляция волос



Модель с ресурса cgtrader.com

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



Изломы объясняются тем, что близлежащие вершины заходят за удаленные (показано стрелкой). Изломов и перекручиваний избежать не удалось даже с использованием расчетов взаимодействий внутренних столкновений. Делаем вывод, что Unity Cloth для объемных тел не подходит.



Настройки симуляции:

  • Params 1: 3 коллайдера, жесткость включена на растяжение и скручивание, ветер и внутренние столкновения отключены, затухание отключено;
  • Params 2: 3 коллайдера, жесткость включена на растяжение, ветер и внутренние столкновения отключены, затухание отключено;
  • Params 3: 1 коллайдер, жесткость включена на растяжение, ветер и внутренние столкновения отключены, затухание отключено.

Показатели производительности двух слабых устройств сопоставимы друг с другом, Xiaomi дает лучшие результаты.

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

Краткие выводы о компоненте Unity Cloth


  • Неплохо справляется с простыми однослойными объектами (флаги, накидки, покрывала и скатерти).
  • При работе со сложными объектами требует высокой точности настройки.
  • При работе с объемными телами дает изломы.
  • Для некоторых вариантов симуляции имеющихся настроек недостаточно. Например, нельзя устанавливать свои значения гравитации: Graphics Settings используются по умолчанию.
  • Применение модуля затрудняется из-за багов в некоторых версиях Unity (подробнее в разделе Bug Story).

Заключение


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

Если вы все же намерены использовать Unity Cloth на мобильных платформах, то обратите внимание на следующие рекомендации:
  • Меньше вершин выше производительность. Используйте меши с минимально допустимым для вас количеством вершин.
  • Сократите количество одновременно живущих объектов на сцене, которые подвергаются симуляции.
  • Выберите минимальное количество коллайдеров, с которыми будет взаимодействовать ткань, либо, если возможно, не используйте их вообще.
  • Используйте только те параметры компонента, которые необходимы для решения конкретной задачи, так как они тоже снижают производительность.

Bug Story
Вероятно, с какой-то из упомянутых ниже проблем вы уже сталкивались. По найденным багам мы формировали обращения в Unity Support.

Баг 1. В версии Unity 2018.4.4f1 компонент Cloth переопределяет Bounds в SkinnedMeshRenderer, что приводит к некорректному отображению как в редакторе, так и на устройствах.



В результате у 8 из 9 роботов пропали накидки. Ниже представлен скриншот с Xiaomi Mi 5.



Исправлено в версии 2018.4.8f1.

Баг 2. В версии 2018.4.8 в режиме редактирования Constraints улетают гизмо, из-за чего их невозможно выбрать/отметить. Точные шаги для воспроизведения бага определить не удалось, приводим примерные:
  • выберите объект с компонентом и войдите в режим редактирования Constraints;
  • измените что-нибудь, примените изменения и выйдите из режима;
  • запустите Play Mode и выйдите из него;
  • откройте режим редактирования у компонента Cloth.



Баг исправлен в версии 2018.4.14f.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru