![](https://habrastorage.org/getpro/habr/upload_files/100/524/bc6/100524bc684a150a28eef4195f722b22.jpeg)
Это мой второй текст на Хабре. Он плавно вырос из первой статьи «Молекулярная биология и Houdini летом двадцатого».
Мы закончили наш новый (второй) ролик 12 апреля 2021 года, в День космонавтики. Дата получилась случайной — я очень хотел закончить работу в понедельник. Но это оказалось идеальное совпадение.
Поехали!
Вот приблизительный диалог, который состоялся у нас с Валерией (молекулярный биолог) на старте проекта:
— А давайте сделаем английскую озвучку к нашему ролику про иммуноглобулин?
— А давайте.
— И заменим ротавирус на коронавирус. Они же очень похожи.
— Да.
— Часть сцен нам даже не нужно будет переделывать.
— Да.
— И перейдём с CPU-рендера на GPU. Откажемся от Blender в пользу DaVinci Resolve. Тайминг у нас останется тот же — одна минута. Звук и вирус. Думаю, за пару месяцев мы всё закончим.
— Ага, наверное.
Мы делали ролик 5 (пять) месяцев. Я мог работать по 2 часа в день с 12 до 2 ночи и не каждый день. Длительность ролика увеличилась в 3.5 раза. Увеличение сложности проекта (по сравнению с первым нашим роликом) моим внутренним ОщущаторомСложности оценивается, как шестикратная.
Можно сказать, что весь проект (ненаучная часть) состоит из фрагментов, которые слабо связаны и потому их можно делать параллельно. В идеале — разными людьми.
За разных людей у нас был я.
Какие это фрагменты? Сториборд. Переход с Mantra (внутренний CPU-рендер Houdini) на RedShift (GPU-рендер, приобретается отдельно). Решение задачек средствами Houdini (обожаю эту часть). Рендер. Цветовое решение. Озвучка. Музыка и звуки. Монтаж в Resolve (к счастью, есть free-версия).
Я разобью повествование на разрозненные части. Хотя это, на самом деле, конечно, суп — где всё влияет на всё. И мы постоянно перемещались от одного к другому, постепенно меняясь.
Закадровый голос влияет на монтаж. Внутренний ритм монтажа влияет на контекст озвучки. В одном месте цвет мембраны розовый. В другом серый. Почему? Как сделать, чтобы этот переход был понятен? И так далее...
Раскадровка (сториборд)
Мы сделали раскадровку. В неё попали ключевые сцены, которые нужно показать обязательно. Это сам коронавирус. Способ его проникновения в клетку. И крупно клетки, облепленные множеством вирусов. Всё остальное мы хотели взять из первого ролика.
Здесь нет цвета, эстетики, музыки и текста. Это больше про работу ума и логику. Не сложная задача, которую мы довольно быстро сделали, тем более что больше половины этого материала мы делали раньше.
![Сториборд. Вирус прикрепляется к клеточному рецептору АСЕ2. Сториборд. Вирус прикрепляется к клеточному рецептору АСЕ2.](https://habrastorage.org/getpro/habr/upload_files/6e8/1b7/a72/6e81b7a72b08dfeb4684824950871dbd.jpeg)
![Сториборд. Серые круги — клетки. Чёрные — вирусы. Белые — иммуноглобулины или антитела. Сториборд. Серые круги — клетки. Чёрные — вирусы. Белые — иммуноглобулины или антитела.](https://habrastorage.org/getpro/habr/upload_files/b10/54e/ec3/b1054eec36f49e262cd4a4ebb3433c6c.jpeg)
Работа
Я за лёгкость. За юмор. За улыбку. Поэтому мне очень симпатичны — Фейнман, Сапольски и Северинов. Одновременно с этим я понимаю, что я не могу с хохотом заниматься молекулярной биологией — потому что я некомпетентен в этом (в молекулярной биологии). Для этого я делегирую ответственность в принятии решений молекулярному биологу. Я также не компетентен в английском. Тогда появляется переводчик. И каждый из них принимает решение в своей зоне ответственности. Я лишь собираю из этого всего пазл. Не вмешиваясь. В моей вселенной командная работа движется в сторону, где роль руководителя стремится к 0.
Мы хотим делать и научно достоверные и красивые работы. Чтобы школьнику, студентке, взрослому было интересно. Поэтому за научную достоверность у нас молекулярный биолог — Валерия Архипова. И большинство частей вируса и клеток — это всамделишные атомарные запчасти, полученные с сайта www.rcsb.org.
Мы пошли по пути создания релиза целого ролика и постепенного (слой за слоем) его улучшения. Всего было сделано 5 релизов и 6 — финальный. Первый имел длину полторы минуты. Последний — три с половиной.
Вот, как выглядит одна и та же сцена в разных релизах:
![Одна сцена в разных релизах. Одна сцена в разных релизах.](https://habrastorage.org/getpro/habr/upload_files/fb3/42a/b5e/fb342ab5eb64f9dd235b5f3f5602e3d0.jpeg)
Первый релиз сделан на демоверсии RedShift. Это видно по ватермаркам. Увидев достоинства от перехода на GPU-рендер, я купил лицензию.
Но постойте! А как, почему длительность ролика увеличилась с одной минуты до трёх с половиной?! Был же сториборд. Где все ключевые сцены утверждены.
Я неслучайно написал, что в сториборде (моём) нет музыки, озвучки и эстетики. И когда я собрал модель вируса, да ещё и на атомарном уровне, то мне захотелось всё это показать поближе, порассматривать.
Или эпительная клетка, облепленная вирусами, как огромный захваченный пиратами космический корабль. Она тоже просила уделить ей внимание.
И когда мы сделали сам вирус, то поняли, что нужно его не только показать, но и раскрасить, проговорив о его частях.
RedShift
Считать картинки можно на процессоре, как это делал я в первом ролике. А можно на видеокарте. По тестам разница в скорости 5-10 раз не в пользу процессора. Какие очевидные плюсы и минусы от перехода на GPU-рендер? Ну, думал я, из очевидных плюсов, во-первых, — скорость. Во-вторых, — скорость. Из минусов? Память. У видеокарты её сильно меньше, чем общей памяти. Но ведь у меня очень простые сцены! Даже текстур нет.
И я попробовал.
На моей новёхонькой 3080 в демоверсии RedShift кадр в 2к с драфтовыми настройками считался секунд 5. Это было удивительно! Mantra, славящаяся своей неторопливостью, справляется секунд за 30 (на 16 ядрах, между прочим). Конечно, я тут же перешёл на этот рендер! И с самого начала проекта второй ролик делался уже в RedShift.
Почему Redshift? Выбор был между Octane, Vray и Arnold. От Vray я отказался сразу. Я работал с этим рендером в 3dsmax и мне не нравится обилие настроек и хаотичность результата. Arnold в тестах показывал результаты сравнимые с Мантрой и меня отпугнул факт, что этот рендер выкупила компания Autodesk. Octane показался мне очень сырым. RedShift — самый часто используемый рендер в моушн графике. По нему много туторов и развито сообщество. Наконец, сама компания Maxon, которая приобрела RedShift, мне очень симпатична.
Я, к сожалению, не вёл дневник в процессе работы, как это делал, например, Фёдор Овчинников, когда создавал книжные магазины, а потом придумал сделать Додо-пиццу. Поэтому могу вспомнить только ретроспективно.
У RedShift свои материалы, свет. И свои алгоритмы работы с instance и частицами. Со всеми граблями и айсбергами я знакомился в процессе работы.
Модель вируса или мембраны — это, по сути, множество атомов. Или шариков. Есть два способа эти шарики получить. Буквально нарисовать сферу нужного диаметра и порендерить её. Или работать с частицами. Тогда на экране мы видим множество точек, а вот на рендере вместо них появляются сферы. Оп!
В случае работы с частицами мы получаем массу преимуществ. Вьюпорт не тормозит. Не нужно следить за детальностью сферы — ближний и дальний план отрабатываются на рендере. Объект ничего не «весит». Он буквально состоит из координат точек и всё. А значит подготовка к рендеру занимает меньше времени. Жмём рендер!
![RedShift. Шейдер одинаковый. Слева частицы. Справа сферы. WTF? RedShift. Шейдер одинаковый. Слева частицы. Справа сферы. WTF?](https://habrastorage.org/getpro/habr/upload_files/935/589/4ee/9355894ee4a25fffb7d8ae92a569b25f.jpeg)
Эээ… но подождите! Почему они разных цветов?! И что это за чёрные швы в местах, где сферы пересекаются? Для швов я нашёл решение. Они убираются за счёт операции булеан. Оп! Через две минуты boolean посчитался и чёрные швы исчезли. Можно рендерить! Секундочку! Но ведь весь рендер занимает 5 секунд. А булеан 2 минуты. Да. Но ведь работает. Нет. Спасибо, но нет.
Я так и не смог решить задачу с разницей в отрисовке одинакового шейдера для частиц и сфер. В общей сложности я пытался решить эту задачку один месяц. В итоге я прекратил все попытки и отказался от сфер. Возможно, пост на форуме рендера помог бы, но я ограничился помощью русскоязычного сообщества — до кого мог дотянуться.
Очень часто в сцене используются одинаковые части. Скажем, шипы у вируса. Это же, по сути, один шип, который рандомно развёрнут и расставлен по сферической мембране. И если мы так сделаем, то в этом случае мы получаем экономию по памяти на рендере и шустрый вьюпорт. Для этого у нас есть instance-объекты. Правильно? Логично?
Я тоже так думал. И у меня ушёл ещё один месяц на злость, смирение, слёзы и принятие другой реальности.
В RedShift (у меня) инстансные объекты из частиц/сфер рендерятся вот так:
![RedShift. Слева без инстанс объектов. Справа с instance-объектами (сферы или частицы). RedShift. Слева без инстанс объектов. Справа с instance-объектами (сферы или частицы).](https://habrastorage.org/getpro/habr/upload_files/42c/e26/f84/42ce26f84108f976a9142e0f0afa1c5a.jpeg)
Видите? Свет. Слева он ровный и заполняющий. А справа он у каждого объекта свой и рандомно повёрнут. Хотя условия освещения в сцене одинаковые. Я не смог решить эту проблему. Кроме как отказаться от instance-объектов и упаковки. А учитывая, что атомов в сцене миллионы, то от сфер пришлось отказаться в пользу частиц. Памяти видеокарты (10Гб) не хватало. К слову, оперативной (64Гб) при таком подходе не хватало тоже.
![NVIDIA 3080 и RedShift. В умелых руках и 10Гб мало. Не instance-геометрия крашит рендер. NVIDIA 3080 и RedShift. В умелых руках и 10Гб мало. Не instance-геометрия крашит рендер.](https://habrastorage.org/getpro/habr/upload_files/e01/f73/b2c/e01f73b2c7523b462d5c9501dce97276.jpeg)
Уже после проекта мы обсудили эту особенность со Стасом Рыхликовым и он предположил, что дело в «нежности» объектов, которые мы копируем. О чём речь? Нужно убрать все ноды трансформаций и все другие ноды и тогда, возможно, всё будет хорошо.
К этому нужно добавить ещё одну особенность рендера на видеокарте. В случае с процессором я мог выделить нужные мне ядра, поставить приоритет и делать какие-то дела параллельно. Скажем, одновременно с рендером можно открыть вторую копию Houdini и решать там технические задачи.
При рендере на видеокарте так не получится. Рендер крашится. Или замедляется. Что, если подумать, логично. Но неприятно, да.
У меня не было цветового решения объектов. Я выкрашивал вирус в цвет окисленной меди (бирюзовый) и смотрел. Красиво? Красиво. А остальные объекты в какой цвет красить будем? И нужна цветовая гармония, настроение. Я остановился вот на такой палитре.
![Цветовая палитра ролика. Цветовая палитра ролика.](https://habrastorage.org/getpro/habr/upload_files/aab/237/d8e/aab237d8ee1a9461ec339829396a0d9a.jpeg)
И я нашёл решение, которое мне очень нравится. В жизни объекты, которые мы видим в ролике, настолько малы. что они меньше длины световой волны. Поэтому они не окрашиваются в цвета. Они чёрно-белые. Исключение составляет клетка. Она достаточно большая и уже может окрашиваться. Фотографии микроскопии, которые мы видим, — раскрашены вручную. Я люблю чёрно-белую фотографию. Она даёт пространство воображению. В том числе и поэтому почти все рендеры в ролике — чёрно-белые. Раскрашивал я их на монтаже. И такой подход, конечно, даёт огромное пространство для цветового решения объектов.
Ниже финальные рендеры из проекта. В оригинале рендеры в 2к. Для уменьшения трафика размер картинок уменьшен до 1к.
![NVIDIA 3080. Redshift. Финальный рендер 2к. Атомарная модель коронавируса. Время рендера до 3 минут. NVIDIA 3080. Redshift. Финальный рендер 2к. Атомарная модель коронавируса. Время рендера до 3 минут.](https://habrastorage.org/getpro/habr/upload_files/ef2/7bd/09e/ef27bd09ebbf32f5dbba08682dc45144.jpeg)
![NVIDIA 3080. Redshift. Финальный рендер 2к. Атомарная модель коронавируса. Время рендера до 4х минут. NVIDIA 3080. Redshift. Финальный рендер 2к. Атомарная модель коронавируса. Время рендера до 4х минут.](https://habrastorage.org/getpro/habr/upload_files/91b/565/9fc/91b5659fc781bc657138b5f99e1701ca.jpeg)
![NVIDIA 3080. Redshift. Финальный рендер 2к. Эпительная клетка «облепленная» экземплярами коронавируса(порядка.150 000). Время рендера до 2 минут. NVIDIA 3080. Redshift. Финальный рендер 2к. Эпительная клетка «облепленная» экземплярами коронавируса(порядка.150 000). Время рендера до 2 минут.](https://habrastorage.org/getpro/habr/upload_files/442/62e/320/44262e32045153d52551e75cb0f293ff.jpeg)
![NVIDIA 3080. Redshift. Финальный рендеры 2к. SSS + DOF + Motion Blur. 1-4 минуты на кадр. Виньетирование добавлено в постпродакшене. NVIDIA 3080. Redshift. Финальный рендеры 2к. SSS + DOF + Motion Blur. 1-4 минуты на кадр. Виньетирование добавлено в постпродакшене.](https://habrastorage.org/getpro/habr/upload_files/bd1/aec/39b/bd1aec39b2e13a75af7d85fc02af4d8d.jpeg)
Я оценил мощь 3080 и RedShift, когда нужны были тесты, драфты, финальные рендеры и потом куча перерендеров. Дело не только в скорости. Фактически, финального качества ролик считался те же 7 дней. Только это уже был ролик не в одну минуту, а в три с половиной. Такая скорость позволяет перманентно находится внутри проекта. Не выпадать из него на время рендера. И это очень и очень ускоряет работу. Я сэкономил огромное количество времени на том, что тесты считались по 5 секунд кадр, а не 30. Кажется и то и то отлично. Только в первом случае для секвенции в 200 кадров (менее 10 секунд) я получал результат через 20 минут. А во втором почти через 2 часа. И в этом важнейшее отличие между процессором и видеокартой.
И не забываем о масштабируемости. У меня одна видеокарта. Если их будет больше, то время рендера падает линейно. А при подключении NVLink память у видеокарт (не более двух) становится общей — это очень классный бонус!
Для меня возврат к рендеру на процессоре в схожих задачах он, ну, невозможен, наверное. Процессор апгрейдить уже некуда (16 ядер AMD 3950). А вот видеокарт мало не бывает.
Houdini
Я люблю Houdini. И люблю решать задачки. И технические задачи, в отличие от задач эстетических, могут решаться участниками одинаково. Скажем решение, уравнения вида x = 5 — 2 будет иметь одинаковый вид для любого участника процесса решения. Школьница, студент, мама и аспирант решат его одинаково. Более того, решение будет понятно и принято всеми.
А вот с эстетической задачей дела обстоят куда сложнее. Задача. Нарисуйте бублик и покрасьте его. И для всех и каждого решение этой задачи будет различным. И, что удивительно, каждое решение будет верным. И тут вопрос — кто у нас заказчик.
Поэтому решение технических задач мне нравится. А пиксельхантинг — нет.
И я никогда не отгадал бы, какая самая сложная задача будет на этом проекте. Наверное, на попытку её решить у меня ушло месяца два. И я вижу, что ещё можно улучшить. И предполагаю, что знаю, как её можно решить по другому.
Клеточная мембрана. Вот как она выглядит на картинке из Википедии.
![Википедия. Клеточная мембрана. Википедия. Клеточная мембрана.](https://habrastorage.org/getpro/habr/upload_files/f49/6a6/53c/f496a653c395e7d86f4d5a8c7f5674b5.jpeg)
Она двухслойная. Мембрана состоит из различных липидов, но в основном — фосфолипидов. Таких «головастиков», головы наружу (они гидрофильные), а хвостами внутрь (гидрофобные). И этих фосфолипидов очень и очень много. Плюс мембрана изгибается — «дышит». Это даже на рисунке видно. И есть множество всяких каналов, которыми для моего рассказа можно пренебречь.
Так вот изгиб мембраны, фосфолипиды, их рандомность, дрожание, бислойность — всё это делается влёт и очень быстро. Проблемы и сложности возникают, когда нам нужно показать эндоцитоз — способ проникновения вируса в клетку.
![Эндоцитоз. Способ проникновения вируса в клетку. Эндоцитоз. Способ проникновения вируса в клетку.](https://habrastorage.org/getpro/habr/upload_files/516/f93/bbc/516f93bbc97620af17de9d99d6a20e8e.jpeg)
Давайте представим, что мы шариком тычем в тонкий лист картона. Картон, как не особо эластичная поверхность, порвётся. Но клетка не рвётся. Значит она эластичная. Хорошо. Заменим лист картона на что-то тягучее. Жвачку. Или слайм. Теперь наш шарик прекрасно входит и ничего не рвётся. Но погодите-ка. Ведь жвачка и слайм тянутся и в месте натяжения толщина вещества истончается. И, во-вторых, не происходит окутывания шарика. Эээ… значит мембрана по свойству не плотное вещество, но и не тянется. И тут я словил инсайт. Мембрана — жидкость! Именно этим объясняется её одинаковая плотность и не растяжимость. И теперь, если это жидкость, значит всегда и везде расстояние между фосполипидами одинаково. Жидкость не сжимаема.
И получается, что вирус растягивает мембрану, но одновременно с этим происходит её восполнение. Фосфолипиды как бы прибывают извне. Текут. И вот эту задачу — растяжение, но с сохранением расстояния между фосфолипидами, мне и нужно было решить.
К этому прибавляется проблема свойственная 3d-анимаций — фликинг или мерцание кадров. Это явление возникает, если у нас низкие настройки сглаживания рендера или меняется численность объектов. На статичной картинке этого эффекта, конечно, не видно.
Я решил обе эти задачи. Но появился, как я его называю, эффект лего. Ступеньки. От них можно избавиться, но тогда будет фликинг. Я выбрал ступеньки.
Возможно, что задачу можно решить динамикой, т.е. буквально симуляцией тонкой жидкостной плёнки. И да, когда я говорю, что решал эту задачу два месяца, то одновременно с этим я решал и массу других задач. Помните про суп?
Озвучка
В первом ролике мысль добавить диктора появилась, когда монтаж и чистовой рендер уже был закончен. Это очень сильно ограничивало гибкость и голос фактически писался под видео.
Поэтому в нашем втором ролике к работе со звуком я приступил задолго до финальной версии. Мы заранее приняли решение, что озвучка будет на английском. Рендеры считались в 960х540 в драфтовом качестве. И я держал в голове возможность отрезать или наращивать секвенции.
Я сделал четвертую версию ролика. Мы написали текст на английском для озвучки. Затем пригласили в команду переводчика - Александру.
Дальше молекулярный биолог и переводчик вместе работали над текстом. Я никак не участвовал и не вмешивался. Забрав конечный результат я отдал его на озвучку женщине-роботу. Параллельно я отправил запрос на озвучку живым нативным диктором. И ждал ответа по стоимости работ.
Когда женщина-робот озвучила текст я сел за монтаж. Видео и звук. О нет! Эти ребята совсем не хотели дружить. Даже мои возможности примирить их ускорением или замедлением секвенций не особо помогали. В озвученных предложениях появились многозначительные паузы или предложения наступали друг другу на ноги. Нужно всё перемонтировать. Я очень расстроился.
Пришёл ответ по стоимости участия живого диктора. 27000 рублей. Таких финансовых возможностей у меня не было. Я ещё немножко огорчился. Потом ещё. Пока увы совсем ничего не осталось.
Было решено оставить голос робота-женщины. И я приступил к новой версии монтажа.
DaVinchi Resolve
Монтаж и звук для первого ролика сделан в Blender. После этого опыта я возжелал сменить коня. А какие есть варианты? Чтобы под Windows. При этом композитинг и монтаж — это разный софт.
After Effects + Premiere Pro.
Sony Vegas + ?
Davinci Resolve + Fusion.
Nuke + ?
Я выбрал Resolve. Во-первых, это бесплатно. У производителя есть фришная версия софта. В платной добавлена куча плагинов, которые мне не нужны. Fusion интегрирован с Resolve. Поэтому в одном софте можно делать и композитинг и монтаж. Необходимости перекидывать из одного софта в другой, как было бы во всех остальных вариантах — нет. Fusion — нодовая составляющая, что близко к концепции Houdini. Во-вторых, — мне очень-очень понравился сам софт.
![DaVinci Resolve. Вот, как выглядит четвёртая версия ролика. Проект мы закончили на шестой. DaVinci Resolve. Вот, как выглядит четвёртая версия ролика. Проект мы закончили на шестой.](https://habrastorage.org/getpro/habr/upload_files/805/bfd/2e1/805bfd2e11703edd993d3e89497ff96d.jpeg)
Resolve прекрасно работает с exr. Очень быстро рендерит секвенции на таймлайне.
Вот пример раскрашенного рендера. Помните, я в части про RedShift рассказывал, что почти все рендеры чёрно-белые?
![DaVinci Resolve. Коронавирус. Раскрашенный чёрно-белый рендер. DaVinci Resolve. Коронавирус. Раскрашенный чёрно-белый рендер.](https://habrastorage.org/getpro/habr/upload_files/a78/15c/cc5/a7815ccc50184b14e553c3ab43b89710.jpeg)
![DaVinci Resolve. Коронавирус и поверхность клетки. Вирус прикрепляется к АСЕ2 рецептору. DaVinci Resolve. Коронавирус и поверхность клетки. Вирус прикрепляется к АСЕ2 рецептору.](https://habrastorage.org/getpro/habr/upload_files/10a/d21/089/10ad2108926dd5597292e41544278dd5.jpeg)
![DaVinci Resolve. Эндоцитоз. Коронавирус попадает в клетку. DaVinci Resolve. Эндоцитоз. Коронавирус попадает в клетку.](https://habrastorage.org/getpro/habr/upload_files/78a/ca7/a66/78aca7a6623d8e2fde54589842e68adf.jpeg)
![DaVinci Resolve. Иммуноглобулин IgG. DaVinci Resolve. Иммуноглобулин IgG.](https://habrastorage.org/getpro/habr/upload_files/9df/3c3/b78/9df3c3b788a6503a2ed1fa0e0e35fe5d.jpeg)
![DaVinci Resolve. Иммуноглобулин IgG. DaVinci Resolve. Иммуноглобулин IgG.](https://habrastorage.org/getpro/habr/upload_files/898/67c/bf1/89867cbf11c896aaad7379cdc55b9a90.jpeg)
Что дальше?
Хочу выразить благодарность всем, кто участвовал в проекте и всем, кто помогал мне в чатиках, когда я не знал, как решить задачу или сталкивался с чем-то странным. Я постарался никого не забыть и упомянуть всех в титрах и благодарностях к ролику.
Я устал. Но это приятная усталость завершения. Без разрешения себе и другим ошибаться я устал бы ещё больше. И я вижу, что столь сложные и длительные (по таймингу) проекты требует большего участия, чем пара часов в день.
Я хотел добавить в название статьи фрактальность. Причём же здесь фрактальность? Ролик же про коронавирус и иммуноглобулин. Ну да. Но сколько можно?
Когда я решаю какую-либо задачу, то создаю некую модель реальности. Скажем мембрана клетки. Достаточно ли изобразить её ровной поверхностью, которую мы гнём? Достаточно. Но давайте приблизимся. И уже нужны фосфолипиды. Хорошо. А если мы захотим сделать сечение? Тогда нужно показать бислойность мембраны. А если добавить эндоцитоз? Тогда нужно сделать жидкую мембрану.
И вот это бесконечное погружение внутрь. Фрактальность. На следующем уровне абстракции понадобится подключение динамики Houdini. Чтобы фосфолипиды учитывали положение соседей и не протыкали друг друга. Погрузившись ещё глубже нам понадобится сторонний софт, занимающийся молекулярной динамикой: GROMACS, CHARMM, NAMD и другие. Копнув еще глубже, мы увидим, что атомы — это, оказывается, совсем не шарики.
Мы очень сильно выросли на этом проекте. И видим куда расти дальше. И хотим этого.
P.S.
Если у вас есть задачи, в которых мы вместе можем достичь большего - напишите мне.
Пока я работал над статьёй закончился конкурс на Биомолекула. Мы участвовали с нашим первым роликом. И выиграл приз — годовую подписку на OctaneRender.