Во время GDC Summer 2020 старший инженер по программному обеспечению Respawn Entertainment Бартломей Васак провёл лекцию о создании физических анимаций для Star Wars Jedi: Fallen Order и проблемах, с которыми столкнулись разработчики при их реализации.
Мы побывали на лекции и перевели главное.
Лекцию пересказал Никита Казимиров.
Так называемая «физическая» анимация не просто проигрывает фиксированную последовательность движений, а использует физику, чтобы заставить части тел двигаться в соответствии с ситуацией в пространстве.
На примере ниже воспроизводится одна и та же анимация. Но справа — «физическая», которая помогает определить точки коллизий и избежать провала текстур и частей тела друг в друга. Иными словами, анимация немного изменяется, подстраиваясь под законы физики. Слева же видна стандартная анимация, из-за которой рука персонажа проходит сквозь стену.
Your browser does not support the video tag.
Есть три способа подстроить анимацию под физику. Первый — использование моторов. Мотор — это часть шарнирных соединений между разными частями модели. Он использует специальный алгоритм, чтобы определить источник распределяемой между телом силы. И эта сила как бы задаёт движение отдельных частей согласно конечной точки анимации, которую разработчики прописывают заранее.
Второй метод — использование скоростей. В этом случае рассчитывается скорость, необходимая для перемещения тела из одной точки в другую за отведённое время. Тело заставляют двигаться с нужной скоростью, чтобы оно достигло конечной точки анимации.
Третий метод — применение ограничителей. В этом случае разработчики создают новые ограничители между динамическим ragdoll-телом и конечной точкой анимации. Все параметры нового ограничителя определяют, как заставить динамическое тело двигаться к конечной точке анимации.
При разработке Star Wars Jedi: Fallen Order начали с первого метода. Впервые его применили на штурмовиках, которых главный герой хватает при помощи Силы. В этом случае центр тяжести штурмовика движется строго согласно анимации, а вот конечности уже поддаются законам физики. Красным помечены объекты, которые двигаются исключительно благодаря прописанной анимации, — то есть физика не используется. Можно увидеть, как благодаря физической анимации ноги штурмовика взаимодействуют с ящиками. Без использования физики они просто прошли бы сквозь него.
Your browser does not support the video tag.
Было очень важно правильно настроить несколько физических параметров. Первый — это число итераций решателя (solver iterations), от которого зависит то, насколько часто движок просчитывает применение физики за один фрейм. По стандарту в Unreal Engine 4 их восемь для позиции тела и один для скорости. Но с «моторами» такие параметры не работают: в случае Fallen Order пришлось использовать 64 для позиции и 32 для скорости.
Дополнительно пришлось заняться вопросами трения объектов и их возвращения в исходное состояние (реституцией). Эти параметры создают множество проблем для физических анимаций: высокие значения трения затрудняют движение тела к нужной точке. При разработке Fallen Order использовались низкие значения трения и реституции. Когда главный герой хватает штурмовика при помощи Силы, то трение вообще отсутствует, — чтобы физике было проще соответствовать анимации.
Ещё одна важная деталь — непрерывное обнаружение столкновений (CCD — Continuous Collision Detection). Оно должно быть включено для высокого качества анимаций, но между телами внутри одного ragdoll-объекта его лучше отключить. С физикой Fallen Order CCD работало плохо, так что Respawn пришлось написать специальный код, который притягивал тела друг к другу, если они по какой-то причине лишком сильно отдалились и перешли заданные границы.
Также физические анимации в Fallen Order использовались в момент смерти штурмовиков. На примере ниже физика включается лишь под самый конец анимации, чтобы тело реалистично упало на землю под действием гравитации.
Your browser does not support the video tag.
Подобный метод хорошо работал на открытых локациях, но в закрытых помещениях части тела слишком часто проходили сквозь текстуры стен. Смерть врагов тогда выглядела не очень естественно.
Чтобы улучшить анимацию гибели штурмовиков, разработчики включили физические анимации для всех частей тела, а также применили моторы для всех соединений. Теперь основной проблемой стали бёдра штурмовика, которые служат в качестве центра его модели — из-за их подвижности бёдра могли постоянно проходить сквозь другие объекты. Но разработчики всё равно стремились к тому, чтобы центр модели поддавался законам физики, — ведь только в этом случае тела могли совершать все эти предсмертные акробатические кульбиты.
В Respawn решили сделать центр модели отдельным физическим объектом и создали для него новые ограничения, которые принуждали центр модели двигаться к конечной точке анимации. Но затем возникла другая проблема: когда тело сталкивалось с объектом, прописанные условия всё равно могли подталкивать его к финальной точке. В таком случае разработчики решили отслеживать расстояние между центром модели и финальной точкой анимации. Если оно превышало определённую величину, то для тела включался режим свободного падения.
На примере ниже показана подобная анимация. Центр модели определил, что тело не может пройти сквозь препятствие, и поэтому включилась анимация падения.
Your browser does not support the video tag.
Все эти случаи актуальны только для штурмовиков. Для них было важно, чтобы физика работала как можно ближе к анимации, а также поддерживала коллизии. А вот для главного героя коллизии уже не так важны, зато его анимации должны были быть максимально плавными и естественными.
Первой разработчики реализовали физическую анимацию карабканья по выступам. Руки во время неё двигаются согласно заранее прописанной траектории, а вот все остальные части тела уже подчиняются законам физики.
На красной модели видно, что без добавления физики анимация выглядит несколько статичной. А с физикой появляются дополнительные движения, которые придают герою плавности.
Your browser does not support the video tag.
Физика упростила работу аниматоров — благодаря ней они могли сконцентрироваться только на ключевых позах. А дополнительные движения и детали появлялись как раз за счёт физических анимаций. Использование моторов для главного героя на первый взгляд показалось очень хорошим решением. Но быстро выяснилось, что моторы подходят не для всех действий героя.
К примеру, анимация скольжения. При использовании слабых моторов оказалось, что когда герой сталкивается с препятствием или быстро меняет направление движения, то слишком интенсивно и нереалистично сильно качается. С сильными моторами анимации тоже выглядели неправдоподобно, — ведь герой был чересчур устойчивым.
Your browser does not support the video tag.
Изменение скорости анимаций также не помогло. Тогда в Respawn решили использовать другой подход. Разработчики сделали этакую «смесь из нескольких анимаций сразу», а физику ослабили. При скольжении действие физики уменьшили в два раза. В результате герой начал скользить плавнее, а ещё им оказалось более приятно управлять стиком.
Your browser does not support the video tag.
Такой вариант и вошёл в релизную версию игры. Также ослабление физики и смешивание анимаций применяются при карабканьи по верёвке и движении против сильного ветра.
Очередным испытанием для команды стала анимация балансирования при движении под вертикальной балкой. В первых версиях Кэл двигался слишком агрессивно и активно раскачивался из стороны в сторону. А итоговая поза героя была будто «оторвана» от остальной анимации.
Для начала в Respawn рассчитали желаемую линейную скорость. Это скорость, необходимая для полного движения тела из текущей позиции в конечную в одном кадре. Затем посчитали текущую скорость — уже исходя из анимации. А потом провели линейную интерполяцию между желаемой и текущей скоростью. Полученные скорости и применили к анимации балансирования (конкретно — к рукам героя), добившись желаемой плавности.
Your browser does not support the video tag.
Все эти случаи описывают ситуации, когда герой находится в каком-то особом положении движения. В Respawn также хотели улучшить и стандартные ходьбу и бег, но поначалу не понимали, как именно это сделать. В итоге разработчики сконцентрировались на трёх конкретных моментах: начале движения, повороте и остановке. В них команда видела потенциал для применения физических анимаций.
Каждая физическая анимация при обычном движении Кэла длится около двух секунд и постепенно затухает. Именно она сглаживают переход между движениями героя и добавляет им инерции. По руке Кэла можно увидеть, что благодаря инерции его движения иногда отстают от заданной анимации, иногда — опережают. Благодаря этому бег выглядит реалистично. Дополнительно в Respawn создали новые ограничения для рук, чтобы те не слишком сильно отклонялись от желаемых анимаций.
Your browser does not support the video tag.
Похожее решение команда применила для анимации ходьбы по балке — для рук вновь задали ограничения. В итоге балансирование выглядит аккуратно и естественно.
Особые анимации пришлось отдельно прописать для напарника Кэла — BD-1. Большую часть времени он проводит на спине главного героя. В Respawn хотели сделать анимации дроида более «расслабленными», чтобы он реагировал на каждое движение Кэла естественным образом.
В игре это выглядит так: ноги дроида строго подчиняются анимации, а движение остальных частей BD-1 уже зависит от физики.
В случае некоторых очень быстрых движений Кэла с анимациями BD-1 возникали проблемы. Его физические анимации становились нестабильными, и поэтому разработчикам пришлось создать новый ограничитель — между головой дроида и целью анимации.
Граница, после которой изменялась анимация, была динамической. Если герой двигается медленно, то предел выше, но если Кэл перемещался слишком быстро, то предел для BD-1 становится близким к нулю. Благодаря этому голова дроида всегда находится возле цели анимации.
Ниже показана работа этого ограничителя. Слева он отключён, и голова BD-1 при перекате Кэла практически полностью проходит в модель главного героя. Справа же ограничитель включен, потому голова всегда остаётся в нужной позиции. При этом остальное тело подчиняется всем законам физики.
Your browser does not support the video tag.
Создание физических анимаций для дроида в целом оказалось трудной задачей — пришлось повозиться с масштабированием анимаций, а это всегда создаёт проблемы. Также нужно было разобраться с порядком выполнения анимации, особенно когда Кэл скользил или совершал другие активные действия — ведь в этом случае физические анимации были активны и для BD-1, и для главного героя. Движения дроида ещё и сильно зависели от частоты кадров. При 30 fps они смотрелись натурально, но при 60 теряли правдоподобность.
Чтобы решить эти проблемы, в Respawn решили отключить коллизию для большинства анимаций взаимодействия между дроидом и Кэлом. Также анимации BD-1 разворачивались в собственной физической сцене при фреймрейте, который оставался фиксированным в любых условиях.
Если анимация заканчивалась слишком быстро, то оставшиеся движения дроида игра предугадывала и дополняла самостоятельно. Все физические анимации начинались с Кэла, а дроид реагировал на движения главного героя своими физическими анимациями.
ХОЧЕШЬ ПОЛУЧАТЬ ЛУЧШИЕ СТАТЬИ
ОТ XYZ РАЗ В НЕДЕЛЮ?
Подпишись на рассылку XYZ
Нажимая на кнопку, вы соглашаетесь с условиями обработки данных
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="google-site-verification" content="3W5japOowboLNjQ8sge1sGCJaL2OOmBZVhLGCNoRjlw" /> <meta name="yandex-verification" content="007f18c3f91cd6ed" /> <!--metatextblock--> <title>Как использовали физику для создания анимаций в Star Wars Jedi: Fallen Order.</title> <meta name="description" content="О создании физических анимаций для Star Wars Jedi: Fallen Order и проблемах, с которыми столкнулись геймдизайнеры. Есть 3 способа подстроить анимации в игре под физику." /> <meta name="keywords" content="анимации в Star Wars Jedi: Fallen Order, анимации в star wars jedi, физические анимации в star wars jedi, физическая и стандартная анимация в играх, как подстроить анимацию под физику, анимации на основе физики в играх, мотор для анимации в играх, огранич" /> <meta property="og:url" content="https://www.school-xyz.com/blog/kak-rabotayut-animacii-na-osnove-fiziki-v-star-wars-jedi-fallen-order" /> <meta property="og:title" content="Как использовали физику для создания анимаций в Star Wars Jedi: Fallen Order." /> <meta property="og:description" content="О создании физических анимаций для Star Wars Jedi: Fallen Order и проблемах, с которыми столкнулись геймдизайнеры. Есть 3 способа подстроить анимации в игре под физику." /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://static.tildacdn.com/tild3133-3234-4237-b334-336336336639/Cover-1.jpg" /> <link rel="canonical" href="https://www.school-xyz.com/blog/kak-rabotayut-animacii-na-osnove-fiziki-v-star-wars-jedi-fallen-order"> <!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <link rel="shortcut icon" href="https://static.tildacdn.com/tild6462-6438-4164-b332-316331666365/favicon.ico" type="image/x-icon" /> <!-- Assets --> <script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project1006203/tilda-blocks-page13285293.min.css?t=1772097608" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-cover-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-forms-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" type="text/css" href="https://ws.tildacdn.com/project1006203/custom.css?t=1772097608"> <script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script> <script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t_throttle(fn,threshhold,scope) {return function() {fn.apply(scope||this,arguments);};}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,r=[],n,l=i.getAttribute("data-artboard-screens");if(l){l=l.split(",");for(var o=0;o<l.length;o++)r[o]=parseInt(l[o],10)}else r=[320,480,640,960,1200];for(var o=0;o<r.length;o++){var d=r[o];a>=d&&(n=d)}var _="edit"===window.allrecords.getAttribute("data-tilda-mode"),c="center"===t396_getFieldValue(i,"valign",n,r),s="grid"===t396_getFieldValue(i,"upscale",n,r),w=t396_getFieldValue(i,"height_vh",n,r),g=t396_getFieldValue(i,"height",n,r),u=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!_&&c&&!s&&!w&&g&&!u){var h=parseFloat((a/n).toFixed(3)),f=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*h)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<f.length;o++)f[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i).forEach((function(t){t.style.zoom=h}))}}}}function t396_scaleInitial__getElementsToScale(t){return t?Array.prototype.slice.call(t.children).filter((function(t){return t&&(t.classList.contains("t396__elem")||t.classList.contains("t396__group"))})):[]}function t396_getFieldValue(t,e,i,a){var r,n=a[a.length-1];if(!(r=i===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+i)))for(var l=0;l<a.length;l++){var o=a[l];if(!(o<=i)&&(r=o===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+o)))break}return r}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script> <script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/ws/project1006203/tilda-blocks-page13285293.min.js?t=1772097608" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-cover-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-vote-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zoom-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <!-- nominify begin --><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Курс геймдев",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5.0,
"ratingCount": 3719,
"reviewCount": 3828
}
}
</script> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "XYZ",
"item": "https://www.school-xyz.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Курсы",
"item": "https://www.school-xyz.com/courses"
},
{
"@type": "ListItem",
"position": 3,
"name": "💥Скидки до 50%",
"item": "https://www.school-xyz.com/courses#all"
}
]
}
</script> <script>
// скрипт для стилизации попапов с работами студентов при переходе по прямой ссылке на этот попап
if (window.location.pathname.includes('/tpost')) {
$('head').append('<link rel="stylesheet" href="https://landing-cdn.school-xyz.com/tpostTildaStyle.css?v=1" type="text/css">');
}
</script> <script>
document.addEventListener('DOMContentLoaded', function() {
var allRec = document.getElementById('allrecords');
if (allRec) allRec.setAttribute('data-fb-event', 'nosend');
});
</script> <script type="text/javascript" id="advcakeAsync">
(function (a) {
var b = a.createElement("script");
b.async = 1;
b.src = "//0gs25f.ru/";
a=a.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b,a)
})(document);
</script> <!-- <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/promosTildaScript.js?v=4"></script> --> <!-- отвечает за работу промобара --> <!-- <link rel="stylesheet" href="https://learn.school-xyz.com/tilda-static/public/promosTildaStyle.css?v=7"> --> <!-- стили для промобара --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/saveUrlGetParamsTildaScript.js"></script> <!-- <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formsSubmittionTildaScript.js"></script> --> <!-- что-то про регистрацию на интро курсы --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/platformDataAutoFillTildaScript.js?v=8"></script> <!-- автоматизация цен, рассрочка, даты, скидка... --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/preValidatePhoneTildaScript.js"></script> <!-- валидация телефонного номера для любых форм на страницах --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formsAutoFillTildaScript.js"></script> <!-- автозаполнение форм, только имя и почта --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formValidateYmClientTildaScript.js"></script> <!-- модуль CPA-интеграций https://t.me/dmitmix --> <script>
const script = document.createElement('script');
script.src = `https://landing-cdn.school-xyz.com/js/xyzCpa.js?v=${Date.now()}`;
document.head.appendChild(script);
</script> <!-- Solo Start --> <script src="https://sologpt.ru/xyz_integration/sologpt.iife.js" defer></script> <!-- Solo End --> <!-- Carrot quest BEGIN --> <script type="text/javascript">
!function(){function t(t,e){return function(){window.carrotquestasync.push(t,arguments)}}if("undefined"==typeof carrotquest){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="https://cdn.carrotquest.app/api.min.js",document.getElementsByTagName("head")[0].appendChild(e),window.carrotquest={},window.carrotquestasync=[],carrotquest.settings={};for(var n=["connect","track","identify","auth","onReady","addCallback","removeCallback","trackMessageInteraction"],a=0;a<n.length;a++)carrotquest[n[a]]=t(n[a])}}(),carrotquest.connect("68058-4eec889da0f5c5a357581273a3");
</script> <!-- Carrot quest END --> <!-- UE admin BEGIN --> <link rel="stylesheet" href="https://tilda.ultimate.education/styles.css"> <script type="text/javascript" src="https://tilda.ultimate.education/index.js" apiUrl="https://product.it.ultimate.education" id="replacer" school="XYZ" currency="RUB" apiVersion="v3"></script> <!-- UE admin END --> <script>
/* привязка виджета чата к скролу, чтобы не было наложения с промобаром */
function findChatWidget() {
let chatWidget = $('#carrotquest-messenger-collapsed-container');
let promoBar = document.querySelector('.uc-promobar');
if (chatWidget.length == 1 && promoBar !== null) {
console.log('виджет чата и промобар найдены!');
if (promoBar.clientHeight != 0) {
let promobarHeight = promoBar.clientHeight + 8;
console.log('Высота промобара: ' + promobarHeight);
document.querySelector('.t-body').style.setProperty('--dynamic-bottom', ' ' + promobarHeight + 'px');
$('.promobar__hide-btn').on('click', function() {
$('.t-body').addClass('hide-promobar');
});
let scrolledAmo = $(document).scrollTop();
let bodyHeightAmo = $(document).height() - ($(window).height() + 250);
if ( scrolledAmo > 250 && scrolledAmo < bodyHeightAmo ) {
$('.t-body').addClass('show-promobar');
} else {
$('.t-body').removeClass('show-promobar');
}
$(document).scroll(function() {
let scrolledAmo = $(document).scrollTop();
let bodyHeightAmo = $(document).height() - ($(window).height() + 250);
if ( scrolledAmo > 250 && scrolledAmo < bodyHeightAmo ) {
$('.t-body').addClass('show-promobar');
} else {
$('.t-body').removeClass('show-promobar');
}
});
}
} else {
setTimeout(function() {
console.log('виджет чата и/или промобар не найдены');
findChatWidget();
}, 1000);
}
}
findChatWidget();
/* end привязка виджета чата к скролу, чтобы не было наложения с промобаром */
</script> <!-- Pixel victorycorp --> <script type="text/javascript">
(function (d, w) {
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://victorycorp.ru/index.php?ref="+d.referrer+"&page=" + encodeURIComponent(w.location.href);
n.parentNode.insertBefore(s, n);
})(document, window);
</script> <!-- /Pixel victorycorp --><!-- nominify end --><script type="text/javascript">window.dataLayer=window.dataLayer||[];</script> <!-- Google Tag Manager --> <script type="text/javascript">(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-KTCCH4H');</script> <!-- End Google Tag Manager --> <script type="text/javascript">(function() {if((/bot|google|yandex|baidu|bing|msn|duckduckbot|teoma|slurp|crawler|spider|robot|crawling|facebook/i.test(navigator.userAgent))===false&&typeof(sessionStorage)!='undefined'&&sessionStorage.getItem('visited')!=='y'&&document.visibilityState){var style=document.createElement('style');style.type='text/css';style.innerHTML='@media screen and (min-width: 980px) {.t-records {opacity: 0;}.t-records_animated {-webkit-transition: opacity ease-in-out .2s;-moz-transition: opacity ease-in-out .2s;-o-transition: opacity ease-in-out .2s;transition: opacity ease-in-out .2s;}.t-records.t-records_visible {opacity: 1;}}';document.getElementsByTagName('head')[0].appendChild(style);function t_setvisRecs(){var alr=document.querySelectorAll('.t-records');Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_animated");});setTimeout(function() {Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_visible");});sessionStorage.setItem("visited","y");},400);}
document.addEventListener('DOMContentLoaded',t_setvisRecs);}})();</script></head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="13285293" data-tilda-page-alias="blog/kak-rabotayut-animacii-na-osnove-fiziki-v-star-wars-jedi-fallen-order" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <!--header--> <header id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="20568317" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec1229679181" class="r t-rec" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- НОВЫЙ ХЕДЕР от 15.08.25 --> <!-- 17.09.25 замена всех иконок и картинки в блоке с тестом. Удаление пункта меню Вебинары --> <!-- 19.12.25 заменил пункт меню Бесплатные курсы на Вводный урок с консультантом --> <div class="header__overlay" style="display: none"></div> <header class="header__container"> <div class="header__wrapper"> <a href="/" class="header__logo"> <img class="header__logo_dark" src="https://static.tildacdn.com/tild3538-3936-4030-a562-643962313938/Logo-dark.svg" alt="XYZ School logo"> </a> <nav class="header__items-container"> <ul class="header__items-wrapper"> <li class="header__item header__item-all-courses"> <div class="header__item-link">Все курсы</div> </li> <li class="header__item"> <a href="https://www.school-xyz.com/trial-lesson" class="header__item-link">Вводный урок с консультантом</a> </li> </ul> <a href="https://learn.school-xyz.com/" target="_blank" class="header__members-btn">Личный кабинет</a> </nav> <div class="menu burger-btn"> <div class="icon-left"></div> <div class="icon-right"></div> </div> </div> <div class="menu__wrapper"> <div class="menu-left"> <nav class="menu-left__course-direction"> <ul class="menu-left__course-direction-list"> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/courses" class="menu-left__course-direction-link" data-direction-name="all-courses"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3434-6264-4637-a535-373532313833/Frame_2087329259_1.jpg" alt="Иконка направления Все курсы"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Все курсы</div> <div class="menu-left__course-direction-quontity-courses">37 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/3d-modelirovanie" class="menu-left__course-direction-link" data-direction-name="3d"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6632-3831-4331-a264-636330373331/3D-_1.jpg" alt="Иконка направления 3D-моделирование"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">3D-моделирование</div> <div class="menu-left__course-direction-quontity-courses">15 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/2d-illyustraciya" class="menu-left__course-direction-link" data-direction-name="2d"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3830-3537-4234-b833-633466333735/2D-_1.jpg" alt="Иконка направления 2D-иллюстрация"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">2D-иллюстрация</div> <div class="menu-left__course-direction-quontity-courses">8 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/geymdizayn" class="menu-left__course-direction-link" data-direction-name="gamedesign"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3461-3239-4635-a138-383032306664/gamedesign_1.jpg" alt="Иконка направления Геймдизайн"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Геймдизайн</div> <div class="menu-left__course-direction-quontity-courses">4 курса</div> </div> </a> </li> </ul> <ul class="menu-left__course-direction-list"> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/programmirovanie" class="menu-left__course-direction-link" data-direction-name="gamecode"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6533-3234-4231-a361-356136613038/_1.jpg" alt="Иконка направления Программирование"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Программирование</div> <div class="menu-left__course-direction-quontity-courses">8 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/video-i-speceffekty" class="menu-left__course-direction-link" data-direction-name="vfx"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6562-3931-4937-b035-363239373230/___1.jpg" alt="Иконка направления Видео и спецэффекты"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Видео и спецэффекты</div> <div class="menu-left__course-direction-quontity-courses">3 курса</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/menedzhement" class="menu-left__course-direction-link" data-direction-name="business"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3165-6365-4236-b463-643730363733/management_1.jpg" alt="Иконка направления Менеджмент"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Менеджмент</div> <div class="menu-left__course-direction-quontity-courses">1 курс</div> </div> </a> </li> </ul> </nav> </div> <div class="menu-right"> <div class="menu-right__test-tags-wrap"> <div class="menu-right__test-tag">Тест</div> <div class="menu-right__test-tag">5 минут</div> </div> <h3 class="menu-right__test-heading">Какая профессия тебе подходит?</h3> <a href="https://www.school-xyz.com/proforientaciya" class="menu-right__test-button">Пройти тест</a> </div> <div class="menu-left__bottom-info"> <ul class="menu-left__bottom-info-list"> <li class="menu-left__bottom-info-link"> <a href="https://www.school-xyz.com/trial-lesson" target="_blank">Вводный урок с консультантом</a> </li> </ul> <a href="https://learn.school-xyz.com/" target="_blank" class="header__members-btn">Личный кабинет</a> </div> </div> </header> <style>
:root header {
font-family: 'BebasRoboto';
--color-bg: #17171b;
--color-bg-menu-open: #23232A;
--color-text: #fff;
--color-bg-lk-btn: #2b2b34;
--color-text-opacity: rgb(206 206 222 / 50%);
--color-accent: #8e8eff;
--color-black: #17171b;
--color-border: #373742;
--color-burger-line: #fff;
--color-burger-bg: #22222e;
--color-button: #6060ff;
}
#allrecords header ul {
padding-left: 0;
margin-bottom: 0;
}
#allrecords header a {
color: inherit;
}
.header__overlay {
position: fixed;
inset: 0;
cursor: pointer;
z-index: 998;
background: rgb(0 0 0 / 50%);
-webkit-tap-highlight-color: transparent;
}
/* Бургер меню */
.burger-btn {
position: relative;
flex-shrink: 0;
width: 40px;
height: 40px;
top: 0;
left: 0;
transition-duration: 0.5s;
border-radius: 22px;
cursor: pointer;
transform: scale(0.8);
visibility: visible;
opacity: 1;
}
.burger-btn.open {
background: var(--color-burger-bg);
visibility: visible;
opacity: 1;
}
.burger-btn .icon-left {
transition-duration: 0.5s;
position: absolute;
width: 12px;
height: 2px;
top: 19px;
background-color: var(--color-burger-line);
left: 9px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left {
transition-duration: 0.3s;
background: transparent;
}
.burger-btn .icon-left:before {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: -8px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left:before {
transform: rotateZ(45deg) scaleX(1.1) translate(2.5px, 2px);
}
.burger-btn .icon-left:after {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: 8px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left:after {
transform: rotateZ(-45deg) scaleX(1.1) translate(2.5px, -2px);
}
.burger-btn .icon-right {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
top: 19px;
background-color: var(--color-burger-line);
left: 21px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right {
transition-duration: 0.3s;
background: transparent;
}
.burger-btn .icon-right:before {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: -8px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right:before {
transform: rotateZ(-45deg) scaleX(1.1) translate(-3.5px, 1px);
}
.burger-btn .icon-right:after {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: 8px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right:after {
transform: rotateZ(45deg) scaleX(1.1) translate(-3.5px, -1px);
}
/* Конец бургер меню */
header.header__container {
position: fixed;
background: transparent;
width: 100%;
z-index: 999;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
transition: border-radius 0.3s ease, background 0.3s ease 0.3s, transform 0.3s ease;
overflow: hidden;
box-sizing: border-box;
}
header.header__container.open {
border-bottom-left-radius: 40px;
border-bottom-right-radius: 40px;
background: var(--color-bg-menu-open);
transition: border-radius 0.3s ease, background 0.3s ease 0s, transform 0.3s ease;
}
header.header__container.main-header--bg_scroll {
background: var(--color-bg);
transition: border-radius 0.3s ease, background 0.3s ease 0s, transform 0.3s ease;
}
header.header__container.main-header--bg_scroll.open {
background: var(--color-bg-menu-open);
}
header.header__container.out {
transform: translateY(-100%);
}
header.header__container.open.out {
transform: none;
}
header a {
color: inherit;
text-decoration: none;
}
header ul {
list-style: none;
}
.header__wrapper {
position: relative;
display: flex;
max-width: 1160px;
margin: 0 auto;
padding: 20px 0;
}
.header__wrapper:after {
content: '';
position: absolute;
bottom: 0;
width: 100%;
height: 1px;
background: var(--color-border);
opacity: 0;
}
.header__container.open .header__wrapper:after {
opacity: 1;
transition: .3s ease;
}
a.header__logo {
display: flex;
margin-right: 48px;
}
.header__items-container {
display: flex;
justify-content: space-between;
width: 100%;
margin-right: 10px;
}
ul.header__items-wrapper {
display: flex;
align-items: center;
column-gap: 40px;
}
li.header__item {
position: relative;
font-size: 14px;
font-weight: 400;
line-height: 28px;
color: var(--color-text);
transition: .3s ease;
}
li.header__item.header__item-all-courses_open {
color: var(--color-accent);
}
a.header__item-link, .header__item-link {
display: block;
}
ul.header__items-wrapper li.header__item-all-courses {
cursor: pointer;
}
ul.header__items-wrapper li.header__item-all-courses .header__item-link::after {
content: '';
display: inline-block;
position: relative;
vertical-align: middle;
width: 6px;
height: 6px;
margin-left: 10px;
transition: .3s ease;
border-width: 0 0 1.5px 1.5px;
border-color: var(--color-text);
border-style: solid;
transform: rotateZ(315deg) translate(1px, -2px);
}
ul.header__items-wrapper li.header__item-all-courses_open .header__item-link::after {
transform: rotateZ(135deg) translate(1px, -1px);
border-color: var(--color-accent);
}
#allrecords a.header__members-btn {
display: flex;
align-items: center;
width: fit-content;
font-size: 14px;
font-weight: 400;
line-height: 24px;
background: var(--color-bg-lk-btn);
border: 0;
border-radius: 30px;
padding: 8px 24px;
color: var(--color-text);
text-decoration: none;
transition: .2s ease;
}
#allrecords .header__container.open .header__members-btn {
background: var(--color-bg-lk-btn);
}
#allrecords a.header__members-btn:hover {
background: var(--color-button);
color: #fff;
}
#allrecords .header__container.open .header__members-btn:hover {
background: var(--color-button);
}
.menu__wrapper {
display: flex;
column-gap: 16px;
max-width: 1160px;
margin: 0 auto;
opacity: 0;
visibility: hidden;
max-height: 0;
padding: 0;
transition: .3s ease;
overflow: hidden;
box-sizing: border-box;
}
.menu__wrapper.menu__wrapper_active {
opacity: 1;
visibility: visible;
max-height: 100vh;
padding: 32px 0;
}
.menu-left {
width: 100%;
max-width: 572px;
}
nav.menu-left__course-direction {
display: flex;
column-gap: 16px;
}
ul.menu-left__course-direction-list {
display: flex;
flex-direction: column;
row-gap: 16px;
width: 100%;
}
li.menu-left__course-direction-item {
font-weight: 400;
font-size: 16px;
line-height: 1.6;
color: var(--color-text);
}
a.menu-left__course-direction-link {
display: flex;
flex-wrap: wrap;
column-gap: 12px;
height: 64px;
padding: 8px;
border-radius: 16px;
transition: .2s ease;
box-sizing: border-box;
}
@media (hover: hover) {
#allrecords a.menu-left__course-direction-link:hover {
background-color: #2b2b35;
}
}
.menu-left__course-direction-icon {
height: 100%;
border-radius: 8px;
}
.menu-left__course-direction-quontity-courses {
font-size: 14px;
color: var(--color-text-opacity);
}
.menu-left__bottom-info {
width: 100%;
}
ul.menu-left__bottom-info-list {
display: flex;
flex-direction: row;
column-gap: 30px;
}
#allrecords ul.menu-left__bottom-info-list {
margin-bottom: 0;
}
li.menu-left__bottom-info-link {
font-size: 14px;
line-height: 30px;
color: var(--color-text);
}
li.menu-left__bottom-info-link a {
transition: .2s ease;
}
#allrecords li.menu-left__bottom-info-link a:hover {
color: var(--color-accent);
}
#allrecords .menu-left__bottom-info a.header__members-btn {
display: none;
}
.menu-right {
position: relative;
display: flex;
flex-direction: column;
row-gap: 16px;
width: 100%;
max-width: 572px;
background-color: #2b2b35;
background-image: url(https://static.tildacdn.com/tild3264-3531-4533-b066-653232386336/Desktop.jpg);
background-size: cover;
background-repeat: no-repeat;
background-position: center bottom;
padding: 24px;
border-radius: 16px;
color: var(--color-text);
box-sizing: border-box;
}
.menu-right__test-tags-wrap {
display: flex;
column-gap: 8px;
}
.menu-right__test-tag {
font-size: 12px;
line-height: 1.5;
font-weight: 400;
padding: 4px 12px;
background: #3b3b47;
border-radius: 30px;
color: var(--color-text);
}
.menu-right__test-heading {
font-size: 20px;
font-weight: 600;
line-height: 1.3;
color: var(--color-text);
width: 184px;
}
.menu-right__test-button {
width: fit-content;
font-size: 18px;
font-weight: 400;
line-height: 1.6;
background: var(--color-button);
padding: 10px 24px;
margin-top: auto;
border-radius: 50px;
transition: .2s ease;
}
#allrecords .menu-right__test-button:hover {
background: var(--color-text);
color: var(--color-black);
}
@media screen and (min-width: 1200px) {
.header__items-container {
margin-right: 0;
}
.burger-btn {
display: none;
}
li.header__item:hover {
color: var(--color-accent);
}
ul.header__items-wrapper li.header__item-all-courses:hover .header__item-link::after {
border-color: var(--color-accent);
}
}
@media screen and (min-width: 960px) {
.menu-left__bottom-info {
display: none;
}
}
@media (min-width: 960px) and (max-width: 1199px) {
.menu-right {
background-image: url(https://static.tildacdn.com/tild6438-6533-4036-a435-623266623239/Tablet_Horizontal.jpg);
}
}
@media screen and (max-width: 1199px) {
.t-body.open-menu {
height: 100vh;
min-height: 100vh;
overflow: hidden;
}
header.header__container.open {
border-bottom-left-radius: 32px;
border-bottom-right-radius: 32px;
}
.header__wrapper {
max-width: 940px;
padding: 12px 0;
}
.header__wrapper:after {
width: 100%;
}
.menu__wrapper {
max-width: 940px;
padding: 0;
}
.menu-left {
max-width: 544px;
}
.menu-left__course-direction-link {
display: block;
width: fit-content;
}
.menu-right {
max-width: 380px;
}
}
@media screen and (max-width: 959px) {
header.header__container {
position: fixed;
overflow: auto;
}
header.header__container.open {
height: fit-content;
max-height: 100%;
/*background: var(--color-bg);*/
transition: border-radius 0.3s ease, background 0s ease 0s, transform 0.3s ease;
}
.header__wrapper {
position: sticky;
top: 0;
justify-content: space-between;
max-width: 620px;
padding: 12px 0;
/*background: var(--color-bg);*/
transition: .3s ease;
z-index: 99;
box-sizing: border-box;
}
.header__wrapper:after {
width: 100%;
}
header.header__container.open .header__wrapper {
background: var(--color-bg-menu-open);
/*transition: none;*/
}
nav.header__items-container {
justify-content: end;
}
.header__items-container .header__items-wrapper {
display: none;
}
.menu__wrapper {
flex-wrap: wrap;
max-width: 620px;
padding: 0;
}
.menu__wrapper.menu__wrapper_active {
max-height: fit-content;
padding: 20px 0 32px;
row-gap: 24px;
}
.menu-left {
max-width: 100%;
height: max-content;
}
ul.menu-left__course-direction-list {
width: 50%;
}
.menu-left__course-direction-link {
width: 100%;
}
.menu-left__bottom-info {
display: flex;
justify-content: center;
flex-wrap: wrap;
flex-direction: column;
row-gap: 32px;
}
ul.menu-left__bottom-info-list {
row-gap: 8px;
}
#allrecords ul.menu-left__bottom-info-list {
align-items: start;
flex-direction: column;
}
.menu-right {
max-width: 100%;
height: 292px;
margin-bottom: 8px;
/*background-position-y: -134px;*/
}
}
@media screen and (max-width: 639px) {
header.header__container {
height: 58px;
}
header.header__container.open {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
height: 100%;
}
.header__wrapper {
padding: 9px 10px;
}
.header__logo img {
width: 28px;
}
.header__wrapper:after {
width: calc(100% - 20px);
}
.header__items-container {
display: none;
}
.menu__wrapper {
align-content: flex-start;
padding: 0 10px;
}
.menu__wrapper.menu__wrapper_active {
padding: 16px 10px 48px;
}
nav.menu-left__course-direction {
flex-direction: column;
row-gap: 8px;
}
ul.menu-left__course-direction-list {
width: 100%;
row-gap: 8px;
}
li.menu-left__course-direction-item {
font-size: 14px;
}
.menu-left__bottom-info {
row-gap: 16px;
}
#allrecords .menu-left__bottom-info a.header__members-btn {
display: block;
}
.menu-right {
height: 232px;
padding: 16px;
margin-bottom: 0;
row-gap: 12px;
/*background-position: -106px center;*/
/*background-size: 138%;*/
background-image: url(https://static.tildacdn.com/tild3930-6233-4836-b332-636433393662/Mobile.jpg);
}
.menu-right__test-tags-wrap {
column-gap: 4px;
}
.menu-right__test-tag {
font-size: 10px;
line-height: 1.6;
}
.menu-right__test-heading {
font-size: 14px;
width: 134px;
}
.menu-right__test-button {
font-size: 14px;
line-height: 1.2;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
// добавляем фон хедеру, если страница прокручена больше чем на 50 пикселей
setTimeout(function() {
if (document.documentElement.scrollTop > 50) {
$('.header__container').addClass('main-header--bg_scroll');
}
}, 2000);
$(window).scroll(function() {
let offsetTopByHeader = 50;
let classBgHeader = 'main-header--bg_scroll';
let header = $('.header__container');
if ($(this).scrollTop() >= offsetTopByHeader) {
header.addClass(classBgHeader);
} else {
header.removeClass(classBgHeader);
}
});
// скрываем/показываем хедер по скролу
const header = $('.header__container');
let scrollPrev = 0;
$(window).scroll(function() {
const scrolled = $(window).scrollTop();
if (scrolled > 550 && scrolled > scrollPrev) {
header.addClass('out');
} else {
header.removeClass('out');
}
scrollPrev = scrolled;
});
$('.menu-left__bottom-info-link a').click(function() {
$('.menu').trigger('click');
});
if (document.documentElement.clientWidth >= 1200) {
$('.header__item-all-courses').mouseenter(function() {
$('.header__item-all-courses').addClass('header__item-all-courses_open');
$('.menu__wrapper').addClass('menu__wrapper_active');
$('.header__overlay').fadeIn('linear');
$('.menu').addClass('open');
$('.header__container').addClass('open');
$('.t-body').addClass('open-menu');
});
$('.header__container').mouseleave(function() {
$('.header__item-all-courses').removeClass('header__item-all-courses_open');
$('.menu__wrapper').removeClass('menu__wrapper_active');
$('.header__overlay').fadeOut('linear');
$('.menu').removeClass('open');
$('.header__container').removeClass('open');
$('.t-body').removeClass('open-menu');
});
}
if (document.documentElement.clientWidth < 1200) {
$('.header__item-all-courses, .header__overlay, .menu').click(function() {
$('.header__item-all-courses').toggleClass('header__item-all-courses_open');
$('.menu__wrapper').toggleClass('menu__wrapper_active');
$('.header__overlay').fadeToggle('linear');
$('.menu').toggleClass('open');
$('.header__container').toggleClass('open');
$('.t-body').toggleClass('open-menu');
});
}
});
</script> <!-- nominify end --> </div> </div> </div> </div> </header> <!--/header--> <div id="rec220657383" class="r t-rec t-rec_pb_0" style="padding-bottom:0px; " data-animationappear="off" data-record-type="18"> <!-- cover --> <div class="t-cover" id="recorddiv220657383"bgimgfield="img"style="height:100vh;background-image:url('https://thb.tildacdn.com/tild6231-6134-4534-b930-336230653336/-/resize/20x/Cover-2.jpg');"> <div class="t-cover__carrier" id="coverCarry220657383"data-content-cover-id="220657383"data-content-cover-bg="https://static.tildacdn.com/tild6231-6134-4534-b930-336230653336/Cover-2.jpg"data-display-changed="true"data-content-cover-height="100vh"data-content-cover-parallax="fixed"data-content-use-image-for-mobile-cover=""style="height:100vh; "itemscope itemtype="http://schema.org/ImageObject"><meta itemprop="image" content="https://static.tildacdn.com/tild6231-6134-4534-b930-336230653336/Cover-2.jpg"></div> <div class="t-cover__filter" style="height:100vh;background-image: linear-gradient(to bottom, rgba(0,0,0,0.60), rgba(0,0,0,0.60));"></div> <div class="t-container"> <div class="t-col t-col_12 "> <div class="t-cover__wrapper t-valign_middle" style="height:100vh;"> <div class="t001 t-align_center"> <div class="t001__wrapper" data-hook-content="covercontent"> <div class="t001__uptitle t-uptitle t-uptitle_sm" field="subtitle">XYZ Media<br /></div> <h1 class="t001__title t-title t-title_xl" field="title">Как работают анимации на основе физики в Star Wars Jedi: Fallen Order <br /></h1> <span class="space"></span> </div> </div> </div> </div> </div> </div> <style> #rec220657383 .t001__uptitle{font-family:'BebasRoboto';font-weight:100;letter-spacing:0.5px;}#rec220657383 .t001__title{font-family:'BebasRoboto';font-weight:500;text-transform:uppercase;}</style> </div> <div id="rec220657385" class="r t-rec t-rec_pt_60 t-rec_pb_15" style="padding-top:60px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="color:#999999;" data-customstyle="yes"> Во время GDC Summer 2020 старший инженер по программному обеспечению Respawn Entertainment Бартломей Васак провёл лекцию о создании физических анимаций для Star Wars Jedi: Fallen Order и проблемах, с которыми столкнулись разработчики при их реализации. <br /><br /> Мы побывали на лекции и перевели главное. <br /><br /> <em>Лекцию пересказал </em><a href="https://vk.com/finaldreamer" style="color:rgb(128, 128, 255) !important;"><em>Никита Казимиров</em></a><em>.</em> <br /></div></div> </div> </div> </div> <style> #rec220657385 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220657387" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3962-3531-4233-b338-373638373732/1.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3962-3531-4233-b338-373638373732/-/empty/1.jpg" data-original="https://static.tildacdn.com/tild3962-3531-4233-b338-373638373732/1.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3962-3531-4233-b338-373638373732/1.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec220657388" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"> Так называемая «физическая» анимация не просто проигрывает фиксированную последовательность движений, а использует физику, чтобы заставить части тел двигаться в соответствии с ситуацией в пространстве. <br /><br /> На примере ниже воспроизводится одна и та же анимация. Но справа — «физическая», которая помогает определить точки коллизий и избежать провала текстур и частей тела друг в друга. Иными словами, анимация немного изменяется, подстраиваясь под законы физики. Слева же видна стандартная анимация, из-за которой рука персонажа проходит сквозь стену. <br /></div></div> </div> </div> </div> <style> #rec220657388 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220661079" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220661079" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1bRtOI_gnfQCq4NVjJjGnctHIpJfiIX1f" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1bRtOI_gnfQCq4NVjJjGnctHIpJfiIX1f" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220661079');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220657390" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Есть три способа подстроить анимацию под физику. Первый — <span style="color: rgb(255, 255, 255);">использование моторов</span>. Мотор — это часть шарнирных соединений между разными частями модели. Он использует специальный алгоритм, чтобы определить источник распределяемой между телом силы. И эта сила как бы задаёт движение отдельных частей согласно конечной точки анимации, которую разработчики прописывают заранее. <br /><br /> Второй метод — <span style="color: rgb(255, 255, 255);">использование скоростей</span>. В этом случае рассчитывается скорость, необходимая для перемещения тела из одной точки в другую за отведённое время. Тело заставляют двигаться с нужной скоростью, чтобы оно достигло конечной точки анимации. <br /><br /> Третий метод — <span style="color: rgb(255, 255, 255);">применение ограничителей</span>. В этом случае разработчики создают новые ограничители между динамическим ragdoll-телом и конечной точкой анимации. Все параметры нового ограничителя определяют, как заставить динамическое тело двигаться к конечной точке анимации. <br /><br /> При разработке Star Wars Jedi: Fallen Order начали с первого метода. Впервые его применили на штурмовиках, которых главный герой хватает при помощи Силы. В этом случае центр тяжести штурмовика движется строго согласно анимации, а вот конечности уже поддаются законам физики. Красным помечены объекты, которые двигаются исключительно благодаря прописанной анимации, — то есть физика не используется. Можно увидеть, как благодаря физической анимации ноги штурмовика взаимодействуют с ящиками. Без использования физики они просто прошли бы сквозь него. <br /></div></div> </div> </div> </div> <style> #rec220657390 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220661723" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220661723" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1kzZUY7dJUXLNU-9N9zxoWtIycnhtFPJP" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1kzZUY7dJUXLNU-9N9zxoWtIycnhtFPJP" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220661723');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220678859" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Было очень важно правильно настроить несколько физических параметров. Первый — это число <span style="color: rgb(255, 255, 255);">итераций решателя (solver iterations)</span>, от которого зависит то, насколько часто движок просчитывает применение физики за один фрейм. По стандарту в Unreal Engine 4 их восемь для позиции тела и один для скорости. Но с «моторами» такие параметры не работают: в случае Fallen Order пришлось использовать 64 для позиции и 32 для скорости. <br /><br /> Дополнительно пришлось заняться вопросами <span style="color: rgb(255, 255, 255);">трения</span> объектов и их <span style="color: rgb(255, 255, 255);">возвращения в исходное состояние (реституцией)</span>. Эти параметры создают множество проблем для физических анимаций: высокие значения трения затрудняют движение тела к нужной точке. При разработке Fallen Order использовались низкие значения трения и реституции. Когда главный герой хватает штурмовика при помощи Силы, то трение вообще отсутствует, — чтобы физике было проще соответствовать анимации. <br /><br /> Ещё одна важная деталь — <span style="color: rgb(255, 255, 255);">непрерывное обнаружение столкновений (CCD — Continuous Collision Detection)</span>. Оно должно быть включено для высокого качества анимаций, но между телами внутри одного ragdoll-объекта его лучше отключить. С физикой Fallen Order CCD работало плохо, так что Respawn пришлось написать специальный код, который притягивал тела друг к другу, если они по какой-то причине лишком сильно отдалились и перешли заданные границы. <br /><br /> Также физические анимации в Fallen Order использовались в момент смерти штурмовиков. На примере ниже физика включается лишь под самый конец анимации, чтобы тело реалистично упало на землю под действием гравитации. <br /></div></div> </div> </div> </div> <style> #rec220678859 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220679233" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220679233" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1vj3YeO3xzYtxnXPbdZwG5dRDRsBuz09h" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1vj3YeO3xzYtxnXPbdZwG5dRDRsBuz09h" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220679233');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220679265" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Подобный метод хорошо работал на открытых локациях, но в закрытых помещениях части тела слишком часто проходили сквозь текстуры стен. Смерть врагов тогда выглядела не очень естественно. <br /><br /> Чтобы улучшить анимацию гибели штурмовиков, разработчики включили физические анимации для всех частей тела, а также применили моторы для всех соединений. Теперь основной проблемой стали бёдра штурмовика, которые служат в качестве центра его модели — из-за их подвижности бёдра могли постоянно проходить сквозь другие объекты. Но разработчики всё равно стремились к тому, чтобы центр модели поддавался законам физики, — ведь только в этом случае тела могли совершать все эти предсмертные акробатические кульбиты. <br /><br /> В Respawn решили сделать центр модели отдельным физическим объектом и создали для него новые ограничения, которые принуждали центр модели двигаться к конечной точке анимации. Но затем возникла другая проблема: когда тело сталкивалось с объектом, прописанные условия всё равно могли подталкивать его к финальной точке. В таком случае разработчики решили отслеживать расстояние между центром модели и финальной точкой анимации. Если оно превышало определённую величину, то для тела включался режим свободного падения. <br /><br /> На примере ниже показана подобная анимация. Центр модели определил, что тело не может пройти сквозь препятствие, и поэтому включилась анимация падения. <br /></div></div> </div> </div> </div> <style> #rec220679265 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220679424" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220679424" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=15Axkc3Kcdy-hFlEABbljQEyjKVbpyjMo" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=15Axkc3Kcdy-hFlEABbljQEyjKVbpyjMo" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220679424');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220679542" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Все эти случаи актуальны только для штурмовиков. Для них было важно, чтобы физика работала как можно ближе к анимации, а также поддерживала коллизии. А вот для главного героя коллизии уже не так важны, зато его анимации должны были быть максимально плавными и естественными. <br /><br /> Первой разработчики реализовали физическую анимацию карабканья по выступам. Руки во время неё двигаются согласно заранее прописанной траектории, а вот все остальные части тела уже подчиняются законам физики. <br /><br /> На красной модели видно, что без добавления физики анимация выглядит несколько статичной. А с физикой появляются дополнительные движения, которые придают герою плавности. <br /></div></div> </div> </div> </div> <style> #rec220679542 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220679775" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220679775" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1MEr_OQljGk80sp2bCqandLmQGg8hMueW" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1MEr_OQljGk80sp2bCqandLmQGg8hMueW" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220679775');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220680350" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Физика упростила работу аниматоров — благодаря ней они могли сконцентрироваться только на ключевых позах. А дополнительные движения и детали появлялись как раз за счёт физических анимаций. Использование моторов для главного героя на первый взгляд показалось очень хорошим решением. Но быстро выяснилось, что моторы подходят не для всех действий героя. <br /><br /> К примеру, анимация скольжения. При использовании слабых моторов оказалось, что когда герой сталкивается с препятствием или быстро меняет направление движения, то слишком интенсивно и нереалистично сильно качается. С сильными моторами анимации тоже выглядели неправдоподобно, — ведь герой был чересчур устойчивым. <br /><br /></div></div> </div> </div> </div> <style> #rec220680350 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220694085" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220694085" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1uz_xp_FE_lMwLrsHX-mGYtJf-7tHeQj4" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1uz_xp_FE_lMwLrsHX-mGYtJf-7tHeQj4" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220694085');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220694186" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Изменение скорости анимаций также не помогло. Тогда в Respawn решили использовать другой подход. Разработчики сделали этакую «смесь из нескольких анимаций сразу», а физику ослабили. При скольжении действие физики уменьшили в два раза. В результате герой начал скользить плавнее, а ещё им оказалось более приятно управлять стиком.<br /></div></div> </div> </div> </div> <style> #rec220694186 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220694243" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220694243" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1_e6gzQTrnZwsntAo9nMKNMB2GFBKlUvx" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1_e6gzQTrnZwsntAo9nMKNMB2GFBKlUvx" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220694243');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220694342" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Такой вариант и вошёл в релизную версию игры. Также ослабление физики и смешивание анимаций применяются при карабканьи по верёвке и движении против сильного ветра. <br /><br /> Очередным испытанием для команды стала анимация балансирования при движении под вертикальной балкой. В первых версиях Кэл двигался слишком агрессивно и активно раскачивался из стороны в сторону. А итоговая поза героя была будто «оторвана» от остальной анимации. <br /><br /> Для начала в Respawn рассчитали желаемую линейную скорость. Это скорость, необходимая для полного движения тела из текущей позиции в конечную в одном кадре. Затем посчитали текущую скорость — уже исходя из анимации. А потом провели линейную интерполяцию между желаемой и текущей скоростью. Полученные скорости и применили к анимации балансирования (конкретно — к рукам героя), добившись желаемой плавности. <br /></div></div> </div> </div> </div> <style> #rec220694342 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220694461" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220694461" width="100%" height="520" controls style=""> <source src="https://sun9-68.userapi.com/c819702/u158112382/docs/d1/42bd2118b98f/video.mp4?extra=56BTAQzarzKcYTnterscUKWkVGOFLItRXTnUODLSFEkx5uL904OrJR-hxe49fg6ZnTXhORulmmY5J8CFnP44CiMCwNGRhJP_G2WuygD_dEG2aVUMaNeA0dNA_GNQfPnyXE6pJGf3IkckP_b8LIt630nCXQ&dl=1" type="video/mp4"> <source src="https://sun9-68.userapi.com/c819702/u158112382/docs/d1/42bd2118b98f/video.mp4?extra=56BTAQzarzKcYTnterscUKWkVGOFLItRXTnUODLSFEkx5uL904OrJR-hxe49fg6ZnTXhORulmmY5J8CFnP44CiMCwNGRhJP_G2WuygD_dEG2aVUMaNeA0dNA_GNQfPnyXE6pJGf3IkckP_b8LIt630nCXQ&dl=1" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220694461');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220695081" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Все эти случаи описывают ситуации, когда герой находится в каком-то особом положении движения. В Respawn также хотели улучшить и стандартные ходьбу и бег, но поначалу не понимали, как именно это сделать. В итоге разработчики сконцентрировались на трёх конкретных моментах: начале движения, повороте и остановке. В них команда видела потенциал для применения физических анимаций. <br /><br /> Каждая физическая анимация при обычном движении Кэла длится около двух секунд и постепенно затухает. Именно она сглаживают переход между движениями героя и добавляет им инерции. По руке Кэла можно увидеть, что благодаря инерции его движения иногда отстают от заданной анимации, иногда — опережают. Благодаря этому бег выглядит реалистично. Дополнительно в Respawn создали новые ограничения для рук, чтобы те не слишком сильно отклонялись от желаемых анимаций. <br /></div></div> </div> </div> </div> <style> #rec220695081 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220695150" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220695150" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1lTuZNiSsGKkdBTtxyTegAoTVjvd3FlFX" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1lTuZNiSsGKkdBTtxyTegAoTVjvd3FlFX" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220695150');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220695235" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Похожее решение команда применила для анимации ходьбы по балке — для рук вновь задали ограничения. В итоге балансирование выглядит аккуратно и естественно. <br /><br /> Особые анимации пришлось отдельно прописать для напарника Кэла — BD-1. Большую часть времени он проводит на спине главного героя. В Respawn хотели сделать анимации дроида более «расслабленными», чтобы он реагировал на каждое движение Кэла естественным образом. <br /></div></div> </div> </div> </div> <style> #rec220695235 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220696947" class="r t-rec t-rec_pt_75 t-rec_pb_75" style="padding-top:75px;padding-bottom:75px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3264-3266-4635-b338-386530623439/2.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3264-3266-4635-b338-386530623439/-/empty/2.jpg" data-original="https://static.tildacdn.com/tild3264-3266-4635-b338-386530623439/2.jpg"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec220697152" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> В игре это выглядит так: ноги дроида строго подчиняются анимации, а движение остальных частей BD-1 уже зависит от физики. <br /><br /> В случае некоторых очень быстрых движений Кэла с анимациями BD-1 возникали проблемы. Его физические анимации становились нестабильными, и поэтому разработчикам пришлось создать новый ограничитель — между головой дроида и целью анимации. <br /><br /> Граница, после которой изменялась анимация, была динамической. Если герой двигается медленно, то предел выше, но если Кэл перемещался слишком быстро, то предел для BD-1 становится близким к нулю. Благодаря этому голова дроида всегда находится возле цели анимации. <br /><br /> Ниже показана работа этого ограничителя. Слева он отключён, и голова BD-1 при перекате Кэла практически полностью проходит в модель главного героя. Справа же ограничитель включен, потому голова всегда остаётся в нужной позиции. При этом остальное тело подчиняется всем законам физики. <br /></div></div> </div> </div> </div> <style> #rec220697152 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220697265" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="16" data-bg-color="#0d0d0d"> <!-- T212 --> <div class="t212"> <center> <div class="t-width t-width_10"> <video id="html5video220697265" width="100%" height="520" controls style=""> <source src="https://drive.google.com/uc?export=view&id=1gjc-b707-BOx_IslIyqE0sNh-MasIwhQ" type="video/mp4"> <source src="https://drive.google.com/uc?export=view&id=1gjc-b707-BOx_IslIyqE0sNh-MasIwhQ" type="video/webm"> Your browser does not support the video tag.
</video> </div> </center> </div> <script>var video=document.querySelector('#html5video220697265');if(video) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';window.addEventListener('resize',t_throttle(function() {if(video.offsetWidth>0) {var height=video.offsetWidth*0.5625;video.style.height=height + 'px';video.parentElement.style.height=height + 'px';}}));var height=video.offsetHeight;video.parentElement.style.height=height + 'px';};</script> </div> <div id="rec220697400" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Создание физических анимаций для дроида в целом оказалось трудной задачей — пришлось повозиться с масштабированием анимаций, а это всегда создаёт проблемы. Также нужно было разобраться с порядком выполнения анимации, особенно когда Кэл скользил или совершал другие активные действия — ведь в этом случае физические анимации были активны и для BD-1, и для главного героя. Движения дроида ещё и сильно зависели от частоты кадров. При 30 fps они смотрелись натурально, но при 60 теряли правдоподобность. <br /><br /> Чтобы решить эти проблемы, в Respawn решили отключить коллизию для большинства анимаций взаимодействия между дроидом и Кэлом. Также анимации BD-1 разворачивались в собственной физической сцене при фреймрейте, который оставался фиксированным в любых условиях. <br /><br /> Если анимация заканчивалась слишком быстро, то оставшиеся движения дроида игра предугадывала и дополняла самостоятельно. Все физические анимации начинались с Кэла, а дроид реагировал на движения главного героя своими физическими анимациями. <br /></div></div> </div> </div> </div> <style> #rec220697400 .t-text{color:#ffffff;font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220698363" class="r t-rec t-rec_pt_75 t-rec_pb_75" style="padding-top:75px;padding-bottom:75px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3661-6230-4234-b837-316635383462/3.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3661-6230-4234-b837-316635383462/-/empty/3.jpg" data-original="https://static.tildacdn.com/tild3661-6230-4234-b837-316635383462/3.jpg"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec220657392" class="r t-rec t-rec_pt_15 t-rec_pb_30" style="padding-top:15px;padding-bottom:30px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6362-6432-4162-b830-363533333966/Group_1952.svg"> <img class="t-img t-width t107__widthauto"
src="https://static.tildacdn.com/tild6362-6432-4162-b830-363533333966/Group_1952.svg"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec220657393" class="r t-rec t-rec_pt_15 t-rec_pb_90" style="padding-top:15px;padding-bottom:90px;background-color:#0d0d0d; " data-record-type="797" data-bg-color="#0d0d0d"> <!-- t797 --> <div class="t797"> <div class="t-container"> <div class="t-col t-col_6 t-prefix_3 t-align_center"> <div class="t797__wrapper t797__wrapper_padding" style="background-color:#8080ff;"> <div class="t794__title t-descr t-descr_md t-animate" data-animate-style="fadein" data-animate-group="yes" data-animate-order="1" field="title">Понравилась статья?</div> <div class="t797__answers t-vote" style="margin-top:-20px" data-vote-type="single" data-vote-id="220657393" data-vote-visibility="onclick"> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1512750238069" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild3165-3530-4532-b731-646435653837/-/empty/Poop_Emoji_2.png" data-original="https://static.tildacdn.com/tild3165-3530-4532-b731-646435653837/Poop_Emoji_2.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1512750238069"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1513680765900" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild3564-3630-4239-a563-323339636564/-/empty/Slightly_Smiling_Emo.png" data-original="https://static.tildacdn.com/tild3564-3630-4239-a563-323339636564/Slightly_Smiling_Emo.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1513680765900"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1513669611253" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild6130-3965-4463-a332-343937336430/-/empty/Heart_Eyes_Emoji_2.png" data-original="https://static.tildacdn.com/tild6130-3965-4463-a332-343937336430/Heart_Eyes_Emoji_2.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1513669611253"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t797_init',function() {t797_init(220657393);});});</script> <style> #rec220657393 .t794__title{font-family:'BebasRoboto';font-weight:100;}#rec220657393 .t797__text{font-family:'BebasRoboto';font-weight:100;}#rec220657393 .t-vote__btn-res{font-family:'BebasRoboto';font-weight:100;}</style> </div> <div id="rec220657394" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec220657394 .t396__artboard {height:430px;background-color:#8080FF;}#rec220657394 .t396__filter {height:430px;}#rec220657394 .t396__carrier{height:430px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec220657394 .t396__artboard,#rec220657394 .t396__filter,#rec220657394 .t396__carrier {height:450px;}#rec220657394 .t396__filter {}#rec220657394 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec220657394 .t396__artboard,#rec220657394 .t396__filter,#rec220657394 .t396__carrier {height:440px;}#rec220657394 .t396__filter {}#rec220657394 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec220657394 .t396__artboard,#rec220657394 .t396__filter,#rec220657394 .t396__carrier {height:490px;}#rec220657394 .t396__filter {}#rec220657394 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec220657394 .t396__artboard,#rec220657394 .t396__filter,#rec220657394 .t396__carrier {height:630px;}#rec220657394 .t396__filter {}#rec220657394 .t396__carrier {background-attachment:scroll;}}#rec220657394 .tn-elem[data-elem-id="1564554044037"]{color:#ffffff;text-align:center;z-index:1;top:70px;;left:calc(50% - 600px + 290px);;width:620px;height:auto;}#rec220657394 .tn-elem[data-elem-id="1564554044037"] .tn-atom{color:#ffffff;font-size:45px;font-family:'BebasRoboto',Arial,sans-serif;line-height:0.9;font-weight:500;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec220657394 .tn-elem[data-elem-id="1564554044037"]{top:90px;;left:calc(50% - 480px + 200px);;height:auto;}}@media screen and (max-width:959px){#rec220657394 .tn-elem[data-elem-id="1564554044037"]{top:70px;;left:calc(50% - 320px + 10px);;height:auto;}}@media screen and (max-width:639px){#rec220657394 .tn-elem[data-elem-id="1564554044037"]{top:70px;;left:calc(50% - 240px + 40px);;width:400px;height:auto;}}@media screen and (max-width:479px){#rec220657394 .tn-elem[data-elem-id="1564554044037"]{top:60px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;text-align:left;}}#rec220657394 .tn-elem[data-elem-id="1564554130456"]{color:#000000;text-align:center;z-index:2;top:171px;;left:calc(50% - 600px + 415px);;width:370px;height:auto;}#rec220657394 .tn-elem[data-elem-id="1564554130456"] .tn-atom{color:#000000;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:100;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec220657394 .tn-elem[data-elem-id="1564554130456"]{top:175px;;left:calc(50% - 480px + 295px);;height:auto;}}@media screen and (max-width:959px){#rec220657394 .tn-elem[data-elem-id="1564554130456"]{top:163px;;left:calc(50% - 320px + 135px);;height:auto;}}@media screen and (max-width:639px){#rec220657394 .tn-elem[data-elem-id="1564554130456"]{top:212px;;left:calc(50% - 240px + 55px);;height:auto;}}@media screen and (max-width:479px){#rec220657394 .tn-elem[data-elem-id="1564554130456"]{top:325px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;color:#000000;text-align:left;}#rec220657394 .tn-elem[data-elem-id="1564554130456"] .tn-atom{color:#000000;background-size:cover;}}#rec220657394 .tn-elem[data-elem-id="1564554178466"]{z-index:3;top:219px;;left:calc(50% - 600px + 320px);;width:560px;height:auto;}#rec220657394 .tn-elem[data-elem-id="1564554178466"] .tn-atom{background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec220657394 .tn-elem[data-elem-id="1564554178466"]{top:238px;;left:calc(50% - 480px + 200px);;height:auto;}}@media screen and (max-width:959px){#rec220657394 .tn-elem[data-elem-id="1564554178466"]{top:228px;;left:calc(50% - 320px + 40px);;height:auto;}}@media screen and (max-width:639px){#rec220657394 .tn-elem[data-elem-id="1564554178466"]{top:265px;;left:calc(50% - 240px + 10px);;width:460px;height:auto;}}@media screen and (max-width:479px){#rec220657394 .tn-elem[data-elem-id="1564554178466"]{top:378px;;left:calc(50% - 160px + 30px);;width:200px;height:auto;}}#rec220657394 .tn-elem[data-elem-id="1564876573371"]{color:#000000;text-align:center;z-index:4;top:291px;;left:calc(50% - 600px + 445px);;width:310px;height:auto;}#rec220657394 .tn-elem[data-elem-id="1564876573371"] .tn-atom{color:#000000;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:100;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec220657394 .tn-elem[data-elem-id="1564876573371"]{top:325px;;left:calc(50% - 480px + 325px);;height:auto;}}@media screen and (max-width:959px){#rec220657394 .tn-elem[data-elem-id="1564876573371"]{top:315px;;left:calc(50% - 320px + 165px);;height:auto;}}@media screen and (max-width:639px){#rec220657394 .tn-elem[data-elem-id="1564876573371"]{top:347px;;left:calc(50% - 240px + 85px);;height:auto;}}@media screen and (max-width:479px){#rec220657394 .tn-elem[data-elem-id="1564876573371"]{top:505px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;text-align:left;}#rec220657394 .tn-elem[data-elem-id="1564876573371"] .tn-atom{font-size:14px;background-size:cover;}}#rec220657394 .tn-elem[data-elem-id="1565701393805"]{color:#000000;text-align:center;z-index:5;top:336px;;left:calc(50% - 600px + 445px);;width:310px;height:auto;}#rec220657394 .tn-elem[data-elem-id="1565701393805"] .tn-atom{color:#000000;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:100;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec220657394 .tn-elem[data-elem-id="1565701393805"]{top:370px;;left:calc(50% - 480px + 325px);;height:auto;}}@media screen and (max-width:959px){#rec220657394 .tn-elem[data-elem-id="1565701393805"]{top:360px;;left:calc(50% - 320px + 165px);;height:auto;}}@media screen and (max-width:639px){#rec220657394 .tn-elem[data-elem-id="1565701393805"]{top:397px;;left:calc(50% - 240px + 85px);;height:auto;}}@media screen and (max-width:479px){#rec220657394 .tn-elem[data-elem-id="1565701393805"]{top:550px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;text-align:left;}#rec220657394 .tn-elem[data-elem-id="1565701393805"] .tn-atom{font-size:14px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="220657394" data-artboard-screens="320,480,640,960,1200" data-artboard-height="430" data-artboard-valign="center" data-artboard-height-res-320="630" data-artboard-height-res-480="490" data-artboard-height-res-640="440" data-artboard-height-res-960="450"> <div class="t396__carrier" data-artboard-recid="220657394"></div> <div class="t396__filter" data-artboard-recid="220657394"></div> <div class='t396__elem tn-elem tn-elem__2206573941564554044037' data-elem-id='1564554044037' data-elem-type='text' data-field-top-value="70" data-field-left-value="290" data-field-width-value="620" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="45" data-field-top-res-320-value="60" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-top-res-480-value="70" data-field-left-res-480-value="40" data-field-width-res-480-value="400" data-field-top-res-640-value="70" data-field-left-res-640-value="10" data-field-top-res-960-value="90" data-field-left-res-960-value="200"> <div class='tn-atom'field='tn_text_1564554044037'>ХОЧЕШЬ ПОЛУЧАТЬ ЛУЧШИЕ СТАТЬИ <br>
ОТ XYZ РАЗ В НЕДЕЛЮ? <br></div> </div> <div class='t396__elem tn-elem tn-elem__2206573941564554130456' data-elem-id='1564554130456' data-elem-type='text' data-field-top-value="171" data-field-left-value="415" data-field-width-value="370" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="325" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-top-res-480-value="212" data-field-left-res-480-value="55" data-field-top-res-640-value="163" data-field-left-res-640-value="135" data-field-top-res-960-value="175" data-field-left-res-960-value="295"> <div class='tn-atom'field='tn_text_1564554130456'>Подпишись на рассылку XYZ</div> </div> <div class='t396__elem tn-elem tn-elem__2206573941564554178466' data-elem-id='1564554178466' data-elem-type='form' data-field-top-value="219" data-field-left-value="320" data-field-width-value="560" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-top-res-320-value="378" data-field-left-res-320-value="30" data-field-width-res-320-value="200" data-field-top-res-480-value="265" data-field-left-res-480-value="10" data-field-width-res-480-value="460" data-field-top-res-640-value="228" data-field-left-res-640-value="40" data-field-top-res-960-value="238" data-field-left-res-960-value="200" data-field-inputpos-value="h" data-field-inputfontfamily-value="BebasRoboto" data-field-inputfontsize-value="16" data-field-inputfontweight-value="100" data-field-inputcolor-value="#000000" data-field-inputbordercolor-value="#000000" data-field-inputbordersize-value="2" data-field-inputradius-value="0" data-field-inputheight-value="45" data-field-inputmargbottom-value="20" data-field-inputmargright-value="10" data-field-inputtitlefontsize-value="16" data-field-inputtitlefontweight-value="400" data-field-inputtitlecolor-value="#000000" data-field-inputtitlemargbottom-value="5" data-field-inputelsfontweight-value="100" data-field-inputelsfontsize-value="14" data-field-buttontitle-value="Подписаться" data-field-buttoncolor-value="#000000" data-field-buttonbgcolor-value="#ffffff" data-field-buttonbordercolor-value="#000000" data-field-buttonradius-value="0" data-field-buttonwidth-value="200" data-field-buttonheight-value="45" data-field-buttonfontfamily-value="BebasRoboto" data-field-buttonfontsize-value="16" data-field-buttonfontweight-value="100" data-field-receivers-value="3a18b021f43e61a277b0babc9a16a84c,164a3b8e9611cc7ecc538151418a854a,d2ad269d53b8517d6f011d8452411a9b,24dadee303ff10af9effec771b8b4e6f,935c4708c0542e69b9c954810f75a47f,808290b07baffee2037d44c1adc9f960,7cb71ac814cf5f11b74e7aff35c39e83,9bd20a80f92aba4c9d1823f2d1339add,3106d7f849cc37cf58f92ca54a12b20d,473bfe0c466b0830324330245ec4f856,22b6124b7d1e8c12b1bfe44591394ad1,4e149223d2a1c89490c6886635e128b1,432ab6b299e9d3b4712f0d8b851a69ca,ede885f6bf92f8aa63caaa2019930c27,ddce5c970ee590f09521887d2c815328,e8e971129be626609ea9f5eacb531712,529d776f47525813dd4c7439d5e2957d,79efdc56002e2fb9160ff9fc91750f61,9349cade6ff136590942028e6ee8bdd0" data-field-inputpos-res-320-value="v" data-field-inputmargbottom-res-320-value="10" data-field-buttonwidth-res-320-value="260"> <div class='tn-atom tn-atom__form'></div> <!--googleoff: all--> <!--noindex--> <div data-nosnippet="true" class="tn-atom__inputs-wrapp" style="display:none;"> <textarea class="tn-atom__inputs-textarea">[{"lid":"1531306540094","ls":"10","loff":"","li_type":"em","li_ph":"Email","li_req":"y","li_nm":"Email"}]</textarea> </div> <!-- Form export deps: https://static.tildacdn.com/css/tilda-zero-form-errorbox.min.css https://static.tildacdn.com/css/tilda-zero-form-horizontal.min.css https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js https://static.tildacdn.com/css/tilda-date-picker-1.0.min.css https://static.tildacdn.com/js/tilda-date-picker-1.0.min.js https://static.tildacdn.com/js/tilda-calc-1.0.min.js https://static.tildacdn.com/js/tilda-upwidget-1.1.min.js https://static.tildacdn.com/js/uploadcare-3.x.full.min.js https://static.tildacdn.com/js/uploadcare-3.x.min.js https://static.tildacdn.com/js/tilda-range-1.0.min.js https://static.tildacdn.com/css/tilda-range-1.0.min.css https://static.tildacdn.com/js/tilda-img-select-1.0.min.js https://static.tildacdn.com/css/tilda-img-select-1.0.min.css --> <!--/noindex--> <!--googleon: all--> </div> <div class='t396__elem tn-elem tn-elem__2206573941564876573371' data-elem-id='1564876573371' data-elem-type='text' data-field-top-value="291" data-field-left-value="445" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="505" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="347" data-field-left-res-480-value="85" data-field-top-res-640-value="315" data-field-left-res-640-value="165" data-field-top-res-960-value="325" data-field-left-res-960-value="325"> <div class='tn-atom'field='tn_text_1564876573371'>Нажимая на кнопку, вы соглашаетесь с условиями обработки данных<br></div> </div> <div class='t396__elem tn-elem tn-elem__2206573941565701393805' data-elem-id='1565701393805' data-elem-type='text' data-field-top-value="336" data-field-left-value="445" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="550" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="397" data-field-left-res-480-value="85" data-field-top-res-640-value="360" data-field-left-res-640-value="165" data-field-top-res-960-value="370" data-field-left-res-960-value="325"> <div class='tn-atom'field='tn_text_1565701393805'><u><a href="https://school-xyz.com/privacy" style="color:rgb(0, 0, 0) !important;" data-redactor-tag="a">Политика конфеденциальности</a></u><br></div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('220657394');});});</script> <!-- /T396 --> </div> <div id="rec220657395" class="r t-rec" style=" " data-animationappear="off" data-record-type="142"> <!-- T132 --> <div class="t132"> <div class="t-container_100"> <div class="t132__box t-bgimg" data-original="https://static.tildacdn.com/tild3630-3538-4830-a634-646434633138/Cover-3.png" data-lazy-rule="comm:resize,round:100"
style="background-image: url('https://thb.tildacdn.com/tild3630-3538-4830-a634-646434633138/-/resizeb/20x/Cover-3.png');"> <div class="t132__wrappper" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.70), rgba(0,0,0,0.70));"> <a href="/blog/pochemu-animacii-v-the-last-of-us-part-ii--problema-dlya-level-dizaynera"> <div class="t132__textwrapper "> <span> <div class="t132__title t-title t-title_xxs">Почему анимации 3D-моделей The Last Of Us Part II — проблема для левел-дизайнера.</div> <div class="t132__descr t-descr t-descr_xs">Объясняем почему анимационный контроллер The Last Of Us Part II сделал работу левел-дизайнеров гораздо сложнее. Как анимации влияют на визуальный язык в левел-дизайне.</div> </span> </div> <img class="t132__wire " src="data:image/gif;base64,R0lGODlh6ANYAvcAAP///wAAAAICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAEAAAAALAAAAADoA1gCAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ/4dIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrfIxS568YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yWrPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0ohjNqEY3ytGOevSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rUohp1oQEBADs="> </a> </div> </div> <div class="t132__box t-bgimg" data-original="https://static.tildacdn.com/tild3632-3638-4163-b364-636634323761/Cover-1.jpg" data-lazy-rule="comm:resize,round:100"
style="background-image: url('https://thb.tildacdn.com/tild3632-3638-4163-b364-636634323761/-/resizeb/20x/Cover-1.jpg');"> <div class="t132__wrappper" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.70), rgba(0,0,0,0.70));"> <a href="/blog/kak-animacii-robotov-iz-horizon-rodilis-iz-virusnyh-video-s-youtube"> <div class="t132__textwrapper "> <span> <div class="t132__title t-title t-title_xxs">Какая связь между роботами из Horizon Zero Dawn и вирусными видео в YouTube</div> <div class="t132__descr t-descr t-descr_xs">Прототипами и референсами для роботов в Horizon Zero Dawn стали животные. Так мы получили роботизированых морских слонов, медведей, панд и небанальную анимацию...</div> </span> </div> <img class="t132__wire " src="data:image/gif;base64,R0lGODlh6ANYAvcAAP///wAAAAICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAEAAAAALAAAAADoA1gCAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ/4dIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrfIxS568YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yWrPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0ohjNqEY3ytGOevSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rUohp1oQEBADs="> </a> </div> </div> </div> </div> <script>var images=document.querySelectorAll('.t132 img.wire');Array.prototype.forEach.call(images,function(image) {image.addEventListener('load',function() {t132_unifyHeights();});});window.addEventListener('resize',function() {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});});t_onReady(function() {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});if(typeof jQuery!=='undefined') {$('.t132').bind('displayChanged',function() {t132_unifyHeights();});} else {var rec=document.getElementById('rec220657395');if(!rec) return;var wrapperBlock=rec.querySelector('.t132');if(wrapperBlock) {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});wrapperBlock.addEventListener("displayChanged",function() {t132_unifyHeights();});}}});</script> <style> #rec220657395 .t132__title{font-size:24px;font-family:'BebasRoboto';font-weight:100;}#rec220657395 .t132__descr{font-size:16px;font-family:'BebasRoboto';font-weight:100;}</style> </div> <!--footer--> <footer id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="4312269" data-tilda-page-alias="footer" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec517261770" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- автоматизация промобара для курсов и профессий --> <script>
$(function() {
// текст для промобара
$('.heading-1 .tn-atom').html('Учись играючи и со скидкой до 55%'); // заголовок
$('.descr-1 .tn-atom').html('При покупке этого курса ты получишь в подарок любую игру до 2000 ₽ в Steam'); // описание
// описание для сайта Pro
$('.descr-pro .tn-atom').html('Дарим игры: любую до 2000 ₽ в Steam — при покупке курса, Resident Evil Requiem — при покупке профессии');
let currentDate = new Date();
function daysInMonth (month, year) {
return new Date(year, month + 1, 0).getDate();
}
let daysInMonthQuantity = daysInMonth(currentDate.getMonth(), currentDate.getYear());
let numOfMonth = currentDate.getDate();
let numOfMonthFormatted;
let currentMonth = currentDate.getMonth() + 1;
let currentMonthFormatted = currentMonth >= 10 ? currentMonth : '0' + currentMonth;
function setDateEnd(additionalDays) {
if (numOfMonth + additionalDays > daysInMonthQuantity) {
numOfMonthFormatted = '0' + (numOfMonth + additionalDays - daysInMonthQuantity);
currentMonthFormatted = currentMonth + 1 >= 10 ? currentMonth + 1 : '0' + (currentMonth + 1);
} else {
numOfMonthFormatted = numOfMonth + additionalDays >= 10 ? numOfMonth + additionalDays : '0' + (numOfMonth + additionalDays);
}
}
/* указываем дату окончания акции в промобаре */
if (currentDate.getDay() == 1) { // если сегодня понедельник
setDateEnd(3);
} else if (currentDate.getDay() == 2) { // если сегодня вторник
setDateEnd(2);
} else if (currentDate.getDay() == 3) { // если сегодня среда
setDateEnd(1);
} else if (currentDate.getDay() == 4) { // если сегодня четверг
setDateEnd(0);
} else if (currentDate.getDay() == 5) { // если сегодня пятница
setDateEnd(2);
} else if (currentDate.getDay() == 6) { // если сегодня суббота
setDateEnd(1);
} else if (currentDate.getDay() == 0) { // если сегодня воскресенье
setDateEnd(0);
}
if (document.querySelector('.promobar__date-end .tn-atom')) {
document.querySelector('.promobar__date-end .tn-atom').textContent = `до ${numOfMonthFormatted}.${currentMonthFormatted}`;
// document.querySelector('.promobar__date-end .tn-atom').textContent = `до 25.02`;
}
/* end указываем дату окончания акции в промобаре на продуктовых страницах */
});
</script> <style>
.descr-1 .tn-atom {
text-wrap-style: balance;
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec521328895" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- скрыть/показать блок с акцией на курсах и профессиях --> <style>
/* блок с акцией */
#rec1123441821 {
/*display: none;*/
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec703641300" class="r t-rec uc-popup-grant" style=" " data-animationappear="off" data-record-type="702"> <!-- T702 --> <div class="t702"> <div
class="t-popup" data-tooltip-hook="#popup:get-consult" data-track-popup='/tilda/popup/rec703641300/opened' role="dialog"
aria-modal="true"
tabindex="-1"
aria-label="Запишись на демо-урок" style="background-color: rgba(0,0,0,0.80);"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#ffffff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <style>@media screen and (max-width:560px){#rec703641300 .t-popup__close-icon g{fill:#ffffff !important;}}</style> <style> #rec703641300 .t-popup__container{border-radius:24px;overflow:hidden;}@media (max-width:480px){#rec703641300 .t-popup__container{border-radius:16px;overflow:hidden;}}</style> <div class="t-popup__container t-width t-width_6"
style="background-color:#23232a;" data-popup-type="702"> <img class="t702__img t-img"
src="https://thb.tildacdn.com/tild3831-3666-4563-b734-333035633330/-/empty/_1.jpg" data-original="https://static.tildacdn.com/tild3831-3666-4563-b734-333035633330/_1.jpg"
imgfield="img"
alt=""> <div class="t702__wrapper"> <div class="t702__text-wrapper t-align_left"> <div class="t702__title t-title t-title_xxs" id="popuptitle_703641300">Запишись на демо-урок</div> <div class="t702__descr t-descr t-descr_xs">Зачем записываться?<br /><ul><li data-list="bullet">Познакомим тебя с платформой и процессом обучения.</li><li data-list="bullet">Подарим 1 из 9 курсов на выбор.</li><li data-list="bullet">Получишь доступ к пробной части курса и полную программу.</li></ul></div> </div> <form
id="form703641300" name='form703641300' role="form" action='' method='POST' data-formactiontype="2" data-inputbox=".t-input-group" class="t-form js-form-proccess t-form_inputs-total_5 " data-success-callback="t702_onSuccess"> <input type="hidden" name="formservices[]" value="d19077112a38917a19ec3d0d3a0d2542" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="79efdc56002e2fb9160ff9fc91750f61" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="9349cade6ff136590942028e6ee8bdd0" class="js-formaction-services"> <input type="hidden" name="tildaspec-formname" tabindex="-1" value="Заявка на бесплатный демо-урок"> <!-- @classes t-title t-text t-btn --> <div class="js-successbox t-form__successbox t-text t-text_md"
aria-live="polite"
style="display:none;"></div> <div
class="t-form__inputsbox
t-form__inputsbox_vertical-form t-form__inputsbox_inrow "> <div
class="t-input-group t-input-group_nm " data-input-lid="3316997753180" data-field-type="nm" data-field-name="name"> <div class="t-input-block " style="border-radius:16px;"> <input
type="text"
autocomplete="name"
name="name"
id="input_3316997753180"
class="t-input js-tilda-rule"
value=""
placeholder="Как тебя зовут?" data-tilda-req="1" aria-required="true" data-tilda-rule="name"
aria-describedby="error_3316997753180"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> </div> <div class="t-input-error" aria-live="polite" id="error_3316997753180"></div> </div> <div
class="t-input-group t-input-group_em " data-input-lid="1016997753181" data-field-type="em" data-field-name="email"> <div class="t-input-block " style="border-radius:16px;"> <input
type="email"
autocomplete="email"
name="email"
id="input_1016997753181"
class="t-input js-tilda-rule"
value=""
placeholder="Твоя почта" data-tilda-req="1" aria-required="true" data-tilda-rule="email"
aria-describedby="error_1016997753181"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753181"></div> </div> <div
class="t-input-group t-input-group_ph " data-input-lid="1016997753182" data-field-async="true" data-field-type="ph" data-field-name="phone"> <div class="t-input-block " style="border-radius:16px;"> <input
type="tel"
autocomplete="tel"
name="phone"
id="input_1016997753182" data-phonemask-init="no" data-phonemask-id="703641300" data-phonemask-lid="1016997753182" data-phonemask-maskcountry="RU" class="t-input js-phonemask-input js-tilda-rule"
value=""
placeholder="+7(000)000-0000" data-tilda-req="1" aria-required="true" aria-describedby="error_1016997753182"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t_loadJsFile',function() {t_loadJsFile('https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js',function() {t_onFuncLoad('t_form_phonemask_load',function() {var phoneMasks=document.querySelectorAll('#rec703641300 [data-phonemask-lid="1016997753182"]');t_form_phonemask_load(phoneMasks);});})})});</script> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753182"></div> </div> <input type="hidden" name="519683" tabindex="-1" value="true"> <input type="hidden" name="519697" tabindex="-1" value="Консультация"> <div
class="t-input-group t-input-group_cb " data-input-lid="1016997753185" data-field-type="cb" data-field-name="privacy" data-default-value=y
> <div class="t-input-block " style="border-radius:16px;"> <label
class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
style="color:#ffffff"> <input
type="checkbox"
name="privacy"
value="yes"
class="t-checkbox js-tilda-rule"
checked
> <div
class="t-checkbox__indicator"
style="border-color:#ffffff"></div> <span><div style="font-size: 14px;" data-customstyle="yes">Я согласен с <a href="https://school-xyz.com/privacy-policy" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">Политикой обработки персональных данных, Согласием Пользователя сайта на обработку персональных данных</a> и <a href="https://school-xyz.com/agreement" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">договором публичной оферты</a></div></span></label> <style>#rec703641300 .t-checkbox__indicator:after{border-color:#ffffff;}</style> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753185"></div> </div> <div
class="t-input-group t-input-group_cb " data-input-lid="1016997753186" data-field-type="cb" data-field-name="check" data-default-value=y
> <div class="t-input-block " style="border-radius:16px;"> <label
class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
style="color:#ffffff"> <input
type="checkbox"
name="check"
value="yes"
class="t-checkbox js-tilda-rule"
checked
> <div
class="t-checkbox__indicator"
style="border-color:#ffffff"></div> <span><div style="font-size: 14px;" data-customstyle="yes">Я согласен получать рекламную рассылку и ознакомился с <a href="https://school-xyz.com/privacy-policy" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">Согласием на получение рекламной рассылки</a></div></span></label> <style>#rec703641300 .t-checkbox__indicator:after{border-color:#ffffff;}</style> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753186"></div> </div> <input type="hidden" name="526133" tabindex="-1" value="Заявка на бесплатный демо-урок"> <div class="t-form__errorbox-middle"> <!--noindex--> <div
class="js-errorbox-all t-form__errorbox-wrapper"
style="display:none;" data-nosnippet
tabindex="-1"
aria-label="Ошибки при заполнении формы"> <ul
role="list"
class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> <div class="t-form__submit"> <button
class="t-submit t-btnflex t-btnflex_type_submit t-btnflex_md"
type="submit"><span class="t-btnflex__text">Отправить</span> <style>#rec703641300 .t-btnflex.t-btnflex_type_submit {color:#ffffff;background-color:#6060ff;--border-width:0px;border-style:none !important;border-radius:50px;box-shadow:none !important;font-family:BebasRoboto;font-weight:400;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec703641300 .t-btnflex.t-btnflex_type_submit:not(.t-animate_no-hover):hover {color:#17171b !important;background-color:#ffffff !important;}#rec703641300 .t-btnflex.t-btnflex_type_submit:not(.t-animate_no-hover):focus-visible {color:#17171b !important;background-color:#ffffff !important;}}</style></button> </div> </div> <div class="t-form__errorbox-bottom"> <!--noindex--> <div
class="js-errorbox-all t-form__errorbox-wrapper"
style="display:none;" data-nosnippet
tabindex="-1"
aria-label="Ошибки при заполнении формы"> <ul
role="list"
class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> </form> <style>#rec703641300 input::-webkit-input-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 input::-moz-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 input:-moz-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 input:-ms-input-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 textarea::-webkit-input-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 textarea::-moz-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 textarea:-moz-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 textarea:-ms-input-placeholder{color:#ffffff;opacity:0.5;}</style> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t702_initPopup',function() {t702_initPopup('703641300');});});</script> <style> #rec703641300 .t702__title{color:#ffffff;font-family:'BebasRoboto';font-weight:500;text-transform:uppercase;}@media screen and (min-width:900px){#rec703641300 .t702__title{font-size:40px;line-height:1;}}@media screen and (min-width:480px) and (max-width:900px){#rec703641300 .t702__title{font-size:32px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec703641300 .t702__title{font-size:32px;line-height:1;}}#rec703641300 .t702__descr{font-size:16px;line-height:1.6;color:#ffffff;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec703641300 .t702__descr{font-size:14px;line-height:1.6;}}</style> </div> <div id="rec684407761" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стили для #popup:get-consult --> <style>
.uc-popup-grant .t-popup__close {
top: 20px;
right: 20px !important;
width: 40px;
height: 40px;
/*background: rgb(255 255 255 / 20%);*/
background: #23232a;
border-radius: 50px;
}
.uc-popup-grant .t-popup__block-close-button {
width: 16px;
padding: 12px;
}
.uc-popup-grant .t-popup__close-icon {
width: 16px;
height: 16px;
}
.uc-popup-grant .t702 .t-popup__container {
padding: 8px;
box-sizing: border-box;
}
.uc-popup-grant .t702 .t702__img {
border-radius: 16px;
}
.uc-popup-grant .t702 .t702__wrapper {
padding: 24px;
}
/* градиент для заголовка */
.uc-popup-grant .t702__title {
/*background: linear-gradient(#FFEBA9, #D9B339 100%);*/
/*-webkit-background-clip: text;*/
/*-webkit-text-fill-color: transparent;*/
display: inline-block;
}
.uc-popup-grant .t-descr {
display: inline-block;
}
.uc-popup-grant .t-form__inputsbox {
display: flex;
flex-direction: column;
}
.uc-popup-grant .t702 .t-input-group {
margin-bottom: 8px;
}
.uc-popup-grant .t702 .t-input {
border-color: rgb(255 255 255 / 10%) !important;
}
/* стилизация чекбоксов в зеро формах */
.uc-popup-grant .t-checkbox__control {
display: flex;
column-gap: 8px;
}
.uc-popup-grant .t-checkbox__indicator {
width: 24px;
height: 24px;
margin-right: 0;
border: 2px solid rgb(255 255 255 / 50%) !important;
border-radius: 4px;
}
.uc-popup-grant .t702 .t-checkbox__control .t-checkbox:checked ~ .t-checkbox__indicator {
border-color: rgb(255 255 255 / 50%) !important;
background: transparent;
}
.uc-popup-grant .t-checkbox__indicator:after {
width: 5px;
height: 11px;
left: 7px;
top: 1px;
border-width: 0 2px 2px 0;
border-color: rgb(255 255 255 / 50%) !important;
}
/* конец стилизация чекбоксов в зеро формах */
.uc-popup-grant .t-input-group_cb {
order: 5;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] {
color: rgb(255 255 255 / 50%) !important;
font-size: 12px !important;
line-height: 1.2;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] :is(span, a) {
color: rgb(255 255 255 / 50%) !important;
border-color: rgb(255 255 255 / 50%) !important;
}
.uc-popup-grant .t702 .t-form__submit {
margin-top: 8px;
margin-bottom: 16px;
}
.uc-popup-grant .t702 .t702__form-bottom-text {
margin-top: 24px;
}
/* стилизация кнопки Телеграм */
.uc-popup-grant .t702__form-bottom-text a {
display: flex;
justify-content: center;
align-items: center;
column-gap: 8px;
height: 54px;
background: #fff;
border-radius: 50px;
color: #17171b !important;
transition: .2s ease;
}
.uc-popup-grant .t702__form-bottom-text a:hover {
background: #f5f5f5;
}
.uc-popup-grant .t702__form-bottom-text a:before {
content: '';
width: 1.5em;
aspect-ratio: 1;
background: url(https://static.tildacdn.com/tild3738-3936-4437-b162-383836343233/Artboard.svg);
background-size: contain;
background-repeat: no-repeat;
}
/* end стилизация кнопки Телеграм */
@media (max-width: 639px) {
.uc-popup-grant .t-popup {
padding: 0 10px;
}
.uc-popup-grant .t-popup[style="display: block;"] {
display: flex !important;
flex-wrap: wrap;
align-items: center;
}
.uc-popup-grant .t-popup .t-popup__container {
flex-wrap: wrap;
min-height: fit-content;
/*padding: 0;*/
margin: 24px 0;
overflow: hidden;
}
.uc-popup-grant .t702 .t702__img {
border-radius: 10px;
}
.uc-popup-grant .t-popup .t-popup__container .t702__wrapper {
background: inherit;
-webkit-transform: none;
-o-transform: none;
transform: none;
padding: 24px 8px 8px;
}
.uc-popup-grant .t-popup__close {
/*top: 16px;*/
/*right: 16px !important;*/
left: auto;
padding: 0;
align-items: center;
justify-content: center;
zoom: 0.7;
}
.uc-popup-grant .t-popup__block-close-button {
margin-right: 0;
}
.uc-popup-grant .t702 .t-input-group {
margin-bottom: 8px;
}
.uc-popup-grant .t702 .t-input {
border-radius: 8px !important;
-moz-border-radius: 8px !important;
-webkit-border-radius: 8px !important;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] {
font-size: 12px !important;
}
}
</style> <script>
// переносим крестик внутрь попапа
document.addEventListener('DOMContentLoaded', function() {
$('.uc-popup-grant .t-popup').each(function() {
$(this).find('.t-popup__container').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <!-- <strong>▼ Форма для новой версии футера ▼</strong> --> <div id="rec1221022041" class="r t-rec t-rec_pt_0" style="padding-top:0px; " data-animationappear="off" data-record-type="121" data-alias-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- новая версия футера от 12.08.25 --> <footer> <div class="footer__wrap"> <div class="footer__navigation"> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">О школе</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://www.school-xyz.com/license">Лицензия</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/feedback">Отзывы студентов</a></li> <!--<li class="footer__list-link"><a href="https://school-xyz.com/raboty-studentov">Работы студентов</a></li>--> <!--<li class="footer__list-link"><a href="https://school-xyz.com/rassrochka">Рассрочка</a></li>--> <li class="footer__list-link"><a href="#popup:rec">Реквизиты</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/certificate">Подарочный сертификат</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/adminform">Оставить отзыв руководству</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/info-about-it-activities">Об IT деятельности</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/lms">Об обучающей платформе</a></li> <!--<li class="footer__list-link"><a href="https://school-xyz.com/career-xyz">Вакансии</a></li>--> <li class="footer__list-link"><a href="https://career-center.ultimate-education.ru" target="_blank">Карьерный центр</a></li> </ul> </nav> </div> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Направления</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://school-xyz.com/3d-modelirovanie">3D-моделирование</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/geymdizayn">Геймдизайн</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/2d-illyustraciya">2D-иллюстрация</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/programmirovanie">Программирование</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/menedzhement">Менеджмент</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/video-i-speceffekty">Видео и спецэффекты</a></li> <!--<li class="footer__list-link"><a href="https://www.school-xyz.com/courses/3ds-max">3ds Max: курсы и профессии</a></li>--> <li class="footer__list-link"><a href="https://school-xyz.com/courses">Все курсы</a></li> </ul> </nav> </div> <div class="footer__chapter-links-wrapper"> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Сотрудничество</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <!--<li class="footer__list-link"><a href="https://school-xyz.com/b2b">Корпоративное обучение</a></li>--> <li class="footer__list-link"><a href="https://school-xyz.com/we-are-looking-for-new-teachers">Вакансии для экспертов</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/partners">Партнёрская программа</a></li> </ul> </nav> </div> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Проекты</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://media-xyz.com/">XYZ Media</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/mentorstvo-s-gamedev-magistrami">Менторство в геймдеве</a></li> <li class="footer__list-link"><a href="https://thecreativity.ru/plus">Креативити</a></li> </ul> </nav> </div> </div> <div class="footer__contacts-container"> <div class="footer__contacts-wrap"> <a href="tel:+74996474926" class="">+7 (499) 647-49-26</a> <a href="tel:+74993030408" class="">+7 (499) 303-04-08</a> <a href="mailto:hello@school-xyz.com" class="footer__contacts-email">hello@school-xyz.com</a> </div> <div class="footer__social-links"> <a href="https://artstation.com/xyzschool" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild6138-6134-4835-a431-326434353061/artstation.svg" class="artstation" alt="Иконка Artstation"> </a> <a href="https://vk.com/xyz_gamedev" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild3933-6261-4533-b566-626135393434/vk.svg" class="vk" alt="Иконка VK"> </a> <a href="https://youtube.com/channel/UCtJsE0SDhyS4ib2evb5k3gg/videos" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild6539-3932-4764-b961-663633393636/youtube.svg" class="youtube" alt="Иконка Youtube"> </a> <a href="https://t.me/xyz_cg" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild3461-3738-4566-b931-323833326538/telegram.svg" class="telegram" alt="Иконка Telegram"> </a> </div> </div> </div> <div class="footer__other-info"> <div class="footer__other-info-left-side"> <p>©2026, XYZ</p> <div class="footer__awards"> <img src="" class="footer__runet-icon" alt="Иконка Рунет"> <a href="https://vk.com/wall-124560669_50286">Премия Рунета 2020, Игровая индустрия</a> </div> <div class="footer__awards"> <img src="" class="footer__skolkovo-icon" alt="Иконка Сколково"> <a href="https://navigator.sk.ru/?q=N4IgZiBcoC4IYHMDOB9GBPADgUyiA9gE4gC%2BANCEngLQC22tARtoSkgJYB2AxrhZlACMJIA">Участник Сколково</a> </div> </div> <div class="footer__legal-info"> <a href="https://www.school-xyz.com/sitemap">Карта сайта</a> <a href="https://school-xyz.com/info-about-educational-organization">Сведения об образовательной организации</a> <a href="https://school-xyz.com/privacy-policy">Обработка персональных данных</a> <a href="https://school-xyz.com/agreement">Оферта</a> <a href="#popup:sout">СОУТ</a> </div> </div> </div> </footer> <style>
:root {
font-family: 'BebasRoboto';
--color-bg: #17171b;
--color-text: #fff;
--color-text-opacity: rgba(255, 255, 255, 0.5);
--color-accent: #6060ff;
--color-border: #373742;
--color-bg-contacts: #2B2A37;
--color-bg-input: #212127;
--color-social-icon: var(--color-accent);
--color-bg-social-icon: #2B2B34;
--url-runet-icon: url(https://static.tildacdn.com/tild6136-3933-4465-b933-613637353637/runet-icon-dark.svg);
--url-skolkovo-icon: url(https://static.tildacdn.com/tild3235-3332-4635-a537-396662353164/skolkovo-icon-dark.svg);
--url-arrow-down: url(https://static.tildacdn.com/tild6663-3965-4735-b337-393062313665/arrow-down-dark.svg);
}
:root .light-theme {
--color-bg: #fff;
--color-text: #17171b;
--color-text-opacity: rgba(23, 23, 27, 0.4);
--color-border: #EDEDED;
--color-bg-contacts: #f5f5f5;
--color-bg-input: #fff;
--color-bg-social-icon: #fff;
--url-runet-icon: url(https://static.tildacdn.com/tild6133-3337-4530-b063-336537643538/runet-icon-light_1.svg);
--url-skolkovo-icon: url(https://static.tildacdn.com/tild3737-3331-4464-a437-613336636531/skolkovo-icon-light.svg);
--url-arrow-down: url(https://static.tildacdn.com/tild3737-3062-4562-b662-623536383335/arrow-down-light.svg);
}
.t123 footer {
position: relative;
background: var(--color-bg);
width: 100%;
will-change: transform;
-webkit-transform: translateZ(0);
padding-top: 112px;
}
.footer__wrap {
display: flex;
max-width: 1160px;
margin: 0 auto;
box-sizing: border-box;
flex-wrap: wrap;
column-gap: 16px;
}
.footer__navigation {
display: flex;
flex-wrap: wrap;
width: 100%;
column-gap: 16px;
padding-bottom: 64px;
margin-bottom: 40px;
border-bottom: 1px solid var(--color-border);
}
.footer__chapter-links-wrapper {
display: flex;
flex-direction: column;
row-gap: 32px;
}
.footer__chapter-links {
width: 278px;
flex-shrink: 0;
}
.footer__chapter-links:last-child {
flex-shrink: 1;
}
#allrecords .footer__chapter-links-list {
display: flex;
flex-direction: column;
row-gap: 8px;
list-style-type: none;
padding-top: 16px;
padding-left: 0;
margin-bottom: 0;
}
.footer__chapter-links-heading {
font-weight: 600;
font-size: 24px;
line-height: 130%;
color: var(--color-text);
}
.footer__list-link {
font-weight: 400;
font-size: 14px;
line-height: 160%;
}
#allrecords .footer__list-link a {
text-decoration: none;
transition: .2s ease;
color: var(--color-text);
}
#allrecords .footer__list-link a:hover {
color: var(--color-accent);
}
.footer__contacts-container {
display: flex;
align-items: flex-start;
flex-direction: column;
row-gap: 24px;
width: 278px;
box-sizing: border-box;
}
.footer__contacts-wrap {
display: flex;
flex-direction: column;
row-gap: 4px;
}
#allrecords .footer__contacts-wrap a {
font-weight: 600;
font-size: 24px;
line-height: 130%;
color: var(--color-text);
text-decoration: none;
transition: .2s ease;
}
#allrecords .footer__contacts-wrap a:hover {
color: var(--color-accent);
}
#allrecords a.footer__contacts-email {
font-weight: 400;
font-size: 18px;
line-height: 160%;
color: var(--color-accent);
transition: .2s ease;
}
#allrecords a.footer__contacts-email:hover {
color: var(--color-text);
}
.footer__social-links {
display: flex;
column-gap: 8px;
}
.footer__social-links a {
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
overflow: hidden;
transition: .2s ease;
}
.footer__social-icon:hover {
transform: translateY(-4px);
}
.footer__other-info {
display: flex;
justify-content: space-between;
column-gap: 24px;
padding-bottom: 40px;
width: 100%;
}
.footer__other-info-left-side {
display: flex;
align-items: center;
column-gap: 32px;
}
.footer__other-info p {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
}
.footer__awards {
display: flex;
align-items: center;
column-gap: 10px;
max-width: 160px;
}
#allrecords .footer__awards a {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
text-decoration: none;
}
.footer__runet-icon {
content: var(--url-runet-icon);
font-size: 10px;
}
.footer__skolkovo-icon {
content: var(--url-skolkovo-icon);
font-size: 10px;
}
.footer__skolkovo-icon + a {
width: min-content;
}
.footer__legal-info {
display: flex;
align-items: center;
column-gap: 16px;
}
#allrecords .footer__legal-info a {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
text-decoration: none;
transition: .2s ease;
}
#allrecords .footer__legal-info a:hover {
color: var(--color-text);
}
@media screen and (max-width: 1199px) {
.t123 footer {
padding-top: 96px;
}
.footer__wrap {
max-width: 940px;
}
.footer__contacts-container {
width: fit-content;
}
.footer__navigation {
row-gap: 32px;
padding-bottom: 40px;
}
.footer__chapter-links-wrapper {
flex-direction: row;
column-gap: 16px;
order: 4;
}
.footer__chapter-links {
width: 304px;
}
.footer__other-info {
flex-direction: column;
row-gap: 16px;
}
.footer__other-info-left-side {
column-gap: 24px;
}
.footer__legal-info {
column-gap: 16px;
}
}
@media screen and (max-width: 959px) {
.t123 footer {
padding-top: 88px;
}
.footer__wrap {
max-width: 620px;
padding-top: 16px;
border-top: 1px solid var(--color-border);
}
.footer__navigation {
flex-direction: column;
row-gap: 16px;
width: 100%;
}
.footer__chapter-links {
width: 100%;
padding-bottom: 16px;
border-bottom: 1px solid var(--color-border);
}
.footer__chapter-links-wrapper {
order: 3;
flex-direction: column;
row-gap: 16px;
}
.footer__chapter-links-heading {
position: relative;
display: flex;
align-items: center;
will-change: transform;
}
.footer__chapter-links-heading::after {
content: ' ';
background-image: var(--url-arrow-down);
width: 24px;
height: 24px;
position: absolute;
right: 0;
transition: .4s ease;
}
.footer__chapter-links-heading.open::after {
transform: rotateX(180deg);
}
.footer__chapter-links-wrap {
display: none;
}
.footer__contacts-container {
width: 620px;
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
height: fit-content;
row-gap: 32px;
padding-top: 24px;
order: 4;
}
.footer__other-info {
flex-wrap: wrap;
justify-content: flex-start;
}
.footer__other-info p {
order: 2;
}
.footer__awards {
order: 3;
}
.footer__legal-info {
flex-wrap: wrap;
order: 1;
max-width: 100%;
width: 100%;
column-gap: 24px;
row-gap: 8px;
}
}
@media screen and (max-width: 639px) {
.t123 footer {
padding-top: 72px;
}
.footer__wrap {
max-width: calc(100% - 24px);
}
.footer__chapter-links-heading {
font-size: 16px;
}
.footer__list-link {
font-size: 12px;
}
.footer__contacts-container {
width: 100%;
row-gap: 16px;
padding-top: 16px;
}
#allrecords .footer__contacts-wrap a {
font-size: 16px;
}
#allrecords a.footer__contacts-email {
font-size: 12px;
}
.footer__social-links {
width: fit-content;
}
.footer__navigation {
padding-bottom: 32px;
margin-bottom: 32px;
}
.footer__other-info {
row-gap: 24px;
justify-content: flex-start;
padding-bottom: 32px;
}
.footer__other-info p {
order: 3;
text-align: center;
font-size: 10px;
width: 100%;
}
.footer__other-info-left-side {
order: 2;
flex-wrap: wrap;
justify-content: flex-start;
row-gap: 16px;
}
.footer__awards {
order: 2;
margin-bottom: 8px;
max-width: 142px;
}
#allrecords .footer__awards a {
font-size: 10px;
}
.footer__legal-info {
align-items: flex-start;
}
#allrecords .footer__legal-info a {
font-size: 10px;
line-height: 16px;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
if (document.documentElement.clientWidth < 960) {
$('.footer__chapter-links-heading').click(function() {
$(this).siblings('.footer__chapter-links-wrap').slideToggle();
$(this).toggleClass('open');
});
}
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec958878116" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация новых чекбоксов от 15.04.25 --> <style>
.t-input-group.t-input-group_cb[data-field-name="privacy"], .t-input-group_cb:has(input[name="privacy"]) {
margin-bottom: 0 !important;
}
/* скрываем чекбокс у согласия с политикой и оффертой */
.t-input-group_cb[data-field-name="privacy"] :is(.t-checkbox, .t-checkbox__indicator),
.t-input-group_cb input[name="privacy"], .t-input-group_cb input[name="privacy"] + .t-checkbox__indicator {
display: none;
}
.t-input-group_cb[data-field-name="privacy"] .t-checkbox__labeltext,
.t-input-group_cb input[name="privacy"] ~ .t-checkbox__labeltext {
margin-left: 0;
}
.t-input-group_cb[data-field-name="privacy"], .t-input-group_cb .t-checkbox__control:has([name="privacy"]) {
pointer-events: none;
}
.t-input-group_cb[data-field-name="privacy"] a, .t-input-group_cb input[name="privacy"] ~ .t-checkbox__labeltext a {
pointer-events: auto;
}
.t-input-group.t-input-group_cb[data-field-name="check"], .t-input-group_cb:has(input[name="check"]) {
margin-top: 16px;
margin-bottom: 0 !important;
}
.t-input-group.t-input-group_cb[data-field-name="check"] .t-checkbox__control {
-ms-flex-align: flex-start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
</style> <!-- nominify end --> </div> </div> </div> </div> <!-- <strong>▼ Мини-футер ▼</strong> --> <div id="rec216668598" class="r t-rec t-rec_pb_0" style="padding-bottom:0px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec216668598 .t396__artboard {height:530px;}#rec216668598 .t396__filter {height:530px;}#rec216668598 .t396__carrier{height:530px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:522px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:490px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:649px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}#rec216668598 .tn-elem[data-elem-id="1564645816905"]{z-index:3;top:0px;;left:0px;;width:760px;height:530px;}#rec216668598 .tn-elem[data-elem-id="1564645816905"] .tn-atom{border-radius:24px 24px 24px 24px;background-color:#17171b;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:620px;height:522px;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:620px;height:490px;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:300px;height:649px;border-radius:16px 16px 16px 16px;}#rec216668598 .tn-elem[data-elem-id="1564645816905"] .tn-atom{background-size:cover;border-radius:16px 16px 16px 16px;}}#rec216668598 .tn-elem[data-elem-id="1596205809432"]{color:#ffffff;z-index:4;top:144px;;left:40px;;width:310px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596205809432"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:136px;;left:40px;;width:300px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:112px;;left:32px;;width:260px;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:80px;;left:16px;;width:230px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596205809432"] .tn-atom{font-size:12px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1596206009249"]{color:#ffffff;z-index:5;top:144px;;left:350px;;width:280px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206009249"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:136px;;left:340px;;width:188px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:112px;;left:322px;;width:260px;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:324px;;left:16px;;width:240px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206009249"] .tn-atom{font-size:12px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1596206049927"]{color:#ffffff;z-index:6;top:40px;;left:40px;;width:418px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:80px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1;font-weight:500;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:40px;;left:40px;;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:72px;background-size:cover;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:32px;;left:32px;;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:56px;background-size:cover;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:24px;;left:16px;;width:202px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:40px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1607933466856"]{color:#ffffff;z-index:7;top:424px;;left:40px;;width:440px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1607933466856"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:416px;;left:40px;;width:434px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:392px;;left:32px;;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:549px;;left:16px;;width:268px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1607933466856"] .tn-atom{vertical-align:middle;white-space:normal;font-size:12px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="216668598" data-artboard-screens="320,640,960,1200" data-artboard-height="530" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-heightmode="hug" data-artboard-height-res-320="649" data-artboard-height-res-640="490" data-artboard-height-res-960="522"> <div class="t396__carrier" data-artboard-recid="216668598"></div> <div class="t396__filter" data-artboard-recid="216668598"></div> <div class='t396__elem tn-elem requisites-bg tn-elem__2166685981564645816905' data-elem-id='1564645816905' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="530" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="0" data-field-left-res-320-value="0" data-field-height-res-320-value="649" data-field-width-res-320-value="300" data-field-widthmode-res-320-value="fixed" data-field-heightmode-res-320-value="fixed" data-field-top-res-640-value="0" data-field-left-res-640-value="0" data-field-height-res-640-value="490" data-field-width-res-640-value="620" data-field-axisx-res-640-value="left" data-field-heightmode-res-640-value="fixed" data-field-top-res-960-value="0" data-field-left-res-960-value="0" data-field-height-res-960-value="522" data-field-width-res-960-value="620" data-field-heightmode-res-960-value="fixed"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596205809432' data-elem-id='1596205809432' data-elem-type='text' data-field-top-value="144" data-field-left-value="40" data-field-height-value="264" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="80" data-field-left-res-320-value="16" data-field-width-res-320-value="230" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="112" data-field-left-res-640-value="32" data-field-width-res-640-value="260" data-field-top-res-960-value="136" data-field-left-res-960-value="40" data-field-width-res-960-value="300"> <div class='tn-atom'field='tn_text_1596205809432'><span style="color: rgb(115, 115, 115);">Наименование</span><br>ООО "ИКС ВАЙ ЗЕТ НЕТВОРК" <br><br><span style="color: rgb(115, 115, 115);">ИНН</span><br>9705150153 <br><br><span style="color: rgb(115, 115, 115);">КПП</span> <br>770501001 <br><br><span style="color: rgb(115, 115, 115);">Счёт (₽) </span><br>40702810902500083750<br>1207700448361 ОГРН</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596206009249' data-elem-id='1596206009249' data-elem-type='text' data-field-top-value="144" data-field-left-value="350" data-field-height-value="242" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="324" data-field-left-res-320-value="16" data-field-width-res-320-value="240" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="112" data-field-left-res-640-value="322" data-field-width-res-640-value="260" data-field-top-res-960-value="136" data-field-left-res-960-value="340" data-field-width-res-960-value="188"> <div class='tn-atom'field='tn_text_1596206009249'><span style="color: rgb(115, 115, 115);">Банк получателя</span><br> "ООО "Банк Точка" "<br><br><span style="color: rgb(115, 115, 115);">Город </span><br>Москва<br><br><span style="color: rgb(115, 115, 115);">БИК </span><br>044525104<br><br><span style="color: rgb(115, 115, 115);">Корр. счёт </span><br>30101810745374525104</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596206049927' data-elem-id='1596206049927' data-elem-type='text' data-field-top-value="40" data-field-left-value="40" data-field-height-value="140" data-field-width-value="418" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="80" data-field-top-res-320-value="24" data-field-left-res-320-value="16" data-field-width-res-320-value="202" data-field-fontsize-res-320-value="40" data-field-top-res-640-value="32" data-field-left-res-640-value="32" data-field-fontsize-res-640-value="56" data-field-top-res-960-value="40" data-field-left-res-960-value="40" data-field-fontsize-res-960-value="72"> <div class='tn-atom'field='tn_text_1596206049927'>РЕКВИЗИТЫ</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981607933466856' data-elem-id='1607933466856' data-elem-type='text' data-field-top-value="424" data-field-left-value="40" data-field-height-value="66" data-field-width-value="440" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="549" data-field-left-res-320-value="16" data-field-width-res-320-value="268" data-field-heightunits-res-320-value="px" data-field-textfit-res-320-value="autoheight" data-field-widthmode-res-320-value="fixed" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="392" data-field-left-res-640-value="32" data-field-top-res-960-value="416" data-field-left-res-960-value="40" data-field-width-res-960-value="434"> <div class='tn-atom'field='tn_text_1607933466856'><span style="color: rgb(115, 115, 115);">Юридический адрес</span><br>115184, г. Москва, вн.тер.г. муниципальный округ Замоскворечье, ул Бахрушина, д. 10, стр. 2</div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('216668598');});});</script> <!-- /T396 --> </div> <div id="rec216668599" class="r t-rec uc-requisites" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:rec"
role="dialog"
aria-modal="true"
tabindex="-1"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#fff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_8"> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec216668599');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('216668599');});});</script> </div> <div id="rec216668601" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация попапа Реквизиты --> <style>
.shirina {
background: none !important;
right: 0 !important;
left: 0 !important;
}
.parpadding {
padding: 0 !important;
}
:is(.uc-requisites, .t390, .t331) .t-popup__close {
top: 24px;
right: 24px !important;
width: 44px;
height: 44px;
background: rgb(255 255 255 / 20%);
border-radius: 30px;
zoom: 0.8;
}
.t-popup__block-close-button {
width: 18px;
padding: 13px;
}
.t-popup__close-icon {
display: block;
width: 18px;
height: 18px;
}
@media (max-width: 639px) {
.uc-requisites .t-popup {
background: rgb(0 0 0 / 40%);
}
.uc-requisites .t-popup__container.t-popup__container-static {
margin: 24px auto;
}
:is(.uc-requisites, .t390) .t-popup__close {
position: absolute;
top: 16px;
right: 16px !important;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
var ZeroPopID = '#rec216668598'; //Прописываем ID Zero
var PopWindID = '#rec216668599'; //Прописываем ID PopUp окна BF503
//Переносим ZeroBlock в POPup + Добавляем новый клас в POPup
$(PopWindID + " .t-popup__container").addClass("shirina").html($(ZeroPopID));
$(PopWindID + " .t-popup__container").parent(".t-popup").addClass("parpadding");
// перемещаем крестик внутрь попапа
$('.uc-requisites').each(function() {
$(this).find('.requisites-bg').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec577164264" class="r t-rec uc-license-popup" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:license"
role="dialog"
aria-modal="true"
tabindex="-1"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#17171b" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_6"> <div class="t390__wrapper t-align_center"> <div class="t390__descr t-descr t-descr_xs">Лицензия на образовательную деятельность рег. номер <span style="font-weight: 700;">Л035−1 298−77/179 677</span> от 22 февраля 2022</div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec577164264');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('577164264');});});</script> <style> #rec577164264 .t390__descr{color:#17171b;}</style> </div> <div id="rec586447967" class="r t-rec uc-license-popup" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:sout"
role="dialog"
aria-modal="true"
tabindex="-1"
aria-label="Результаты СОУТ"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#17171b" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_8"> <div class="t390__wrapper t-align_left"> <div class="t390__title t-heading t-heading_lg" id="popuptitle_586447967">Результаты СОУТ</div> <div class="t390__descr t-descr t-descr_xs">В декабре 2022 года в соответствии с действующим законодательством Российской Федерации в ООО «ИКС ВАЙ ЗЕТ НЕТВОРК» была проведена специальная оценка условий труда.<br /><br />С учётом требований законодательства Российской Федерации о персональных данных и законодательства Российской Федерации о государственной и об иной охраняемой законом тайне публикуем:<br /><ul><li style="color: rgb(23, 23, 27);"><a href="https://drive.google.com/file/d/1Hf0P73TIs0gn8ZB2SeQOeCdK0y1RaYP_/view" target="_blank" rel="noreferrer noopener" style="color: rgb(23, 23, 27); border-bottom: 1px solid rgb(23, 23, 27); box-shadow: none; text-decoration: none;">сводную ведомость специальной оценки условий труда</a></li><li><a href="https://drive.google.com/file/d/1msPYwdLZh2h88eb6Jrz-xDyERfamTmQc/view" target="_blank" rel="noreferrer noopener" style="color: rgb(23, 23, 27); border-bottom: 1px solid rgb(23, 23, 27); box-shadow: none; text-decoration: none;">перечень мероприятий по улучшению условий и охраны труда работников</a>, на рабочих местах которых проводилась специальная оценка условий труда.</li></ul></div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec586447967');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('586447967');});});</script> <style> #rec586447967 .t390__title{color:#17171b;font-weight:500;text-transform:uppercase;}@media screen and (min-width:900px){#rec586447967 .t390__title{font-size:60px;line-height:1;}}#rec586447967 .t390__descr{font-size:14px;line-height:1.6;color:#17171b;}</style> </div> <div id="rec577164294" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация попапа с лицензией и СОУТ --> <style>
.uc-license-popup .t-popup__container {
border-radius: 20px;
}
.uc-license-popup .t-popup__close {
zoom: 0.8;
background: #F0F0F0;
border-radius: 30px;
width: 44px;
height: 44px;
}
.uc-license-popup .t-popup__block-close-button {
width: 18px;
padding: 13px;
}
.uc-license-popup .t-popup__close-icon {
display: block;
width: 18px;
height: 18px;
}
@media screen and (max-width: 1199px) {
.uc-license-popup .t390__title {
font-size: 52px !important;
}
}
@media screen and (max-width: 959px) {
.uc-license-popup .t390__title {
font-size: 48px !important;
}
}
@media screen and (max-width: 639px) {
.uc-license-popup .t-popup__close {
zoom: 0.6;
top: 16px;
right: 16px;
}
.uc-license-popup .t390__wrapper {
padding: 32px 40px;
}
.uc-license-popup .t390__title {
font-size: 28px !important;
}
.uc-license-popup .t390__descr {
font-size: 10px !important;
}
}
</style> <script>
// переносим крестик внутрь попапа
document.addEventListener('DOMContentLoaded', function() {
$('.uc-license-popup .t-popup').each(function() {
$(this).find('.t-popup__container').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec602614066" class="r t-rec" style=" " data-animationappear="off" data-record-type="886"> <!-- T886 --> <div class="t886 t886_closed" data-storage-item="t886cookiename_1006203" style=""> <div class="t886__wrapper" style="background-color:#ffffff; width:740px;"> <div class="t886__text t-text t-text_xs t-valign_middle" field="text">Пользуясь нашим сайтом, ты соглашаешься с тем, что мы <u style="color: rgb(128, 128, 255);"><a href="https://www.school-xyz.com/privacy-policy" style="box-shadow: none; text-decoration: none; border-bottom-style: solid; border-bottom-color: rgb(128, 128, 255); color: rgb(128, 128, 255);">используем cookies</a></u>.</div> <div
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
type="button"><span class="t-btnflex__text">Принять</span> <style>#rec602614066 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#6060ff;border-style:solid !important;border-color:#6060ff !important;--border-width:1px;border-radius:50px;box-shadow:none !important;font-weight:400;padding:9px 24px 9px 24px;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec602614066 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {color:#ffffff !important;background-color:#6060ff !important;}#rec602614066 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {color:#ffffff !important;background-color:#6060ff !important;}}</style></div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t886_init',function() {t886_init('602614066');});});</script> <style>#rec602614066 .t886__text{text-align:left;}</style> <style> #rec602614066 .t886__text{line-height:1.6;color:#17171b;}</style> <style>#rec602614066 .t886__wrapper {box-shadow:0px 0px 4px rgba(0,0,0,0.1);}</style> <style> #rec602614066 .t886__wrapper{border-radius:16px;}@media (max-width:480px){#rec602614066 .t886__wrapper{border-radius:8px;}}</style> </div> <div id="rec602637647" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация виджета cookie --> <style>
.t886 {
width: 100%;
z-index: 1000000001;
transition: .3s ease;
}
.t-body.show-promobar:not(.hide-promobar) .t886 {
bottom: calc(var(--dynamic-bottom) + 20px) !important;
}
.t886__wrapper {
display: flex;
padding: 12px 24px;
margin: 0 auto;
gap: 16px;
}
.t886__text {
font-size: 14px;
padding-right: 0 !important;
}
.t886__btn {
font-size: 14px;
line-height: 1.6;
}
@media screen and (max-width: 980px) {
.t886 {
width: calc(100% - 20px) !important;
left: 10px !important;
bottom: unset !important;
top: 14px !important;
}
.t886__wrapper {
border-radius: 8px !important;
padding: 8px 16px;
gap: 20px;
}
}
@media (max-width: 639px) {
.t886__text {
font-size: 10px;
}
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec368502560" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- плагин интеграции amo crm -> yandex metrika --> <script type="text/javascript">
(function(){
var ya_counter_id = '65640406';
var ya_client_id = '';
var setYaClientId = function (){
var intervalYaClientId = setInterval(function(){
try {
if (typeof window['yaCounter'+ya_counter_id] !== "undefined" && typeof window['yaCounter'+ya_counter_id].getClientID !== "undefined") {
ya_client_id = window['yaCounter'+ya_counter_id].getClientID();
if (!ya_client_id)
return;
var forms = document.getElementsByTagName("form");
for (var i = 0; i < forms.length; i++) {
var input = document.createElement("INPUT");
input.type = "hidden";
input.name = "YMClientID";
input.value = ya_client_id;
forms[i].appendChild(input);
}
clearInterval(intervalYaClientId);
}
} catch(err) {
}
}, 1000);
};
setYaClientId();
})();
</script> <!-- nominify end --> </div> </div> </div> </div> </footer> <!--/footer--> </div> <!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 65640406 --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='65640406';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0"}}},ecommerce:"dataLayer"});},2000);</script> <noscript><div><img src="https://mc.yandex.ru/watch/65640406" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
window.tildastatscroll='yes';setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'46f1ce95aad41ac8b0d98605c4e04383','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script> <!-- Rating Mail.ru counter --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){var _tmr=window._tmr||(window._tmr=[]);_tmr.push({id:"3737289",type:"pageView",start:(new Date()).getTime()});window.mainMailruId='3737289';(function(d,w,id) {if(d.getElementById(id)) {return;}
var ts=d.createElement("script");ts.type="text/javascript";ts.async=true;ts.id=id;ts.src="https://top-fwz1.mail.ru/js/code.js";var f=function() {var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(ts,s);};if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,"topmailru-code");},2000);</script> <noscript><img src="https://top-fwz1.mail.ru/counter?id=3737289;js=na" style="border:0;position:absolute;left:-9999px;width:1px;height:1px" alt="Top.Mail.Ru" /></noscript> <!-- //Rating Mail.ru counter --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KTCCH4H" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> </body> </html>