Следы от шин на снегу в Unity 3D [Tutorial] - часть 2

Поділитися
Вставка
  • Опубліковано 11 лип 2020
  • Вторая часть видео про эффект следов от шин, шагов персонажа, или других объектов в вашей игре на снегу, грязи или песке в Unity 3D. В нём будет использоваться Custom Render Texture из юнити, и специальный шейдер который позволит нам менять высоту плоскости снега в определенных местах
    Предыдующее видео: • Следы от шин на снегу ...
    Ссылка на готовый проект: github.com/emeraldpowder/Snow...
    Patreon канала - / emeraldpowder
    Наш Discord - / discord
    На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
    Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

КОМЕНТАРІ • 83

  • @raysiberian4346
    @raysiberian4346 4 роки тому +17

    Я давненько юнити закинул, но твои видосы до сих пор смотрю с кайфом, непонятно зачем.

    • @thetraveler7779
      @thetraveler7779 3 роки тому +1

      На годот перешёл что ли?

  • @TheSoundWeaver
    @TheSoundWeaver 2 роки тому +9

    Для тех, кто не смог подружить шейдер с terrain'ом - нужно всего лишь поиграться с цифрами в коде.
    1. Изначально делаем небольшой terrain, размером до 50x50 (иначе тесселяция будет делать своё грязное дело с производительностью), лучше больше мелких террэйнов сделать, чем один огромный, а размер в данном случае чем меньше - тем лучше:)
    2. Вешаем на него шейдер SnowPlane
    3. Меняем тайлинг текстур, соотвествующий нашему эстетическому представлению, каким должен быть снег вместо 1x1
    4. В SnowHeightMapUpdate в строке pos /= "подбираем параметр" (у меня сработал 0.011 лучше всего), в итоге получится что-то вроде pos /= 0.011
    5. Должно сработать. Тесселяцию лучше поставить в пределах 6-8, не больше, так как мы не хотим, чтобы комп взлетел в космические пространства от приминания снега.
    Еще, чтобы уровень снега (heightAmount) соответсвовал уровню реакции на высоту поднятия ног, например (для гуманоидных и животных), в SnowBrush в условии if (Physics.Raycast(ray, out RaycastHit hit, 0.32f)) лучше вместо магического 0.32f отправлять сразу _heightAmount из шейдера. Получить его можно создав поле для материала в классе и затем вытащить таким образом: _heightAmount = SnowMat.GetFloat("_HeightAmount");
    Вообще, судя по всему, шейдер при таком подходе может всё же сильно уменьшить производительность, но по крайней мере этот вариант рабочий для террэйнов, что здорово.
    Благодарю за видео!

    • @sX1mvrX1n
      @sX1mvrX1n Рік тому

      ооо, спасибо

    • @vlad1kak228
      @vlad1kak228 Рік тому

      Когда меняю тайлинг текстуры, что-то странное со следами происходит

  • @sicher3135
    @sicher3135 4 роки тому +8

    Плюсик за объяснения как оно работает

  • @FIREforGAMESFfG
    @FIREforGAMESFfG 3 роки тому +1

    Твой канал стал первым с колокольчиком у меня)
    Огромное спасибо за подробные видео, мне, как новичку, очень помогает. Удачи в развитии канала!

  • @akstis4183
    @akstis4183 4 роки тому +4

    Насколько круто. Я просто сижу и офигеваю. Спасибо огромное за такой подробный урок

  • @Muxau108
    @Muxau108 4 роки тому +3

    Очень круто! Спасибо за видео!

  • @AlexStraga
    @AlexStraga 4 роки тому

    Как всегда радуешь)

  • @KoliaBoroda
    @KoliaBoroda Рік тому

    Спасибо за урок, было интересно

  • @Kiberbrain
    @Kiberbrain 4 роки тому +4

    Хотелось-бы чегонить про динамический меш, его генерацию, слияние, разбиение, всякое такое.

  • @KyWoTKy
    @KyWoTKy 4 роки тому

    Спасибо)

  • @Usual_User
    @Usual_User 4 роки тому

    Пользуюсь арнриалом, но просто приятно твои видео смотреть

  • @Vorono4ka
    @Vorono4ka 4 роки тому

    Спасибо колоколчику за быстрое уведомление!

    • @EmeraldPowder
      @EmeraldPowder  4 роки тому +1

      Спасибо за колокольчик! :)

  • @mixer9524
    @mixer9524 2 роки тому +1

    Не тигр, а бульдозер)))) Спасибо за классное видео

  • @lnPower
    @lnPower 4 роки тому +3

    Спасибо за труды, хотел бы попросить вас сделать обзор работы с mesh Baker, наверняка вы его использовали, конкретно не понятны моменты с объединением объектов в один и материалов в одну текстуру.

  • @ravenearl4400
    @ravenearl4400 3 роки тому +1

    Чтобы метель была ещё натуральней, можно добавить усреднение карты высот с матрицей коэффициентов (элемент матрицы больше там, в какую сторону дует ветер)

  • @user-ti2ei5ms4y
    @user-ti2ei5ms4y 3 роки тому

    Офигенные видео! Можешь продолжить рассказывать про NavMesh, очень интересная тема?

  • @kirbulichev3329
    @kirbulichev3329 3 роки тому

    🤘 super

  • @Itibsoft-chanel
    @Itibsoft-chanel 3 роки тому

    Здравствуйте! А будут еще видео про NavMesh? Как никак обещали еще одно видео)
    Хорошие видео получилось!

  • @Vorono4ka
    @Vorono4ka 4 роки тому +1

    4:00 - Beush)))

  • @user-bt8vc5ch5n
    @user-bt8vc5ch5n 3 роки тому

    Можно ли сделать изменение коллайдера по проминаниям снега? И если да, то можете объянить, как это сделать

  • @ftinkere
    @ftinkere 3 роки тому

    Это модный ковёр!

  • @romanbaranov1984
    @romanbaranov1984 Рік тому

    Привет! Очень классный контент, спасибо!
    Делаю бесконечный 3D раннер на сноуборде для мобильного устройства.
    Часть плоскости будет сгенерировано на старте игры, а остальные хочу генерить процедурно в рантайме.
    Хочу применить шейдер для отображения следа за сноубордом.
    Версия Unity 2021.313f1
    С шейдерами не работал до этого.
    В процессе применения к проекту появилось несколько вопросов, которые есть в комментариях, но четкого ответа пока я не нашел или они у меня не сработали.
    1. Стоит ли вообще применять этот подход к моему проекту? Насколько вообще сильно повлияет шейдер на большой плоскости на производительность?
    2. Как правильно масштабировать шейдер на большие плоскости / террейн?
    Если установить масштаб Snow Plane в 50 юнитов, например, то след от SnowBrush сильно растягивается.
    Тайлинг текстур настраивал, но на кисть это никак не повлияло.
    3. Если же вместо масштабирования плоскости / террейна просто дублировать их, то тогда появляется проблема с дублированием следов на продублированных же плоскостях / террейне.
    Создавать отдельный материал и рендер текстуру для каждой продублированной плоскости я не рассматриваю.
    Большая просьба @Emerald Powder помочь с вопросами выше по возможности!

  • @T1m0the0S
    @T1m0the0S 4 роки тому +4

    Следующее видео делаем 3д скульптинг в юнити. ☺😄 Похоже напоминалка сломалась) 🙄

  • @bibyter6451
    @bibyter6451 4 роки тому +6

    Про Ai не хочешь снять?

    • @Vorono4ka
      @Vorono4ka 4 роки тому

      @@BrutalStrike2 забавно, сам о нем узнал недавно, а теперь вижу его тут, феномен Баадера-Майнхоф бленб)

  • @ebakryak3486
    @ebakryak3486 4 роки тому +1

    Привет, есть идея для нового видео. Сделай видео про сохранения сцен тип чтоб в начале игры загружался сейв, а перед выходом из игры сохранял бы сцену на сколько я понял это сохраняется в json/xml файлах. Заранее спасибо + лайк!

  • @user-df6ol6hp4k
    @user-df6ol6hp4k 4 роки тому +1

    Террейн и URP - как повторить?)

  • @not_even_toxic
    @not_even_toxic 3 роки тому

    Привет, а ты знаешь же, что вышла новая высокоуровневая система мультиплеера в unity? Когда уроки? :)

  • @SergeyBaranov_ru
    @SergeyBaranov_ru 2 місяці тому

    Спасибо за урок, все получилось.
    Однако при развитии возник вопрос - как теперь созданный материал с шейдером прикрепить к terrain? При попытке сделать это получаю предупреждение с текстом "The provided Material's shader might be unsuitable to use with Terrain in the active render pipeline...". Если проигнорировать и запустить, следов не видно и все начинает очень тормозить...

  • @kornevvprogames
    @kornevvprogames 3 роки тому

    А этот эффект следов будет работать только на плоской поверхности, или же на каком-нибудь шаре тоже могут быть выдавлены следы?

  • @KiberKrolikOfficial
    @KiberKrolikOfficial 6 місяців тому

    Здравствуйте, подскажите пожалуйста,
    Как продублировать снежный покров так чтобы когда проезжаешь по нем рисовалось по отдельности, тоесть 2 плоскости но с разными картами?

  • @TheMrKMen
    @TheMrKMen 3 роки тому

    Вообще по умолчанию этот шейдер лучше бы в 0.5 стоял, а не в 1. Когда ты в снег наступаешь, он не полностью проминается вниз, что-то и вверх выталкивается, всякие горочки появляются при ходьбе. В общем так натуральнее смотреться будет.

  • @user-uk9pv6bx7z
    @user-uk9pv6bx7z 2 роки тому

    А что нужно поменять в Snow Height Map Update чтобы он рисовал не черным по красному а наоборот, красным по черному? Абсолютно тупой вопрос, но я ниче не понимаю в шейдерах, даже не понимаю куда гуглить. Хотел переписать под URP, но там нашел пример шейдера который использует инвертированную маску карты высот, где другие цвета хаймапы на вход. Соответственно снег наоборот вырастает когда машина проезжает по нему)

  • @JON-dj5uy
    @JON-dj5uy 4 роки тому

    Привет можешь пожалуйста делать урок по созданию шейдера который обводит объект если на него попадает луч

    • @dragon4ik859
      @dragon4ik859 4 роки тому

      Делаешь outline шейдер, а потом назначаешь его из скрипта объекту, в который попал луч.
      Как сделать outline shader на ютубе есть

  • @BlackJack-bo1gs
    @BlackJack-bo1gs 4 роки тому

    Посоветуй пожалуйста уроки по юнити для начинающих, желательно чтобы материал был структурированным, хотя бы для усвоения основ программирования и работы с движком, а то в интернете хоть и полно информации, но при этом не знаешь с чего начать, так как на многих каналах информация преподносится вразнобой, вследствии чего в голове получается каша, или вообще ничего не понятно

    • @user-vx1bt2uv2j
      @user-vx1bt2uv2j 4 роки тому

      На сайт Unity Learn для начала заглядывал?

  • @sargisx
    @sargisx 6 місяців тому

    Можно ли использовать этот шейдер на террейне?

  • @mr.antonder9170
    @mr.antonder9170 3 роки тому +2

    Здравствуйте. Я вот сейчас сколько бьюсь, никак увеличить не могу (
    Получает, надо для каждого плэйна новый материал брать?

    • @dinodafor_off
      @dinodafor_off 2 роки тому

      Решил проблему?

    • @dimanpro7007
      @dimanpro7007 2 роки тому

      Решил проблему?

    • @TheSoundWeaver
      @TheSoundWeaver 2 роки тому

      Есть решение) Надо просто поиграться с числами в скриптах. Я написал выше, что мне помогло

  • @philippb8894
    @philippb8894 4 роки тому +1

    В шейдер графе не получается из текстуры менять вертексы, почему-то ноды замораживает(

    • @user-jl2go3uf5o
      @user-jl2go3uf5o 4 роки тому

      Philipp B ты в Майнкравт играешь куда игру свою создавать 😂😂😂😂

    • @Falcen111
      @Falcen111 3 роки тому

      @@user-jl2go3uf5o тебе какое дело, что он делает

  • @ko-games7768
    @ko-games7768 4 роки тому

    Сделай видео про вращение башни танка как в WoT как такое можно реализовать.

    • @xenofrend8334
      @xenofrend8334 4 роки тому

      Я так сам делал. Использовал Quaternion.slerp . Берём размер угла (положительный) и скорость вращения башни. И делим скорость на угол. Задаём это в скорость Quaternion. Slerp(Lerp)
      Вот и работает

    • @xenofrend8334
      @xenofrend8334 4 роки тому

      Размер угла это угол между башней и камерой если что

  • @serveladik
    @serveladik 3 роки тому

    Не совсем понял как ты дальше рисовал по снегу, если ты убрал _DrawPosition ("Draw Position", Vector) = (-1,-1,0,0)

  • @user-ob1jz8yl6x
    @user-ob1jz8yl6x 3 роки тому

    Да как вы добавили синтаксис (подсветку, автосправку)???????

    • @EmeraldPowder
      @EmeraldPowder  3 роки тому

      В файле с кодом шейдера? Это Rider из коробки умеет. Там не прямо честная подсветка, он по моему вообще по ключевым словам подсвечивает

  • @miscellaneous_games_studio
    @miscellaneous_games_studio 4 роки тому +1

    а как скачать программу для скриптов (я имею как называется)

    • @EmeraldPowder
      @EmeraldPowder  3 роки тому

      Если я правильно понял про какую программу идёт речь - Jetbrains Rider

  • @_WoodGoblin_
    @_WoodGoblin_ 3 роки тому

    Помогите, может кто знает в чем проблема. В редакторе отлично все работает, но после сборки снег не проминается. Может я где галку не поставил... или что делаю не так, непойму((((
    Изменено:
    Разобрался)) Может кому поможет. Проблема была в том, что в сборку шейдер который мы создали не попадает. Что бы это исправить в настройках Edit/Project Settings/Graphics нужно в Always Included Shaders самому в конец добавить и все заработает)))

  • @VolkGam
    @VolkGam 3 роки тому +1

    Здравствуйте! Я внедрил ваш снег в проект в Unity 2020.2.3.f1 на террейн размеров 200 на 200. Разрешение текстур для террейна (Albedo и Normal) поставил 4096 на 4096 - так как меньше размером - выглядит ужасно... Отпечатки пришлось делать меньше но по краям огромные поля белых пикселей. FPS просел до 25 и не работает код по исчезновению отпечатков за определённое время. Со всем уважением, делаю вывод - данный пример абсолютно не подходит для игр с террейном (шутеров и так далее), где много предметов передвигаются по заснеженной территории. Также, я так и не понял, почему не работает исчезновение отпечатков на варианте с террейном. Что вы можете сказать по данной ситуации? Я могу представить результаты тестов в отдельной сцене и написать вам на почту, если вас этот вопрос ещё интересует. Спасибо! Пример интересный и хороший, но в рамках маленьких заснеженных плоскостей - больше по-прикалываться...

    • @TheSoundWeaver
      @TheSoundWeaver 2 роки тому +2

      Моё решение, хотя и не слишком красиво выглядит, я описал в комментариях выше. Попробуйте делать мелкие тэррэйны, во многих случаях это работает (скажем, 50x50)

    • @mrgoodpeople
      @mrgoodpeople 3 місяці тому

      а вы решили эту проблему за 2 года? Я бы на вашем месте сделал динамическую тесселяцию, чтобы она добавляла детализацию только в те области, где мы рисуем отпечатки. Тогда общее количество точек террейна останется немногим больше чем 200 на 200.

  • @admenmod
    @admenmod 4 роки тому

    Можно шрифт побольше?)

    • @EmeraldPowder
      @EmeraldPowder  3 роки тому

      В следующем видео будет большой, обещаю :)

    • @mindness3520
      @mindness3520 3 роки тому

      @@EmeraldPowder А как увеличить поле, именно с выкапыванием?) 18:10

    • @mindness3520
      @mindness3520 3 роки тому

      @@EmeraldPowder Я двое суток пытаюсь подружится с шейдерами... спасай в общем))) а видосы у тебя крутые кстати)

  • @hannel6503
    @hannel6503 3 роки тому +1

    Пожалуйста помогите мне как рассширить поле когда я дублирую происходит какая то фигня меш деформируется во всех plane идентично когда я даже не наступаю на другие

    • @hannel6503
      @hannel6503 3 роки тому

      Помогите кто может

    • @user-rp4yt9kb4l
      @user-rp4yt9kb4l 3 роки тому

      Попробуйте на каждый кусок поля, использовать отдельную пару материала (***HaightmapUpdate) + карты высок (***HaightMap)

    • @hannel6503
      @hannel6503 3 роки тому

      Антон Барсуков Пробывал, когда создаю новые они попросту не работают (

    • @user-bn4bb6rp3z
      @user-bn4bb6rp3z 3 роки тому +1

      @@hannel6503 У меня получилось, когда я дублировал материал, HeihgtMapUpdate и HeightMap, плюс добавил в скрипт проверку на то, во что бьет луч, получилось так
      private void DrawWithTires()
      {
      GameObject tire = Tires[tireIndex++ % Tires.Length];
      Ray ray = new Ray(tire.transform.position, Vector3.down);
      if (Physics.Raycast(ray, out RaycastHit hit))
      {
      if (hit.collider.name == gameObject.name)
      {
      Vector2 hitTextureCoord = hit.textureCoord;
      float angle = tire.transform.rotation.eulerAngles.y;
      HeightMapUpdate.SetVector(DrawPosition, hitTextureCoord);
      HeightMapUpdate.SetFloat(DrawAngle, angle * Mathf.Deg2Rad);
      }
      }
      }
      Не знаю, насколько это хороший вариант, но хотя бы рабочий) в шейдерах я совсем ничего не смыслю, может, есть более красивый способ достигнуть результата и избежать видимых стыков у следа

    • @hannel6503
      @hannel6503 3 роки тому

      Артем Москалев Спасибо большое чел респект🙏

  • @snimatnow
    @snimatnow Рік тому

    как игра нзывается, которая мелькает иногда?

  • @fazenbros4889
    @fazenbros4889 4 роки тому +1

    Здравствуй! На ютубе нет нормальных туториалов по звукам машин. Они вечно получаются ужасными! Если вы поможете разобраться в этом вам цены не будет! Я знаю что лучше всего это делать в FMOD. Больше ничего(

  • @user-xj5hp7xv3x
    @user-xj5hp7xv3x 2 роки тому

    А как это все увеличить?

    • @dimanpro7007
      @dimanpro7007 2 роки тому

      Тот же вопрос, пол часа уже пытаюсь

  • @unity3dsimplesolutions309
    @unity3dsimplesolutions309 Рік тому

    сделал по уроку, не работает

  • @mister-rock
    @mister-rock 3 роки тому

    Не реалистичные следы, особенно животных, снег рассыпчатый.

  • @user-ud6he3nm4u
    @user-ud6he3nm4u 4 роки тому

    Первый :)

  • @mrgoodpeople
    @mrgoodpeople 3 місяці тому

    Можно сделать третью часть серии, где показать, как сделать динамическую тесселляцию. То есть чтобы кол-во вершин увеличивалось только в тех областях, где мы рисуем. Можно было бы использовать ту же самую текстуру для этой цели. Чем чернее, тем сильнее тесселляция:
    float4 tess (appdata v0, appdata v1, appdata v2)
    {
    float2 uv_center = 0.33333 * (v0.texcoord.xy + v1.texcoord.xy + v2.texcoord.xy);
    return _maxTesselation * (1 - tex2Dlod(_DetailTex, float4(uv_center,0,0)).r) + 1;
    }