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

Поділитися
Вставка
  • Опубліковано 1 гру 2024

КОМЕНТАРІ • 80

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

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

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

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

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

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

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

    Для тех, кто не смог подружить шейдер с 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @SergeyBaranov_ru
    @SergeyBaranov_ru 7 місяців тому

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

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

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

  • @АнатолийПетрович-э8ч

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

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

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

  • @КонстантинЛапшин-ч3п

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

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

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

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

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

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

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

  • @КонстантинМедведев-э6к

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

  • @ЕвгенийСтахов-о5ы
    @ЕвгенийСтахов-о5ы 4 роки тому +1

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

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

    4:00 - Beush)))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    🤘 super

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

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

    • @гачалайф-ч3ж
      @гачалайф-ч3ж 4 роки тому

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

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

      @@гачалайф-ч3ж тебе какое дело, что он делает

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

    Спасибо)

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

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

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

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

    • @АнтонБарсуков-с5ж
      @АнтонБарсуков-с5ж 4 роки тому

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

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

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

    • @АртемМоскалев-н2э
      @АртемМоскалев-н2э 4 роки тому +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 4 роки тому

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

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

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

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

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

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

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

    • @mrgoodpeople
      @mrgoodpeople 8 місяців тому

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @КаримКеримков
    @КаримКеримков 4 роки тому

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @ИльяСидоров-й1м
    @ИльяСидоров-й1м 4 роки тому

    Первый :)

  • @mrgoodpeople
    @mrgoodpeople 8 місяців тому

    Можно сделать третью часть серии, где показать, как сделать динамическую тесселляцию. То есть чтобы кол-во вершин увеличивалось только в тех областях, где мы рисуем. Можно было бы использовать ту же самую текстуру для этой цели. Чем чернее, тем сильнее тесселляция:
    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;
    }