#статьи
Разбираемся в более продвинутых понятиях и инструментах.
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.
Специалист по компьютерной графике, оптимизации и автоматизации проектов. Автор серии уроков по Blender.
Год назад в рамках своего YouTube-канала Андрей записал подробный курс по Blender, в котором работает более 7 лет. Обучение начинается с основ, рассчитанных в первую очередь на новичков, но последующие уроки могут быть интересны и для продвинутых пользователей — в них Андрей затрагивает скрытые возможности софта. Сам материал записывался в версии программы 2.90.1, но знания актуальны как для ранних версий (от 2.80), так и для последней (3.0.0).
Делимся основными тезисами третьего и четвёртого видеоуроков, посвящённых структуре, оптимизации и рандомизации объектов через инструменты Blender и скрипты Python. В предыдущих уроках мы рассматривали интерфейс программы и простые операции, а также основы моделирования.
Третий урок по Blender от Андрея СоколоваЧетвёртый урок по Blender от Андрея Соколова
Как известно, при создании нового проекта в сцене по умолчанию появляется куб. Это объект со своими данными, которые можно увидеть, если кликнуть на стрелку рядом с объектом Cube в Структуре проекта (Outliner). Данные объекта Cube — это меш Cube (иконка зелёного треугольника). Объект и его меш — это разные элементы.
Отображение объекта и меша в коллекции сцены. Для наглядности объект подчёркнут оранжевым цветом, меш — зелёным. Коллаж: Леон Балбери для Skillbox Media
У объекта есть название и характеристики: положение, вращение, масштаб и размеры. Они находятся на панели Трансформация (Transform) в верхней вкладке Элемент (Item) — саму панель можно легко вызвать горячей клавишей N.
Вызов панели Трансформация (Transform)
Данные меша можно посмотреть в Режиме редактирования (Edit Mode): здесь во вкладке Трансформация — Элемент появятся новые данные, в том числе Медиана (Median). Эта характеристика отображает координаты среднего значения точек.
Координаты меша во вкладке Медиана (Median). Скриншот: Леон Балбери для Skillbox Media
Видоизменим и переместим меш во вьюпорте и обратим внимание на его координаты. Затем вернёмся в Объектный режим (Object Mode) и обнаружим, что координаты объекта остались прежними (во вьюпорте можно заметить его ориджин — оранжевую точку, которая отвечает за позицию и центр объекта). Так мы видим, что объект и меш — две разные структуры в Blender.
Объект и меш, перемещённый в сторону. Скриншот: Леон Балбери для Skillbox Media
Теперь выясним, почему эта информация важна для пользователя. Для наглядности переименуем объект Cube в Cube object (двойной клик по названию в структуре проекта), а его меш — в Cube mesh. Эти элементы связаны между собой. Их отношения напоминают связь Parent — Child («родитель» — «ребёнок»), где Cube mesh будет «ребёнком» Cube object. При этом у объекта может быть одновременно только один «ребёнок», а меш может быть «ребёнком» и других объектов.
Создадим новый куб с помощью Shift + A. Как и в случае с первым кубом, у нового объекта будет свой меш. Но, перейдя во вкладку Настройки данных объекта (Object Data Properties), новый меш можно заменить на первый, который мы ранее переименовали в Cube mesh.
Замена меша у нового объекта. Скриншот: Леон Балбери для Skillbox Media
Таким образом, у двух объектов будет один и тот же меш (чуть ниже объясним, чем это полезно).
Примечание
На скриншоте два объекта после этой операции выглядят по-разному. Это связано с тем, что их позиция и настройки отличаются. Если убрать все изменения во вкладке Трансформация — Элемент, то получится два одинаковых куба.
Проведём ещё один эксперимент. Удалим предыдущие объекты, добавим новый куб и зададим его мешу новое название, например, cube mesh main. Он будет главным мешем для будущих операций.
Зайдём во вкладку Наложения вьюпорта (Viewport Overlays) — в первом уроке мы включали в ней ось Z, — и отметим галочкой пункт Статистика (Statistics). В левом верхнем углу появится информация о сцене.
Местоположение опции «Статистика» и список данных. Скриншот: Леон Балбери для Skillbox Media
Статистика показывает, что в сцене находится:
- 3 Объекта (Objects) — 1/3 означает, что один из них выделен;
- 8 Вершин (Vertices);
- 12 Рёбер (Edges);
- 6 Граней (Faces);
- 12 Треугольников (Triangles).
При создании нового куба или его дублировании (Shift + D) количество всех показателей геометрии увеличится вдвое, поскольку меш объекта также продублируется. Но если заменить меш нового объекта на предыдущий (в данном случае cube mesh main), то показатели не увеличатся.
Комбинация клавиш Alt + D упрощает процесс — с её помощью можно сразу же создавать новый объект с исходным мешем. Таким способом вы можете быстро сгенерировать множество идентичных объектов, сохранив начальное количество полигонов.
Клонирование объектов через Alt + D
Эта операция значительно экономит время и ресурсы при просчёте сцены. Дело в том, что у каждого полигона существует множество внутренних характеристик: нормаль, шейдинг и прочие данные, которые не так очевидны на первый взгляд, но важны при рендеринге. Соответственно, графический движок должен просчитать все эти показатели для каждого полигона в сцене. При использовании одинаковых данных время расчёта значительно сокращается, даже если они принадлежат разным объектам.
Попробуем усложнить задачу: выделяем все объекты в сцене и копируем их через Alt + D несколько раз. Рекомендуем предварительно удалить или спрятать (H) камеру и источник света, чтобы случайно не создать их дубликаты.
Группа объектов, скопированная несколько раз. Скриншот: Леон Балбери для Skillbox Media
Статистика на скриншоте показывает, что в сцене 310 объектов. Выделяем все объекты — это можно сделать при помощи клавиши A или окружности (Circle Select), вызвав инструмент кнопкой С и увеличив радиус колёсиком мыши. Если применить к одному из выделенных объектов модификатор Подразделение поверхности (Subdivision Surface) — о нём мы узнали во втором уроке, — количество граней увеличится. При наложении модификатора на все объекты в сцене сумма полигонов может вырасти до полумиллиона. Сделать это быстро можно при помощи горячих клавиш: Ctrl + 1, Ctrl + 2, Ctrl + 3 и Ctrl + 4 — для разных уровней сглаживания. Таким образом эффект от использования одних и тех же мешей пропадает, так как при использовании модификаторов происходит полный пересчёт геометрии объекта.
Примечание
Применить модификатор ко всем объектам можно и вручную — для этого его необходимо наложить на активный объект, выделить все остальные (A), нажать Ctrl + L и в открывшемся меню выбрать Copy Modifiers.
Обратный процесс работает аналогичным способом: удалив на активном объекте модификатор и применив Copy Modifiers, вы скопируете настройки на все выделенные объекты.
Увеличение количества полигонов с помощью модификатора «Подразделение поверхности» (Subdivision Surface)
Однако аналогичная операция возможна и внутри объекта. Отменяем модификатор через Ctrl + Z и переходим в режим редактирования. Выделив все полигоны (А), открываем меню инструментов через ПКМ (или W, если на правую кнопку мыши у вас назначено выделение) и выбираем опцию Подразделить (Subdivide). В нижнем левом углу вьюпорта появится вкладка с одноимённым названием. Открываем её и выставляем значение Гладкость (Smoothness) на 1, а Количество разрезов (Number of Cuts) на 4.
Увеличение количества полигонов через режим редактирования (Edit Mode)
В итоге получается почти тот же результат, что и при использовании модификатора через Ctrl + 4, но при этом сцена содержит 150 полигонов. Даже если продолжить дублирование с помощью Alt + D, количество граней останется прежним.
Если бы у каждого из 2156 объектов был свой меш, эта сцена насчитывала бы около 1 млн полигонов. Скриншот: Леон Балбери для Skillbox MediaПродолжаем эксперимент дальше. Итог — 17 248 объектов, 150 граней
При этом можно выбрать любой объект, перейти в режим редактирования и изменить его на своё усмотрение, используя приёмы из второго урока. В этом случае все изменения будут автоматически применены и к остальным объектам, так как меш один и тот же.
Объекты после манипуляций в режиме редактирования (Edit Mode). Скриншот: Леон Балбери для Skillbox Media
А если один из объектов выделить в объектном режиме, то во вкладке Трансформация — Элемент ему можно задать уникальные параметры положения, вращения, масштабирования и размера по любой оси. В этом случае трансформация не затронет остальные объекты.
Трансформация одного объекта. Скриншот: Леон Балбери для Skillbox Media
Получается, что при создании масштабных сцен можно обойтись одним мешем. Даже при 17 248 объектах статистика показывает, что в сцене всего 150 полигонов. При использовании отдельных мешей для каждого объекта их было бы порядка 8 млн. Это пример оптимизации.
Данный приём аналогично работает и с целыми коллекциями (о них мы узнали в первом уроке). Предположим, у вас есть коллекция из восьми разных моделей домов, которые вы хотите продублировать. При обычном копировании полигонаж сцены будет расти в геометрической прогрессии. Однако если щёлкнуть правой кнопкой по коллекции и выбрать Экземпляр в сцену (Instance to Scene), то группа моделей продублируется. Ещё это можно сделать через меню Добавить (Shift + A) — Экземпляр коллекции (Add — Collection Instance). При этом у вас останется ровно столько же полигонов, сколько было раньше.
Примечание
Имейте в виду, что коллекции могут накладываться одна на другую. Если на первый взгляд в сцене не прибавилось объектов, просто проверьте структуру проекта — скопированные коллекции отобразятся там.
Чтобы разбить продублированную коллекцию на отдельные объекты, необходимо её выделить, зайти в меню Применить (Ctrl + A) — Сделать экземпляры настоящими (Apply — Make Instances Real).
Более подробная инструкция от 25games
Экономия полигонов влияет не только на скорость работы в программе, но и на рендеринг. Это особенно важно при работе над анимацией — на рендере каждого кадра можно сэкономить до нескольких минут.
Теперь попробуем изменить объекты не по отдельности, а при помощи встроенных инструментов Blender и скриптов Python.
Возвращаемся в объектный режим и выделяем все объекты (на всякий случай ещё раз убедитесь, что не захватили камеру и источник света).
В Blender существует такая функция, как поиск команды (клавиша F3). В поисковике находим Случайную трансформацию (Randomize Transform) и выбираем появившийся пункт (если в сцене очень много объектов, то придётся немного подождать).
В левой нижней части экрана появится одноимённая вкладка — в ней можно рандомизировать положение, вращение и размер объектов по всем трём осям. Возьмём для примера пункт Вращение (Rotation): если в первом поле выставить максимальное значение 180, то у каждого из объектов будет свой угол разворота по оси X от 0° до 360° (от −180° до 180°). Проведём ещё один эксперимент и выставим Масштаб (Scale) на 5 — в этом случае каждый отдельный объект изменит масштаб на случайное значение от 1 до 5. Если в сцене много объектов, то придётся снова подождать.
Результат изменения вращения объектов по оси X (180°) и их масштаба (5). Скриншот: Леон Балбери для Skillbox Media
Как вы могли заметить, проблема этой операции в том, что при огромном количестве объектов сцена обрабатывается довольно долго. Возможности Python, встроенные в Blender, могут значительно ускорить процесс рандомизации.
Возвращаемся на шаг назад, до того, как мы рандомизировали объекты при помощи Случайной трансформации (Randomize Transform). Для начала поместим в отдельную коллекцию только те объекты, которые мы хотим рандомизировать (в данном случае кубы). Переименуйте её, например, в Cubes — это название мы в дальнейшем сможем использовать в коде как идентификатор коллекции.
Чтобы открыть консоль Python, наведите курсор на нижний край окна вьюпорта и аккуратно потяните вверх. В новом окне нажмите на Тип редактора (Editor Type) и выберите Консоль Python (Python Console).
Вытягивание нового окна и выбор консоли Python
Рандомизация в Python происходит с помощью модуля random. Импортируем модуль в рабочее пространство с помощью команды import и нажимаем Enter для подтверждения строки. После подключения модуля в Blender программа сможет обращаться к его функционалу. Модуль random по умолчанию входит в ту версию Python, которая поставляется вместе с Blender, и после импортирования программа может обращаться к нему и его методам.
>>> import random
>>>
Модуль random — это большой класс со множеством методов и подклассов. Их можно посмотреть, набрав в строке random. (точка после названия модуля или класса даёт доступ к его внутренней иерархии) и нажав Tab (в версиях ранее 2.82a — Ctrl + Space).
>>> random.
BPF
LOG4
NV_MAGICCONST
RECIP_BPF
Random(
SG_MAGICCONST
SystemRandom(
TWOPI
betavariate(
choice(
choices(
expovariate(
gammavariate(
gauss(
getrandbits(
getstate(
lognormvariate(
normalvariate(
paretovariate(
randbytes(
randint( ← нужный нам метод
random(
randrange(
sample(
seed(
setstate(
shuffle(
triangular(
uniform(
vonmisesvariate(
weibullvariate(
Примечание
Также Tab/Ctrl + Space работает как автозаполнение, с помощью которого можно быстрее вводить команды. Например, написав obj и нажав Tab, вы увидите, что программа выведет слово object.
Сейчас нам потребуется метод randint (). Если ввести в консоли random.randint () и нажать Tab (в версиях ранее 2.82a — Ctrl + Space), то отобразится техническая информация об этом методе.
>>> random.randint(
randint(self, a, b)
Return random integer in range [a, b], including both end points
Здесь говорится, что метод выдаёт случайное целое число в заданном диапазоне, включая крайние его значения. Попробуем ввести в скобках через запятую значения 0 и 100 и нажмём Enter.
>>> random.randint(0,100)
39
Метод выдал число 39 (у вас может быть другой результат). Если обновить команду при помощи клавиши ↑ (вверх) и вновь нажать Enter, сгенерируется другое число в пределах между 0 и 100. Каждый раз при вводе команды оно будет меняться. Конечно, возможны и повторы, так как при случайном алгоритме результат непредсказуем.
Благодаря методу randint () мы можем присваивать объектам в Blender случайные значения масштаба и других параметров. Чтобы получить доступ к объектам, нам потребуется модуль bpy. В отличие от random он автоматически импортируется в консоль Python при запуске, поэтому добавлять его отдельно через команду import не нужно.
>>> bpy.
app
context
data
msgbus
ops
path
props
types
utils
Модуль bpy включает в себя всё, что помогает пользователю взаимодействовать с интерфейсом Blender. Например, app включает всё, что касается взаимодействия с приложением, а context — всё, что связано с текущими элементами (активный объект, сцена, окно и так далее).
Нам потребуется класс data. Он содержит все данные текущего проекта в Blender, которые также можно посмотреть в Файле Blender (Blender File): информацию о коллекциях, объектах, камерах, источниках освещения, мешах и так далее.
Расположение вкладки «Файл Blender». Чтобы вернуться к предыдущему меню, выберите «Слой визуализации» (View Layer). Скриншот: Леон Балбери для Skillbox Media
Чтобы получить информацию об объектах (именно объектах, а не мешах), набираем в строке путь до класса, в котором они находятся (objects).
>>> bpy.data.objects
Если после этого нажать Tab (в версиях ранее 2.82a — Ctrl + Space), программа выдаст огромный список имён всех объектов в проекте. Чтобы найти конкретный объект, после указания пути до класса нужно поставить квадратные скобки и внутри в кавычках (двойных «» или одинарных ‘’) вписать его точное название.
Примечание
При указании имени важно соблюдать регистр (прописные и строчные буквы), например, «Cube» и «cube» — это совершенно разные объекты.
Если объект с таким именем существует, то при нажатии Enter он отобразится в строке. Если нет — программа выдаст ошибку.
>>> bpy.data.objects['Куб']
bpy.data.objects['Куб']
Далее настраиваем цикл перебора объектов, который выполняется командой for. Для этого используется следующая конструкция: for название_переменной in список_объектов. В данном случае:
>>> for object in bpy.data.objects:
Буквально это можно перевести как «для каждого объекта из всех объектов в проекте:». Обратите внимание, что эта конструкция заканчивается двоеточием. В данном случае object — это имя переменной (вместо object можно вписать и другое слово — в остальном коде будет отвечать именно за эту переменную), в которую будет поочерёдно подставляться каждый объект из класса bpy.data.objects. С каждым из подставленных объектов можно производить те или иные действия.
Примечание
Слово object в Python зарезервировано и имеет ключевое значение в коде. Когда мы называем им переменную, доступ к изначальному значению в рамках исполняемой программы утрачивается. Поэтому по возможности лучше использовать в качестве имён переменных другие слова или сокращения: ob, obj и так далее.
Вводим for object in bpy.data.objects: и нажимаем Enter. Обратите внимание, что в начале следующей строки автоматически появился отступ. Отступ говорит программе, что эта строка относится к телу цикла и будет выполняться для каждого объекта. Зададим переменную, в которой будет подставляться рандомное значение:
… scale = random.randint(5, 100)/100
scale — имя переменной (можно вписать любое слово, которое мы будем использовать в дальнейшем в значении данной переменной);
random.randint — модуль random и его метод randint, рассмотренные выше;
(5, 100) — диапазон случайных значений;
/100 — коррекция результата, полученного при выполнении метода randint (), — результат делится на 100.
Для нашей задачи необходимо задать диапазон случайных значений примерно от 0 до 1. Поскольку метод randint принимает и выдаёт только целые числа, мы зададим диапазон от 5 до 100 и поделим случайное значение на 100. В итоге у нас получается число между 0,05 и 1 (5/100 = 0,05 и 100/100 = 1).
Следующая задача — назначить полученное значение в качестве размера объекта. Подтверждаем предыдущую строку через Enter. Обратите внимание: в начале новой строки сохраняется такой же отступ, и это означает, что мы продолжаем описывать тело цикла. Набираем следующую команду:
… object.scale = (scale, scale, scale)
object — переменная, которую мы использовали в конструкции for object in bpy.data.objects: и которая теперь обозначает каждый из объектов в сцене.
Имейте в виду, что значение scale прописано в скобках три раза через запятую. Ранее на панели Трансформация (Transform) вы могли заметить, что Масштаб (Scale) каждого объекта рассчитывается по трём осям: X, Y, Z. Поэтому команда object.scale = scale не сработает, так как в ней будет задано только одно значение (а их должно быть три). Чтобы задать значение переменной scale для всех осей, прописываем её в скобках три раза через запятые: object.scale = (scale, scale, scale).
Подтверждаем строку, удаляем отступы в начале следующей, поскольку дополнительных команд у нас не будет, и ещё раз нажимаем Enter. Немного ждём и получаем результат!
Полученный результат. Скриншот: Леон Балбери для Skillbox Media
Все объекты в сцене стали разного размера. Если повторно выполнить прописанный нами цикл перебора (просто скопировав три строки), то масштаб объектов снова случайно изменится и сцена будет выглядеть иначе.
Легко заметить, что этот процесс происходит гораздо быстрее, чем при использовании Случайной трансформации (Randomize Transform). Чтобы засечь точное время обработки, напишем новый скрипт на основе предыдущего.
Ещё раз разделим окно вьюпорта, наведя курсор на верхний правый угол и потянув его влево. В новом окне меняем тип редактора на Редактор текста (Text Editor) — в нём нужный нам скрипт прописать будет легче, чем в консоли Python.
Нажимаем +Создать (+New). Перед тем, как копировать команды, прописанные в предыдущем шаге, нам нужно заново импортировать необходимые модули — текстовый редактор «не знает» операции, которые мы проводили в консоли Python. Импортируем модули с помощью команды import через запятую:
import bpy, random, time
Ещё раз пройдёмся по модулям: bpy отвечает за взаимодействие с интерфейсом Blender, random поможет сгенерировать случайное число, time — засечь время операции. Обратите внимание, что в отличие от консоли Python, где часть модулей импортируется автоматически при запуске (например, bpy), в текстовом редакторе все модули необходимо добавлять вручную.
Далее через одну пустую строку мы пропишем функцию для выполнения определённой части кода. Функция — это часть кода, которую можно вызывать многократно. Признак функции — круглые скобки в конце. Перед тем, как использовать функцию в коде, её надо определить. Для этого используем следующую конструкцию:
import bpy, random, time
def random_scale():
def (от англ. define, «определить») — указывает, что начинается определение функции;
random_scale — название функции (пишется английскими и желательно строчными буквами, без пробелов и слешей);
() — часть синтаксиса функции; скобки могут оставаться пустыми или содержать некие параметры, которые обычно используются в теле функции;
: — указывает на то, что далее идёт тело функции.
После того как вы нажмёте Enter, редактор автоматически сделает отступ. Также его можно сделать, нажав клавишу Tab или четыре пробела. Отступы в Python очень важны — они означают, что все строки с одинаковым отступом относятся к одному и тому же блоку кода (телу функции, циклу и так далее).
В следующей строке перед основной частью функции мы засечём время. Для этого зададим переменную t1 и с помощью = присвоим ей значение текущего времени, используя метод perf_counter () из модуля time:
import bpy, random, time
def random_scale():
t1 = time.perf_counter()
Метод — это готовая функция в рамках класса. Доступ к нему можно получить, указав название класса, к которому он относится, и через точку — имя самого метода. Обратите внимание, что def требуется только тогда, когда функцию нужно определить. Для вызова уже существующей функции достаточно прописать её имя с круглыми скобками в конце.
Теперь скопируем и вставим цикл, отвечающий за рандомизацию масштаба всех объектов, который мы прописали ранее в консоли:
import bpy, random, time
def random_scale():
t1 = time.perf_counter()
for object in bpy.data.objects:
scale = random.randint(5,100)/100
object.scale = (scale, scale, scale)
Важно убрать лишние точки, которые автоматически скопировались из консоли, и правильно расставить все отступы, как показано на скриншоте (тело цикла обособляется новым отступом). Следующая после цикла строка с t2 фиксирует время на момент, когда функция была выполнена.
import bpy, random, time
def random_scale():
t1 = time.perf_counter()
for object in bpy.data.objects:
scale = random.randint(5,100)/100
object.scale = (scale, scale, scale)
t2 = time.perf_counter()
Теперь, чтобы посчитать длительность всего процесса, нам нужно из значения t2 вычесть t1 и отобразить где-то полученный результат. Для этого используем команду print () — это встроенный метод Python, с помощью которого можно выводить текстовую и числовую информацию на Системную консоль (не путать с консолью Python!). Её можно найти во вкладке Окно — Показать/скрыть системную консоль (Window — Toggle System Console).
Этот вариант подходит для пользователей Windows. Если у вас macOS/Linux, то Blender необходимо запустить из терминала, указав в нём полный путь до blender-launcher.exe. После этого терминал будет использоваться в качестве системной консоли.
Как запустить Blender из терминала на macOS. Мини-гайд от Hollowpixel
Чтобы вывести в консоли разницу во времени между началом и окончанием работы функции, производим вычисление в скобках:
import bpy, random, time
def random_scale():
t1 = time.perf_counter()
for object in bpy.data.objects:
scale = random.randint(5,100)/100
object.scale = (scale, scale, scale)
t2 = time.perf_counter()
print(t2-t1)
Сейчас функция существует только в виде инструкции и при запуске скрипта не сработает сама по себе. Для выполнения её нужно вызвать. Отделяем написанную функцию пустой строкой и в следующей строке копируем название функции random_scale () — без слова def, каких-либо отступов и двоеточия, но с круглыми скобками на конце. Это и будет вызов функции, которую мы определили ранее.
Теперь при запуске скрипта каждому объекту в сцене будет назначаться рандомное значение параметра scale, а в системной консоли — выводиться информация о времени, затраченном на выполнение операции. Остаётся только запустить скрипт кнопкой ▷ (в верхнем правом углу редактора) или комбинацией клавиш Alt + P.
import bpy, random, time
def random_scale():
t1 = time.perf_counter()
for object in bpy.data.objects:
scale = random.randint(5,100)/100
object.scale = (scale, scale, scale)
t2 = time.perf_counter()
print(t2-t1)
random_scale()
После этого заходим в системную консоль и смотрим результаты — в нашем случае выполнение функции заняло 0,34 секунды:
Примечание
Конкретно этот скрипт работает для всех объектов в проекте. Помните, как в начале главы мы назвали коллекцию с кубами Cubes? Чтобы изменить объекты только в ней, фрагмент bpy.data.objects: необходимо заменить на bpy.data.collections[‘Cubes’].objects:, где ‘Cubes’ — название нужной коллекции.
Подведём итоги. Благодаря Python мы рандомизировали масштаб 17 248 объектов всего за треть секунды. Таким образом, базовые навыки программирования позволяют оптимизировать процессы и выполнять некоторые операции гораздо быстрее, чем через инструменты Blender.
В четвёртой части руководства мы познакомимся с основами анимации и рассмотрим несколько способов её воспроизведения.
Читайте остальные статьи из серии:
Практический курс: «Blender.Design»
Узнать про курс
<!DOCTYPE html>
<html class="l-html" lang="ru">
<head>
<script>
mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
mindbox('create', {
endpointId: 'skillbox.skillboxMediaWebsite'
});
</script>
<script src="https://api.s.mindbox.ru/scripts/v1/tracker.js" async></script>
<script>window.yaContextCb = window.yaContextCb || []</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<!-- Google Tag Manager -->
<script async data-skip-moving="true" type="text/javascript">
/** Google Tagmanager */
;(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-NLCGQ25');
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-NLCGQ25');
</script>
<!-- End Google Tag Manager -->
<!-- Retail Rocket -->
<script type="text/javascript">
var rrPartnerId = "6048a0d097a52514f050731f";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
<!-- End Retail Rocket -->
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<meta name="google-site-verification" content="UA-kf725UpqwkHenFmDQ05SW115fL9UdD9uXiFy-ibQ"/>
<meta name="robots" content="index, follow"/>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="canonical" href="https://skillbox.ru/media/gamedev/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python/">
<link rel="preload" href="https://marketplace.canva.com/EAD2962NKnQ/2/0/1600w/canva-rainbow-gradient-pink-and-purple-zoom-virtual-background-_Tcjok-d9b4.jpg" as="image" />
<link rel="preload" href="https://via.placeholder.com/1170x250/92c952" as="image" />
<link rel="preload" href="https://via.placeholder.com/768x250/40E0D0" as="image" />
<link rel="preload" href="https://via.placeholder.com/375x250/ffbcee" as="image" />
<title>Уроки Blender — структура и оптимизация объектов, базовое программирование на Python, как работать в Blender / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="Blender 3d, Блендер 3д, 3d, как сделать в blender, 3d уроки, 3d моделирование, 3d программы, бесплатные 3d программы, блендер уроки, blender уроки, blender 3.0, blender 2.8" />
<meta name="description" content="Разбираемся в более продвинутых понятиях и инструментах." />
<link href="/bitrix/cache/css/s1/media/kernel_main/kernel_main_v1.css?177096852510536" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/ui/fonts/opensans/ui.font.opensans.css?16341171742599" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/main/popup/dist/main.popup.bundle.css?163411696226345" type="text/css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/css/swiper.min.css" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/page_a1ad23d5ae1fea4c6ac7c690c80a4763/page_a1ad23d5ae1fea4c6ac7c690c80a4763_v1.css?1771490810746236" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/template_176a7c2453ad8025fa7d27f65ba6a4b1/template_176a7c2453ad8025fa7d27f65ba6a4b1_v1.css?1771490810442835" type="text/css" data-template-style="true" rel="stylesheet" />
<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];} return true;}};</script>
<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
<script type="text/javascript" src="/bitrix/js/main/core/core.js?1634117028565340"></script>
<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
<script type="text/javascript">(window.BX||top.BX).message({'AMPM_MODE':false});(window.BX||top.BX).message({'MONTH_1':'Январь','MONTH_2':'Февраль','MONTH_3':'Март','MONTH_4':'Апрель','MONTH_5':'Май','MONTH_6':'Июнь','MONTH_7':'Июль','MONTH_8':'Август','MONTH_9':'Сентябрь','MONTH_10':'Октябрь','MONTH_11':'Ноябрь','MONTH_12':'Декабрь','MONTH_1_S':'января','MONTH_2_S':'февраля','MONTH_3_S':'марта','MONTH_4_S':'апреля','MONTH_5_S':'мая','MONTH_6_S':'июня','MONTH_7_S':'июля','MONTH_8_S':'августа','MONTH_9_S':'сентября','MONTH_10_S':'октября','MONTH_11_S':'ноября','MONTH_12_S':'декабря','MON_1':'янв','MON_2':'фев','MON_3':'мар','MON_4':'апр','MON_5':'май','MON_6':'июн','MON_7':'июл','MON_8':'авг','MON_9':'сен','MON_10':'окт','MON_11':'ноя','MON_12':'дек','DAY_OF_WEEK_0':'Воскресенье','DAY_OF_WEEK_1':'Понедельник','DAY_OF_WEEK_2':'Вторник','DAY_OF_WEEK_3':'Среда','DAY_OF_WEEK_4':'Четверг','DAY_OF_WEEK_5':'Пятница','DAY_OF_WEEK_6':'Суббота','DOW_0':'Вс','DOW_1':'Пн','DOW_2':'Вт','DOW_3':'Ср','DOW_4':'Чт','DOW_5':'Пт','DOW_6':'Сб','FD_SECOND_AGO_0':'#VALUE# секунд назад','FD_SECOND_AGO_1':'#VALUE# секунду назад','FD_SECOND_AGO_10_20':'#VALUE# секунд назад','FD_SECOND_AGO_MOD_1':'#VALUE# секунду назад','FD_SECOND_AGO_MOD_2_4':'#VALUE# секунды назад','FD_SECOND_AGO_MOD_OTHER':'#VALUE# секунд назад','FD_SECOND_DIFF_0':'#VALUE# секунд','FD_SECOND_DIFF_1':'#VALUE# секунда','FD_SECOND_DIFF_10_20':'#VALUE# секунд','FD_SECOND_DIFF_MOD_1':'#VALUE# секунда','FD_SECOND_DIFF_MOD_2_4':'#VALUE# секунды','FD_SECOND_DIFF_MOD_OTHER':'#VALUE# секунд','FD_SECOND_SHORT':'#VALUE#с','FD_MINUTE_AGO_0':'#VALUE# минут назад','FD_MINUTE_AGO_1':'#VALUE# минуту назад','FD_MINUTE_AGO_10_20':'#VALUE# минут назад','FD_MINUTE_AGO_MOD_1':'#VALUE# минуту назад','FD_MINUTE_AGO_MOD_2_4':'#VALUE# минуты назад','FD_MINUTE_AGO_MOD_OTHER':'#VALUE# минут назад','FD_MINUTE_DIFF_0':'#VALUE# минут','FD_MINUTE_DIFF_1':'#VALUE# минута','FD_MINUTE_DIFF_10_20':'#VALUE# минут','FD_MINUTE_DIFF_MOD_1':'#VALUE# минута','FD_MINUTE_DIFF_MOD_2_4':'#VALUE# минуты','FD_MINUTE_DIFF_MOD_OTHER':'#VALUE# минут','FD_MINUTE_0':'#VALUE# минут','FD_MINUTE_1':'#VALUE# минуту','FD_MINUTE_10_20':'#VALUE# минут','FD_MINUTE_MOD_1':'#VALUE# минуту','FD_MINUTE_MOD_2_4':'#VALUE# минуты','FD_MINUTE_MOD_OTHER':'#VALUE# минут','FD_MINUTE_SHORT':'#VALUE#мин','FD_HOUR_AGO_0':'#VALUE# часов назад','FD_HOUR_AGO_1':'#VALUE# час назад','FD_HOUR_AGO_10_20':'#VALUE# часов назад','FD_HOUR_AGO_MOD_1':'#VALUE# час назад','FD_HOUR_AGO_MOD_2_4':'#VALUE# часа назад','FD_HOUR_AGO_MOD_OTHER':'#VALUE# часов назад','FD_HOUR_DIFF_0':'#VALUE# часов','FD_HOUR_DIFF_1':'#VALUE# час','FD_HOUR_DIFF_10_20':'#VALUE# часов','FD_HOUR_DIFF_MOD_1':'#VALUE# час','FD_HOUR_DIFF_MOD_2_4':'#VALUE# часа','FD_HOUR_DIFF_MOD_OTHER':'#VALUE# часов','FD_HOUR_SHORT':'#VALUE#ч','FD_YESTERDAY':'вчера','FD_TODAY':'сегодня','FD_TOMORROW':'завтра','FD_DAY_AGO_0':'#VALUE# дней назад','FD_DAY_AGO_1':'#VALUE# день назад','FD_DAY_AGO_10_20':'#VALUE# дней назад','FD_DAY_AGO_MOD_1':'#VALUE# день назад','FD_DAY_AGO_MOD_2_4':'#VALUE# дня назад','FD_DAY_AGO_MOD_OTHER':'#VALUE# дней назад','FD_DAY_DIFF_0':'#VALUE# дней','FD_DAY_DIFF_1':'#VALUE# день','FD_DAY_DIFF_10_20':'#VALUE# дней','FD_DAY_DIFF_MOD_1':'#VALUE# день','FD_DAY_DIFF_MOD_2_4':'#VALUE# дня','FD_DAY_DIFF_MOD_OTHER':'#VALUE# дней','FD_DAY_AT_TIME':'#DAY# в #TIME#','FD_DAY_SHORT':'#VALUE#д','FD_MONTH_AGO_0':'#VALUE# месяцев назад','FD_MONTH_AGO_1':'#VALUE# месяц назад','FD_MONTH_AGO_10_20':'#VALUE# месяцев назад','FD_MONTH_AGO_MOD_1':'#VALUE# месяц назад','FD_MONTH_AGO_MOD_2_4':'#VALUE# месяца назад','FD_MONTH_AGO_MOD_OTHER':'#VALUE# месяцев назад','FD_MONTH_DIFF_0':'#VALUE# месяцев','FD_MONTH_DIFF_1':'#VALUE# месяц','FD_MONTH_DIFF_10_20':'#VALUE# месяцев','FD_MONTH_DIFF_MOD_1':'#VALUE# месяц','FD_MONTH_DIFF_MOD_2_4':'#VALUE# месяца','FD_MONTH_DIFF_MOD_OTHER':'#VALUE# месяцев','FD_MONTH_SHORT':'#VALUE#мес','FD_YEARS_AGO_0':'#VALUE# лет назад','FD_YEARS_AGO_1':'#VALUE# год назад','FD_YEARS_AGO_10_20':'#VALUE# лет назад','FD_YEARS_AGO_MOD_1':'#VALUE# год назад','FD_YEARS_AGO_MOD_2_4':'#VALUE# года назад','FD_YEARS_AGO_MOD_OTHER':'#VALUE# лет назад','FD_YEARS_DIFF_0':'#VALUE# лет','FD_YEARS_DIFF_1':'#VALUE# год','FD_YEARS_DIFF_10_20':'#VALUE# лет','FD_YEARS_DIFF_MOD_1':'#VALUE# год','FD_YEARS_DIFF_MOD_2_4':'#VALUE# года','FD_YEARS_DIFF_MOD_OTHER':'#VALUE# лет','FD_YEARS_SHORT_0':'#VALUE#л','FD_YEARS_SHORT_1':'#VALUE#г','FD_YEARS_SHORT_10_20':'#VALUE#л','FD_YEARS_SHORT_MOD_1':'#VALUE#г','FD_YEARS_SHORT_MOD_2_4':'#VALUE#г','FD_YEARS_SHORT_MOD_OTHER':'#VALUE#л','CAL_BUTTON':'Выбрать','CAL_TIME_SET':'Установить время','CAL_TIME':'Время','FD_LAST_SEEN_TOMORROW':'завтра в #TIME#','FD_LAST_SEEN_NOW':'только что','FD_LAST_SEEN_TODAY':'сегодня в #TIME#','FD_LAST_SEEN_YESTERDAY':'вчера в #TIME#','FD_LAST_SEEN_MORE_YEAR':'более года назад'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'WEEK_START':'1'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1771652181','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'a7c946106a67bdc2cdeb4461290aa442'});</script>
<script type="text/javascript" src="/bitrix/js/main/date/main.date.js?159955296434530"></script>
<script type="text/javascript" src="/bitrix/js/main/popup/dist/main.popup.bundle.js?1634116962109107"></script>
<script type="text/javascript" src="/bitrix/js/main/core/core_date.js?163411653136080"></script>
<script type="text/javascript" src="/bitrix/js/ui/vue/vue2/prod/dist/vue.bundle.js?1635848017173206"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/js/swiper.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
<script type="text/javascript">BX.setCSSList(['/bitrix/js/main/core/css/core_date.css','/setka/css/setka_skillbox.css','/local/templates/.default/components/bitrix/news.detail/article/style.css','/static/css/newarticle.css','/local/templates/media/libs/jquery.formstyler.css','/local/templates/media/fonts/graphik-font/stylesheet.css','/static/css/main.css','/local/templates/media/template_styles.css']);</script>
<script src="https://cdn.skillbox.pro/frontend-libs/promo-banner/5.10.1/banner-plugin.min.js"></script>
<script type="text/javascript" async src="https://relap.io/api/v6/head.js?token=sI73Ph6a5BnkqK2o"></script>
<meta property="og:title" content="Уроки по Blender: структура объектов, оптимизация, скрипты Python" />
<meta property="og:description" content="Разбираемся в более продвинутых понятиях и инструментах." />
<meta property="og:url" content="https://skillbox.ru/media/gamedev/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python/" />
<meta property="og:type" content="article" />
<meta property="og:site_name" content="skillbox.ru" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:image" content="https://248006.selcdn.ru/main/iblock/d94/d944105861b3b6b1db58ac2f4f57bd39/f8154aa290cc357afdf765bfc782b8bd.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/d94/d944105861b3b6b1db58ac2f4f57bd39/f8154aa290cc357afdf765bfc782b8bd.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="315" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://248006.selcdn.ru/main/iblock/d94/d944105861b3b6b1db58ac2f4f57bd39/f8154aa290cc357afdf765bfc782b8bd.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/5f1/5f189d915b4c3f73ee28e60789a22ac2/b1b2df693b991b13c41facf8ee543fa5.jpg" />
<meta property="article:author" content="Леон Балбери" />
<meta property="article:tag" content="статьи" />
<meta property="article:section" content="Геймдев" />
<script type="text/javascript" src="/static/js/vendor.js?1771489421543641"></script>
<script type="text/javascript" src="/local/assets/js/common.js?177148933727419"></script>
<script type="text/javascript" src="/static/js/main.js?1771489421125222"></script>
<script type="text/javascript" src="/local/templates/media/js/main.js?17714893372418"></script>
<script type="text/javascript" src="/local/components/prmedia/popup.subscribe/templates/.default/script.js?17714893376820"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/infinity.js?177148933713735"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news/articles/script.js?1771489337246"></script>
<script type="text/javascript" src="/setka/js/setka_skillbox.js?1771489337106775"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/script.js?17714893377503"></script>
<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "84a6082a990bbac8858fb733b97bed30"]); _ba.push(["host", "skillbox.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
</head>
<body>
<div class="js-sticky-delimiter"></div>
<div class="bx-panel"></div>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NLCGQ25" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<svg class="app-svg-visually-hidden" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path id="def-arrow-down-a" d="M223 20813l4 5 4-5z"/>
<path id="def-arrow-a" d="M1044.6 803.2a.81.81 0 01-.5.18.8.8 0 01-.8-.8v-3.24c-2.97.1-5.17.88-6.52 2.3a4.86 4.86 0 00-1.39 3.29.8.8 0 01-.75.83h-.04a.79.79 0 01-.79-.74c-.22-3.78.69-6.76 2.69-8.84a10.76 10.76 0 016.81-3.07v-3.3a.8.8 0 011.29-.63l7.91 6.39a.8.8 0 010 1.25zm.3-11.73v2.42a.5.5 0 01-.03.1.8.8 0 01-.05.21.78.78 0 01-.47.42.67.67 0 01-.25.05h-.01c-.06 0-3.93-.04-6.46 2.62-.8.85-1.4 1.87-1.74 2.99 1.79-1.7 4.55-2.57 8.21-2.57.44 0 .8.36.8.8v2.4l5.85-4.72z"/>
<path id="def-be-a" d="M55.6 29.58h6.12v-1.59H55.6zm.64 5.74s.26-2.23 2.58-2.23c2.32 0 2.26 2.23 2.26 2.23zm-3.23 1.27S52.56 42 58.72 42c0 0 5.26.37 5.26-3.81H61.4s-.09 1.59-2.58 1.59c0 0-2.58.17-2.58-2.55l7.74-.01c-.08-.32.9-6.42-5.16-6.36-5.77.05-5.81 5.73-5.81 5.73zm-10.34 2.8v-4.24H47s1.7.16 1.7 2.24c0 1.76-1.06 1.99-1.7 2zM47 29.61s1.16.06 1.16 1.62-.76 1.64-1.49 1.64h-4v-3.26zm4.33 1.3c0-2.68-1.81-3.91-4.26-3.91H39v15.01h8.07s4.92.15 4.92-4.43c0 0 .22-3.73-2.9-3.73 0 0 2.24-.25 2.24-2.94z"/>
<path id="def-briefcase-a" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/>
<path id="def-comments-a" d="M752 8958l-4 4v-12a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1zm12-6v13l-3.2-4H751l2-2h9v-8h1c1 0 1 .45 1 1z"/>
<path id="def-eaye-a" d="M630 8956.22c0 1.04-3.58 5.21-8 5.21s-8-4.26-8-5.21c0-1.05 3.58-5.22 8-5.22s8 4.17 8 5.22zm-5 0h-3v-3.13a3.13 3.13 0 100 6.26 3.07 3.07 0 003-3.13z"/>
<path id="def-file-a" d="M493 9457a2 2 0 01-1.98-2v-16a2 2 0 011.98-2h19.82c1.13 0 2.07.87 2.15 2v16a2.15 2.15 0 01-2.15 2zm0-18v8.83l5.3-4.59a.98.98 0 011.35.05l5.34 5.39 3.27-2.48a.98.98 0 011.36.16l3.35 4.07V9439zm19.97 14.55l-4.27-5.18-3.21 2.43c-.4.3-.95.26-1.3-.09l-5.3-5.35-5.9 5.1v4.54h19.98zm-6.1-10.55a1.98 1.98 0 113.97.04 1.98 1.98 0 01-3.97-.04z"/>
<path id="def-gplus-a" d="M466 10169a4 4 0 013.87-3.99 4.14 4.14 0 012.93.99c-.33.36-.67.71-1.03 1.04-.72-.42-1.58-.75-2.41-.46a2.52 2.52 0 00-1.67 3.23c.41 1.35 2.09 2.1 3.4 1.52a2.22 2.22 0 001.33-1.51c-.78-.01-1.56 0-2.34-.03v-1.36h3.9a4.45 4.45 0 01-.83 3.2c-1 1.28-2.88 1.66-4.4 1.16a4 4 0 01-2.75-3.79z"/><path id="def-gplus-b" d="M476.34 10166h1.32l.01 1.33H479v1.33l-1.33.01v1.33h-1.33l-.01-1.33H475v-1.33l1.33-.01.01-1.33z"/>
<path id="def-inst-a" d="M1480.93 332c-3.5 0-3.95.02-5.32.07-1.37.07-2.3.28-3.14.6-.84.34-1.57.77-2.28 1.5a6.36 6.36 0 00-1.5 2.28 9.84 9.84 0 00-.6 3.14c-.07 1.37-.07 1.82-.07 5.32s.02 3.96.07 5.32c.07 1.37.28 2.31.6 3.14.34.85.77 1.58 1.5 2.29a6.51 6.51 0 002.28 1.5c.82.3 1.77.53 3.14.6 1.37.07 1.82.07 5.32.07s3.96-.02 5.32-.07a9.48 9.48 0 003.14-.6 6.14 6.14 0 002.29-1.5 6.36 6.36 0 001.5-2.29c.3-.81.53-1.77.6-3.14.07-1.36.07-1.82.07-5.32s-.02-3.95-.07-5.32a9.48 9.48 0 00-.6-3.14 6.14 6.14 0 00-1.5-2.28 6.36 6.36 0 00-2.29-1.5 9.84 9.84 0 00-3.14-.6c-1.38-.05-1.82-.07-5.32-.07zm0 2.32c3.45 0 3.85.02 5.22.07 1.27.05 1.94.26 2.4.45.6.25 1.03.52 1.48.97.45.45.73.89.97 1.5.18.44.39 1.14.45 2.39.07 1.37.07 1.76.07 5.21s-.01 3.85-.07 5.22a6.55 6.55 0 01-.45 2.4c-.24.6-.52 1.03-.97 1.48-.45.45-.88.73-1.49.97-.45.18-1.14.39-2.39.45-1.37.07-1.77.07-5.22.07-3.45 0-3.84-.01-5.21-.07a6.55 6.55 0 01-2.4-.45 4.11 4.11 0 01-1.49-.97 4.11 4.11 0 01-.97-1.49 7.52 7.52 0 01-.45-2.39c-.07-1.37-.07-1.77-.07-5.22 0-3.45.02-3.84.07-5.21.05-1.27.26-1.95.45-2.4.25-.6.52-1.04.97-1.49.45-.45.89-.72 1.5-.97a7.52 7.52 0 012.39-.45c1.35-.05 1.76-.07 5.21-.07z"/><path id="def-inst-b" d="M1480.93 349.2a4.3 4.3 0 110-8.59 4.3 4.3 0 010 8.6zm0-10.93a6.62 6.62 0 100 13.24 6.62 6.62 0 000-13.24z"/><path id="def-inst-c" d="M1486.27 338.01a1.54 1.54 0 113.09 0 1.54 1.54 0 01-3.09 0z"/>
<path id="def-like-down-a" d="M1004.33 543.66c-1.1 0-2.45-.86-2.61-3.31-.05-1.41.11-2.82.48-4.19h-2.96c-2.15 0-3.42-1.35-3.42-2.67 0-.39.05-.77.17-1.13a2.4 2.4 0 01-.99-2.03 2.35 2.35 0 011.02-2.05c-.12-.34-.18-.7-.17-1.06.86-.6 1.2-1.7.86-2.7 0-2.52 3.45-2.52 4.57-2.52h2.85c1.3.06 2.56.4 3.71 1 .67.36 1.41.6 2.18.67h3.23c.25 0 .5.11.65.31.12.14 1.1 1.47 1.1 4.69.03 1.8-.28 3.6-.9 5.31a.83.83 0 01-.67.5c-.03 0-3.27.4-4.85 1.98a10.32 10.32 0 00-2.8 5.94 1.4 1.4 0 01-1.45 1.26zm-6.84-10.17c0 .34.52 1 1.75 1h4.06a.83.83 0 01.8 1.1c-.5 1.5-.73 3.07-.72 4.65.08 1.1.44 1.6.79 1.72a11.94 11.94 0 013.23-6.67c1.57-1.58 4.2-2.18 5.32-2.38.41-1.37.62-2.8.61-4.24a8.18 8.18 0 00-.56-3.34h-2.75c-1-.07-1.97-.35-2.85-.81a7.53 7.53 0 00-3.04-.85h-2.85c-1.32 0-2.9.15-2.9.85-.02.11.02.22.09.3a.73.73 0 01.75.77.92.92 0 01-.85.87.85.85 0 00-.85.77c-.05.22.01.44.17.6.42.07.71.45.67.88a.87.87 0 01-.86.77.77.77 0 00-.83.85.8.8 0 00.87.85c.46.01.82.4.81.85 0 .43-.33.78-.76.8-.09.21-.12.44-.1.66z"/>
<path id="def-like-up-a" d="M944.67 520c1.1 0 2.45.87 2.61 3.32.05 1.4-.11 2.82-.48 4.18h2.96c2.15 0 3.42 1.36 3.42 2.67 0 .39-.05.77-.17 1.14a2.4 2.4 0 01.99 2.02c.04.81-.35 1.59-1.02 2.05.12.34.18.7.17 1.07-.86.6-1.2 1.7-.86 2.69 0 2.52-3.45 2.52-4.57 2.52h-2.85a8.94 8.94 0 01-3.71-.99 5.67 5.67 0 00-2.18-.67h-3.23a.83.83 0 01-.65-.32c-.12-.14-1.1-1.47-1.1-4.68-.03-1.81.28-3.62.9-5.32a.83.83 0 01.67-.5c.03 0 3.27-.4 4.85-1.98a10.32 10.32 0 002.8-5.93 1.4 1.4 0 011.45-1.27zm6.84 10.17c0-.34-.52-1-1.75-1h-4.06a.83.83 0 01-.8-1.1c.5-1.5.73-3.07.72-4.65-.08-1.1-.44-1.6-.79-1.72a11.94 11.94 0 01-3.23 6.67c-1.57 1.58-4.2 2.19-5.32 2.38a14.38 14.38 0 00-.61 4.25 8.18 8.18 0 00.56 3.33h2.75c1 .07 1.97.35 2.85.82.94.49 1.98.78 3.04.85h2.85c1.32 0 2.9-.15 2.9-.86a.35.35 0 00-.09-.3.73.73 0 01-.75-.77.92.92 0 01.85-.87c.44 0 .81-.33.85-.77a.65.65 0 00-.17-.6.81.81 0 01-.67-.87.87.87 0 01.86-.78.77.77 0 00.83-.85.8.8 0 00-.87-.85.83.83 0 01-.81-.85c0-.43.33-.78.76-.8.09-.21.12-.43.1-.66z"/>
<path id="def-like-a" d="M701.32 8960.32a.95.95 0 01-.95.95h-5.72c-.96 0-1.92-.95-2.87-.95h-.95v-6.68c.04-.6.4-1.12.95-1.36a4.78 4.78 0 002.87-4.37v-.96a.95.95 0 01.95-.95h.95c.53 0 .95.43.95.95v5.73h3.82a.9.9 0 01.96.96zm-14.31.95v-9.54h1.9a.96.96 0 01.97.95v7.64a.96.96 0 01-.96.95zm.99-8.3a.48.48 0 10.88.38.48.48 0 00-.88-.38z"/>
<path id="def-link-a" d="M626.02 1163.93l-.02 15.99 13.02.01v-4a.86.86 0 01.24-.68.9.9 0 01.66-.28 1 1 0 011 1v4.95a1 1 0 01-.29.7 1 1 0 01-.71.29H625a1 1 0 01-.71-.29 1 1 0 01-.29-.7V1163a1 1 0 011-1h3.95a1 1 0 011 1 .89.89 0 01-.93.93z"/><path id="def-link-b" d="M641.95 1171a1 1 0 01-1-1v-5.59l-9.25 9.3a.99.99 0 01-1.41-.01.99.99 0 01.01-1.41l9.24-9.29h-5.56a1 1 0 01-1-1 1 1 0 011-1h7.97a1 1 0 011 1v8a1 1 0 01-1 1z"/>
<path id="def-mail-a" d="M1058 261c0-.6-.4-1-1-1h-14c-.6 0-1 .4-1 1l8 6.5z"/><path id="def-mail-b" d="M1042 262.5v8.5c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-8.5l-8 6.5z"/>
<path id="def-outside-a" d="M1204.24 9231.16h-10.05c-.92 0-1.67-.75-1.67-1.68v-4.2c0-.46.38-.84.84-.84a.81.81 0 01.8.84v4.2h10.08v-16.8h-10.08v4.2a.81.81 0 01-.8.84.84.84 0 01-.84-.84v-4.2c0-.93.75-1.68 1.67-1.68h10.05c.92 0 1.67.75 1.67 1.68v16.8c0 .93-.75 1.68-1.67 1.68zm-15.56-10.92h11.37a.84.84 0 110 1.68h-11.36l1.91 1.92a.84.84 0 11-1.18 1.2l-3.35-3.36a.86.86 0 01-.24-.6v-.02a.83.83 0 01.24-.58l3.35-3.36a.83.83 0 011.18 0c.33.33.33.87 0 1.2z"/>
<path id="def-pencil-a" d="M1190.84 9818.68a.64.64 0 01-.19.13l-.07.06-4.42 1.82c-.1.05-.21.07-.32.07a.83.83 0 01-.77-1.15l1.84-4.4v-.02a.38.38 0 01.09-.13l.08-.13v-.01l10.82-10.82-.44-.44-3.56 3.57a.83.83 0 01-1.18-1.18l4.16-4.15a.81.81 0 011.17 0l1.03 1.03 1.86-1.86a.84.84 0 011.17 0l2.58 2.58c.33.32.33.85 0 1.18zm-2.88-1.7l-.58 1.41 1.41-.58zm.88-1.47l1.41 1.4 10.24-10.23-1.4-1.4zm12.69-12.68l-1.27 1.27 1.4 1.4 1.28-1.27z"/>
<path id="def-phone-a" d="M732.62 41c-2.25 0-6.37-2.73-10.24-6.78a33.08 33.08 0 01-5.22-6.96c-1.33-2.53-1.52-4.32-.56-5.31l2.91-2.72c.17-.16.4-.24.63-.23.24.02.46.13.61.32l3.79 4.58c.23.28.28.68.12 1.01l-1.47 3.08 5.24 5.48 2.93-1.54a.83.83 0 01.96.12l4.38 3.96c.17.16.28.38.3.63a.97.97 0 01-.22.67l-2.53 3.02c-.33.34-.81.67-1.63.67zm-14.76-17.78c-.15.21-.25 1.09.83 3.15 1.06 2 2.8 4.32 4.93 6.55 3.87 4.06 7.53 6.25 9 6.25.2 0 .3-.04.33-.08l1.94-2.3-3.27-2.95-2.98 1.56a.84.84 0 01-1.01-.17l-6.12-6.42a.92.92 0 01-.16-1.05l1.48-3.12-2.82-3.42z"/>
<path id="def-plus-a" d="M1223.33 4172.67h-6.66v6.66a.67.67 0 01-1.34 0v-6.66h-6.66a.67.67 0 010-1.34h6.66v-6.66a.67.67 0 011.34 0v6.66h6.66a.67.67 0 010 1.34z"/>
<path id="def-search-a" d="M1092.53 24.87a6.7 6.7 0 10-.05 13.4 6.7 6.7 0 00.05-13.4zm12.1 18.85a.95.95 0 01-1.35 0l-5.4-5.43a8.62 8.62 0 111.35-1.35l5.4 5.43c.37.37.37.98 0 1.35z"/>
<path id="def-shape-a" d="M879 13323h-4a1 1 0 01-1-1v-4a1 1 0 011-1h.85c-1.29-8.14-8.38-15.22-16.85-16.81v.81a1 1 0 01-1 1h-4a1 1 0 01-1-1v-.81c-8.47 1.6-15.56 8.67-16.85 16.81h.85a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4a1 1 0 011-1h1.13c1.03-7.24 6.24-13.76 13.07-17h-6.48a1.98 1.98 0 01-1.72 1.01c-.97 0-1.8-.69-1.98-1.65a2 2 0 011.28-2.23 2 2 0 012.42.87H853v-1a1 1 0 011-1h4a1 1 0 011 1v1h12.27a2.01 2.01 0 110 2h-6.47c6.83 3.24 12.04 9.76 13.07 17H879a1 1 0 011 1v4a1 1 0 01-1 1zm-43-4h-2v2h2zm21-21h-2v2h2zm21 21h-2v2h2zm-22.93-12.51a.52.52 0 01.1-.18l.01-.03.03-.03a1 1 0 01.2-.21l.06-.04c.06-.04.12-.08.19-.1l.04-.02.09-.01.05-.01.16-.03.15.03h.04l.11.01.04.02.19.1.02.02.02.01a.92.92 0 01.24.25l.02.03c.04.05.08.12.1.18l.03.05c.02.07 2.33 7.26 8.51 10.59.26.14.45.39.51.68a.97.97 0 01-.2.82 23.7 23.7 0 00-3.99 8.81 8.02 8.02 0 012.21 5.57 1 1 0 01-1 1h-14a1 1 0 01-1-1 8.02 8.02 0 012.21-5.57 23.66 23.66 0 00-3.99-8.8 1 1 0 01.31-1.51c6.21-3.34 8.49-10.52 8.51-10.59l.03-.04zm.93 20.49a6 6 0 00-5.92 5.02h11.84a6 6 0 00-5.92-5.02zm-4.06-.9a8.17 8.17 0 018.12 0 25.8 25.8 0 013.47-7.78 20.33 20.33 0 01-6.53-6.96v6.93a2 2 0 01-.97 3.73 2.03 2.03 0 01-2.03-2 2 2 0 011-1.7v-6.96a20.33 20.33 0 01-6.53 6.96 25.8 25.8 0 013.47 7.78z"/>
<path id="def-strawberry-a" d="M873.26 13427.96a7.49 7.49 0 01-4.13-1.21 20.45 20.45 0 012.02 8.92c0 10.41-17.26 18.25-28.46 18.25-3.71 0-6.53-.86-8.17-2.48l-.1-.1c-3.9-4.01-2.65-13.97.62-21.78 3.77-9.01 9.53-14.39 15.41-14.39 3.1 0 6.17.68 8.97 1.99a8.12 8.12 0 01-.65-1.24c-1.09-2.7-.53-5.87 1.68-9.44a1 1 0 011.11-.45c.21.06 5.12 1.38 6.8 5.49.8 2.19.7 4.61-.29 6.72 1.25-.51 2.58-.79 3.92-.83 5.12 0 7.74 4.75 8.4 7.26a.97.97 0 01-.45 1.1 12.95 12.95 0 01-6.68 2.19zm-36.36 2.36c-3.42 8.19-3.85 16.84-.97 19.69l.08.09c1.26 1.18 3.62 1.82 6.68 1.82a38.27 38.27 0 0017.26-4.82c3.43-1.92 9.18-5.96 9.18-11.43a18.4 18.4 0 00-18.68-18.5c-5.93 0-10.89 6.79-13.55 13.15zm29.59-18.05c-.97-2.38-3.49-3.6-4.73-4.07-1.52 2.71-1.89 5.05-1.12 6.96.96 2.37 3.48 3.6 4.73 4.08 1.52-2.71 1.89-5.05 1.12-6.97zm5.5 7.13c-1.75.08-3.45.6-4.95 1.51.59 1.54 2.36 5.06 6.22 5.06 1.75-.08 3.45-.6 4.94-1.5-.59-1.55-2.36-5.07-6.21-5.07zm-13.43 13.54h3v3h-3zm-4-5h3v3h-3zm2 13h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm2 22h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm-5 14h3v3h-3zm0-9h3v3h-3z"/>
<path id="def-telegram-a" d="M823.8 272.93l-4.09 20.05c-.3 1.42-1.16 1.76-2.36 1.1l-6.52-4.77-3.13 3c-.55.47-.75.66-1.27.65-.5 0-.74-.3-1.03-1.1l-2.4-7.29-6.26-1.94c-1.01-.32-1.06-1.66.31-2.05l25.01-9.39c1.14-.52 2.18 0 1.74 1.74zm-17.39 18.55l.6-5.26 11.83-10.54c.31-.36.09-.88-.61-.42l-14.24 8.87z"/>
<path id="def-tm-a" d="M1406.46 346.34l13.28-8.34c.65-.44.86.05.57.39l-11.02 9.91-.57 4.96zm16.84-12.16l-23.32 8.83c-1.27.37-1.24 1.62-.3 1.93l5.84 1.82 2.24 6.86c.28.75.5 1.04.96 1.04.49 0 .67-.18 1.19-.62.58-.55 1.5-1.43 2.92-2.83l6.08 4.49c1.12.62 1.92.3 2.21-1.04l3.8-18.85c.41-1.63-.55-2.12-1.62-1.63z"/>
<path id="def-trash-a" d="M1175 9805h-1.09l-1.8 13.12a2.15 2.15 0 01-2.11 1.88h-8a2.14 2.14 0 01-2.1-1.88l-1.78-13.12H1157a1 1 0 010-2h5v-1a3 3 0 013-3h2a3 3 0 013 3v1h5a1 1 0 010 2zm-7-3a1 1 0 00-1-1h-2a1 1 0 00-1 1v1h4zm-7.87 3l1.75 12.9c.02.05.07.09.12.1h8c.06-.01.1-.05.12-.11l1.78-12.89zm6.87 3h2v6h-2zm-4 0h2v6h-2z"/>
<path id="def-triangle-a" d="M1238 6883l7.22 7.22 7.22-7.22z"/>
<path id="def-user-circle-a" d="M1265.24 30.18a10 10 0 01-2.18 10.9 6.94 6.94 0 00-4.7-4.69 5 5 0 10-4.66.01c-2.24.72-4 2.47-4.72 4.71a10 10 0 1116.26-10.93zm-6.22 1.82a3 3 0 11-6-.01 3 3 0 016 .01zm-8.3 10.48c.4-2.6 2.65-4.5 5.28-4.48 2.73 0 5.1 1.96 5.27 4.37l.03.09a9.9 9.9 0 01-10.57.02zM1256 46a12.01 12.01 0 000-24 12 12 0 100 24z"/>
<path id="def-vb-a" d="M955.45 276.38c.68 3.25.79 6.51-.02 9.76-.14.57-.36 1.11-.58 1.65-.84 2.05-2.5 3.13-4.57 3.73-1.63.48-3.31.69-5 .82-.89.07-2.29.03-3.18.02-.76-.01-.55-.04-1.04.45-.96.97-1.84 1.82-2.76 2.84a28 28 0 01-1.35 1.35v-4.93c0-.25-.07-.4-.3-.5-.26-.1-.5-.24-.75-.34a6.95 6.95 0 01-4.35-4.98 19.93 19.93 0 01-.51-6.16c.07-1.4.26-2.79.64-4.15a6.8 6.8 0 013.48-4.25 13.83 13.83 0 014.79-1.47 25.9 25.9 0 019.8.59 8.9 8.9 0 013.5 1.69 6.59 6.59 0 012.2 3.88zm-12.05-1.52c.54.04 1.07.15 1.6.28 1.98.5 3.52 1.53 4.32 3.43.42.99.63 2.02.7 3.08.02.27.15.42.43.42.27-.01.38-.19.39-.43.02-.21.01-.42.01-.64a7.41 7.41 0 00-1.39-4.12c-1.49-1.96-3.43-2.7-6-2.82-.31-.02-.49.1-.51.42-.01.31.21.36.45.38zm4.39 4.61c.11.4.21.81.26 1.22.03.27-.03.64.42.65.32.01.4-.13.43-.67a4.58 4.58 0 00-.68-2.46c-.96-1.52-2.37-2.16-4.16-2.32-.28-.03-.48.08-.52.37-.05.3.14.44.41.48.55.08 1.08.22 1.6.4a3.32 3.32 0 012.24 2.33zm-2.22-1.46a2.29 2.29 0 00-.89-.22c-.38.03-.58.19-.58.45.01.33.3.33.52.39l.27.06c.72.19 1.13.65 1.27 1.36.03.13.04.27.08.4.06.18.18.31.4.31.21-.01.34-.13.39-.32l.04-.35a2.4 2.4 0 00-1.5-2.08zm4.89 7.94c-.78-.65-1.6-1.25-2.47-1.78-1.02-.62-1.77-.45-2.47.49l-.11.14c-.32.39-.72.54-1.22.4a5.89 5.89 0 01-1.51-.74 6.76 6.76 0 01-2.77-3.19c-.35-.82-.19-1.35.54-1.88l.28-.2c.55-.45.68-.89.37-1.52a9.94 9.94 0 00-2.3-3.05 1.3 1.3 0 00-.97-.36 2.9 2.9 0 00-2.62 2.74c-.01.37.08.78.24 1.17 2.23 5.38 6.16 9.1 11.6 11.36.4.17.82.27 1.25.15a3.75 3.75 0 002.55-2.16c.28-.61.14-1.13-.39-1.57z"/>
<path id="def-ynadex-a" d="M471.93 10326.44h-.59c-.92 0-1.8-.64-1.8-2.24 0-1.67.83-2.35 1.68-2.35h.7v4.59zm.92-5.44h-1.6c-1.55 0-2.87 1.13-2.87 3.33 0 1.32.64 2.3 1.78 2.78l-2.13 3.68c-.07.12 0 .21.1.21h1c.08 0 .14-.03.17-.1l1.93-3.6h.7v3.6c0 .05.04.1.1.1h.86c.08 0 .11-.04.11-.1v-9.77c0-.09-.06-.13-.15-.13z"/>
<path id="def-ytube-a" d="M1343.37 349.72v-9.44l6.27 4.72zm-7.81-14.03a3.54 3.54 0 00-3.56 3.51v11.6a3.54 3.54 0 003.56 3.51h19.88a3.54 3.54 0 003.56-3.5V339.2a3.54 3.54 0 00-3.56-3.51h-19.88z"/>
</defs>
<symbol id="icon-arrow-chevron" viewBox="0 0 9 15"><path d="M7.07.862L0 7.93 7.072 15l1.06-1.06-6.011-6.01L8.13 1.922 7.07.862z"/></symbol>
<symbol id="icon-arrow-down" viewBox="0 0 8 5"><use xlink:href="#def-arrow-down-a" transform="translate(-223 -20813)"/></symbol>
<symbol id="icon-arrow-left" viewBox="0 0 18 12"><path d="M.1 6.3c-.1-.3 0-.6.1-.8l4.3-4.3c.3-.3.7-.3 1 0 .3.3.3.7 0 1l-3 3.1h14.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H2.5l3.1 3.1c.3.3.3.8 0 1-.2.2-.3.2-.4.3-.2.1-.5 0-.7-.2L.2 6.6c-.1-.1-.1-.2-.1-.3z"/></symbol>
<symbol id="icon-arrow-menu" viewBox="0 0 10 5"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0l5 5 5-5H0z"/></symbol>
<symbol id="icon-arrow-right" viewBox="0 0 15 12"><path d="M14.19 5.77c.11.26.05.57-.15.78l-4.32 4.33a.72.72 0 01-1.02 0 .72.72 0 010-1.02l3.09-3.1H.69A.72.72 0 010 6.04c0-.38.31-.7.69-.72h11.1L8.7 2.23a.73.73 0 01.33-1.21c.24-.06.51.01.69.19l4.32 4.32a.6.6 0 01.15.24z"/></symbol>
<symbol id="icon-arrow" viewBox="0 0 20 17"><use xlink:href="#def-arrow-a" transform="translate(-1033 -789)"/></symbol>
<symbol id="icon-be" viewBox="0 0 25 16"><use xlink:href="#def-be-a" transform="translate(-39 -27)"/></symbol>
<symbol id="icon-be2-mob" viewBox="0 0 34 34"><path d="M15.426 16.508s1.507-.112 1.507-1.879S15.7 12 14.138 12H9v9.875h5.138s3.137.099 3.137-2.915c0 0 .137-2.452-1.85-2.452zm-4.162-2.753h2.874s.699 0 .699 1.027c0 1.028-.411 1.177-.877 1.177h-2.696v-2.204zm2.742 6.365h-2.742v-2.64h2.874s1.041-.013 1.041 1.357c0 1.142-.761 1.271-1.173 1.283zM23.408 12.582h-4.074v1.216h4.074v-1.216zM21.458 14.513c-3.797 0-3.794 3.793-3.794 3.793s-.26 3.775 3.794 3.775c0 0 3.38.193 3.38-2.626H23.1s.058 1.062-1.584 1.062c0 0-1.737.116-1.737-1.718h5.116s.56-4.286-3.437-4.286zm1.545 2.968h-3.244s.213-1.522 1.738-1.522 1.506 1.522 1.506 1.522z"/></symbol>
<symbol id="icon-be2" viewBox="0 0 56 56"><path d="M27.475 27.946s1.987-.148 1.987-2.479c0-2.33-1.625-3.467-3.685-3.467H19v13.024h6.777s4.137.13 4.137-3.844c0 0 .18-3.234-2.439-3.234zm-5.489-3.631h3.791s.921 0 .921 1.355-.542 1.551-1.156 1.551h-3.556v-2.906zm3.616 8.394h-3.616v-3.48h3.79s1.374-.018 1.374 1.788c0 1.506-1.004 1.677-1.548 1.692zM38.004 22.767H32.63v1.604h5.373v-1.604zM35.432 25.314c-5.009 0-5.004 5.003-5.004 5.003s-.344 4.98 5.004 4.98c0 0 4.456.254 4.456-3.464h-2.292s.077 1.4-2.088 1.4c0 0-2.291.154-2.291-2.266h6.748s.738-5.653-4.533-5.653zm2.037 3.915H33.19s.28-2.008 2.291-2.008c2.013 0 1.987 2.008 1.987 2.008z"/></symbol>
<symbol id="icon-briefcase" viewBox="834 13519 48 44"><path d="M836.5 13563c-1.4 0-2.5-1.2-2.5-2.6v-19.4c0 .6.4 1 1 1h1v18.4c0 .3.2.6.5.6h42.9c.3 0 .5-.3.5-.6v-18.4h1c.6 0 1-.4 1-1s-.4-1-1-1h-1v-10.4c0-.3-.2-.5-.5-.6h-42.9c-.3 0-.5.3-.5.6v10.4h-1c-.6 0-1 .4-1 1v-11.4c0-1.4 1.1-2.5 2.5-2.6H849v1c0 .6.4 1 1 1s1-.4 1-1v-1h14v1c0 .6.4 1 1 1 .3 0 .5-.1.7-.3.2-.2.3-.4.3-.7v-1h12.5c1.4 0 2.5 1.2 2.5 2.6v30.9c0 1.4-1.1 2.6-2.5 2.6h-43zm18.4-21H836v-2h18.9c.6 0 1 .4 1 1s-.4 1-1 1zm25.1-2v2h-18.9c-.6 0-1-.4-1-1s.4-1 1-1H880zm-13-16.8c0-2.3-1.9-4.2-4.2-4.2h-9.6c-2.3 0-4.2 1.9-4.2 4.2v3.8h2v-3.8c0-1.2 1-2.2 2.2-2.2h9.6c1.2 0 2.2 1 2.2 2.2v3.8h2v-3.8z"/><clipPath id="def-briefcase-b"><use xlink:href="#def-briefcase-a" overflow="visible"/></clipPath><g clip-path="url(#def-briefcase-b)"><path stroke-width="4" stroke-miterlimit="50" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/></g></symbol>
<symbol id="icon-burger" viewBox="0 0 20 14"><g fill-rule="evenodd"><path d="M0 0h20v2H0zM0 6h20v2H0zM0 12h20v2H0z"/></g></symbol>
<symbol id="icon-cancel-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm0-22a10 10 0 100 20 10 10 0 000-20zm4.71 13.29L13.41 12l3.3-3.29a1 1 0 00-.02-1.4 1 1 0 00-1.4-.02L12 10.59l-3.29-3.3a1 1 0 00-1.4.02 1 1 0 00-.02 1.4l3.3 3.29-3.3 3.29a1 1 0 00.02 1.4 1 1 0 001.4.02l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z"/></symbol>
<symbol id="icon-clip" viewBox="0 0 25 22"><path d="M12.1 21.37a1.02 1.02 0 01-.71-1.73L21.74 9.11a4.19 4.19 0 000-5.87 4.04 4.04 0 00-5.78 0l-12 12.21c-.59.49-.94 1.2-.97 1.97.05.49.28.95.63 1.29.31.35.77.53 1.23.48.74-.17 1.4-.57 1.89-1.15l9.42-9.58a.98.98 0 011.41 0c.39.4.39 1.04 0 1.44l-9.42 9.58A5.3 5.3 0 015.1 21.2a3.37 3.37 0 01-2.89-1.05A4.16 4.16 0 011 17.54a4.62 4.62 0 011.55-3.53l12-12.2a6.03 6.03 0 018.6 0 6.24 6.24 0 010 8.74L12.8 21.07a.98.98 0 01-.7.3z"/></symbol>
<symbol id="icon-clock" viewBox="0 0 24 24"><path d="M0 12a12 12 0 1124 0 12 12 0 01-24 0zm2 0a10 10 0 1020 0 10 10 0 00-20 0zm14 5a1 1 0 00.71-1.71L13 11.59V5a1 1 0 00-1-1 1 1 0 00-1 1v7a1 1 0 00.08.38c.05.12.12.24.21.33l4 4c.19.18.45.29.71.29z"/></symbol>
<symbol id="icon-close-menu" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.636 2.303L13.97.636 8.136 6.469 2.303.636.636 2.303 6.47 8.136.636 13.97l1.667 1.667 5.833-5.833 5.833 5.833 1.667-1.666-5.833-5.834 5.833-5.833z"/></symbol>
<symbol id="icon-close" viewBox="0 0 16 15"><g fill-rule="evenodd"><path d="M1.963.045l13.791 12.86-1.364 1.463L.6 1.508z"/><path d="M14.39.045L.6 12.905l1.364 1.463 13.79-12.86z"/></g></symbol>
<symbol id="icon-comments" viewBox="0 0 16 16"><use xlink:href="#def-comments-a" transform="translate(-748 -8949)"/></symbol>
<symbol id="icon-eaye" viewBox="0 0 16 11"><use xlink:href="#def-eaye-a" transform="translate(-614 -8951)"/></symbol>
<symbol id="icon-fb" viewBox="0 0 13 25"><path d="M8.44 25V13.6h3.83l.58-4.45H8.44V6.31c0-1.28.36-2.16 2.2-2.16H13V.18A29.7 29.7 0 009.57 0c-3.4 0-5.73 2.07-5.73 5.87v3.28H0v4.45h3.84V25z"/></symbol>
<symbol id="icon-fb2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.415 24.638v-7.131h2.457l.366-2.784h-2.823v-1.776c0-.8.23-1.351 1.411-1.351h1.514v-2.49A21.931 21.931 0 0019.14 9c-2.182 0-3.677 1.295-3.677 3.672v2.051H13v2.784h2.463v7.13h2.952z"/></symbol>
<symbol id="icon-fb2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M30.142 38.625V29.22h3.24l.483-3.671H30.14v-2.343c0-1.056.305-1.782 1.862-1.782H34V18.14a28.937 28.937 0 00-2.902-.14c-2.877 0-4.849 1.708-4.849 4.843v2.706H23v3.671h3.25v9.405h3.892z"/></symbol>
<symbol id="icon-file" viewBox="0 0 24 20"><use xlink:href="#def-file-a" transform="translate(-491 -9437)"/></symbol>
<symbol id="icon-github-mob" viewBox="0 0 34 34"><path d="M17.2 10c-3.978 0-7.2 3.307-7.2 7.386 0 3.263 2.063 6.031 4.923 7.007.36.07.492-.16.492-.355 0-.175-.006-.64-.009-1.256-2.003.445-2.425-.99-2.425-.99-.328-.853-.801-1.081-.801-1.081-.652-.458.05-.449.05-.449.723.052 1.103.761 1.103.761.642 1.13 1.685.803 2.097.615.065-.478.25-.803.456-.988-1.599-.185-3.28-.82-3.28-3.65 0-.806.28-1.464.741-1.981-.08-.187-.324-.938.063-1.955 0 0 .603-.198 1.98.757a6.754 6.754 0 011.8-.25 6.754 6.754 0 011.8.25c1.368-.955 1.971-.757 1.971-.757.387 1.017.144 1.768.072 1.955.46.517.738 1.175.738 1.981 0 2.838-1.683 3.462-3.285 3.644.252.222.486.674.486 1.366 0 .989-.009 1.783-.009 2.023 0 .193.126.424.495.35 2.881-.969 4.942-3.739 4.942-6.997 0-4.079-3.224-7.386-7.2-7.386z"/></symbol>
<symbol id="icon-github" viewBox="0 0 56 56"><path d="M27.913 19C22.436 19 18 23.362 18 28.741c0 4.305 2.84 7.955 6.778 9.242.496.092.677-.21.677-.468 0-.232-.008-.844-.012-1.657-2.758.588-3.34-1.306-3.34-1.306-.45-1.125-1.102-1.425-1.102-1.425-.898-.604.07-.592.07-.592.995.068 1.518 1.004 1.518 1.004.884 1.49 2.32 1.059 2.887.81.09-.63.344-1.059.628-1.302-2.202-.244-4.515-1.082-4.515-4.814 0-1.063.384-1.932 1.02-2.614-.112-.246-.446-1.236.086-2.578 0 0 .83-.26 2.727.999a9.676 9.676 0 012.478-.329 9.676 9.676 0 012.478.329c1.883-1.26 2.714-.999 2.714-.999.532 1.342.198 2.332.099 2.578a3.737 3.737 0 011.016 2.614c0 3.742-2.317 4.566-4.523 4.805.347.293.67.89.67 1.803 0 1.303-.013 2.35-.013 2.667 0 .255.173.56.681.463 3.966-1.279 6.804-4.932 6.804-9.23 0-5.38-4.439-9.741-9.913-9.741z"/></symbol>
<symbol id="icon-gplus" viewBox="0 0 13 8"><use xlink:href="#def-gplus-a" transform="translate(-466 -10165)"/><use xlink:href="#def-gplus-b" transform="translate(-466 -10165)"/></symbol>
<symbol id="icon-head" viewBox="0 0 54 45"><g transform="translate(2 2)" fill-rule="evenodd"><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" fill-rule="nonzero"/><path stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" d="M46.923 13.25L22.99 0 0 14.007l23.179 13.44L46.923 13.25V30"/><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="47.308" cy="32.692" r="2.692"/><path d="M32.733 18.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865-3.694-1.99-7.403-3.98-11.097-5.957-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957zM36.733 15.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865a4281.61 4281.61 0 00-11.097-5.957c-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957z" fill-rule="nonzero"/></g></symbol>
<symbol id="icon-inst" viewBox="0 0 26 26"><use xlink:href="#def-inst-a" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-b" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-c" transform="translate(-1468 -332)"/></symbol>
<symbol id="icon-instagram-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M24.027 20.23a3.801 3.801 0 01-3.797 3.797h-6.433A3.801 3.801 0 0110 20.23v-6.433A3.801 3.801 0 0113.797 10h6.433a3.801 3.801 0 013.797 3.797v6.433zm-7.014-7.052a3.84 3.84 0 00-3.835 3.835 3.84 3.84 0 003.835 3.836 3.84 3.84 0 003.836-3.836 3.84 3.84 0 00-3.836-3.835zm0 6.848A3.016 3.016 0 0114 17.013 3.016 3.016 0 0117.013 14a3.016 3.016 0 013.013 3.013 3.016 3.016 0 01-3.013 3.013zm2.794-7.077c0-.625.509-1.133 1.133-1.133.625 0 1.134.508 1.134 1.133s-.509 1.134-1.134 1.134a1.135 1.135 0 01-1.133-1.134z"/></symbol>
<symbol id="icon-instagram" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M37.5 32.492a5.014 5.014 0 01-5.008 5.008h-8.484A5.014 5.014 0 0119 32.492v-8.484A5.014 5.014 0 0124.008 19h8.484a5.014 5.014 0 015.008 5.008v8.484zm-9.25-9.3a5.064 5.064 0 00-5.058 5.058c0 2.79 2.269 5.059 5.058 5.059 2.79 0 5.059-2.27 5.059-5.059 0-2.79-2.27-5.058-5.059-5.058zm0 9.032a3.978 3.978 0 01-3.974-3.974 3.978 3.978 0 013.974-3.974 3.978 3.978 0 013.974 3.974 3.978 3.978 0 01-3.974 3.974zm3.685-9.334c0-.825.67-1.495 1.494-1.495.825 0 1.495.67 1.495 1.495 0 .824-.67 1.495-1.495 1.495-.824 0-1.494-.67-1.494-1.495z"/></symbol>
<symbol id="icon-like-down" viewBox="0 0 20 22"><use xlink:href="#def-like-down-a" transform="translate(-995 -522)"/></symbol>
<symbol id="icon-like-up" viewBox="0 0 20 22"><use xlink:href="#def-like-up-a" transform="translate(-934 -520)"/></symbol>
<symbol id="icon-like" viewBox="0 0 16 16"><use xlink:href="#def-like-a" transform="translate(-687 -8946)"/></symbol>
<symbol id="icon-link" viewBox="0 0 19 21"><use xlink:href="#def-link-a" transform="translate(-624 -1161)"/><use xlink:href="#def-link-b" transform="translate(-624 -1161)"/></symbol>
<symbol id="icon-mail" viewBox="0 0 16 12"><use xlink:href="#def-mail-a" transform="translate(-1042 -260)"/><use xlink:href="#def-mail-b" transform="translate(-1042 -260)"/></symbol>
<symbol id="icon-minus-zoom" viewBox="0 0 26 2"><path stroke-linecap="square" stroke-miterlimit="50" stroke-width="2" d="M1.5 1h23.19"/></symbol>
<symbol id="icon-outside" viewBox="0 0 21 21"><use xlink:href="#def-outside-a" transform="translate(-1185 -9211)"/></symbol>
<symbol id="icon-pencil" viewBox="0 0 20 21"><use xlink:href="#def-pencil-a" transform="translate(-1185 -9800)"/></symbol>
<symbol id="icon-phone" viewBox="0 0 21 22"><use xlink:href="#def-phone-a" transform="translate(-716 -19)"/></symbol>
<symbol id="icon-play-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zM2 12a10 10 0 1020 0 10 10 0 00-20 0z"/><path d="M11.01 14.52c-.05.28.1.55.35.67.25.13.55.07.74-.14l2.85-2.94c.26-.27.27-.7.02-.98l-2.83-2.94a.69.69 0 00-.75-.13.67.67 0 00-.38.65z"/></symbol>
<symbol id="icon-play-reviews" viewBox="0 0 9 9"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.074 4.507c0 .41-.745.741-.745.741l-5.854 2.91a.619.619 0 01-.563-.054.649.649 0 01-.294-.494V1.392A.586.586 0 01.895.853a.557.557 0 01.595.01l5.839 2.903s.745.331.745.741z"/></symbol>
<symbol id="icon-play" viewBox="0 0 17 17"><path d="M17 9.02c0 .88-1.6 1.59-1.6 1.59L2.84 16.86c-.4.16-.84.12-1.21-.12A1.4 1.4 0 011 15.68V2.33c-.03-.47.2-.92.6-1.16.39-.24.89-.23 1.27.02L15.4 7.43s1.6.71 1.6 1.59z"/></symbol>
<symbol id="icon-plus-zoom" viewBox="0 0 24 24"><path d="M23 13H13v10a1 1 0 01-1 1 1 1 0 01-1-1V13H1a1 1 0 01-1-1 1 1 0 011-1h10V1a1 1 0 011-1 1 1 0 011 1v10h10a1 1 0 011 1 1 1 0 01-1 1z"/></symbol>
<symbol id="icon-plus" viewBox="0 0 16 16"><use xlink:href="#def-plus-a" transform="translate(-1208 -4164)"/></symbol>
<symbol id="icon-search" viewBox="0 0 22 22"><use xlink:href="#def-search-a" transform="translate(-1083 -22)"/></symbol>
<symbol id="icon-shape" viewBox="0 0 48 38"><use xlink:href="#def-shape-a" transform="translate(-832 -13296)"/></symbol>
<symbol id="icon-share" viewBox="0 0 26 24"><path d="M21.03 8a3.95 3.95 0 01-3.02-1.41l-9.08 4.54c.12.55.13 1.11.02 1.66l9.06 4.61a3.98 3.98 0 11-.9 1.79l-9.05-4.61a4 4 0 11-.05-5.22l9.1-4.55A4 4 0 1121.03 8zm0 14a2 2 0 002-2 2 2 0 10-2 2zm-18-10a2 2 0 104 0 2 2 0 00-4 0zm16-8a2 2 0 104 0 2 2 0 00-4 0z"/></symbol>
<symbol id="icon-smile" viewBox="0 0 23 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 23.278c-6.351 0-11.5-5.148-11.5-11.5C0 5.427 5.149.278 11.5.278S23 5.427 23 11.778c-.005 6.35-5.15 11.495-11.5 11.5zm0-21.083a9.583 9.583 0 00-9.583 9.583 9.584 9.584 0 1019.167 0A9.599 9.599 0 0011.5 2.195zm-6.613 12.87a7.38 7.38 0 006.613 4.38 7.333 7.333 0 006.613-4.38.957.957 0 00-.93-1.427.96.96 0 00-.796.603 5.277 5.277 0 01-9.774 0 .959.959 0 00-1.726.824zm10.447-3.287a1.917 1.917 0 110-3.833 1.917 1.917 0 010 3.833zM5.75 9.862a1.917 1.917 0 103.833 0 1.917 1.917 0 00-3.833 0z"/></symbol>
<symbol id="icon-socials" viewBox="0 0 40 40"><g fill-rule="evenodd"><circle cx="20" cy="20" r="20"/><path d="M20.021 31h-.485C13.717 31 9 26.08 9 20.009c0-6.07 4.717-10.991 10.536-10.991.309-.024.619-.024.928 0 5.819 0 10.536 4.92 10.536 10.99C31 26.08 26.283 31 20.464 31h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"/><path d="M19.382 31C13.648 31 9 26.08 9 20.009c0-6.07 4.648-10.991 10.382-10.991.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 01-1.142.252.992.992 0 01-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 01.26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z" clip-rule="evenodd"/><path d="M19.91 30.967a1.101 1.101 0 01-.419-.077 1.101 1.101 0 01-1.21-.253c-5.708-5.95-5.708-15.337 0-21.288a1.1 1.1 0 01.704-.33 6.664 6.664 0 011.012 0C26.074 9.02 31 13.94 31 20.01S26.074 31 19.997 31l-.088-.033zm-.353-19.783a13.177 13.177 0 000 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z" clip-rule="evenodd"/><path d="M27.944 17H11.056C10.473 17 10 16.552 10 16s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1zM27.944 25H11.056C10.473 25 10 24.552 10 24s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"/></g></symbol>
<symbol id="icon-strawberry" viewBox="0 0 49 48"><use xlink:href="#def-strawberry-a" transform="translate(-832 -13406)"/></symbol>
<symbol id="icon-telegram" viewBox="0 0 29 24"><use xlink:href="#def-telegram-a" transform="translate(-795 -271)"/></symbol>
<symbol id="icon-telegram2-mob" viewBox="0 0 34 34"><path d="M14.95 19.329l-.25 3.528c.358 0 .514-.154.7-.34l1.683-1.607 3.486 2.553c.64.356 1.09.168 1.263-.588L24.12 12.15c.204-.946-.341-1.316-.964-1.084l-13.452 5.15c-.918.357-.904.869-.156 1.1l3.44 1.07 7.988-4.998c.375-.25.717-.112.436.137L14.95 19.33z"/></symbol>
<symbol id="icon-telegram2" viewBox="0 0 56 56"><path d="M25.848 30.985l-.331 4.653c.473 0 .678-.203.924-.447l2.22-2.121 4.598 3.367c.843.47 1.437.223 1.665-.776l3.018-14.143.001-.001c.268-1.247-.45-1.734-1.272-1.428L18.929 26.88c-1.211.47-1.193 1.145-.206 1.451l4.536 1.411 10.536-6.593c.495-.328.946-.146.575.182l-8.522 7.653z"/></symbol>
<symbol id="icon-tm" viewBox="0 0 26 22"><use xlink:href="#def-tm-a" transform="translate(-1399 -334)"/></symbol>
<symbol id="icon-trash" viewBox="0 0 20 21"><use xlink:href="#def-trash-a" transform="translate(-1156 -9799)"/></symbol>
<symbol id="icon-triangle" viewBox="0 0 16 8"><use xlink:href="#def-triangle-a" transform="translate(-1237 -6883)"/></symbol>
<symbol id="icon-tw" viewBox="0 0 18 15"><path d="M18 1.75c-.66.3-1.37.5-2.12.59A3.7 3.7 0 0017.5.27c-.71.43-1.5.74-2.34.91a3.68 3.68 0 00-6.39 2.56c0 .3.03.58.09.85A10.45 10.45 0 011.25.69 3.75 3.75 0 002.4 5.68a3.67 3.67 0 01-1.68-.47v.05a3.75 3.75 0 002.97 3.67 3.51 3.51 0 01-1.67.06 3.7 3.7 0 003.45 2.6A7.33 7.33 0 010 13.14a10.37 10.37 0 005.66 1.68c6.79 0 10.51-5.7 10.51-10.64l-.01-.49A7.35 7.35 0 0018 1.76z"/></symbol>
<symbol id="icon-twitter-mob" viewBox="0 0 34 34"><path d="M24.406 12.386a6.16 6.16 0 01-1.702.466 2.937 2.937 0 001.3-1.632c-.572.34-1.202.58-1.873.715a2.952 2.952 0 00-5.109 2.02c0 .233.02.458.068.672a8.36 8.36 0 01-6.087-3.089 2.957 2.957 0 00.908 3.947 2.917 2.917 0 01-1.335-.363v.032a2.967 2.967 0 002.366 2.902c-.24.066-.502.097-.774.097-.189 0-.38-.01-.56-.05a2.981 2.981 0 002.76 2.057 5.934 5.934 0 01-3.661 1.26c-.242 0-.475-.011-.707-.04a8.314 8.314 0 004.53 1.325c5.435 0 8.406-4.502 8.406-8.404 0-.13-.004-.257-.01-.382a5.89 5.89 0 001.48-1.533z"/></symbol>
<symbol id="icon-twitter" viewBox="0 0 56 56"><path d="M38 21.828c-.707.31-1.46.515-2.244.615a3.874 3.874 0 001.713-2.153 7.783 7.783 0 01-2.47.943 3.894 3.894 0 00-6.738 2.664c0 .308.026.605.09.887a11.025 11.025 0 01-8.028-4.074 3.922 3.922 0 00-.533 1.969 3.9 3.9 0 001.73 3.237 3.847 3.847 0 01-1.76-.48v.043a3.913 3.913 0 003.12 3.827 3.887 3.887 0 01-1.02.129c-.25 0-.502-.015-.738-.067.505 1.543 1.937 2.677 3.64 2.714a7.827 7.827 0 01-4.83 1.66c-.32 0-.626-.013-.932-.052a10.966 10.966 0 005.976 1.748c7.167 0 11.086-5.938 11.086-11.085a9.95 9.95 0 00-.014-.503A7.77 7.77 0 0038 21.828z"/></symbol>
<symbol id="icon-user-circle" viewBox="0 0 24 24"><use xlink:href="#def-user-circle-a" transform="translate(-1244 -22)"/></symbol>
<symbol id="icon-vb" viewBox="0 0 25 27"><use xlink:href="#def-vb-a" transform="translate(-931 -270)"/></symbol>
<symbol id="icon-view-list" viewBox="0 0 15 15"><path d="M0 6V0h15v6zm0 9V9h15v6z"/></symbol>
<symbol id="icon-view-tile" viewBox="0 0 15 15"><path d="M0 6V0h6v6zm9 0V0h6v6zm0 9V9h6v6zm-9 0V9h6v6z"/></symbol>
<symbol id="icon-vk" viewBox="0 0 22 14"><path d="M10.61 13.8h1.3s.39-.04.59-.27c.19-.2.18-.59.18-.59s-.02-1.8.78-2.07c.8-.26 1.82 1.75 2.91 2.52.81.58 1.44.46 1.44.46l2.89-.05s1.52-.09.8-1.33c-.06-.1-.42-.92-2.15-2.59-1.82-1.75-1.58-1.47.61-4.5 1.33-1.84 1.87-2.97 1.7-3.45-.16-.46-1.14-.34-1.14-.34l-3.26.02s-.24-.03-.42.08-.29.36-.29.36-.52 1.43-1.2 2.64c-1.46 2.57-2.04 2.7-2.27 2.54-.56-.37-.42-1.49-.42-2.28 0-2.49.36-3.52-.71-3.79A5.26 5.26 0 0010.43 1c-1.16-.01-2.15.01-2.7.29-.38.19-.66.61-.49.63.22.03.71.14.97.51.33.47.32 1.53.32 1.53s.19 2.92-.45 3.29c-.44.25-1.04-.26-2.34-2.59-.66-1.19-1.16-2.5-1.16-2.5s-.1-.25-.27-.38c-.21-.16-.5-.21-.5-.21l-3.1.02s-.47.01-.64.22c-.15.19-.01.58-.01.58s2.43 5.89 5.17 8.87c2.52 2.72 5.38 2.54 5.38 2.54z"/></symbol>
<symbol id="icon-vk2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.79 21.913h.947a.77.77 0 00.436-.201.795.795 0 00.13-.459s-.016-1.399.573-1.608c.588-.209 1.336 1.351 2.13 1.954.297.259.68.383 1.063.346l2.123-.032s1.116-.073.589-1.03a7.642 7.642 0 00-1.582-2.002c-1.337-1.35-1.153-1.134.451-3.473.978-1.424 1.367-2.3 1.245-2.67a.866.866 0 00-.832-.257l-2.4.016a.463.463 0 00-.305.056.702.702 0 00-.214.282 15.134 15.134 0 01-.886 2.042c-1.062 1.978-1.49 2.082-1.665 1.962-.405-.29-.306-1.15-.306-1.77 0-1.913.268-2.717-.511-2.926a4.053 4.053 0 00-1.123-.12 4.804 4.804 0 00-1.987.225c-.275.144-.48.466-.351.49.273.03.524.167.703.386.165.37.246.774.237 1.182 0 0 .145 2.26-.329 2.54-.32.194-.764-.2-1.719-1.993a17.581 17.581 0 01-.848-1.938.803.803 0 00-.198-.29.84.84 0 00-.367-.16l-2.276.016a.723.723 0 00-.466.169.581.581 0 00-.016.442s1.788 4.559 3.805 6.859c.99 1.217 2.427 1.931 3.95 1.962z"/></symbol>
<symbol id="icon-vk2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M28.274 34.074h1.25c.213-.024.413-.117.574-.265.117-.177.177-.39.172-.605 0 0-.02-1.845.755-2.12.776-.276 1.763 1.78 2.811 2.576.391.342.895.506 1.4.456l2.802-.042s1.47-.096.775-1.358a10.079 10.079 0 00-2.085-2.64c-1.763-1.782-1.522-1.495.594-4.582 1.29-1.877 1.804-3.033 1.642-3.52a1.143 1.143 0 00-1.098-.34l-3.163.021a.61.61 0 00-.403.075.925.925 0 00-.282.37 19.972 19.972 0 01-1.17 2.694c-1.4 2.61-1.964 2.747-2.196 2.588-.534-.382-.403-1.516-.403-2.333 0-2.524.353-3.584-.675-3.86a5.345 5.345 0 00-1.48-.16 6.336 6.336 0 00-2.62.298c-.363.19-.635.615-.464.646.36.039.691.221.927.51.218.487.325 1.02.312 1.558 0 0 .192 2.98-.433 3.352-.423.254-1.007-.265-2.267-2.63a23.184 23.184 0 01-1.118-2.556 1.06 1.06 0 00-.262-.382 1.109 1.109 0 00-.484-.212l-3.002.021a.953.953 0 00-.615.223.767.767 0 00-.02.583s2.358 6.013 5.018 9.046c1.305 1.606 3.2 2.548 5.209 2.588z"/></symbol>
<symbol id="icon-yandex" viewBox="0 0 5 11"><path d="M4.847 0H3.259C1.7 0 .376 1.169.376 3.438c0 1.36.64 2.364 1.783 2.86L.028 10.092c-.07.123 0 .22.111.22h.99c.083 0 .139-.028.166-.097L3.231 6.49h.697v3.726c0 .041.041.097.097.097h.864c.083 0 .111-.042.111-.11V.138C5 .04 4.944 0 4.847 0zm-.92 5.61h-.584c-.92 0-1.81-.66-1.81-2.31 0-1.719.835-2.42 1.684-2.42h.71v4.73z" fill-rule="nonzero"/></symbol>
<symbol id="icon-ynadex" viewBox="0 0 5 10"><use xlink:href="#def-ynadex-a" transform="translate(-468 -10321)"/></symbol>
<symbol id="icon-ytube" viewBox="0 0 27 20"><use xlink:href="#def-ytube-a" transform="translate(-1332 -335)"/></symbol>
</svg>
<div class="header-banner topBanner" data-type="header" style="display: block; position: sticky; top: 0; z-index: 999;">
<a data-source="210497" data-banner="226288" class="universal-notice js-universal-notice-notice universal-notice--webp universal-notice--bitrix universal-notice--active" href="https://skillbox.ru/sale/main/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_header_all_all_skillbox" target="_blank" style="--banner-bg: #5927E9;--banner-color: #fff;--button-font-color: #000000;--button-bg-color: #FFFFFF;--banner-img-left: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.png);--banner-img-left-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.webp);--banner-img-center: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-center-mobile: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-mobile-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-right: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.png);--banner-img-right-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.webp);">
<span class="universal-notice__wrapper">
<b class="universal-notice__title">
Скидка до 55% и 3 курса в подарок
</b>
<span class="universal-timer js-universal-notice-timer js-universal-notice-active">
<span class="universal-timer__days js-universal-notice-days">2 дня</span>
<span class="js-universal-notice-hours">13</span>
:<span class="js-universal-notice-minutes">30</span>
:<span class="js-universal-notice-seconds">09</span>
</span>
<span class="universal-notice__button">Выбрать курс</span>
</span>
</a><script>
document.addEventListener('DOMContentLoaded', () => {
// Установите конечную дату
const deadline = new Date();
deadline.setDate(5);
deadline.setHours(0, 0, 0);
// Найдите элементы DOM
var timer = document.querySelector('.universal-timer');
const elDays = timer.querySelector('.js-universal-notice-days');
const elHours = timer.querySelector('.js-universal-notice-hours');
const elMinutes = timer.querySelector('.js-universal-notice-minutes');
const elSeconds = timer.querySelector('.js-universal-notice-seconds');
// Функция обновления таймера
const updateTimer = () => {
const now = new Date();
let diff = Math.max(0, deadline - now);
if (diff === 0) {
let lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
let lastDay = lastDayOfMonth.getDate();
if (lastDay - now.getDate() < 4) {
deadline.setMonth(deadline.getMonth() + 1, 1);
} else {
deadline.setDate(deadline.getDate() + 4);
}
diff = Math.max(0, deadline - now);
}
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)).toString();
var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)).toString();
var seconds = Math.floor((diff % (1000 * 60)) / 1000).toString();
if (timer) {
let dayTitles = ['день', 'дня', 'дней'];
let daySuffix = dayTitles[(days % 100 > 4 && days % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][days % 10 < 5 ? days % 10 : 5]]
elDays.innerHTML = days + ' ' + daySuffix;
elHours.innerHTML = hours.padStart(2, '0');
elMinutes.innerHTML = minutes.padStart(2, '0');
elSeconds.innerHTML = seconds.padStart(2, '0');
}
};
updateTimer();
const timerId = setInterval(updateTimer, 1000);
});
</script>
<style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{position:sticky;z-index:5;top:0;box-sizing:border-box;text-decoration:none;display:none;justify-content:space-between;overflow:hidden;color:var(--banner-color);background-color:var(--banner-bg);font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:opacity .25s ease-in-out}.universal-notice--active{display:flex}.universal-notice--bitrix{z-index:1000}.universal-notice *,.universal-notice ::after,.universal-notice ::before{box-sizing:inherit}.universal-notice::after,.universal-notice::before{display:none;width:194px;height:56px;content:"";background-size:194px 56px;background-repeat:no-repeat}.universal-notice--no-webp::before{background-image:var(--banner-img-left)}.universal-notice--no-webp::after{background-image:var(--banner-img-right)}.universal-notice--webp::before{background-image:var(--banner-img-left-webp)}.universal-notice--webp::after{background-image:var(--banner-img-right-webp)}.universal-notice--new-design{position:static;margin:4px;border-radius:16px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:166px;height:48px;background-size:166px 48px}.universal-notice__wrapper{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;padding:12px;width:100%}.universal-notice--new-design .universal-notice__wrapper::after{height:48px}.universal-notice__title{font-weight:500;font-size:15px;line-height:16px}.universal-notice--new-design .universal-notice__title{font-size:14px;line-height:15px}.universal-timer{display:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;font-size:24px;line-height:26px}.universal-notice--new-design .universal-timer{font-size:22px;line-height:24px}.universal-timer__days{margin-right:8px}.universal-notice__button{grid-column:2/3;padding:6px 16px;border-radius:6px;color:var(--button-font-color);background-color:var(--button-bg-color);font-weight:500;font-size:14px;line-height:20px}.universal-notice-sticky{position:fixed;z-index:5;top:0;left:0;width:100%;padding:11px 8px;color:var(--banner-color);background-color:var(--banner-bg);text-align:center;transition:transform .3s ease-in-out;will-change:transform;transform:translateY(-200%)}.universal-notice-sticky--show{transform:translateY(0)}@media (min-width:360px) and (max-width:0px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:360px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:768px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:768px) and (max-width:0px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:1024px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1024px) and (max-width:0px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1280px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1280px) and (max-width:0px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1400px) and (max-width:0px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}@media (min-width:1400px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}</style> </div>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
window.TopBanner = true;
});
$(document).ready(function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-show',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
});
$(document).on('click', '.header-banner', function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-click',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
var page = window.location;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226288,
'page': page,
'pageID': pageId
});
});
</script>
<header class="header">
<div id="menu" class="header__wrapper container">
<div class="header__logo link-active">
<a href="/media/" class="header__media-main-link">
<img src="/local/templates/media/images/logo/skillbox-media.svg" alt="Skillbox"/>
</a>
<a href="/media/gamedev/" class="header__media-category-link">
<span class="header__media-category js-category ">Геймдев</span>
</a>
</div>
<a href="/media/about-media/" v-if="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link--about" target="_blank" style="display: none">
Про медиа
</a>
<button v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="toggle-menu header__toggle toggle-menu--course"
@click="openCourseMenu()"
:class="{ 'toggle-menu--active': isOpenCourseMenu }"
style="display: none">
Онлайн-курсы
<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"
:class="{
'animated-chevron--default': isOpenCourseMenu,
'animated-chevron--active animated-chevron--default': ! isOpenCourseMenu
}"
class="animated-chevron toggle-menu__arrow select-arrow select-arrow--small">
<line x1="6.48415" y1="5.92242" x2="11.4909" y2="10.9291" stroke="currentColor" stroke-width="1.78"
class=" animated-chevron__line animated-chevron__line1 animated-chevron__line1--default"></line>
<line x1="6.3701" y1="5.9224" x2="11.3768" y2="0.915678" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
<line x1="1.36337" y1="10.9291" x2="6.3701" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line animated-chevron__line2 animated-chevron__line2--default"></line>
<line x1="1.47743" y1="0.915681" x2="6.48415" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
</svg>
</button>
<a href="https://skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=button_main_skillbox&utm_term=mainskillbox" v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link-ml0 menu-nav__link--main" target="_blank" style="display: none">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<div v-if="isOpenCourseMenu && !isMobile" class="menu-block menu-block--desktop" @click="closeCourseMenu($event)" style="display: none">
<div class="menu-block__wrapper menu-block__wrapper--desktop">
<div class="menu-block__content vue-container">
<span class="menu-block__title">
Направления обучения
</span>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/?utm_source=media&utm_medium=button&utm_campaign=button_courses_all&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/?utm_source=media&utm_medium=button&utm_campaign=button_courses_code&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/?utm_source=media&utm_medium=button&utm_campaign=button_courses_design&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management?utm_source=media&utm_medium=button&utm_campaign=button_courses_management&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing?utm_source=media&utm_medium=button&utm_campaign=button_courses_marketing&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games?utm_source=media&utm_medium=button&utm_campaign=button_courses_games&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia?utm_source=media&utm_medium=button&utm_campaign=button_courses_multimedia&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Кино и Музыка
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology?utm_source=media&utm_medium=button&utm_campaign=button_courses_psychology&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/health?utm_source=media&utm_medium=button&utm_campaign=button_courses_health&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Здоровье
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/spo/?utm_source=media&utm_medium=button&utm_campaign=button_courses_spo&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Цифровой колледж
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/?utm_source=media&utm_medium=button&utm_campaign=button_courses_general-development&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/?utm_source=media&utm_medium=button&utm_campaign=button_courses_engineering&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/?utm_source=media&utm_medium=button&utm_campaign=button_courses_english&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/?utm_source=media&utm_medium=button&utm_campaign=button_courses_other&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
</div>
</div>
</div>
<div v-show="isOpenMenu" class="menu-block" @click="closeMenu($event)" style="display: none">
<div class="menu-block__wrapper">
<div class="menu-block__content vue-container">
<h2 class="menu-block__header">Редакции</h2>
<div class="tab-nav" data-tab-parent="" data-action="index">
<div class="tab-nav__item">
<a class="" data-tab-name="media_nav" data-section-id="0" data-code="All directions" href="/media/">
<img src="/local/templates/media/images/common/menu-icon-mobile-1.png" alt=""/>
Все
</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/history/">
<img src="/local/templates/media/images/common/menu-icon-mobile-19.png"
alt=""/>
Истории</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="8"
data-code="Design"
href="/media/design/">
<img src="/local/templates/media/images/common/menu-icon-mobile-2.png" alt=""/>
Дизайн</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="10"
data-code="Code"
href="/media/code/">
<img src="/local/templates/media/images/common/menu-icon-mobile-3.png" alt=""/>
Код</a>
</div>
<div class="tab-nav__item">
<a class="tab-active"
data-tab-name="media_nav"
data-section-id="18"
data-code="GameDev"
href="/media/gamedev/">
<img src="/local/templates/media/images/common/menu-icon-mobile-4.png" alt=""/>
Геймдев</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="21"
data-code="Business"
href="/media/business/">
<img src="/local/templates/media/images/common/menu-icon-mobile-9.png" alt=""/>
Бизнес</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="9"
data-code="Marketing"
href="/media/marketing/">
<img src="/local/templates/media/images/common/menu-icon-mobile-5.png" alt=""/>
Маркетинг</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="11"
data-code=""
href="/media/management/">
<img src="/local/templates/media/images/common/menu-icon-mobile-6.png" alt=""/>
Управление</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="29"
data-code=""
href="/media/cinemusic/">
<img src="/local/templates/media/images/common/menu-icon-mobile-22.png" alt=""/>
Кино</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="36"
data-code=""
href="/media/music/">
<img src="/local/templates/media/images/common/menu-icon-mobile-23.png" alt=""/>
Музыка</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="34"
data-code=""
href="/media/photo/">
<img src="/local/templates/media/images/common/menu-icon-mobile-20.png" alt=""/>
Проектная фотография</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="17"
data-code="Development"
href="/media/growth/">
<img src="/local/templates/media/images/common/menu-icon-mobile-7.png" alt=""/>
Развитие</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="33"
data-code=""
href="/media/health/">
<img src="/local/templates/media/images/common/menu-icon-mobile-16.png" alt=""/>
Здоровье</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="32"
data-code=""
href="/media/money/">
<img src="/local/templates/media/images/common/menu-icon-mobile-17.png" alt=""/>
Деньги</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="22"
data-code="Education"
href="/media/education/">
<img src="/local/templates/media/images/common/menu-icon-mobile-8.png" alt=""/>
Образование</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="31"
data-code=""
href="/media/edtech/">
<img src="/local/templates/media/images/common/menu-icon-mobile-11.png" alt=""/>
EdTech</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="30"
data-code=""
href="/media/corptrain/">
<img src="/local/templates/media/images/common/menu-icon-mobile-10.png" alt=""/>
Корп. обучение</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="35"
data-code=""
href="/media/skillbox-blog/">
<img src="/local/templates/media/images/common/menu-icon-mobile-21.png" alt=""/>
Блог Skillbox</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/media/glossary/">
<img src="/local/templates/media/images/common/menu-icon-mobile-18.png"
alt=""/>
Глоссарий</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/specials/">
<img src="/local/templates/media/images/common/menu-icon-mobile-13.png"
alt=""/>
Спецпроекты</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/course/career-guide-free/">
<img src="/local/templates/media/images/common/menu-icon-mobile-15.png"
alt=""/>
Профориентация</a>
</div>
</div>
<h2 class="menu-block__header">Онлайн-курсы</h2>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Мультимедиа
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
<a href="/media/about-media/" rel="nofollow" class="menu-nav__link">
Про медиа
</a>
<a href="https://skillbox.ru/" rel="nofollow" class="menu-nav__link">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
<button v-if="isMobile" class="menu-toggle"
@click="openMenu()"
:class="{ 'menu-toggle--opened': isOpenMenu }" style="opacity: 0">
<span v-if="isOpenMenu" class="menu-toggle__line"></span>
<svg v-if="!isOpenMenu" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 5.5H0V4H24V5.5ZM24 11.5H0V13H24V11.5ZM24 19H0V20.5H24V19Z" fill="black"/>
</svg>
</button>
</div>
<script>
BX.Vue.create({
el: '#menu',
data: {
isOpenMenu: false,
isOpenCourseMenu: false,
isMobile: false,
isSubOpen: false,
display: 'none'
},
computed: {
isMobile() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
return w < 1024;
}
},
methods: {
openMenu() {
this.isOpenMenu = !this.isOpenMenu;
document.getElementsByTagName('body')[0].classList.toggle('scroll-locked');
window.addEventListener('keyup', this.closeMenu);
},
closeMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeMenu);
}
},
openCourseMenu() {
this.isOpenCourseMenu = !this.isOpenCourseMenu;
if (this.isOpenCourseMenu) {
document.getElementsByTagName('body')[0].classList.add('scroll-locked');
window.addEventListener('keyup', this.closeCourseMenu);
} else {
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
closeCourseMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenCourseMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
openSub() {
this.isSubOpen = !this.isSubOpen;
},
isMobileFn() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
this.isMobile = (w < 1024);
}
},
created() {
window.addEventListener("resize", this.isMobileFn);
document.querySelector('.menu-block').style.display = '';
document.querySelector('.menu-toggle').style.opacity = '1';
document.querySelector('.menu-nav__link').style.display = '';
this.display = 'block';
this.isMobileFn();
},
destroyed() {
window.removeEventListener("resize", this.isMobileFn);
}
});
</script>
</header>
<main class="content">
<div class="page style-update">
<div class="page-wrap">
<style>
.article-inner .rr-widget__title {
padding-top: 0 !important;
}
.article-inner div[data-retailrocket-markup-block] {
margin-top: -32px;
display: none;
}
.article-inner {
font-family: 'Graphik';
}
</style>
<div class="under_header_banner" data-type="under_header"><!-- Yandex.RTB R-A-13443663-10 -->
<div id="yandex_rtb_R-A-13443663-10"></div>
<script>
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-13443663-10",
"renderTo": "yandex_rtb_R-A-13443663-10"
})
})
</script>
</div> <div data-area="article" data-title="Уроки Blender — структура и оптимизация объектов, базовое программирование на Python, как работать в Blender / Skillbox Media" class=" noFullClass">
<div class="article-inner">
<section class="top-section-detail-page ">
<div class="container">
<div class="article-preview-info">
<div class="article-preview-info__tags ">
<div class="tag article-preview-info__tag">
<a href="/media/gamedev/"
class="tag-item university">
Геймдев </a>
</div>
</div>
<a class="info-hashtag article-preview-info__hashtag" href="/media/topic/articles/">
#статьи </a>
<ul class="info article-preview__info-box">
<li class="info-item"> <time class="info-text" datatime="#">2 фев 2022</time></li>
<li class="info-item hidden">
<span class="info-icon"><img src="/local/templates/media/images/icons/like.svg" alt=""></span>
<span class="info__text js-article-like-value">0</span>
</li>
</ul>
</div>
<div class="row">
<div class="top-section-detail-page__title-block col-xl-9 col-lg-10">
<div class="article-preview">
<h1 class="article-preview__title">Уроки по Blender: структура объектов, оптимизация, скрипты Python</h1>
<p class="article-preview__description">Разбираемся в более продвинутых понятиях и инструментах.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="210497"
data-courseId="137"
>
<div class="container">
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div> <!-- //share -->
</noindex>
<div class="row">
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-poster">
<picture >
<img src="https://248006.selcdn.ru/main/iblock/223/223b76517e5e7ad56c96797478b1d2ff/3fe47ca7bd9644052a27b2ffc5ec6ee6.png" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/223/223b76517e5e7ad56c96797478b1d2ff/3fe47ca7bd9644052a27b2ffc5ec6ee6.png" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
</p>
</noindex>
</div>
<div class="col-xl-3 col-lg-4 col-author">
<div class="article-author">
<div class="article-author__image">
<a href="/media/authors/leon-balbery/">
<img src="https://248006.selcdn.ru/main/iblock/f23/f230dea241ed7086de355ea43ccc5877/4b00e3feece0eb21334db424451cf51e.png" alt="Леон Балбери">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Леон Балбери </div>
<div class="article-author__description">
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах. </div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row flex-row-rev">
<div class="col-xl-3 col-lg-4 col-author">
<div class="js-article-banner" data-article-banner-mobile data-type="side_mounted" data-article-banner-sticky-start>
<!--AdFox START-->
<!--yandex_skillbox.media-->
<!--Площадка: Skillbox / Сквозной для застройщика Легенда / Боковой баннер сквозной для застройщика Легенда-->
<!--Категория: <не задана>-->
<!--Тип баннера: Media banner-->
<div id="adfox_176131540100027244"></div>
<script>
window.yaContextCb.push(()=>{
Ya.adfoxCode.create({
ownerId: 11649869,
containerId: 'adfox_176131540100027244',
params: {
p1: 'dkugb',
p2: 'p'
}
})
})
</script> </div>
<div class="js-article-banner" data-article-banner-mobile data-type="vertical" data-article-banner-sticky-end></div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="container container--setka">
<div class="js-article-banner" data-type="top"></div>
<div class="article-detail-text__setka" data-detail-text>
<div class="stk-post stk-layout_12col_18068 stk-theme_26309" data-ui-id="post" data-reset-type="class" data-editor-version="3.2.8-rc1" data-stk="{"images":[{"id":28498,"alt":"","caption":""},{"id":28497,"alt":"","caption":""},{"id":28496,"alt":"","caption":""},{"id":28495,"alt":"","caption":""},{"id":28494,"alt":"","caption":""},{"id":28493,"alt":"","caption":""},{"id":28492,"alt":"","caption":""},{"id":28491,"alt":"","caption":""},{"id":28490,"alt":"","caption":""},{"id":28489,"alt":"","caption":""},{"id":28488,"alt":"","caption":""},{"id":28487,"alt":"","caption":""},{"id":28486,"alt":"","caption":""}]}" data-layout-type="auto" data-ce-tag="post"><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-grid stk-theme_26309__mb_15" data-ce-tag="grid" data-stk-css="stk6U_oW"><div data-col-width="4" class="stk-grid-col" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img width="1880" src="/upload/setka_images/11581915122021_d94a1d0d95e1a6e27b7423a44412fc5bba80fae8.jpg" height="1707" data-image-id="25945" data-image-name="0.jpg" class="stk-image stk-reset" loading="lazy"/></div></figure></div><div data-col-width="8" class="stk-grid-col stk-grid-col_last valign-middle" data-stk-css="stkOivb6" data-ce-tag="grid-col"><h3 class="stk-reset stk-theme_26309__style_medium_header stk-theme_26309__mb_05" data-ce-tag="paragraph">Андрей Соколов</h3><p class="stk-reset stk-theme_26309__style_font_style-1629726727970 stk-theme_26309__mb_05" data-ce-tag="paragraph">Специалист по компьютерной графике, оптимизации и автоматизации проектов. Автор серии уроков по Blender.</p><div class="sklbx-links stk-container" data-ce-tag="container" data-container-name="Ссылки"><a class="sklbx-link sklbx-link--fb stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Youtube" href="https://www.youtube.com/channel/UC1XVcRiALJhE5rpqvH46uuw" target="_blank"><svg class="sklbx-link__icon" width="25" height="25" viewBox="0 0 23 25" xmlns="http://www.w3.org/2000/svg">
<path d="M22.3,7.8L22.3,7.8c0,0-0.2-1.5-0.8-2.1c-0.8-0.8-1.7-0.8-2.1-0.9C16.4,4.6,12,4.6,12,4.6s-4.4,0-7.4,0.2 c-0.4,0-1.3,0.1-2.1,0.9C1.9,6.3,1.7,7.8,1.7,7.8c-0.1,1.1-0.2,2.3-0.2,3.4v1.6c0,1.1,0.1,2.3,0.2,3.4c0,0,0.2,1.5,0.8,2.1 c0.8,0.8,1.9,0.8,2.3,0.9c1.7,0.2,7.2,0.2,7.2,0.2s4.4,0,7.4-0.2c0.4,0,1.3-0.1,2.1-0.9c0.6-0.6,0.8-2.1,0.8-2.1 c0.1-1.1,0.2-2.3,0.2-3.4v-1.6C22.5,10.1,22.5,8.9,22.3,7.8z M8.1,16.2V7.4l9.8,4.4L8.1,16.2z" fill-rule="nonzero"></path>
</svg></a><a class="sklbx-link sklbx-link--vk stk-container stk-container-link stk-reset stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="VKontakte" href="https://vk.com/andrey_guardian_sokolov" target="_blank"><svg class="sklbx-link__icon" width="20" height="12" xmlns="http://www.w3.org/2000/svg">
<path d="M9.436 11.384h1.147a.956.956 0 0 0 .528-.23.878.878 0 0 0 .157-.527s-.019-1.607.694-1.847c.712-.24 1.62 1.551 2.581 2.244.36.297.822.44 1.287.397l2.572-.037s1.35-.083.712-1.182a8.869 8.869 0 0 0-1.915-2.3c-1.62-1.55-1.397-1.301.546-3.988C18.929 2.279 19.4 1.272 19.253.848a1.086 1.086 0 0 0-1.008-.296l-2.906.019a.586.586 0 0 0-.37.064.811.811 0 0 0-.259.324 16.93 16.93 0 0 1-1.073 2.345c-1.287 2.272-1.805 2.392-2.018 2.253-.49-.332-.37-1.32-.37-2.031 0-2.198.324-3.122-.62-3.362A5.166 5.166 0 0 0 9.27.026a6.119 6.119 0 0 0-2.406.258c-.333.167-.582.536-.425.564.33.033.635.192.851.443.2.424.298.889.287 1.357 0 0 .176 2.595-.398 2.918-.389.222-.925-.23-2.082-2.29A19.673 19.673 0 0 1 4.07 1.051a.924.924 0 0 0-.24-.333 1.047 1.047 0 0 0-.445-.184L.627.552a.905.905 0 0 0-.564.194.636.636 0 0 0-.019.508S2.21 6.49 4.652 9.131a6.463 6.463 0 0 0 4.784 2.253z" fill-rule="evenodd"></path>
</svg></a></div></div></div><div class="stk-grid__layout_columns stk-grid" data-stk-css="stkXrlid" data-ce-tag="grid"><div data-col-width="1" class="stk-grid-col align-center" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><a class="sklbx-link sklbx-link--fb stk-container stk-container-link stk-reset" data-ce-tag="container" data-container-name="Telegram" href="https://t.me/skillbox_media_gamedev" target="_blank"><svg class="sklbx-link__icon" width="25" height="20" xmlns="http://www.w3.org/2000/svg">
<path d="m9.417 15.181-.397 5.584c.568 0 .814-.244 1.109-.537l2.663-2.545 5.518 4.041c1.012.564 1.725.267 1.998-.931l3.622-16.972.001-.001c.321-1.496-.541-2.081-1.527-1.714l-21.29 8.151c-1.453.564-1.431 1.374-.247 1.741l5.443 1.693 12.643-7.911c.595-.394 1.136-.176.691.218z" fill-rule="evenodd"></path>
</svg></a></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="paragraph" data-stk-css-m="stkN_Qc0">Сохранитесь и подпишитесь: <a href="https://t.me/skillbox_media_gamedev" target="_blank" class="stk-reset">наш Telegram-канал «Чекпоинт»</a> — уютное место, где мы рассказываем об играх и о том, как они создаются.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Год назад в рамках своего <a class="stk-reset" currentitem="false" data-for="mb-link-tooltip" data-tip="{"index":58,"offer":null,"link":"https://www.youtube.com/c/AndreySokolovRu"}" href="https://www.youtube.com/c/AndreySokolovRu" mb-checked="1" target="_blank">YouTube-канала</a> Андрей записал подробный <a class="stk-reset" currentitem="false" data-for="mb-link-tooltip" data-tip="{"index":59,"offer":null,"link":"https://www.youtube.com/playlist"}" href="https://www.youtube.com/playlist?list=PLOVSu7-KesPiqiNIqh6ZSfqLN6VpiivkU" mb-checked="1" target="_blank">курс</a> по Blender, в котором работает более 7 лет. Обучение начинается с основ, рассчитанных в первую очередь на новичков, но последующие уроки могут быть интересны и для продвинутых пользователей — в них Андрей затрагивает скрытые возможности софта. Сам материал записывался в версии программы 2.90.1, но знания актуальны как для ранних версий (от 2.80), так и для последней (3.0.0).</p><p class="stk-reset" data-ce-tag="paragraph">Делимся основными тезисами третьего и четвёртого видеоуроков, посвящённых структуре, оптимизации и рандомизации объектов через инструменты Blender и скрипты Python. В предыдущих уроках мы рассматривали <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-interfeys-navigatsiya-prostye-operatsii/" target="_blank">интерфейс программы и простые операции</a>, а также <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-3d-osnovy-modelirovaniya/" target="_blank">основы моделирования</a>.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://youtu.be/yxqEpOQdp1Y" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.21%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FyxqEpOQdp1Y%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyxqEpOQdp1Y&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FyxqEpOQdp1Y%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Третий урок по Blender от Андрея Соколова</figcaption></figure><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://youtu.be/poM9uFu8_tI" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.21%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpoM9uFu8_tI%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpoM9uFu8_tI&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpoM9uFu8_tI%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Четвёртый урок по Blender от Андрея Соколова</figcaption></figure></div></div><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph"><strong class="stk-reset">Структура объектов</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Как известно, при создании нового проекта в сцене по умолчанию появляется куб. Это объект со своими данными, которые можно увидеть, если кликнуть на стрелку рядом с <strong class="stk-reset">объектом Cube</strong> в <strong class="stk-reset">Структуре проекта</strong> (<u class="stk-reset">Outliner</u>). Данные объекта Cube — это меш Cube (иконка зелёного треугольника). <strong class="stk-reset">Объект</strong> <strong class="stk-reset">и его меш — это разные элементы.</strong></p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14050601022022_accf102caaa970ce65d217b9ae9a8e9a57caa67c.jpg" data-image-id="28486" data-image-name="1.jpg" width="1540" height="1155" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Отображение объекта и меша в коллекции сцены. Для наглядности объект подчёркнут оранжевым цветом, меш — зелёным. Коллаж: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">У <strong class="stk-reset">объекта</strong> есть название и характеристики: положение, вращение, масштаб и размеры. Они находятся на панели <strong class="stk-reset">Трансформация</strong> (<u class="stk-reset">Transform</u>) в верхней вкладке <strong class="stk-reset">Элемент</strong> (<u class="stk-reset">Item</u>) — саму панель можно легко вызвать горячей клавишей <strong class="stk-reset">N</strong>.</p><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/cZXyuutH91E?loop=1&autoplay=1&controls=0&mute=1&playlist=cZXyuutH91E" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Вызов панели Трансформация (Transform)</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Данные <strong class="stk-reset">меша</strong> можно посмотреть в <strong class="stk-reset">Режиме редактирования</strong> (<u class="stk-reset">Edit Mode</u>): здесь во вкладке <strong class="stk-reset">Трансформация — Элемент</strong> появятся новые данные, в том числе <strong class="stk-reset">Медиана</strong> (<u class="stk-reset">Median</u>). Эта характеристика отображает координаты <a class="stk-reset" href="https://docs.blender.org/manual/en/2.79/editors/3dview/object/editing/transform/control/pivot_point/median_point.html" target="_blank">среднего значения точек</a>.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14070401022022_08fda0244b5397e030ee401fd2bea5b24f78a72b.jpg" data-image-id="28487" data-image-name="2.jpg" width="1540" height="815" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Координаты меша во вкладке Медиана (Median). Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Видоизменим и переместим меш во вьюпорте и обратим внимание на его координаты. Затем вернёмся в <strong class="stk-reset">Объектный режим</strong> (<u class="stk-reset">Object Mode</u>) и обнаружим, что координаты объекта остались прежними (во вьюпорте можно заметить его ориджин — оранжевую точку, которая отвечает за позицию и центр объекта). Так мы видим, что объект и меш — две разные структуры в Blender.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14071801022022_6896a8696b8038f4fc8989ab005e4fccc3b90047.jpg" data-image-id="28488" data-image-name="3.jpg" width="1540" height="866" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Объект и меш, перемещённый в сторону. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure></div></div><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph"><strong class="stk-reset">Взаимоотношения объекта и меша</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Теперь выясним, почему эта информация важна для пользователя. Для наглядности переименуем объект <strong class="stk-reset">Cube </strong>в <strong class="stk-reset">Cube object</strong> (двойной клик по названию в структуре проекта), а его меш — в <strong class="stk-reset">Cube mesh</strong>. Эти элементы связаны между собой. Их отношения напоминают связь<strong class="stk-reset"> Parent — Child</strong> («родитель» — «ребёнок»), где Cube mesh будет «ребёнком» Cube object. При этом у объекта может быть одновременно только один «ребёнок», а меш может быть «ребёнком» и других объектов.</p><p class="stk-reset" data-ce-tag="paragraph">Создадим новый куб с помощью <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Shift + A</strong>. Как и в случае с первым кубом, у нового объекта будет свой меш. Но, перейдя во вкладку <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Настройки данных объекта</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Object Data Properties</u>), новый меш можно заменить на первый, который мы ранее переименовали в Cube mesh.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14082701022022_c7c2d6650fe8dd3125b1541cb39af56649bd56fa.jpg" data-image-id="28489" data-image-name="4.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Замена меша у нового объекта. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Таким образом, у двух объектов будет один и тот же меш (чуть ниже объясним, чем это полезно).</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkmd842"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset " data-ce-tag="paragraph">На скриншоте два объекта после этой операции выглядят по-разному. Это связано с тем, что их позиция и настройки отличаются. Если убрать все изменения во вкладке Трансформация — Элемент, то получится два одинаковых куба.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Проведём ещё один эксперимент. Удалим предыдущие объекты, добавим новый куб и зададим его мешу новое название, например, <strong class="stk-reset">cube mesh main</strong>. Он будет главным мешем для будущих операций.</p><p class="stk-reset" data-ce-tag="paragraph">Зайдём во вкладку <strong class="stk-reset">Наложения вьюпорта</strong> (<u class="stk-reset">Viewport Overlays</u>) — в <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-interfeys-navigatsiya-prostye-operatsii/" target="_blank">первом уроке</a> мы включали в ней ось Z, — и отметим галочкой пункт <strong class="stk-reset">Статистика</strong> (<u class="stk-reset">Statistics</u>). В левом верхнем углу появится информация о сцене.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14092701022022_0ed1686442ac630326a48ddcef43684fa02b904b.jpg" data-image-id="28490" data-image-name="5.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Местоположение опции «Статистика» и список данных. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Статистика показывает, что в сцене находится:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item">3 <strong class="stk-reset">Объекта</strong> (<u class="stk-reset">Objects</u>) — 1/3 означает, что один из них выделен;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">8 <strong class="stk-reset">Вершин</strong> (<u class="stk-reset">Vertices</u>);</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">12 <strong class="stk-reset">Рёбер</strong> (<u class="stk-reset">Edges</u>);</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">6 <strong class="stk-reset">Граней</strong> (<u class="stk-reset">Faces</u>);</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">12 <strong class="stk-reset">Треугольников</strong> (<u class="stk-reset">Triangles</u>).</li></ul><p class="stk-reset" data-ce-tag="paragraph">При создании нового куба или его дублировании (<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Shift + D</strong>) количество всех показателей геометрии увеличится вдвое, поскольку меш объекта также продублируется. Но если заменить меш нового объекта на предыдущий (в данном случае <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">cube mesh main</strong>), то показатели не увеличатся.</p><p class="stk-reset" data-ce-tag="paragraph">Комбинация клавиш <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Alt + D</strong> упрощает процесс — с её помощью можно сразу же создавать новый объект с исходным мешем. Таким способом вы можете быстро сгенерировать множество идентичных объектов, сохранив начальное количество полигонов.</p><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/5Ih8WH4qQGo?loop=1&autoplay=1&controls=0&mute=1&playlist=5Ih8WH4qQGo" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Клонирование объектов через Alt + D</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Эта операция значительно экономит время и ресурсы при просчёте сцены.</strong> Дело в том, что у каждого полигона существует множество внутренних характеристик: нормаль, шейдинг и прочие данные, которые не так очевидны на первый взгляд, но важны при рендеринге. Соответственно, графический движок должен просчитать все эти показатели для каждого полигона в сцене. При использовании одинаковых данных время расчёта значительно сокращается, даже если они принадлежат разным объектам.</p></div></div><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph"><strong class="stk-reset">Оптимизация масштабных сцен</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Попробуем усложнить задачу: выделяем все объекты в сцене и копируем их через <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Alt + D</strong> несколько раз. Рекомендуем предварительно удалить или спрятать (<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">H</strong>) камеру и источник света, чтобы случайно не создать их дубликаты.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14102601022022_b30ff17d14b759c017197570526ff51b33cc83c5.jpg" data-image-id="28491" data-image-name="6.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Группа объектов, скопированная несколько раз. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Статистика на скриншоте показывает, что в сцене 310 объектов. Выделяем все объекты — это можно сделать при помощи клавиши <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">A</strong> или <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">окружности</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Circle Select</u>), вызвав инструмент кнопкой <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">С</strong> и увеличив радиус колёсиком мыши. Если применить к одному из выделенных объектов модификатор <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Подразделение поверхности</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Subdivision Surface</u>) — о нём мы узнали во <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-3d-osnovy-modelirovaniya/" target="_blank" data-gtm-vis-has-fired-10171822_255="1">втором уроке</a>, — количество граней увеличится. При наложении модификатора на все объекты в сцене сумма полигонов может вырасти до полумиллиона. Сделать это быстро можно при помощи горячих клавиш: <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + 1, Ctrl + 2, Ctrl + 3</strong> и <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + 4</strong> — для разных уровней сглаживания. Таким образом эффект от использования одних и тех же мешей пропадает, так как при использовании модификаторов происходит полный пересчёт геометрии объекта.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkal_Fk"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph">Применить модификатор ко всем объектам можно и вручную — для этого его необходимо наложить на активный объект, выделить все остальные (<strong class="stk-reset">A</strong>), нажать <strong class="stk-reset">Ctrl + L</strong> и в открывшемся меню выбрать <strong class="stk-reset">Copy Modifiers.</strong></p><p class=" stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Обратный процесс работает аналогичным способом: удалив на активном объекте модификатор и применив Copy Modifiers, вы скопируете настройки на все выделенные объекты.</p></div></div><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/yQY0dEenZt8?loop=1&autoplay=1&controls=0&mute=1&playlist=yQY0dEenZt8" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Увеличение количества полигонов с помощью модификатора «Подразделение поверхности» (Subdivision Surface)</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Однако аналогичная операция возможна и внутри объекта. Отменяем модификатор через <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + Z</strong> и переходим в режим редактирования. Выделив все полигоны (<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">А</strong>), открываем меню инструментов через <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">ПКМ</strong> (или <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">W</strong>, если на правую кнопку мыши у вас назначено выделение) и выбираем опцию <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Подразделить</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Subdivide</u>). В нижнем левом углу вьюпорта появится вкладка с одноимённым названием. Открываем её и выставляем значение<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"> Гладкость</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Smoothness</u>) на 1, а <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Количество разрезов</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Number of Cuts</u>) на 4.</p><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/_gMXlrzEM84?loop=1&autoplay=1&controls=0&mute=1&playlist=_gMXlrzEM84" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Увеличение количества полигонов через режим редактирования (Edit Mode)</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В итоге получается почти тот же результат, что и при использовании модификатора через <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + 4</strong>, но при этом сцена содержит 150 полигонов. Даже если продолжить дублирование с помощью <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Alt + D</strong>, количество граней останется прежним.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14113501022022_fc9956ee2f4201e204a5532c68850c6715ed24e0.jpg" data-image-id="28492" data-image-name="7.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Если бы у каждого из 2156 объектов был свой меш, эта сцена насчитывала бы около 1 млн полигонов. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/KWt40Flw-4E?loop=1&autoplay=1&controls=0&mute=1&playlist=KWt40Flw-4E" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Продолжаем эксперимент дальше. Итог — 17 248 объектов, 150 граней</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">При этом можно выбрать любой объект, перейти в режим редактирования и изменить его на своё усмотрение, используя приёмы из <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-3d-osnovy-modelirovaniya/" target="_blank">второго урока</a>. В этом случае все изменения будут автоматически применены и к остальным объектам, так как меш один и тот же.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14115901022022_6caf85fa09e0642959e62c753d9a2f18236eb1da.jpg" data-image-id="28493" data-image-name="8.jpg" width="1540" height="866" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Объекты после манипуляций в режиме редактирования (Edit Mode). Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">А если один из объектов выделить в объектном режиме, то во вкладке <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Трансформация </strong><strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">— Элемент</strong> ему можно задать уникальные параметры положения, вращения, масштабирования и размера по любой оси. В этом случае трансформация не затронет остальные объекты.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14122401022022_c0c954a3a268bfc515e88839a41a25de5bd1b194.jpg" data-image-id="28494" data-image-name="9.jpg" width="1540" height="1155" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Трансформация одного объекта. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Получается, что при создании масштабных сцен можно обойтись одним мешем. Даже при 17 248 объектах статистика показывает, что в сцене всего 150 полигонов. При использовании отдельных мешей для каждого объекта их было бы порядка 8 млн. Это пример<strong class="stk-reset"> оптимизации</strong>.</p><p class="stk-reset" data-ce-tag="paragraph">Данный приём аналогично работает и с целыми коллекциями (о них мы узнали в <a class="stk-reset" href="https://skillbox.ru/media/gamedev/uroki-po-blender-interfeys-navigatsiya-prostye-operatsii/" target="_blank" data-gtm-vis-has-fired-10171822_255="1">первом уроке</a>). Предположим, у вас есть коллекция из восьми разных моделей домов, которые вы хотите продублировать. При обычном копировании полигонаж сцены будет расти в геометрической прогрессии. Однако если щёлкнуть правой кнопкой по коллекции и выбрать <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Экземпляр в сцену</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Instance to Scene</u>), то группа моделей продублируется. Ещё это можно сделать через меню <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Добавить</strong> (<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Shift + A</strong>) <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">—</strong> <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Экземпляр коллекции</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Add — Collection Instance</u>). При этом у вас останется ровно столько же полигонов, сколько было раньше.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkDM49P"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class=" stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Имейте в виду, что коллекции могут накладываться одна на другую. Если на первый взгляд в сцене не прибавилось объектов, просто проверьте структуру проекта — скопированные коллекции отобразятся там.</p><p class=" stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Чтобы разбить продублированную коллекцию на отдельные объекты, необходимо её выделить, зайти в меню <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Применить (Ctrl + A) — Сделать экземпляры настоящими</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Apply — Make Instances Real</u>).</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://www.youtube.com/watch?v=lOVdWXNtjTc" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.21%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FlOVdWXNtjTc%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DlOVdWXNtjTc&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FlOVdWXNtjTc%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Более подробная инструкция от 25games</figcaption></figure></div></div><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Экономия полигонов влияет не только на скорость работы в программе, но и на рендеринг.</strong> Это особенно важно при работе над анимацией — на рендере каждого кадра можно сэкономить до нескольких минут.</p><p class="stk-reset" data-ce-tag="paragraph">Теперь попробуем изменить объекты не по отдельности, а при помощи встроенных инструментов Blender и скриптов Python.</p></div></div><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph"><strong class="stk-reset">Рандомизация с помощью инструментов Blender</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Возвращаемся в объектный режим и выделяем все объекты (на всякий случай ещё раз убедитесь, что не захватили камеру и источник света).</p><p class="stk-reset" data-ce-tag="paragraph">В Blender существует такая функция, как поиск команды (клавиша <strong class="stk-reset">F3</strong>). В поисковике находим <strong class="stk-reset">Случайную трансформацию</strong> (<u class="stk-reset">Randomize Transform</u>) и выбираем появившийся пункт (если в сцене очень много объектов, то придётся немного подождать).</p><p class="stk-reset" data-ce-tag="paragraph">В левой нижней части экрана появится одноимённая вкладка — в ней можно рандомизировать положение, вращение и размер объектов по всем трём осям. Возьмём для примера пункт <strong class="stk-reset">Вращение</strong> (<u class="stk-reset">Rotation</u>): если в первом поле выставить максимальное значение 180, то у каждого из объектов будет свой угол разворота по оси X от 0° до 360° (от −180° до 180°). Проведём ещё один эксперимент и выставим <strong class="stk-reset">Масштаб</strong> (<u class="stk-reset">Scale</u>) на 5 — в этом случае каждый отдельный объект изменит масштаб на случайное значение от 1 до 5. Если в сцене много объектов, то придётся снова подождать.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14132901022022_2229e417950c39bd1ac90259b6c781a232a40430.jpg" data-image-id="28495" data-image-name="11.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Результат изменения вращения объектов по оси X (180°) и их масштаба (5). Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Как вы могли заметить, проблема этой операции в том, что при огромном количестве объектов сцена обрабатывается довольно долго. Возможности Python, встроенные в Blender, могут значительно ускорить процесс рандомизации.</p></div></div><div class="stk-grid__layout_reverse stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph"><strong class="stk-reset">Рандомизация с помощью Python</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Возвращаемся на шаг назад, до того, как мы рандомизировали объекты при помощи <strong class="stk-reset">Случайной трансформации</strong> (<u class="stk-reset">Randomize Transform</u>). Для начала поместим в отдельную коллекцию только те объекты, которые мы хотим рандомизировать (в данном случае кубы). Переименуйте её, например, в <strong class="stk-reset">Cubes</strong> — это название мы в дальнейшем сможем использовать в коде как идентификатор коллекции.</p><p class="stk-reset" data-ce-tag="paragraph">Чтобы открыть консоль Python, наведите курсор на нижний край окна вьюпорта и аккуратно потяните вверх. В новом окне нажмите на <strong class="stk-reset">Тип редактора</strong> (<u class="stk-reset">Editor Type</u>) и выберите <strong class="stk-reset">Консоль Python</strong> (<u class="stk-reset">Python Console</u>).</p><figure class="stk-reset stk-embed_rendered stk-code_keep-ratio" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/Ab7YVOA-JYE?loop=1&autoplay=1&controls=0&mute=1&playlist=Ab7YVOA-JYE" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Вытягивание нового окна и выбор консоли Python</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Рандомизация в Python происходит с помощью модуля <strong class="stk-reset">random</strong>. Импортируем модуль в рабочее пространство с помощью команды <strong class="stk-reset">import</strong> и нажимаем <strong class="stk-reset">Enter</strong> для подтверждения строки. После подключения модуля в Blender программа сможет обращаться к его функционалу. Модуль<strong class="stk-reset"> random</strong> по умолчанию входит в ту версию Python, которая поставляется вместе с Blender, и после импортирования программа может обращаться к нему и его методам.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> import random
>>>
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Модуль <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">random</strong> — это большой класс со множеством методов и подклассов. Их можно посмотреть, набрав в строке <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">random.</strong> (точка после названия модуля или класса даёт доступ к его внутренней иерархии) и нажав <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Tab</strong> (в версиях ранее 2.82a — <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + Space</strong>).</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> <span class="hljs-built_in">random</span>.
BPF
LOG4
NV_MAGICCONST
RECIP_BPF
Random(
SG_MAGICCONST
SystemRandom(
TWOPI
betavariate(
choice(
choices(
expovariate(
gammavariate(
gauss(
getrandbits(
getstate(
lognormvariate(
normalvariate(
paretovariate(
randbytes(
<span class="hljs-keyword" style="color: rgb(150, 203, 254);"> randint( </span> ← нужный нам метод
random(
randrange(
sample(
seed(
setstate(
shuffle(
triangular(
uniform(
vonmisesvariate(
weibullvariate(
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk8KHAF"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph">Также <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Tab/Ctrl + Space</strong> работает как автозаполнение, с помощью которого можно быстрее вводить команды. Например, написав obj и нажав Tab, вы увидите, что программа выведет слово object.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Сейчас нам потребуется метод <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">randint ()</strong>. Если ввести в консоли <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">random.randint ()</strong> и нажать <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Tab</strong> (в версиях ранее 2.82a — <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + Space</strong>), то отобразится техническая информация об этом методе.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> <span class="hljs-built_in">random</span>.randint(
<span class="hljs-keyword" style="color: rgb(0, 255, 0);">randint(self, a, b)
Return <span class="hljs-built_in">random</span> integer in range [a, b], including both <span class="hljs-function">end</span> points
</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Здесь говорится, что метод выдаёт случайное целое число в заданном диапазоне, включая крайние его значения. Попробуем ввести в скобках через запятую значения 0 и 100 и нажмём <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Enter</strong>.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> random.randint(0,100)
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">39</span>
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Метод выдал число 39 (у вас может быть другой результат). Если обновить команду при помощи клавиши ↑ (вверх) и вновь нажать <strong class="stk-reset">Enter</strong>, сгенерируется другое число в пределах между 0 и 100. Каждый раз при вводе команды оно будет меняться. Конечно, возможны и повторы, так как при случайном алгоритме результат непредсказуем.</p><p class="stk-reset" data-ce-tag="paragraph">Благодаря методу <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">randint ()</strong> мы можем присваивать объектам в Blender случайные значения масштаба и других параметров. Чтобы получить доступ к объектам, нам потребуется модуль <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">bpy</strong>. В отличие от <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">random</strong> он автоматически импортируется в консоль Python при запуске, поэтому добавлять его отдельно через команду <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">import</strong> не нужно.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> bpy.
<span class="hljs-keyword" style="color: rgb(0, 255, 0);"> app
context
data
msgbus
ops
path
props
types
utils
</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Модуль <strong class="stk-reset">bpy</strong> включает в себя всё, что помогает пользователю взаимодействовать с интерфейсом Blender. Например, <strong class="stk-reset">app</strong> включает всё, что касается взаимодействия с приложением, а <strong class="stk-reset">context</strong> — всё, что связано с текущими элементами (активный объект, сцена, окно и так далее).</p><p class="stk-reset" data-ce-tag="paragraph">Нам потребуется класс <strong class="stk-reset">data</strong>. Он содержит все данные текущего проекта в Blender, которые также можно посмотреть в <strong class="stk-reset">Файле Blender</strong> (<u class="stk-reset">Blender File</u>): информацию о коллекциях, объектах, камерах, источниках освещения, мешах и так далее.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14220101022022_71b97f3681cfd481f98f8279e17d064ae63ea66a.jpg" data-image-id="28497" data-image-name="12.jpg" width="1540" height="866" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Расположение вкладки «Файл Blender». Чтобы вернуться к предыдущему меню, выберите «Слой визуализации» (View Layer). Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы получить информацию об объектах (именно объектах, а не мешах), набираем в строке путь до класса, в котором они находятся (objects).</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> bpy<span class="hljs-selector-class">.data</span><span class="hljs-selector-class">.objects</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если после этого нажать <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Tab</strong> (в версиях ранее 2.82a — <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Ctrl + Space</strong>), программа выдаст огромный список имён всех объектов в проекте. Чтобы найти конкретный объект, после указания пути до класса нужно поставить квадратные скобки и внутри в кавычках (двойных «» или одинарных ‘’) вписать его точное название.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkwO1Y6"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph">При указании имени важно соблюдать регистр (прописные и строчные буквы), например, «Cube» и «cube» — это совершенно разные объекты.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Если объект с таким именем существует, то при нажатии <strong class="stk-reset">Enter</strong> он отобразится в строке. Если нет — программа выдаст ошибку.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> bpy<span class="hljs-selector-class">.data</span><span class="hljs-selector-class">.objects</span>['Куб']
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">bpy<span class="hljs-selector-class">.data</span><span class="hljs-selector-class">.objects</span>['Куб']</span>
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Далее настраиваем цикл перебора объектов, который выполняется командой <strong class="stk-reset">for</strong>. Для этого используется следующая конструкция: <strong class="stk-reset">for</strong> <em class="stk-reset">название_переменной</em> <strong class="stk-reset">in</strong> <em class="stk-reset">список_объектов.</em> В данном случае:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">>>> for object in bpy<span class="hljs-selector-class">.data</span><span class="hljs-selector-class">.objects</span>:
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Буквально это можно перевести как «<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">для каждого объекта из всех объектов в проекте:</strong>». Обратите внимание, что эта конструкция заканчивается двоеточием. В данном случае <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">object</strong> — это имя переменной (вместо object можно вписать и другое слово — в остальном коде будет отвечать именно за эту переменную), в которую будет поочерёдно подставляться каждый объект из класса <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">bpy.data.objects</strong>. С каждым из подставленных объектов можно производить те или иные действия.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stke4nAC"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph">Слово object в Python зарезервировано и имеет ключевое значение в коде. Когда мы называем им переменную, доступ к изначальному значению в рамках исполняемой программы утрачивается. Поэтому по возможности лучше использовать в качестве имён переменных другие слова или сокращения: ob, obj и так далее.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Вводим <strong class="stk-reset">for object in bpy.data.objects:</strong> и нажимаем <strong class="stk-reset">Enter</strong>. Обратите внимание, что в начале следующей строки автоматически появился отступ. Отступ говорит программе, что эта строка относится к телу цикла и будет выполняться для каждого объекта. Зададим переменную, в которой будет подставляться рандомное значение:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">… <span class="hljs-built_in">scale</span> = <span class="hljs-built_in">random</span>.randint(5, 100)/100</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-stk-css="stksRPhJ" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__pad_hor_1" data-ce-tag="paragraph"><strong class="stk-reset">scale</strong> — имя переменной (можно вписать любое слово, которое мы будем использовать в дальнейшем в значении данной переменной);</p><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__pad_hor_1" data-ce-tag="paragraph"><strong class="stk-reset">random.randint</strong> — модуль <strong class="stk-reset">random</strong> и его метод <strong class="stk-reset">randint</strong>, рассмотренные выше;</p><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__pad_hor_1" data-ce-tag="paragraph"><strong class="stk-reset">(5, 100)</strong> — диапазон случайных значений;</p><p class="stk-reset stk-theme_26309__pad_hor_1" data-ce-tag="paragraph"><strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">/100</strong> — коррекция результата, полученного при выполнении метода <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">randint ()</strong>, — результат делится на 100.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Для нашей задачи необходимо задать диапазон случайных значений примерно от 0 до 1. Поскольку метод <strong class="stk-reset">randint</strong> принимает и выдаёт только целые числа, мы зададим диапазон от 5 до 100 и поделим случайное значение на 100. В итоге у нас получается число между 0,05 и 1 (5/100 = 0,05 и 100/100 = 1).</p><p class="stk-reset" data-ce-tag="paragraph">Следующая задача — назначить полученное значение в качестве размера объекта. Подтверждаем предыдущую строку через <strong class="stk-reset">Enter</strong>. Обратите внимание: в начале новой строки сохраняется такой же отступ, и это означает, что мы продолжаем описывать тело цикла. Набираем следующую команду:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">… object.<span class="hljs-built_in">scale</span> = (<span class="hljs-built_in">scale</span>, <span class="hljs-built_in">scale</span>, <span class="hljs-built_in">scale</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-stk-css="stk0HNwv" data-ce-tag="grid"><div data-col-width="12" class="stk-theme_26309__pad_hor_1 stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">object</strong> — переменная, которую мы использовали в конструкции <strong class="stk-reset">for </strong><strong class="stk-reset">object</strong><strong class="stk-reset"> in bpy.data.objects:</strong> и которая теперь обозначает каждый из объектов в сцене.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Имейте в виду, что значение <strong class="stk-reset">scale</strong> прописано в скобках три раза через запятую. Ранее на панели <strong class="stk-reset">Трансформация</strong> (<u class="stk-reset">Transform</u>) вы могли заметить, что <strong class="stk-reset">Масштаб</strong> (<u class="stk-reset">Scale</u>) каждого объекта рассчитывается по трём осям: X, Y, Z. Поэтому команда object.scale = scale не сработает, так как в ней будет задано только одно значение (а их должно быть три). Чтобы задать значение переменной scale для всех осей, прописываем её в скобках три раза через запятые: <strong class="stk-reset">object.scale = (scale, scale, scale)</strong>.</p><p class="stk-reset" data-ce-tag="paragraph">Подтверждаем строку, удаляем отступы в начале следующей, поскольку дополнительных команд у нас не будет, и ещё раз нажимаем <strong class="stk-reset">Enter.</strong> Немного ждём и получаем результат!</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/14240101022022_b96f49b701f581862428f9c58e1a46c731d0aa89.jpg" data-image-id="28498" data-image-name="13.jpg" width="1540" height="814" class="stk-image stk-reset" loading="lazy"/></div><figcaption class="stk-reset stk-description" data-ce-tag="description">Полученный результат. Скриншот: Леон Балбери для Skillbox Media</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Все объекты в сцене стали разного размера. Если повторно выполнить прописанный нами цикл перебора (просто скопировав три строки), то масштаб объектов снова случайно изменится и сцена будет выглядеть иначе.</p><p class="stk-reset" data-ce-tag="paragraph">Легко заметить, что этот процесс происходит гораздо быстрее, чем при использовании <strong class="stk-reset">Случайной трансформации</strong> (<u class="stk-reset">Randomize Transform</u>). Чтобы засечь точное время обработки, напишем новый скрипт на основе предыдущего.</p><p class="stk-reset" data-ce-tag="paragraph">Ещё раз разделим окно вьюпорта, наведя курсор на верхний правый угол и потянув его влево. В новом окне меняем тип редактора на <strong class="stk-reset">Редактор текста</strong> (<u class="stk-reset">Text Editor</u>) — в нём нужный нам скрипт прописать будет легче, чем в консоли Python.</p><p class="stk-reset" data-ce-tag="paragraph">Нажимаем <strong class="stk-reset">+Создать</strong> (<u class="stk-reset">+New</u>). Перед тем, как копировать команды, прописанные в предыдущем шаге, нам нужно заново импортировать необходимые модули — текстовый редактор «не знает» операции, которые мы проводили в консоли Python. Импортируем модули с помощью команды <strong class="stk-reset">import</strong> через запятую:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, <span class="hljs-built_in">time</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Ещё раз пройдёмся по модулям: <strong class="stk-reset">bpy</strong> отвечает за взаимодействие с интерфейсом Blender, <strong class="stk-reset">random</strong> поможет сгенерировать случайное число, <strong class="stk-reset">time</strong> — засечь время операции. Обратите внимание, что в отличие от консоли Python, где часть модулей импортируется автоматически при запуске (например, <strong class="stk-reset">bpy</strong>), в текстовом редакторе все модули необходимо добавлять вручную.</p><p class="stk-reset" data-ce-tag="paragraph">Далее через одну пустую строку мы пропишем функцию для выполнения определённой части кода. <strong class="stk-reset">Функция — это часть кода, которую можно вызывать многократно.</strong> Признак функции — круглые скобки в конце. Перед тем, как использовать функцию в коде, её надо определить. Для этого используем следующую конструкцию:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-function"><span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><div class="stk-grid" data-stk-css="stkI-Dvs" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">def</strong> (от англ. <em class="stk-reset">define, «определить»</em>) — указывает, что начинается определение функции;</p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">random_scale</strong> — название функции (пишется английскими и желательно строчными буквами, без пробелов и слешей);</p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">()</strong> — часть синтаксиса функции; скобки могут оставаться пустыми или содержать некие параметры, которые обычно используются в теле функции;</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">:</strong> — указывает на то, что далее идёт тело функции<em class="stk-reset">.</em></p></div></div><p class="stk-reset" data-ce-tag="paragraph">После того как вы нажмёте <strong class="stk-reset">Enter</strong>, редактор автоматически сделает отступ. Также его можно сделать, нажав клавишу <strong class="stk-reset">Tab</strong> или четыре пробела. <strong class="stk-reset">Отступы в Python очень важны — они означают, что все строки с одинаковым отступом относятся к одному и тому же блоку кода (телу функции, циклу и так далее). </strong></p><p class="stk-reset" data-ce-tag="paragraph">В следующей строке перед основной частью функции мы засечём время. Для этого зададим переменную <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">t1</strong> и с помощью <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">=</strong> присвоим ей значение текущего времени, используя метод <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">perf_counter ()</strong> из модуля<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"> time</strong>:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-function"> <span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():
t1 = time.perf_counter()</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Метод — это готовая функция в рамках класса.</strong> Доступ к нему можно получить, указав название класса, к которому он относится, и через точку — имя самого метода. Обратите внимание, что <strong class="stk-reset">def</strong> требуется только тогда, когда функцию нужно определить. Для вызова уже существующей функции достаточно прописать её имя с круглыми скобками в конце.</p><p class="stk-reset" data-ce-tag="paragraph">Теперь скопируем и вставим цикл, отвечающий за рандомизацию масштаба всех объектов, который мы прописали ранее в консоли:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():
t1 = time.perf_counter()
<span class="hljs-keyword" style="color: rgb(255, 0, 0);">for</span> object <span class="hljs-keyword" style="color: rgb(255, 0, 0);">in</span> bpy.data.objects:
scale = random.randint(<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>,<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>)/<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
object.scale = (scale, scale, scale)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Важно убрать лишние точки, которые автоматически скопировались из консоли, и правильно расставить все отступы, как показано на скриншоте (тело цикла обособляется новым отступом). Следующая после цикла строка с <strong class="stk-reset">t2</strong> фиксирует время на момент, когда функция была выполнена.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-function"><span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():
t1 = time.perf_counter()
<span class="hljs-keyword" style="color: rgb(255, 0, 0);">for</span> object <span class="hljs-keyword" style="color: rgb(255, 0, 0);">in</span> bpy.data.objects:
scale = random.randint(<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>,<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>)/<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
object.scale = (scale, scale, scale)
t2 = time.perf_counter()</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Теперь, чтобы посчитать длительность всего процесса, нам нужно из значения <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">t2</strong> вычесть <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">t1</strong> и отобразить где-то полученный результат. Для этого используем команду <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">print ()</strong> — это встроенный метод Python, с помощью которого можно выводить текстовую и числовую информацию на <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Системную консоль</strong> (не путать с консолью Python!). Её можно найти во вкладке <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Окно</strong> <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">— Показать/скрыть системную консоль</strong> (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Window</u> — <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Toggle System Console</u>).</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Этот вариант подходит для пользователей Windows</strong>. Если у вас macOS/Linux, то Blender необходимо запустить из терминала, указав в нём полный путь до blender-launcher.exe. После этого терминал будет использоваться в качестве системной консоли.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://www.youtube.com/watch?v=R4WOyEkyRig" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.21%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FR4WOyEkyRig%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DR4WOyEkyRig&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FR4WOyEkyRig%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Как запустить Blender из терминала на macOS. Мини-гайд от Hollowpixel</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы вывести в консоли разницу во времени между началом и окончанием работы функции, производим вычисление в скобках:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-function"><span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():
t1 = time.perf_counter()
<span class="hljs-keyword" style="color: rgb(255, 0, 0);">for</span> object <span class="hljs-keyword" style="color: rgb(255, 0, 0);">in</span> bpy.data.objects:
scale = random.randint(<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>,<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>)/<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
object.scale = (scale, scale, scale)
t2 = time.perf_counter()
print(t2-t1)</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Сейчас функция существует только в виде инструкции и при запуске скрипта не сработает сама по себе. Для выполнения её нужно вызвать. Отделяем написанную функцию пустой строкой и в следующей строке копируем название функции <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">random_scale ()</strong> — без слова <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">def</strong>, каких-либо отступов и двоеточия, но с круглыми скобками на конце. Это и будет вызов функции, которую мы определили ранее.</p><p class="stk-reset" data-ce-tag="paragraph">Теперь при запуске скрипта каждому объекту в сцене будет назначаться рандомное значение параметра <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">scale</strong>, а в системной консоли — выводиться информация о времени, затраченном на выполнение операции. Остаётся только запустить скрипт кнопкой<strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"> ▷</strong> (в верхнем правом углу редактора) или комбинацией клавиш <strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Alt </strong><strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">+ </strong><strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">P</strong>.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(255, 0, 0);">import</span> bpy, random, time
<span class="hljs-function"><span class="hljs-keyword" style="color: rgb(0, 255, 0);">def</span> random_scale():
t1 = time.perf_counter()
<span class="hljs-keyword" style="color: rgb(255, 0, 0);">for</span> object <span class="hljs-keyword" style="color: rgb(255, 0, 0);">in</span> bpy.data.objects:
scale = random.randint(<span class="hljs-number" style="color: rgb(255, 115, 253);">5</span>,<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>)/<span class="hljs-number" style="color: rgb(255, 115, 253);">100</span>
object.scale = (scale, scale, scale)
t2 = time.perf_counter()
print(t2-t1)
random_scale()</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">После этого заходим в системную консоль и смотрим результаты — в нашем случае выполнение функции заняло 0,34 секунды:</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkiZcdl"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset stk-theme_26309__mb_05" data-ce-tag="paragraph">Конкретно этот скрипт работает для всех объектов в проекте. Помните, как в начале главы мы назвали коллекцию с кубами <strong class="stk-reset">Cubes</strong>? Чтобы изменить объекты только в ней, фрагмент<strong class="stk-reset"> bpy.data.objects:</strong> необходимо заменить на <strong class="stk-reset">bpy.data.collections[‘Cubes’].objects:</strong>, где ‘Cubes’ — название нужной коллекции.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Подведём итоги. Благодаря Python мы рандомизировали масштаб 17 248 объектов всего за треть секунды. Таким образом, базовые навыки программирования позволяют оптимизировать процессы и выполнять некоторые операции гораздо быстрее, чем через инструменты Blender.</p><p class="stk-reset" data-ce-tag="paragraph">В четвёртой части руководства мы познакомимся с основами анимации и рассмотрим несколько способов её воспроизведения.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkfxBOh"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-reset stk-theme_26309__style_small_text stk-theme_26309__mb_05" data-ce-tag="paragraph"><strong class="stk-reset">Читайте остальные статьи из серии:</strong></p><ul class="stk-theme_26309__style_small_text stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/gamedev/uroki-po-blender-interfeys-navigatsiya-prostye-operatsii/" target="_blank" class="stk-reset">Уроки по Blender: интерфейс, навигация, простые операции</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/gamedev/uroki-po-blender-3d-osnovy-modelirovaniya" target="_blank" class="stk-reset">Уроки по Blender: основы моделирования</a></li><li class="stk-theme_26309__style_small_text stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://skillbox.ru/media/gamedev/uroki-po-blender-osnovy-animatsii/" target="_blank" class="stk-reset">Уроки по Blender: основы анимации</a></li></ul></div></div></div></div><style data-stk-css="stkfxBOh" media="all" class="">
[data-stk-css="stkfxBOh"]:not(#stk):not(#stk):not(style) {
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkXrlid" class="" media="all">
[data-stk-css="stkXrlid"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(241, 242, 246, 1)
}
</style><style data-stk-css-m="stkN_Qc0" media="(max-width: 768px)" class="">
[data-stk-css-m="stkN_Qc0"]:not(#stk):not(#stk):not(#stk):not(style) {
padding-left: 20px
}
</style><style data-stk-css="stke4nAC" media="all" class="">
[data-stk-css="stke4nAC"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk6U_oW" class="" media="all">
[data-stk-css="stk6U_oW"]:not(#stk):not(#stk):not(style) {
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkiZcdl" media="all" class="">
[data-stk-css="stkiZcdl"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkwO1Y6" media="all" class="">
[data-stk-css="stkwO1Y6"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk8KHAF" media="all" class="">
[data-stk-css="stk8KHAF"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkDM49P" media="all" class="">
[data-stk-css="stkDM49P"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkal_Fk" media="all" class="">
[data-stk-css="stkal_Fk"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkmd842" media="all" class="">
[data-stk-css="stkmd842"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stksRPhJ" class="" media="all">[data-stk-css="stksRPhJ"]:not(#stk):not(#stk):not(style){border-left: 4px solid #d3d3d3}</style><style data-stk-css="stk0HNwv" class="" media="all">[data-stk-css="stk0HNwv"]:not(#stk):not(#stk):not(style){border-left: 4px solid #d3d3d3}</style><style data-stk-css="stkI-Dvs" class="" media="all">[data-stk-css="stkI-Dvs"]:not(#stk):not(#stk):not(style){border-left: 4px solid #d3d3d3; padding: 0 26px}</style><style data-stk-css="stkOivb6" class="" media="all">[data-stk-css="stkOivb6"]:not(#stk):not(#stk):not(style){padding: 13px}</style></div> </div>
</div>
</div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-preview-info">
</div>
</div>
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div>
</noindex>
</div>
<section class="container inset" data-banner="226062" data-source="210497" data-format="horizontal">
<section class="container inset" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<a data-source="210497" data-banner="226062" target="_blank" href="http://skillbox.ru/course/blender-design/" class="article-advert-banner__link courseLink" data-format="horizontal" data-type="horizontal" data-courseid="1256">
<div class="inset__wrapper" style="background-color: #3A3A3A;">
<div class="inset__content">
<h2 class="inset__header" style="color:#fff!important;">Курс</h2>
<p class="inset__description" style="color:#fff!important;">
Blender.Design
</p>
<p class="inset__text" style="color:#fff!important;">
Вы освоите популярную программу для компьютерной графики. Научитесь создавать детализированные сцены и работать со сложными эффектами. Сможете делать графику для кино, игр и начать зарабатывать на 3D.
</p>
<p class="inset__button article-advert-banner__link" style="color:#fff!important; background-color:#943cff!important;">Узнать про курс</p>
</div>
<div class="inset__image">
<img src="https://cdn.skillbox.pro/landgen/blocks/start-screen/156240/md/50f920a9-e7af-4286-8f7d-ab8cb75ffc03.webp" width="145" height="145" alt="">
</div>
</div>
</a>
</div>
</div>
</section> </section>
</section>
<div class="article-banner" data-banner="226061" data-source="210497" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<div class="inset__wrapper" style="background-color: #3A3A3A;">
<a data-source="210497" data-banner="226061" href="http://skillbox.ru/course/blender-design/" class="inset__link" target="_blank" style="display: block; text-decoration: none; color: inherit;">
<div class="inset__content">
<div class="inset__image" style="text-align: center;">
<img src="https://cdn.skillbox.pro/landgen/blocks/start-screen/156240/md/50f920a9-e7af-4286-8f7d-ab8cb75ffc03.webp" width="250" height="135" alt="">
</div>
<p class="inset__description" style="color:#fff!important; padding-bottom:13px;">
Blender.Design</p>
<p class="inset__text" style="color:#fff!important">
Вы изучите Blender и разберёте основы моделирования. Создадите портфолио, поймёте, как развиваться в профессии, и сможете начать зарабатывать на 3D.</p>
<span class="inset__button article-advert-banner__link" style="color:#fff; background-color:#943cff; display: inline-block; padding: 8px 16px; text-decoration: none; display: flex; align-items: center; justify-content: center;">Узнать про курс →</span>
</div>
</a>
</div>
</div>
</div> </div>
<a data-source="210497" data-banner="226060" target="_blank" href="http://skillbox.ru/course/blender-design/" class="article-banner article-advert-banner__link courseLink" style="background-color: #3A3A3A !important; color: #FFFFFF !important;" data-format="top" data-type="top" data-courseid="3522">
<div class="article-banner__img">
<img src="https://cdn.skillbox.pro/landgen/blocks/start-screen/156240/md/50f920a9-e7af-4286-8f7d-ab8cb75ffc03.webp" alt="">
</div>
<span class="article-banner__title" style="color: #FFFFFF !important;">Практический курс: «<u>Blender.Design</u>»</span>
<span class="article-banner__link" style="color: #FFFFFF !important;">Узнать про курс</span>
</a>
<section class="container news">
<div class="row">
<div class="col-lg-8 col-sm-12">
<h2 class="news__header">Новости</h2>
<div class="row">
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/novye-vakansii-v-geymdeve-v-rossii-i-drugikh-stranakh/" class="news__text">
Новые вакансии в геймдеве — в России и других странах </a>
<span class="news__date">23 июн 2025</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/kak-ustanovit-russkiy-yazyk-v-the-elder-scrolls-4-oblivion-remastered/" class="news__text">
Как установить русский язык в The Elder Scrolls 4: Oblivion Remastered </a>
<span class="news__date">23 апр 2025</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/remaster-days-gone-novaya-igra-ot-avtorov-returnal-i-drugie-igry-so-state-of-play-2025/" class="news__text">
Ремастер Days Gone, новая игра от авторов Returnal и другие игры со State of Play 2025 </a>
<span class="news__date">13 фев 2025</span>
</div>
</div>
</div>
</div>
</section>
<div class="slider-news-wrap media-catalog-content media-catalog-content--interesting">
<div class="container">
<div class="slider-news slider-news--article-slider js-slider-news">
<div class="slider-news__header">
<div class="slider-news__title" style="font-family: 'Graphik'; font-weight: 500;">
<span class="slider-news__title-notmob">Это интересно</span>
<span class="slider-news__title-mob">Это интересно</span>
</div>
<div class="slider-news__nav-wrapper">
<div class="slider-news__nav-button button-prev swiper-button-disabled" tabindex="0" role="button" aria-label="Previous slide" aria-disabled="true">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
<div class="slider-news__nav-button button-next" tabindex="0" role="button" aria-label="Next slide" aria-disabled="false">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
</div>
</div>
<div class="slider-news__carousel grad-end">
<div class="slider-news__container swiper-container swiper-container-initialized swiper-container-horizontal">
<div class="swiper-wrapper">
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/0d8/0d8aa9493e01c7ba537ff3d6448b546d/c1db1aa21b11c1d1ffa63b56ebf1f1bb.jpg">
</picture> </div>
<a href="/media/gamedev/story-anton-lovkaycis/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
«Наконец почувствовал себя на своём месте»: история геймдизайнера Антона Ловкайциса </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/56b/56b55c44a69de66809b2628b5403dff2/686b7a4dcd4a19d6b8729882e2f018cc.png">
</picture> </div>
<a href="/media/gamedev/komandy-minecraft/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Полезные команды Minecraft, о которых вы могли не знать </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/9c9/9c9cd317f3b707aec56220b7fe6b5522/3091c79a2abe790014f41c95546d71e9.png">
</picture> </div>
<a href="/media/gamedev/kak-sdelat-svoj-mod-minecraft/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Как создавать моды для Minecraft: руководство для начинающих </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/335/3351deb1e791b5035982a1bc8883835b/4a6f8d0878d6eaffe5211f410aff0b7d.jpg">
</picture> </div>
<a href="/media/gamedev/story-artem-niyazov/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
«Я работал на стройке, а теперь разрабатываю игры»: история Артёма Ниязова </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/9bb/9bb6e7d9d354ccccff54426a130317ae/cf8ea59f07ab9d9303634c3166a2c0d7.png">
</picture> </div>
<a href="/media/gamedev/obzor-knigi-razrabotka-igr-na-unity-putevoditelya-po-vozmozhnostyam-igrovogo-dvizhka/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Обзор книги «Разработка игр на Unity» — путеводителя по возможностям игрового движка </a>
</div>
</div>
</div>
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
</div>
</div>
</div>
</div>
</div>
<div class="question">
<div class="container">
<div class="question__inner">
<div class="question__title">Понравилась статья?</div>
<a href="#" data-cur-url="/media/gamedev/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/gamedev/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python/"
data-id="210497">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/gamedev\/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python\/","headline":"\u0423\u0440\u043e\u043a\u0438 \u043f\u043e\u00a0Blender: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043a\u0440\u0438\u043f\u0442\u044b Python","articleSection":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432","articleBody":"\r\n \r\n\u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u043e\u043a\u043e\u043b\u043e\u0432\r\n\r\n\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0435, \r\n\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0410\u0432\u0442\u043e\u0440 \u0441\u0435\u0440\u0438\u0438 \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e Blender.\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0442\u0435\u0441\u044c: \u043d\u0430\u0448 Telegram-\u043a\u0430\u043d\u0430\u043b \r\n\u00ab\u0427\u0435\u043a\u043f\u043e\u0438\u043d\u0442\u00bb \u2014 \u0443\u044e\u0442\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431 \u0438\u0433\u0440\u0430\u0445 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f.\r\n\r\n\u0413\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0432\u043e\u0435\u0433\u043e YouTube-\u043a\u0430\u043d\u0430\u043b\u0430 \r\n \u0410\u043d\u0434\u0440\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 [ https:\/\/www.youtube.com\/playlist?list=PLOVSu7-KesPiqiNIqh6ZSfqLN6VpiivkU ] \u043f\u043e Blender, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 7 \u043b\u0435\u0442. \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0441\u043d\u043e\u0432, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0440\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u2014 \u0432 \u043d\u0438\u0445 \u0410\u043d\u0434\u0440\u0435\u0439 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0444\u0442\u0430. \u0421\u0430\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0441\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b 2.90.1, \u043d\u043e \u0437\u043d\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u043a\u0430\u043a \u0434\u043b\u044f \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 (\u043e\u0442 2.80), \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 (3.0.0).\r\n\r\n\u0414\u0435\u043b\u0438\u043c\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0442\u0435\u0437\u0438\u0441\u0430\u043c\u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0433\u043e \r\n\u0432\u0438\u0434\u0435\u043e\u0443\u0440\u043e\u043a\u043e\u0432, \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Blender \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b Python. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0443\u0440\u043e\u043a\u0430\u0445 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 , \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f .\u0422\u0440\u0435\u0442\u0438\u0439 \u0443\u0440\u043e\u043a \u043f\u043e Blender \u043e\u0442 \u0410\u043d\u0434\u0440\u0435\u044f \u0421\u043e\u043a\u043e\u043b\u043e\u0432\u0430\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0443\u0440\u043e\u043a \u043f\u043e Blender \u043e\u0442 \u0410\u043d\u0434\u0440\u0435\u044f \u0421\u043e\u043a\u043e\u043b\u043e\u0432\u0430\r\n\r\n\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432\r\n\r\n\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \r\n\u0432 \u0441\u0446\u0435\u043d\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0431. \u042d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0443 \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Cube \u0432 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (Outliner). \u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Cube \u2014 \u044d\u0442\u043e \u043c\u0435\u0448 Cube (\u0438\u043a\u043e\u043d\u043a\u0430 \u0437\u0435\u043b\u0451\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430). \u041e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0435\u0433\u043e \u043c\u0435\u0448 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.\r\n \r\n\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043c\u0435\u0448\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0446\u0435\u043d\u044b. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c, \u043c\u0435\u0448 \u2014 \u0437\u0435\u043b\u0451\u043d\u044b\u043c. \u041a\u043e\u043b\u043b\u0430\u0436: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0423 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438: \r\n\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435, \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b. \u041e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f (Transform) \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u042d\u043b\u0435\u043c\u0435\u043d\u0442 (Item) \u2014 \u0441\u0430\u043c\u0443 \u043f\u0430\u043d\u0435\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0433\u043e\u0440\u044f\u0447\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439 N.\u0412\u044b\u0437\u043e\u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f (Transform)\r\n\r\n\u0414\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0448\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0420\u0435\u0436\u0438\u043c\u0435 \r\n\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Edit Mode): \u0437\u0434\u0435\u0441\u044c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u2014 \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u041c\u0435\u0434\u0438\u0430\u043d\u0430 (Median). \u042d\u0442\u0430 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a .\r\n \r\n\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043c\u0435\u0448\u0430 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u041c\u0435\u0434\u0438\u0430\u043d\u0430 (Median). \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0412\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043c \u043c\u0435\u0448 \u0432\u043e \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0435 \r\n\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. \u0417\u0430\u0442\u0435\u043c \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0432 \u041e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c (Object Mode) \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438 (\u0432\u043e \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0440\u0438\u0434\u0436\u0438\u043d \u2014 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0446\u0435\u043d\u0442\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430). \u0422\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043c\u0435\u0448 \u2014 \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 Blender.\r\n \r\n\u041e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043c\u0435\u0448, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043c\u0435\u0448\u0430\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432\u0430\u0436\u043d\u0430 \r\n\u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 Cube \u0432 Cube object (\u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430), \u0430 \u0435\u0433\u043e \u043c\u0435\u0448 \u2014 \u0432 Cube mesh. \u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u0418\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u0441\u0432\u044f\u0437\u044c Parent \u2014 Child (\u00ab\u200e\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u00bb \u2014 \u00ab\u0440\u0435\u0431\u0451\u043d\u043e\u043a\u00bb), \u0433\u0434\u0435 Cube mesh \u0431\u0443\u0434\u0435\u0442 \u00ab\u0440\u0435\u0431\u0451\u043d\u043a\u043e\u043c\u00bb Cube object. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u00ab\u200e\u0440\u0435\u0431\u0451\u043d\u043e\u043a\u00bb, \u0430 \u043c\u0435\u0448 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u00ab\u0440\u0435\u0431\u0451\u043d\u043a\u043e\u043c\u00bb \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u0443\u0431 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Shift + A. \u041a\u0430\u043a \r\n\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u043a\u0443\u0431\u043e\u043c, \u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u043c\u0435\u0448. \u041d\u043e, \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (Object Data Properties), \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0448 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0440\u0430\u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u0432 Cube mesh.\r\n \r\n\u0417\u0430\u043c\u0435\u043d\u0430 \u043c\u0435\u0448\u0430 \u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \r\n\u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0448 (\u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c, \u0447\u0435\u043c \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e).\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \r\n\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u2014 \u042d\u043b\u0435\u043c\u0435\u043d\u0442, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043a\u0443\u0431\u0430.\r\n\r\n\u041f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442. \u0423\u0434\u0430\u043b\u0438\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u0443\u0431 \u0438 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0435\u0433\u043e \u043c\u0435\u0448\u0443 \u043d\u043e\u0432\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, cube mesh main. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043c\u0435\u0448\u0435\u043c \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.\r\n\r\n\u0417\u0430\u0439\u0434\u0451\u043c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u041d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430 \r\n(Viewport Overlays) \u2014 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0432 \u043d\u0435\u0439 \u043e\u0441\u044c Z, \u2014 \u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u0433\u0430\u043b\u043e\u0447\u043a\u043e\u0439 \u043f\u0443\u043d\u043a\u0442 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 (Statistics). \u0412 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0446\u0435\u043d\u0435.\r\n \r\n\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u00ab\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430\u00bb \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0441\u0446\u0435\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f:\r\n\r\n- 3 \u041e\u0431\u044a\u0435\u043a\u0442\u0430 (Objects) \u2014 1\/3 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \r\n\u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u0435\u043d;\r\n- 8 \u0412\u0435\u0440\u0448\u0438\u043d (Vertices);\r\n- 12 \u0420\u0451\u0431\u0435\u0440 (Edges);\r\n- 6 \u0413\u0440\u0430\u043d\u0435\u0439 (Faces);\r\n- 12 \u0422\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432 (Triangles).\r\n\r\n\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u0443\u0431\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \r\n(Shift + D) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0448 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0435\u0448 \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 cube mesh main), \u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0430\u0442\u0441\u044f.\r\n\r\n\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Alt + D \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u2014 \r\n\u0441 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043c\u0435\u0448\u0435\u043c. \u0422\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432.\u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Alt + D\r\n\r\n\u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \r\n\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u0447\u0451\u0442\u0435 \u0441\u0446\u0435\u043d\u044b. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a: \u043d\u043e\u0440\u043c\u0430\u043b\u044c, \u0448\u0435\u0439\u0434\u0438\u043d\u0433 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0442\u0430\u043a \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u043e \u0432\u0430\u0436\u043d\u044b \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u0432 \u0441\u0446\u0435\u043d\u0435. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c.\r\n\r\n\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\r\n\r\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443: \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u0446\u0435\u043d\u0435 \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 Alt + D \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u043b\u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c (H) \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0445 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.\r\n \r\n\u0413\u0440\u0443\u043f\u043f\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \r\n\u0447\u0442\u043e \u0432 \u0441\u0446\u0435\u043d\u0435 310 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 A \u0438\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 (Circle Select), \u0432\u044b\u0437\u0432\u0430\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0421 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432 \u0440\u0430\u0434\u0438\u0443\u0441 \u043a\u043e\u043b\u0451\u0441\u0438\u043a\u043e\u043c \u043c\u044b\u0448\u0438. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u041f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 (Subdivision Surface) \u2014 \u043e \u043d\u0451\u043c \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0443\u0440\u043e\u043a\u0435 , \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u043d\u0435\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f. \u041f\u0440\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u0446\u0435\u043d\u0435 \u0441\u0443\u043c\u043c\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0434\u043e \u043f\u043e\u043b\u0443\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl + 1, Ctrl + 2, Ctrl + 3 \u0438 Ctrl + 4 \u2014 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044d\u0444\u0444\u0435\u043a\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043c\u0435\u0448\u0435\u0439 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u0447\u0451\u0442 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e \u0432\u0441\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \r\n\u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 (A), \u043d\u0430\u0436\u0430\u0442\u044c Ctrl + L \u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c Copy Modifiers.\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \r\n\u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c: \u0443\u0434\u0430\u043b\u0438\u0432 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 Copy Modifiers, \u0432\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00ab\u041f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438\u00bb (Subdivision Surface)\r\n\r\n\u041e\u0434\u043d\u0430\u043a\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u0442\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 Ctrl + Z \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u044b\u0434\u0435\u043b\u0438\u0432 \u0432\u0441\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b (\u0410), \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u041f\u041a\u041c (\u0438\u043b\u0438 W, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u043c\u044b\u0448\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435) \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u043f\u0446\u0438\u044e \u041f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c (Subdivide). \u0412 \u043d\u0438\u0436\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0441 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0413\u043b\u0430\u0434\u043a\u043e\u0441\u0442\u044c (Smoothness) \u043d\u0430 1, \u0430 \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0435\u0437\u043e\u0432 (Number of Cuts) \u043d\u0430 4.\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Edit Mode)\r\n\r\n\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \r\n\u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 Ctrl + 4, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0446\u0435\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 150 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Alt + D, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c.\r\n \r\n\u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 2156 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0431\u044b\u043b \u0441\u0432\u043e\u0439 \u043c\u0435\u0448, \u044d\u0442\u0430 \u0441\u0446\u0435\u043d\u0430 \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u0430 \u0431\u044b \u043e\u043a\u043e\u043b\u043e 1 \u043c\u043b\u043d \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0434\u0430\u043b\u044c\u0448\u0435. \u0418\u0442\u043e\u0433 \u2014 17 248 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, 150 \u0433\u0440\u0430\u043d\u0435\u0439\r\n\r\n\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \r\n\u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0441\u0432\u043e\u0451 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u0451\u043c\u044b \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430 . \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0438 \u043a \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u0448 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435.\r\n \r\n\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0441\u043b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Edit Mode). \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0410 \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \r\n\u0440\u0435\u0436\u0438\u043c\u0435, \u0442\u043e \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u2014 \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u043e\u0441\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.\r\n \r\n\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \r\n\u0441\u0446\u0435\u043d \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u043c\u0435\u0448\u0435\u043c. \u0414\u0430\u0436\u0435 \u043f\u0440\u0438 17 248 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0441\u0446\u0435\u043d\u0435 \u0432\u0441\u0435\u0433\u043e 150 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0448\u0435\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0445 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0440\u044f\u0434\u043a\u0430 8 \u043c\u043b\u043d. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.\r\n\r\n\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u0451\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441 \u0446\u0435\u043b\u044b\u043c\u0438 \r\n\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 (\u043e \u043d\u0438\u0445 \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u043a\u0435 ). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0438\u0437 \u0432\u043e\u0441\u044c\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u043e\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u0436 \u0441\u0446\u0435\u043d\u044b \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0432 \u0441\u0446\u0435\u043d\u0443 (Instance to Scene), \u0442\u043e \u0433\u0440\u0443\u043f\u043f\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0415\u0449\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c (Shift + A) \u2014 \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (Add \u2014 Collection Instance). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435.\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \r\n\u043e\u0434\u043d\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e. \u0415\u0441\u043b\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0432 \u0441\u0446\u0435\u043d\u0435 \u043d\u0435 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442\u0441\u044f \u0442\u0430\u043c.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \r\n\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0451 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c, \u0437\u0430\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl + A) \u2014 \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 (Apply \u2014 Make Instances Real).\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0442 25games\r\n\r\n\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \r\n\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043d\u043e \u0438 \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u2014 \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0438\u043d\u0443\u0442.\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \r\n\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Blender \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 Python.\r\n\r\n\u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \r\nBlender\r\n\r\n\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \r\n\u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043d\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430).\r\n\r\n\u0412 Blender \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u0430\u043a \r\n\u043f\u043e\u0438\u0441\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u043a\u043b\u0430\u0432\u0438\u0448\u0430 F3). \u0412 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (Randomize Transform) \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u0443\u043d\u043a\u0442 (\u0435\u0441\u043b\u0438 \u0432 \u0441\u0446\u0435\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c).\r\n\r\n\u0412 \u043b\u0435\u0432\u043e\u0439 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \r\n\u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u2014 \u0432 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0440\u0451\u043c \u043e\u0441\u044f\u043c. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0443\u043d\u043a\u0442 \u0412\u0440\u0430\u0449\u0435\u043d\u0438\u0435 (Rotation): \u0435\u0441\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u043b\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 180, \u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u0443\u0433\u043e\u043b \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442\u0430 \u043f\u043e \u043e\u0441\u0438 X \u043e\u0442 0\u00b0 \u0434\u043e 360\u00b0 (\u043e\u0442 \u2212180\u00b0 \u0434\u043e 180\u00b0). \u041f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u041c\u0430\u0441\u0448\u0442\u0430\u0431 (Scale) \u043d\u0430 5 \u2014 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 1 \u0434\u043e 5. \u0415\u0441\u043b\u0438 \u0432 \u0441\u0446\u0435\u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c.\r\n \r\n\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043e\u0441\u0438 X (180\u00b0) \u0438 \u0438\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 (5). \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u044d\u0442\u043e\u0439 \r\n\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0446\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Python, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432 Blender, \u043c\u043e\u0433\u0443\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438.\r\n\r\n\u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Python\r\n\r\n\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0448\u0430\u0433 \u043d\u0430\u0437\u0430\u0434, \u0434\u043e \u0442\u043e\u0433\u043e, \r\n\u043a\u0430\u043a \u043c\u044b \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (Randomize Transform). \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0443\u0431\u044b). \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0435\u0451, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Cubes \u2014 \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u043a\u0430\u043a \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c Python, \u043d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \r\n\u043d\u0430 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u0440\u0430\u0439 \u043e\u043a\u043d\u0430 \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430 \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0442\u044f\u043d\u0438\u0442\u0435 \u0432\u0432\u0435\u0440\u0445. \u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0422\u0438\u043f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 (Editor Type) \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041a\u043e\u043d\u0441\u043e\u043b\u044c Python (Python Console).\u0412\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Python\r\n\r\n\u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Python \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \r\n\u043c\u043e\u0434\u0443\u043b\u044f random. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b import \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Enter \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0432 Blender \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443. \u041c\u043e\u0434\u0443\u043b\u044c random \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0443 \u0432\u0435\u0440\u0441\u0438\u044e Python, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Blender, \u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u0438 \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c.\r\n\r\n>>> import random >>> \r\n\r\n\u041c\u043e\u0434\u0443\u043b\u044c random \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \r\n\u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0431\u0440\u0430\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 random. (\u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438) \u0438 \u043d\u0430\u0436\u0430\u0432 Tab (\u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0440\u0430\u043d\u0435\u0435 2.82a \u2014 Ctrl + Space).\r\n\r\n>>> random. BPF LOG4 NV_MAGICCONST RECIP_BPF Random( SG_MAGICCONST \r\nSystemRandom( TWOPI betavariate( choice( choices( expovariate( gammavariate( gauss( getrandbits( getstate( lognormvariate( normalvariate( paretovariate( randbytes( randint( \u2190 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u043c\u0435\u0442\u043e\u0434 random( randrange( sample( seed( setstate( shuffle( triangular( uniform( vonmisesvariate( weibullvariate( \r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u0422\u0430\u043a\u0436\u0435 Tab\/Ctrl + Space \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \r\n\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 obj \u0438 \u043d\u0430\u0436\u0430\u0432 Tab, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0441\u043b\u043e\u0432\u043e object.\r\n\r\n\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 randint (). \u0415\u0441\u043b\u0438 \r\n\u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 random.randint () \u0438 \u043d\u0430\u0436\u0430\u0442\u044c Tab (\u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0440\u0430\u043d\u0435\u0435 2.82a \u2014 Ctrl + Space), \u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435.\r\n\r\n>>> random.randint( randint(self, a, b) Return random integer \r\nin range [a, b], including both end points \r\n\r\n\u0417\u0434\u0435\u0441\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \r\n\u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0 \u0438 100 \u0438 \u043d\u0430\u0436\u043c\u0451\u043c Enter.\r\n\r\n>>> random.randint(0,100) 39 \r\n\r\n\u041c\u0435\u0442\u043e\u0434 \u0432\u044b\u0434\u0430\u043b \u0447\u0438\u0441\u043b\u043e 39 (\u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \r\n\u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442). \u0415\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u2191 (\u0432\u0432\u0435\u0440\u0445) \u0438 \u0432\u043d\u043e\u0432\u044c \u043d\u0430\u0436\u0430\u0442\u044c Enter, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 0 \u0438 100. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c.\r\n\r\n\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u0435\u0442\u043e\u0434\u0443 randint () \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0432 Blender \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c bpy. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 random \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Python \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 import \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.\r\n\r\n>>> bpy. app context data msgbus ops path props types utils \r\n\r\n\u041c\u043e\u0434\u0443\u043b\u044c bpy \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \r\n\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c Blender. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, app \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 context \u2014 \u0432\u0441\u0451, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 (\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u0446\u0435\u043d\u0430, \u043e\u043a\u043d\u043e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).\r\n\r\n\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 data. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \r\n\u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Blender, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0424\u0430\u0439\u043b\u0435 Blender (Blender File): \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445, \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445, \u043a\u0430\u043c\u0435\u0440\u0430\u0445, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043c\u0435\u0448\u0430\u0445 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.\r\n \r\n\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u00ab\u0424\u0430\u0439\u043b Blender\u00bb. \u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043c\u0435\u043d\u044e, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0421\u043b\u043e\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u00bb (View Layer). \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \r\n(\u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445, \u0430 \u043d\u0435 \u043c\u0435\u0448\u0430\u0445), \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f (objects).\r\n\r\n>>> bpy.data.objects\r\n\r\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u044c Tab (\u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \r\n\u0440\u0430\u043d\u0435\u0435 2.82a \u2014 Ctrl + Space), \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0451\u043d \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u043e\u0441\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 (\u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u00ab\u00bb \u0438\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u2018\u2019) \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u041f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0438\u043c\u0435\u043d\u0438 \u0432\u0430\u0436\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \r\n(\u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0438 \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u00abCube\u00bb \u0438 \u00abcube\u00bb \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.\r\n\r\n\u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \r\n\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 Enter \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.\r\n\r\n>>> bpy.data.objects['\u041a\u0443\u0431'] bpy.data.objects['\u041a\u0443\u0431'] \r\n\r\n\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \r\n\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 for. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f: for \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435_\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 in \u0441\u043f\u0438\u0441\u043e\u043a_\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435:\r\n\r\n>>> for object in bpy.data.objects: \r\n\r\n\u0411\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u043a \u00ab\u0434\u043b\u044f \r\n\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435:\u00bb. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 object \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u0432\u043c\u0435\u0441\u0442\u043e object \u043c\u043e\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u2014 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430 \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e), \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 bpy.data.objects. \u0421 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0437 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u0421\u043b\u043e\u0432\u043e object \u0432 Python \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u0438\u043c\u0435\u0435\u0442 \r\n\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0434\u0435. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 \u0438\u043b\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f: ob, obj \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.\r\n\r\n\u0412\u0432\u043e\u0434\u0438\u043c for object in bpy.data.objects: \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \r\nEnter. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0442\u0441\u0442\u0443\u043f. \u041e\u0442\u0441\u0442\u0443\u043f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u0435\u043b\u0443 \u0446\u0438\u043a\u043b\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0417\u0430\u0434\u0430\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:\r\n\r\n\u2026 scale = random.randint(5, 100)\/100\r\n\r\n\r\n\r\nscale \u2014 \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u043c\u043e\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \r\n\u0441\u043b\u043e\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439);\r\n\r\nrandom.randint \u2014 \u043c\u043e\u0434\u0443\u043b\u044c random \u0438 \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 randint, \r\n\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435;\r\n\r\n(5, 100) \u2014 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439;\r\n\r\n\/100 \u2014 \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \r\n\u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 randint (), \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 100.\r\n\r\n\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \r\n\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0442 0 \u0434\u043e 1. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0442\u043e\u0434 randint \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u043c\u044b \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442 5 \u0434\u043e 100 \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 100. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u043c\u0435\u0436\u0434\u0443 0,05 \u0438 1 (5\/100 = 0,05 \u0438 100\/100 = 1).\r\n\r\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \r\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 Enter. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043e\u0442\u0441\u0442\u0443\u043f, \u0438 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u043e \u0446\u0438\u043a\u043b\u0430. \u041d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\r\n\r\n\u2026 object.scale = (scale, scale, scale)\r\n\r\n\r\n\r\nobject \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \r\n\u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 for object in bpy.data.objects: \u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0446\u0435\u043d\u0435.\r\n\r\n\u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 scale \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \r\n\u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e. \u0420\u0430\u043d\u0435\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f (Transform) \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u041c\u0430\u0441\u0448\u0442\u0430\u0431 (Scale) \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0451\u043c \u043e\u0441\u044f\u043c: X, Y, Z. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 object.scale = scale \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0430 \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0440\u0438). \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 scale \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0435\u0439, \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u044b\u0435: object.scale = (scale, scale, scale).\r\n\r\n\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \r\n\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Enter. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0434\u0451\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442!\r\n \r\n\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u0446\u0435\u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \r\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 (\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438), \u0442\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u043d\u043e\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0438 \u0441\u0446\u0435\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u043d\u0430\u0447\u0435.\r\n\r\n\u041b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \r\n\u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (Randomize Transform). \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0435\u0447\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e.\r\n\r\n\u0415\u0449\u0451 \u0440\u0430\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043e\u043a\u043d\u043e \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430, \u043d\u0430\u0432\u0435\u0434\u044f \r\n\u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u0430\u0432\u044b\u0439 \u0443\u0433\u043e\u043b \u0438 \u043f\u043e\u0442\u044f\u043d\u0443\u0432 \u0435\u0433\u043e \u0432\u043b\u0435\u0432\u043e. \u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0438\u043f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 (Text Editor) \u2014 \u0432 \u043d\u0451\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435, \u0447\u0435\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Python.\r\n\r\n\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c +\u0421\u043e\u0437\u0434\u0430\u0442\u044c (+New). \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \r\n\u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u00ab\u200e\u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u00bb \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Python. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b import \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e:\r\n\r\nimport bpy, random, time\r\n\r\n\u0415\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044f\u043c: bpy \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \r\n\u0437\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c Blender, random \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, time \u2014 \u0437\u0430\u0441\u0435\u0447\u044c \u0432\u0440\u0435\u043c\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Python, \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, bpy), \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.\r\n\r\n\u0414\u0430\u043b\u0435\u0435 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u043d\u0443 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \r\n\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u041f\u0440\u0438\u0437\u043d\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043a\u043e\u0434\u0435, \u0435\u0451 \u043d\u0430\u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e:\r\n\r\nimport bpy, random, time def random_scale():\r\n\r\n\r\n\r\ndef (\u043e\u0442 \u0430\u043d\u0433\u043b. define, \u00ab\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u00bb) \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \r\n\u0447\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438;\r\n\r\nrandom_scale \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \r\n\u0438 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438 \u0441\u043b\u0435\u0448\u0435\u0439);\r\n\r\n() \u2014 \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438; \u0441\u043a\u043e\u0431\u043a\u0438 \r\n\u043c\u043e\u0433\u0443\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0438\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438;\r\n\r\n: \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u0442 \r\n\u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u044b \u043d\u0430\u0436\u043c\u0451\u0442\u0435 Enter, \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \r\n\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0442\u0441\u0442\u0443\u043f. \u0422\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u0436\u0430\u0432 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Tab \u0438\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u0430. \u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 Python \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b \u2014 \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0431\u043b\u043e\u043a\u0443 \u043a\u043e\u0434\u0430 (\u0442\u0435\u043b\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0446\u0438\u043a\u043b\u0443 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435). \r\n\r\n\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \r\n\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u0437\u0430\u0441\u0435\u0447\u0451\u043c \u0432\u0440\u0435\u043c\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e t1 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e = \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0435\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434 perf_counter () \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f time:\r\n\r\nimport bpy, random, time def random_scale(): t1 = time.perf_counter()\r\n\r\n\u041c\u0435\u0442\u043e\u0434 \u2014 \u044d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \r\n\u043a\u043b\u0430\u0441\u0441\u0430. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0443\u043a\u0430\u0437\u0430\u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f, \u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443 \u2014 \u0438\u043c\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e def \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c. \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0451 \u0438\u043c\u044f \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435.\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0446\u0438\u043a\u043b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \r\n\u0437\u0430 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\r\n\r\nimport bpy, random, time def random_scale(): t1 = time.perf_counter() for \r\nobject in bpy.data.objects: scale = random.randint(5,100)\/100 object.scale = (scale, scale, scale)\r\n\r\n\u0412\u0430\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \r\n\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 (\u0442\u0435\u043b\u043e \u0446\u0438\u043a\u043b\u0430 \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c). \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 t2 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.\r\n\r\nimport bpy, random, time def random_scale(): t1 = time.perf_counter() for \r\nobject in bpy.data.objects: scale = random.randint(5,100)\/100 object.scale = (scale, scale, scale) t2 = time.perf_counter()\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \r\n\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f t2 \u0432\u044b\u0447\u0435\u0441\u0442\u044c t1 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 print () \u2014 \u044d\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 Python, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0438 \u0447\u0438\u0441\u043b\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u044e Python!). \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u041e\u043a\u043d\u043e \u2014 \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\/\u0441\u043a\u0440\u044b\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c (Window \u2014 Toggle System Console).\r\n\r\n\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \r\nWindows. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 macOS\/Linux, \u0442\u043e Blender \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u043d\u0451\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e blender-launcher.exe. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438.\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Blender \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0430 macOS. \u041c\u0438\u043d\u0438-\u0433\u0430\u0439\u0434 \u043e\u0442 Hollowpixel\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \r\n\u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0438 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445:\r\n\r\nimport bpy, random, time def random_scale(): t1 = time.perf_counter() for \r\nobject in bpy.data.objects: scale = random.randint(5,100)\/100 object.scale = (scale, scale, scale) t2 = time.perf_counter() print(t2-t1)\r\n\r\n\u0421\u0435\u0439\u0447\u0430\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0438\u0434\u0435 \r\n\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435. \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u041e\u0442\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 random_scale () \u2014 \u0431\u0435\u0437 \u0441\u043b\u043e\u0432\u0430 def, \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432 \u0438 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f, \u043d\u043e \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 \u043d\u0430 \u043a\u043e\u043d\u0446\u0435. \u042d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \r\n\u0432 \u0441\u0446\u0435\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 scale, \u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u25b7 (\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430) \u0438\u043b\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 Alt + P.\r\n\r\nimport bpy, random, time def random_scale(): t1 = time.perf_counter() for \r\nobject in bpy.data.objects: scale = random.randint(5,100)\/100 object.scale = (scale, scale, scale) t2 = time.perf_counter() print(t2-t1) random_scale()\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \r\n\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043d\u044f\u043b\u043e 0,34 \u0441\u0435\u043a\u0443\u043d\u0434\u044b:\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \r\n\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0433\u043b\u0430\u0432\u044b \u043c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 \u043a\u0443\u0431\u0430\u043c\u0438 Cubes? \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0435\u0439, \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 bpy.data.objects: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 bpy.data.collections[\u2018Cubes\u2019].objects:, \u0433\u0434\u0435 \u2018Cubes\u2019 \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.\r\n\r\n\u041f\u043e\u0434\u0432\u0435\u0434\u0451\u043c \u0438\u0442\u043e\u0433\u0438. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Python \u043c\u044b \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \r\n\u043c\u0430\u0441\u0448\u0442\u0430\u0431 17 248 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u0441\u0435\u0433\u043e \u0437\u0430 \u0442\u0440\u0435\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Blender.\r\n\r\n\u0412 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \r\n\u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0435\u0451 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.\r\n\r\n\r\n\r\n\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438:\r\n\r\n- \u0423\u0440\u043e\u043a\u0438 \u043f\u043e Blender: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f, \r\n\u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \r\n- \u0423\u0440\u043e\u043a\u0438 \u043f\u043e Blender: \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \r\n \r\n- \u0423\u0440\u043e\u043a\u0438 \u043f\u043e Blender: \u043e\u0441\u043d\u043e\u0432\u044b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 ","author":{"@type":"Person","name":"\u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438","url":"https:\/\/skillbox.ru\/media\/authors\/leon-balbery\/"},"publisher":{"@type":"Organization","name":"Skillbox","logo":{"@type":"ImageObject","url":"https:\/\/skillbox.ru\/static\/images\/skillbox.png"}},"mainEntityOfPage":{"@type":"WebPage","url":"https:\/\/skillbox.ru\/media\/gamedev\/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python\/"},"datePublished":"2022-02-02T10:50:00Z","dateModified":"2025-12-10T17:39:40Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/85e\/85ee97df8dd25622f9b95e4f1136ee79\/97598c9eb6962f346fe3a5bd2d3b7744.png"]},"description":"\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u0445 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445."}
</script><script data-skip-moving="true" id="FiMjZmipVK5U4ODg">if (window.relap) window.relap.ar('FiMjZmipVK5U4ODg');</script> </div>
<script>
window.Section_id = 18;
</script>
</div>
</main>
<footer class="without-buttons">
<div class="footer__wrapper container">
<div class="footer__firstgroup">
<section class="footer__contactbox">
<address class="footer__contacts">
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74951540915">8 (800) 500-05-22</a>
<span class="footer__phone-caption">Контактный центр</span>
</p>
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74952915987">+7(495) 291-59-87</a>
<span class="footer__phone-caption">Отдел заботы о пользователях</span>
</p>
<p class="footer__address"> Москва, Ленинский проспект, дом 6, строение 20</p>
</address>
<ul class="social-contacts footer__social">
<li>
<a class="social-contacts__item" href="https://vk.com/skillbox_education"
aria-label="Вконтакте">
<img src="/static/images/footer/soc_vk.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item"
href="https://www.youtube.com/channel/UC2FJq-Rr7v4SlKAoM7x0ZhA" aria-label="YouTube">
<img src="/static/images/footer/soc_tube.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item" href="tg://resolve?domain=skillboxru"
aria-label="Telegram">
<img src="/static/images/footer/soc_tg.svg"/>
</a>
</li>
</ul>
<div class="footer__age-limit">
16+
</div>
</section>
<section class="footer__rewardbox">
<ul class="rewards footer__rewards">
<li>
<span class="rewards__item">
<img src="/static/images/footer/footer_runet.svg" alt=""/>
<span>Премии Рунета</span>
<span>2018, 2019, 2020</span>
</span>
</li>
</ul>
</section>
</div>
<section class="footer__linksbox">
<ul class="links__list links__list--courses">
<li class="links__item links__item--header">Все направления</li>
<li class="links__item"><a href="/code/?utm_source=media&utm_medium=button&utm_campaign=footerlink_code&utm_term=footer">Программирование</a></li>
<li class="links__item"><a href="/design/?utm_source=media&utm_medium=button&utm_campaign=footerlink_design&utm_term=footer">Дизайн</a></li>
<li class="links__item"><a href="/marketing/?utm_source=media&utm_medium=button&utm_campaign=footerlink_marketing&utm_term=footer">Маркетинг</a></li>
<li class="links__item"><a href="/management/?utm_source=media&utm_medium=button&utm_campaign=footerlink_management&utm_term=footer">Управление</a></li>
<li class="links__item"><a href="/games/?utm_source=media&utm_medium=button&utm_campaign=footerlink_gamedev&utm_term=footer">Игры</a></li>
<li class="links__item"><a href="/multimedia/?utm_source=media&utm_medium=button&utm_campaign=footerlink_multimedia&utm_term=footer">Мультимедиа</a></li>
<li class="links__item"><a href="/psychology/?utm_source=media&utm_medium=button&utm_campaign=footerlink_psychology&utm_term=footer">Психология</a></li>
<li class="links__item"><a href="/general-development/?utm_source=media&utm_medium=button&utm_campaign=footerlink_general-development&utm_term=footer">Общее развитие</a></li>
<li class="links__item"><a href="/engineering/?utm_source=media&utm_medium=button&utm_campaign=footerlink_engineering&utm_term=footer">Инженерия</a></li>
<li class="links__item"><a href="/english/?utm_source=media&utm_medium=button&utm_campaign=footerlink_english&utm_term=footer">Английский язык</a></li>
<li class="links__item"><a href="/other/?utm_source=media&utm_medium=button&utm_campaign=footerlink_other&utm_term=footer">Другое</a></li>
</ul>
<ul class="links__list links__list--about">
<li class="links__item links__item--header">О Skillbox</li>
<li class="links__item"><a href="/company/?utm_source=media&utm_medium=button&utm_campaign=footerlink_aboutskillbox&utm_term=footer">О Платформе</a></li>
<li class="links__item"><a href="/career/?utm_source=media&utm_medium=button&utm_campaign=footerlink_careercentr&utm_term=footer"> Центр карьеры</a></li>
<li class="links__item"><a href="/otzyvy/?utm_source=media&utm_medium=button&utm_campaign=footerlink_testimonials&utm_term=footer">Отзывы</a></li>
<li class="links__item"><a href="/contacts/?utm_source=media&utm_medium=button&utm_campaign=footerlink_skillboxcontacts&utm_term=footer">Контакты</a></li>
<li class="links__item"><a href="/jobs/?utm_source=media&utm_medium=button&utm_campaign=footerlink_jobs&utm_term=footer">Вакансии</a></li>
<li class="links__item"><a href="/teachers/?utm_source=media&utm_medium=button&utm_campaign=footerlink_school&utm_term=footer">Школа кураторов</a></li>
<li class="links__item"><a href="/sale/free/?utm_source=media&utm_medium=button&utm_campaign=footerlink_free&utm_term=footer">Бесплатно</a></li>
<li class="links__item"><a href="/media/topic/tests/?utm_source=media&utm_medium=button&utm_campaign=footerlink_tests&utm_term=footer">Онлайн-тесты</a></li>
</ul>
<ul class="links__list links__list--webinar">
<li class="links__item links__item--header">Вебинары</li>
<li class="links__item"><a href="https://live.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_webinars&utm_term=footer" target="_blank" rel="noopener">Все вебинары</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/playlists/?utm_source=media&utm_medium=button&utm_campaign=footerlink_playlists&utm_term=footer" target="_blank" rel="noopener">Плейлисты</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/calendar/?utm_source=media&utm_medium=button&utm_campaign=footerlink_schedule&utm_term=footer" target="_blank" rel="noopener">Расписание</a></li>
</ul>
<ul class="links__list links__list--last">
<li class="links__item links__journal"><a href="/media/" target="_blank" rel="noopener">Медиа</a></li>
<li class="links__item"><a href="https://partners.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_partners&utm_term=footer" target="_blank" rel="noopener">Партнерская программа</a></li>
<li class="links__item"><a href="https://b2b.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_b2b&utm_term=footer" target="_blank" rel="noopener">Корпоративным клиентам</a></li>
<li class="links__item"><a href="https://career.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_employees&utm_term=footer" target="_blank" rel="noopener">Для работодателей</a></li>
</ul>
</section>
</div>
<div class="footer__underline container">
<span class="footer__copy">
© Skillbox, 2026 </span>
<div>
<span class="footer__oferta">
<a href="/oferta.pdf" target="_blank">Договор оферты</a>
</span>
<span class="footer__payment">
<a href="/payments/" target="_blank">Оплата</a>
</span>
<span class="footer__use-policy">
<a href="/terms_of_use.pdf" target="_blank">Правила пользования Платформой</a>
<a href="/privacy_policy.pdf" target="_blank">Политика конфиденциальности</a>
</span>
</div>
</div>
</footer>
<div class="cookies">
<p class="cookies__desc">
Пользуясь нашим сайтом, вы соглашаетесь с тем, что
<a href="https://skillbox.ru/privacy_policy.pdf" target="_blank" rel="noopener"
type="application/pdf">мы используем cookies</a> 🍪
</p>
<button type="button" class="cookies__button">
Окей
</button>
</div>
<div class="subscribe-popup subscribe">
<div class="subscribe-popup__spacer-mobile"></div>
<div class="subscribe-popup__row-content ">
<button class="subscribe__close"></button>
<div class="subscribe__content">
<div data-subscribe-popup-success class="hidden">
<h2 class="subscribe__header-success">Спасибо за подписку! Забирайте 5 бесплатных курсов:</h2>
<ul class="subscribe__list-block">
<li>Найти себя в IT за 5 дней</li>
<li>Как найти себя в дизайне в 2025 году</li>
<li>Интерьеры, мебель, ландшафт и декорирование</li>
<li>Интернет-маркетинг на практике</li>
<li>Бизнес-аналитик, продакт- и проджект-менеджер</li>
</ul>
<div class="subscribe__btns-el">
<a
target="_blank"
href="https://refer.id/?bot=skillbox_main_bot&platform=telegram&verbose_name=Skillbox&bot_avatar=https://designer.ftrcdn.com/uploads/bot_avatars/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png&n=137050&c=9209&bc_number=890&?utm_source=media&utm_medium=&utm_campaign=all_all_media_banners_invite_sbornik-890_all_bot_skillbox"
class="subscribe__el-btn">Получить доступ</a>
</div>
</div>
<div data-subscribe-popup-content>
<h2 class="subscribe__header">У нас есть классные рассылки!</h2>
<form action="/media/gamedev/uroki-po-blender-struktura-obektov-optimizatsiya-skripty-python/" class="newsletter-form page-subscription__form3" data-type="popup">
<input type="hidden" name="action" value="subscribe">
<div class="subscribe__checkboxes"></div>
<div class="subscribe__email email_popup">
<input class="subscribe-form__input" type="text" name="email" placeholder="Email" >
<span class="subscribe-form__label-name">Электронная почта</span>
<button type="submit" class="popup-btn-click">Подписаться</button>
<span class="email__error">Поле необходимо заполнить</span>
</div>
<div class="subscribe-popup__checkbox-end">
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data>
<div class="subscribe__checkbox">
<input type="checkbox" name="agreements[PERS]" id="isCheckTrue" value="1" data-checkbox-personal-data-input>
<label for="isCheckTrue"><span>Я согласен на <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/privacy_policy/version-290425.pdf">обработку персональных данных</a></span></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
<div class="subscribe__bottom">
<span>Нажимая на кнопку, я соглашаюсь с <a target="_blank" href="https://skillbox.ru/legal-docs/skillbox/file/terms_of_use/version-300824.pdf">правилами пользования Платформой</a></span>
</div>
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data-two>
<div class="subscribe__checkbox subscribe__checkbox--end" >
<input type="checkbox" name="agreements[ADS]" id="isAdsCalls" value="1" checked="" data-checkbox-personal-data-input-two>
<label for="isAdsCalls">Я согласен <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/soglasie-na-poluchenie-reklamy.pdf">получать рекламу и звонки</a></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- src="/static/images/articles/subscribe-popup-img.png" -->
</div>
<div class="bg-modal-overlay bg-modal-overlay--transparent"></div>
<script data-skip-moving="true" id="popup__data--formatted">
$(".popup-btn-click").on("click" , function (){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
let input = $(this).closest(".subscribe__email").find(".subscribe-form__input");
let inputValue = input.val();
if(emailPattern.test(inputValue)) {
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail(inputValue);});
}
});
/*
window.popupData = {
"8": {
header: 'У нас есть классные рассылки про дизайн!!!',
category: 'Дизайн',
checkboxes: [
'Лучшие статьи про Дизайн',
'«Типографика без боли»'
]
},
"10": {
header: 'У нас есть классные рассылки про код',
category: 'Код',
checkboxes: [
'Лучшие статьи про Код и Людей кода',
'«Жизнь без багов»'
]
},
"18": {
category: 'Геймдев',
checkboxes: []
},
"21": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Бизнес',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"9": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Маркетинг',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"11": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Управление',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"17": {
category: 'Развитие',
checkboxes: []
},
"22": {
header: 'У нас есть классные рассылки про образование',
category: 'Образование',
checkboxes: [
'Лучшие статьи про Образование',
'«EdTech по полочкам»',
'«Мой успешный онлайн-курс»'
]
},
}
*/
window.popupData = {"header":"\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 - \u043d\u0430 \u043f\u043e\u0447\u0442\u0443!\u003Cbr\/\u003E\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438\u003Cbr\/\u003E\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 5 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432:","category":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432","checkboxes":{"23":"\u041c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442","24":"\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433","26":"\u041a\u043e\u0440\u043f. \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","13":"\u0414\u0438\u0437\u0430\u0439\u043d","16":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","15":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","17":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0433\u0440","18":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e"},"code":"gamedev","scroll":true};
window.subscribePopupShow = 1;
</script>
<div class="copied">
<img src="/static/images/articles/done-circle.svg" alt="" class="copied__icon">
<p class="copied__text">
Ссылка скопирована
</p>
</div>
<!-- <style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{box-sizing:border-box;text-decoration:none;display:none;min-height:48px;color:var(--banner-color);background-color:var(--banner-bg);overflow:hidden;font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.universal-notice *{box-sizing:inherit}.universal-notice.universal-notice--active{display:block}.universal-notice--bitrix{z-index:1000}.universal-notice__wrapper{position:relative;-webkit-box-pack:start;justify-content:flex-start;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;margin-left:12px;padding:4px 0}.universal-notice__title{position:relative;flex-shrink:0;width:132px;margin-right:27px;font-size:14px;line-height:20px;text-transform:uppercase}.universal-notice__timer{display:none;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.universal-notice__button{flex-shrink:0;min-width:120px;padding:8px 12px;border-radius:25px;font-weight:500;font-size:12px;line-height:16px;color:#3925b7;text-align:center;text-transform:uppercase;background-color:#ffa6a6}@media (min-width:768px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:768px) and (max-width:0px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:1280px) and (max-width:0px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}@media (min-width:1280px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}</style>-->
</body>
</html>