Перейти к содержимому
CRUSHFORMV1.1.0
ПОЛУЧИТЬ НА FAB

ПОВРЕЖДЕНИЯКРАСКА И ЦАРАПИНЫ

Краска и царапины

Краска стирается там, где кузов вмят и где на нём остались потёртости. Износ идёт от краски к грунтовке, затем к голому металлу, а потёртость ещё рисует тонкие линии царапин вдоль своего направления. Всё это остаётся, пока кузов не отремонтирован. Эта страница описывает, что делает износ, и настройки, которые его задают. Сам материал краски подключается в Быстром старте, шаг 1.

Потёртость вдоль стены на скорости оставляет полосу грунтовки, а затем голого металла, с тонкими линиями царапин вдоль скольжения. Вмятина стирает краску там, где её металл сдвинулся не меньше чем на 3 см, а глубокая вмятина немного сильнее растрескивает краску. Толчок, который лишь трётся о панель на скорости ниже 1.5 м/с, краску не трогает.

Износ накапливается участок за участком, как на этой машине:

Вид сбоку, три четверти: тёмный седан, у которого краска сколота пятнами на дверях, крыльях и бампере до светлого голого металла.
Краска сколота пятнами до голого металла на дверях, крыльях и бампере.

Изнашиваются только материалы, подключённые через MF_CF_Paint. Стекло и интерьерные детали, которые используют меш кузова, получают только MF_CF_Deform: они мнутся вместе с кузовом и сохраняют свой вид. С выключенными Dents ничего не мнётся и не царапается, поэтому краска остаётся целой.

Линии царапин — это тонкие параллельные линии, светлее и грубее краски, а самые глубокие из них показывают грунтовку. Они идут вдоль направления, в котором скользила машина. Они видны только при настроенном атласе царапин (см. «Настройку»), а скольжение медленнее Min Scrape Speed линий не рисует.

  • Износ от вмятин. Каждая вмятина добавляет Dent Abrasion (UCFProfile::DentAbrasion, 0.002) за каждый сантиметр, на который она сдвинула металл точки дальше Min Abrasion Depth (UCFProfile::MinAbrasionDepth, 3 см). Сантиметр-два, на которые авария сдвигает кузов далеко от удара, краску оставляют целой. Вмятина 20 см добавляет 0.034: за 17 см сверх этих 3. Потёртость стирает краску на любой глубине. Износ ограничен Max Paint Wear (UCFProfile::MaxPaintWear, 0.2): долей краски, которую разбитая машина может потерять до грунтовки и голого металла. 1 позволяет стереть всё.
  • Износ от потёртостей. Контакт, который скользит быстрее Min Scrape Speed (UCFProfile::MinScrapeSpeed, 1.5 м/с), добавляет Scrape Rate (UCFProfile::ScrapeRate, 0.05) за каждый метр скольжения в пределах Scrape Radius (UCFProfile::ScrapeRadius, 30 см). Отчёты приходят каждые Scrape Report Interval (0.1 с). Разрыв длиннее Max Scrape Dt (0.25 с) засчитывает только 0.25 с скольжения.
  • Линии царапин. Та же потёртость добавляет Scratch Rate (UCFProfile::ScratchRate, 0.05) покрытия линиями за каждый метр скольжения в каждой точке в пределах Scrape Radius, до Max Scratch (UCFProfile::MaxScratch, 0.033): доли краски, которую разбитая машина может потерять под линиями. Один проход над точкой добавляет около Scratch Rate, умноженного на удвоенный Scrape Radius в метрах. По умолчанию это 0.05 × 0.6 = 0.03, так что два прохода доходят до предела 0.033. При Scratch Rate, равном 0, линий нет.
  • Одно направление в точке. Точка хранит одно направление своих линий — того скольжения, которое над ней преобладает. Более слабое скольжение добавляет покрытие, но линии не поворачивает. Там, где направления соседних точек различаются, потому что скольжение поворачивает или два скольжения пересекаются, линии промежуточных направлений на коротком участке плавно переходят друг в друга: видны сразу два семейства линий, которые сменяют друг друга, а не шов, где одно семейство обрывается и начинается другое.
  • Глубокие вмятины трескаются. Вмятина глубже 3 см добавляет дополнительный износ по мере углубления, до 0.06 при 25 см и глубже. Эти 3 см заданы в шейдере и не следуют за Min Abrasion Depth.
  • Что показывает краска. Там, где износ достаточно велик, маска сколов показывает цвет грунтовки, а при большем износе — цвет голого металла. Шероховатость и металличность следуют за каждым слоем. По умолчанию грунтовка умеренно тёмно-серая (0.1, 0.105, 0.095), а голый металл — средне-серый.
  • Входы. У MF_CF_Paint четырнадцать входов. Base Color, Roughness и Metallic принимают вашу краску, а Wear Depth и Scratch принимают MF_CF_Deform. Primer Color — цвет под краской, Metal Color — цвет голого металла. Scratch Tiling задаёт, как часто маска сколов повторяется по кузову, а Scratch Line Tiling — как часто повторяется текстура линий (по умолчанию 0.02 на сантиметр). Dust Color, Mud Color, Snow Color и Dirt Strength задают вид грязи, при этом Dirt Strength масштабирует всё: пыль, грязь, снег и влагу. Built-in Look выбирает встроенную грязь; если он выключен, изношенная краска проходит без неё, и так можно сделать собственный вид.
MF_CF_Paint с его входами, среди которых Primer Color и Metal Color, и его выходами.
  • Ремонт. Ремонт снимает износ и линии царапин вместе с вмятинами. Wash их не трогает.
  • Сеть. Линии передаются на все инстансы вместе с вмятинами, отдельной настройки для этого нет.
  1. Сделайте профиль, как в Вмятинах и решётке, шаги 1–3. Настройки краски находятся в том же профиле.
  2. Откройте профиль и найдите категорию Paint. Значения по умолчанию — те, что в таблице ниже. Оставьте их для начала и меняйте по одному параметру.
Paint
Dent Abrasion0.002
Min Abrasion Depth3.0
Min Scrape Speed1.5
Scrape Rate0.05
Scratch Rate0.05
Scrape Radius30.0
Max Paint Wear0.2
Max Scratch0.033
Группа Paint профиля вмятин.
  1. Подключите материал краски. В каждом материале, который должен изнашиваться, поставьте MF_CF_Paint между вашей краской и Base Color, Roughness и Metallic, а его Wear Depth и Scratch питайте от MF_CF_Deform. Шаг 1 Быстрого старта перечисляет десять соединений.
  2. Окрашенный материал получает скалярный параметр CF_PaintWear со значением 1. Экземпляр этого материала, который использует общий мастер кузова, но не должен изнашиваться, ставит его в 0. Тот же скаляр масштабирует и линии царапин, так что 0 выключает и их.
  3. Проверьте атлас царапин. В Project Settings › Plugins › Crushform, в группе Atlas, находится Scratch Atlas; по умолчанию он указывает на /Crushform/Atlas/RT_CF_ScratchAtlas. Это должен быть Render Target RG8 того же размера, что и атлас решётки. Если его нет или у него другой формат или размер, линий не видно, а Output Log выдаёт предупреждение. Сколы и вмятины это не затрагивает.

У краски нет ни вызова Blueprint, ни события. Подключение — работа в редакторе, поэтому графа нет. В коде редактора инструмент, который подключает сразу много материалов, вызывает WireMaterial с Max Displacement профиля плюс амплитуда складок по умолчанию:

// Editor code. Routes the body material through the deform and paint functions.
const float Bound = Profile->MaxDisplacement + UCFContentLibrary::GetDefaultFoldAmplitude();
const bool bWired = UCFContentLibrary::WireMaterial(BodyMaterial, DeformFunction, PaintFunction, Bound);

Передайте null вместо PaintFunction для стекла и интерьеров. Тогда вызов подключает только деформацию.

СвойствоЧто делаетПо умолчанию
UCFProfile::bDentsВыкл.: ни вмятин, ни износа краски.Вкл.
UCFProfile::DentAbrasionИзнос краски, который добавляется на каждый сантиметр металла, сдвинутого вмятиной.0.002
UCFProfile::MinAbrasionDepthНа сколько сантиметров должен сдвинуться металл, прежде чем вмятина начнёт стирать его краску; стирает только ход сверх этой глубины. Потёртости стирают краску на любой глубине.3
UCFProfile::MinScrapeSpeedСкорость скольжения, м/с, ниже которой контакты не трогают краску.1.5
UCFProfile::ScrapeRateИзнос краски на каждый скользнувший метр, до Max Paint Wear.0.05
UCFProfile::ScratchRateПокрытие линиями царапин, которое добавляется на каждый скользнувший метр, до Max Scratch. 0: линий нет.0.05
UCFProfile::ScrapeRadiusРадиус потёртости, см.30
UCFProfile::MaxPaintWearНаибольший износ краски в любой точке, от 0 до 1. 1 позволяет краске стереться везде.0.2
UCFProfile::MaxScratchНаибольшее покрытие линиями царапин в любой точке, от 0 до 1. Линии покрывают не больше примерно 0.36 краски, поэтому значение выше ничего не добавит.0.033
UCFSettings::ScratchAtlasRender target RG8, где хранятся покрытие линиями и направление каждой точки; размер как у атласа решётки. Без пригодного атласа линий нет./Crushform/Atlas/RT_CF_ScratchAtlas
UCFSettings::ScrapeReportIntervalСекунды между отчётами о потёртостях.0.1
UCFSettings::MaxScrapeDtСамое долгое скольжение в секундах, которое засчитывает один отчёт.0.25
CF_PaintWearСкаляр окрашенного материала. Экземпляр ставит 0, чтобы остановить износ.1
  1. Откройте Proving Ground в Play In Editor и проведите машину вдоль стены со скоростью больше 1.5 м/с. Краска изнашивается там, где трётся металл, а тонкие линии царапин идут вдоль направления вашего движения. Чем больше проходов, тем плотнее линии.
  2. Введите Crushform.Debug 2. Оверлей окрашивает узел по смещению или по износу, в зависимости от того, что больше. Изношенная полоса видна как повреждённые узлы.
  3. Введите Crushform.RepairAll. Износ и линии царапин уходят вместе с вмятинами.

Crushform.Debug и Crushform.RepairAll — это читы: они работают во всех сборках, кроме Shipping, и в редакторе.

Причина. Одна из четырёх причин. Dents выключены в профиле, что останавливает все вмятины и потёртости. Материал не подключён через MF_CF_Paint. Экземпляр ставит CF_PaintWear в 0. Либо машина скользит медленнее Min Scrape Speed.

Решение. Проверьте четыре пункта в этом порядке. Затем проведите машину быстрее 1.5 м/с, чтобы убедиться, что подключение работает.

Причина. Dent Abrasion стирает краску точки только за ход её металла сверх Min Abrasion Depth, по умолчанию 3 см. Более неглубокая вмятина гнёт металл, а краска на нём остаётся. На потёртость эта глубина не распространяется.

Решение. Ничего, если лёгкая авария должна оставлять краску целой. Чтобы краска скалывалась и в более неглубоких вмятинах, уменьшите Min Abrasion Depth: при 0 краска стирается на любой глубине.

Одна потёртость сдирает краску до металла

Заголовок раздела «Одна потёртость сдирает краску до металла»

Причина. Scrape Rate добавляет износ за каждый метр скольжения выше Min Scrape Speed в пределах Scrape Radius. Долгое скольжение на скорости копится, и каждый отчёт засчитывает не больше 0.25 с.

Решение. Понизьте Scrape Rate. Поднимите Min Scrape Speed, если толчок вдоль панели не должен трогать краску, или поднимите Max Paint Wear, только если разбитая машина должна потерять всю краску.

Краска изнашивается, но линий царапин нет

Заголовок раздела «Краска изнашивается, но линий царапин нет»

Причина. Потёртость доходит до кузова, значит, остаётся одно из четырёх. В профиле Scratch Rate равен 0. Атласа царапин нет, или это не Render Target RG8 с размером атласа решётки: тогда Output Log предупреждает No Crushform scratch atlas (Project Settings > Plugins > Crushform); scratch lines stay invisible или называет атлас и нужный ему размер. В материале нет связи между Scratch у MF_CF_Deform и Scratch у MF_CF_Paint. Либо экземпляр ставит CF_PaintWear в 0.

Решение. Поднимите Scratch Rate выше 0. Укажите в Scratch Atlas /Crushform/Atlas/RT_CF_ScratchAtlas или свой Render Target RG8 с размером атласа решётки. Соедините два пина Scratch или подключите материал заново через WireMaterial. Верните CF_PaintWear в 1.

Линии переходят из одного направления в другое

Заголовок раздела «Линии переходят из одного направления в другое»

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

Решение. Ничего, если поворот или пересечение должны так выглядеть. Настройки длины этого участка нет. Чтобы получить одно семейство линий, скользите в одном направлении, одним прямым скольжением. Меньший Max Scratch делает линии там слабее.

Стеклянная панель или салон не показывают износа

Заголовок раздела «Стеклянная панель или салон не показывают износа»

Причина. Они подключены без MF_CF_Paint. Это задумано: стекло и салон мнутся вместе с кузовом и сохраняют свой вид.

Решение. Ничего, если это то, что вам нужно. Чтобы деталь изнашивалась, подключите её через MF_CF_Paint, как описано выше.