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

]]></content:encoded></item></channel></rss>