<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Это надо закэшить</title><subtitle>Твой любимый канал о CG, от супервайзера 0101 Production.
Мысли вслух о рекламе, нейросетях, индустрии CG и всём, всём, всём.</subtitle><author><name>Это надо закэшить</name></author><id>https://teletype.in/atom/lets_cache</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/lets_cache?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@lets_cache?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lets_cache"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/lets_cache?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-06-26T16:23:43.593Z</updated><entry><id>lets_cache:cgi_math_01</id><link rel="alternate" type="text/html" href="https://teletype.in/@lets_cache/cgi_math_01?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lets_cache"></link><title>Компьютер грефикс, матеметикс! </title><published>2024-10-24T10:41:51.730Z</published><updated>2024-10-25T08:21:06.090Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/02/28/0228ecfe-9bba-43fa-b1a4-b512611e18cb.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ef/e4/efe4d079-1ed3-40f7-bfa4-3732f61c7f98.png&quot;&gt;Школа: Где мне вообще эта математика может пригодиться? Было? Было. А теперь, когда нужно сделать простой бленд текстур ты используешь миллионы нод, не понимая, почему все так долго работает или вообще лезешь в другой софт. Спокойно, сейчас мы со всем разберемся.</summary><content type="html">
  &lt;h3 id=&quot;RJjx&quot;&gt;Как с помощью математики получать красивые картинки - разбираемся на примере C4D + RS (Часть 1 - Math)&lt;/h3&gt;
  &lt;p id=&quot;1ik4&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;OOwB&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ef/e4/efe4d079-1ed3-40f7-bfa4-3732f61c7f98.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5ZDf&quot;&gt;Школа: Где мне вообще эта математика может пригодиться? Было? Было. А теперь, когда нужно сделать простой бленд текстур ты используешь миллионы нод, не понимая, почему все так долго работает или вообще лезешь в другой софт. Спокойно, сейчас мы со всем разберемся.&lt;/p&gt;
  &lt;p id=&quot;g9Tx&quot;&gt;Сразу несколько оговорок:&lt;/p&gt;
  &lt;ol id=&quot;kQiz&quot;&gt;
    &lt;li id=&quot;mzTZ&quot;&gt;Это не ультимативный гайд по всем Math нодам в мире, для этого у каждого софта есть целая страница в хелпе. Мы же с вами поговорим о наиболее полезных из них, а также о том как их использовать в реальном CG бою.&lt;br /&gt;&lt;/li&gt;
    &lt;li id=&quot;rh4w&quot;&gt;По моему мнению, невозможно рассказывать про Math ноды в отрыве от работы с цветом (речь не про цветовое колесо, а именно про способы блендинга и т.д.). Поэтому, весь материал будет переплетен с Color нодами в угоду большей эффективности. Плюс, у этой статьи будет продолжение, в котором мы отдельно подробнее рассмотрим работу с Color нодами.&lt;br /&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;blockquote id=&quot;KBwr&quot;&gt;Важно: большинство людей считают, что разбираться с математикой в работе это скучно и сложно. Но поверьте - как только вы поймете основы, это сильно развяжет руки в креативных задачах.&lt;/blockquote&gt;
  &lt;p id=&quot;bz2s&quot;&gt;Ну, а чтобы не пропустить еще больше полезных материалов - подписывайтесь на меня в &lt;a href=&quot;https://t.me/lets_cache&quot; target=&quot;_blank&quot;&gt;телеграм.&lt;/a&gt; Там вас ждут: новости из мира CG, обсуждения и разборы мощных кейсов, мысли на тему рекламы и кино.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;v9eP&quot;&gt;&lt;/h3&gt;
  &lt;h2 id=&quot;T9H5&quot;&gt;Начнем с базы:&lt;/h2&gt;
  &lt;p id=&quot;oIDW&quot;&gt;Как мне кажется, основа для понимания математики в CG, это понимание того, каким образом пиксель превращается в число (предвкушаю духовку в комментариях). Если объяснять на пальцах:&lt;/p&gt;
  &lt;ul id=&quot;y3ke&quot;&gt;
    &lt;li id=&quot;sGVo&quot;&gt;ЧБ изображения (любые процедурные шумы или большая часть текстур) - в них черный цвет это 0, а белый цвет это 1. Это принципиально важный момент, его держим в голове&lt;/li&gt;
    &lt;li id=&quot;RkhM&quot;&gt;Цветные изображения - тут логика та же, но каждый пиксель представляется вектором из 3х значений - R, G, B&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Gfb7&quot;&gt;Так вот Math и Color ноды позволяют нам каким-то образом менять числовые значения (смешивая их между собой, вычитая и прибавляя одно с другим и т.д.), чтобы затем увидеть результат этого преобразования на рендере. И не имеет значения, вы работаете с текстурами, вертекс атрибутами или с полями - этот принцип работает везде одинаково, в этом и есть его преимущество и красота.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;RCHw&quot;&gt;Повторюсь, если вы не доктор математических наук - знать все ноды вам не нужно, достаточно некоторых базовых и понимания того, где и для чего они нужны.&lt;/p&gt;
  &lt;p id=&quot;POY4&quot;&gt;Как по мне, большая часть работы с материалами сводится к блендингу. Так вот, смешивание текстур\шейдеров\материалов между собой (он же блендинг) происходит как раз на основе двух вещей:&lt;/p&gt;
  &lt;ol id=&quot;Y5kw&quot;&gt;
    &lt;li id=&quot;QN0h&quot;&gt;Тех указаний что мы даем ПО.&lt;/li&gt;
    &lt;li id=&quot;MJkO&quot;&gt;Внутренней математики этого ПО.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Sk1D&quot;&gt;И если на второе мы, зачастую, повлиять не можем, то первое зависит только от нас. Давайте разбираться с тем, что мы можем этой софтине такого сказать, чтобы она нас поняла.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;RBQD&quot;&gt;1. Add&lt;/h2&gt;
  &lt;p id=&quot;e6VQ&quot;&gt;Add или сложение. Нода принимает два параметра и складывает их между собой. Зачем оно нужно? В большинстве случаев готовая текстура (особенно полученная бесплатно) выглядит стоково, так как ее также скачал не ты один. Тоже самое и с процедурными эффектами, особенно шумами. Даже средней руки CG Artist сможет легко заметить где дизайнер поленился и вместо текстуры просто пихнул процедурный шум.&lt;/p&gt;
  &lt;p id=&quot;Vz1l&quot;&gt;Чтобы с этим бороться, можно использовать наложение нескольких текстур\шейдеров друг на друга, просто складывая их между собой. Так мы можем контролировать количество деталей и управлять ими (большое\среднее\малое, иф ю ноу). &lt;/p&gt;
  &lt;p id=&quot;FAxg&quot;&gt;Пример на огурчиках снизу:&lt;/p&gt;
  &lt;figure id=&quot;wWfO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/56/60/5660ec85-3727-4f5f-b059-d2305761ee2a.png&quot; width=&quot;1683&quot; /&gt;
    &lt;figcaption&gt;Один Noise, поданный в Bump и Roughness - скука смертная.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;fVv6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5a/01/5a01a5bd-710c-497f-a60e-1eef8b9dc487.png&quot; width=&quot;1683&quot; /&gt;
    &lt;figcaption&gt;Тот же Noise, но к нему добавлены еще 2 с детализацией разного уровня и все это снова подано в Bump и Roughness. Теперь глазу есть куда смотреть, но еще есть с чем поработать, об этом дальше.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;EUGJ&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;IuX7&quot;&gt;2. Multiply&lt;/h2&gt;
  &lt;p id=&quot;vfR3&quot;&gt;Также известный как умножение. В основном, используется для создания масок. Помните, мы говорили что черный это 0, а белый это 1? А если умножать на ноль - получим ноль, если умножать на 1 - получим исходное значение. Так, получается можно взять одну текстуру и перемножить ее на вторую, тем самым сделав из нее маску.&lt;/p&gt;
  &lt;p id=&quot;2Btx&quot;&gt;Пример 1, самый избитый: вы взяли Curvature и перемножили ее на какой-то шум - получили повреждения на краях объекта.&lt;/p&gt;
  &lt;figure id=&quot;HqA6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/15/ad/15adea89-71a2-4b0a-8641-ec1711dc9a4c.png&quot; width=&quot;2176&quot; /&gt;
    &lt;figcaption&gt;Выглядит все еще стоково, а все потому что надо помнить про логику из первого пункта - надо делать сложнее.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FnYL&quot;&gt;Пример 2: Возьмем наш прошлый плейн и перемножим его на маску шума, там самым получив участки с различным рельефом. Кстати, +- по такому принципу создается всеми любимый процедурный материал &amp;quot;мокрый асфальт&amp;quot;.&lt;/p&gt;
  &lt;figure id=&quot;FpRi&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/76/81762dbd-eea9-44e9-ba42-0931388f2281.png&quot; width=&quot;1683&quot; /&gt;
    &lt;figcaption&gt;Все тот же материал из первого пункта, но теперь умноженный на маску, которая регулирует где шум сильнее, а где слабее. Тем самым добавляется еще один уровень детализации.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;XzjR&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;lgXR&quot;&gt;3. Clamping\ranging&lt;/h2&gt;
  &lt;p id=&quot;DQtF&quot;&gt;Итак, мы с вами выяснили как важны для нас 0 и 1. Но, должен признаться, все предыдущие пункты я вам не договаривал про последний в этой статье, но не последний по важности, пункт. &lt;/p&gt;
  &lt;p id=&quot;zxfU&quot;&gt;Это и есть Clamping - то есть изменение входных значений нуля и единицы. Давайте на простом примере - шуме, поданном в обычную градиентную рампу:&lt;/p&gt;
  &lt;figure id=&quot;pQrM&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ca/0a/ca0a9371-78a3-49b7-b0bc-4b0c69113e5d.png&quot; width=&quot;1199&quot; /&gt;
    &lt;figcaption&gt;1 - Шум в рампе без изменений, 2 и 3 - Изменение точек черного и белого.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;6K9h&quot;&gt;Clamping и Ranging, позволяют вам изменять входные параметры черного и белого в изображении, для дальнейшей работы. Так, я на прошлых этапах поджимал воздействия шумов друг на друга (изменяя количество белого и черного в шумах), чтобы изменить количество деталей шумов или управлять маской.&lt;/p&gt;
  &lt;h3 id=&quot;CALP&quot;&gt;Зачем еще: &lt;/h3&gt;
  &lt;ul id=&quot;9HER&quot;&gt;
    &lt;li id=&quot;A56v&quot;&gt;Всегда можно использовать одну текстуру для нескольких задач. Например, заремапить Roughness и подать его в Displacement\Bump, чтобы более шороховатые участки также имели неровности.&lt;/li&gt;
    &lt;li id=&quot;uroS&quot;&gt;Вы скачали текстуру (очень часто сталкиваюсь с таким у Displacement map), а она недостаточно контрастная, так что деталей не видно. Не проблема - берем и поджимаем значения 0 и 1 с помощью рампы, как на скрине выше, тем самым делая текстуру контрастнее.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;CKfY&quot;&gt;Делаеть все это можно целой кучей способов, вот только некоторые из них:&lt;/p&gt;
  &lt;ul id=&quot;fG0u&quot;&gt;
    &lt;li id=&quot;DgYR&quot;&gt;Ramp - что Scalar Ramp, что ЧБ из примера выше. Работают +- одинаково, кому как удобнее.&lt;/li&gt;
    &lt;li id=&quot;tb7f&quot;&gt;Change Range - позволяет напрямую указывать пороговые значения на входе и указывать какие значения подавать на выход (Minimax).&lt;/li&gt;
    &lt;li id=&quot;AXeh&quot;&gt;Напрямую в настройках некоторых нод - например, у шума это параметры цветов + low\high clip&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;gM1y&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;jp7j&quot;&gt;Вектора:&lt;/h3&gt;
  &lt;p id=&quot;zfSH&quot;&gt;В самом начале я вам написал что еще существуют вектора. Так вот, для них все работает абсолютно идентично, только к нодам добавляется приписка Vector, то есть нода Add становится Vector Add.&lt;/p&gt;
  &lt;p id=&quot;H7Km&quot;&gt;Для чего? Потому что, как я и говорил, цвет, к примеру, это вектор из 3х параметров (R,G,B) и если подать его в ноду Add, то ваш цвет превратится в ЧБ (так как программа автоматически перегонит ваши параметры из Vector в Float параметр). Чтобы этого не произошло - используйте Vector Add (или векторный аналог нужной вам операции). Да и вообще, если что-то не работает - пробуйте изменить тип операции или параметров с которыми работаете. Сейчас все типы параметров разбиты по цветам, однако понимание того, что к чему, все равно приходит с опытом.&lt;/p&gt;
  &lt;p id=&quot;4OmW&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;U7K5&quot;&gt;Реальный пример:&lt;/h2&gt;
  &lt;p id=&quot;nXXL&quot;&gt;Кто-то скажет:&lt;/p&gt;
  &lt;blockquote id=&quot;2OCi&quot;&gt;&amp;quot;Егор, все эти твои шумы это все хорошо, но как мне использовать все эти нули и единицы в реальной работе?&amp;quot;&lt;/blockquote&gt;
  &lt;p id=&quot;QPE3&quot;&gt;Я не люблю материал оторванный от реальной жизни, так что вот вам пример с одного из наших проектов: взяли модельку дрона для проекта, а у нее из текстур только Albedo.&lt;/p&gt;
  &lt;figure id=&quot;qyiK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d9/0f/d90f7d56-3af4-423e-9bb9-58fe8a20cc3e.png&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Уродливый Уитли (похож, не так ли?)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FRLj&quot;&gt;А теперь давайте с ним слегка поработаем:&lt;/p&gt;
  &lt;ol id=&quot;7beY&quot;&gt;
    &lt;li id=&quot;Z7fn&quot;&gt;Берем его карту Albedo и прогоняем через рампу, получаем отдельные зоны снаружи и внутри. Можно повторить несколько раз, для разных эффектов.&lt;/li&gt;
    &lt;li id=&quot;oqxs&quot;&gt;Теперь увеличиваем детализацию, используя наши карты для зонирования: где-то добавим металлик, покрасим в разные цвета, добавим потертостей.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;m9NG&quot;&gt;На выходе получается вот такой, все еще уродливый, но уже более интересный Уитли:&lt;/p&gt;
  &lt;figure id=&quot;nE2D&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/65/d3/65d3b1d6-092f-4eec-9ff9-bf6f3ca8f90e.png&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rvFy&quot;&gt;И всего этого мы с вами добились Math нодами, процедурными шейдерами и всего лишь 1 картой Albedo, не покидая при этом Cinema 4D.&lt;/p&gt;
  &lt;p id=&quot;4zlx&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;rvcJ&quot;&gt;Резюмируя:&lt;/h2&gt;
  &lt;p id=&quot;WNJH&quot;&gt;Мы все с вами художники и порой лень\страх не дают нам разбираться в технических аспектах. Но, как и было сказано в начале, тут нет ничего сложного, однако это очень сильно развязывает руки для творческих экспериментов. Самое сложное - это не научиться пользоваться этими приемами, а научиться видеть, где их нужно применять.&lt;/p&gt;
  &lt;p id=&quot;MkKn&quot;&gt;Конечно, данный подход не может полноценно заменить вам работу с хорошими текстурами и точно не убивает Substance\Photoshop\etc. Однако, понимание того, как оно работает под капотом позволяет не изобретать велосипед, а сосредоточиться на креативных задачах.&lt;/p&gt;
  &lt;p id=&quot;vDii&quot;&gt;Это была первая часть материала, о том как использовать математику для получения классных рендеров. Получилось достаточно объемно, поэтому я решил разбить его на 2 части и в следующий раз мы поговорим о работе с цветом. &lt;/p&gt;
  &lt;p id=&quot;CCGw&quot;&gt;И конечно, чтобы не пропустить еще больше полезных материалов - подписывайтесь на меня в &lt;a href=&quot;https://t.me/lets_cache&quot; target=&quot;_blank&quot;&gt;телеграм.&lt;/a&gt; Там вас ждут: новости из мира CG, обсуждения и разборы мощных кейсов, мысли на тему рекламы и кино. Всем классных рендеров и ловите тефтелю! ☄️&lt;/p&gt;

</content></entry></feed>