ПОВРЕЖДЕНИЯКРАСКА И ЦАРАПИНЫ
Краска и царапины
Краска стирается там, где кузов вмят и где на нём остались потёртости. Износ идёт от краски к грунтовке, затем к голому металлу, а потёртость ещё рисует тонкие линии царапин вдоль своего направления. Всё это остаётся, пока кузов не отремонтирован. Эта страница описывает, что делает износ, и настройки, которые его задают. Сам материал краски подключается в Быстром старте, шаг 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 выбирает встроенную грязь; если он выключен, изношенная краска проходит без неё, и так можно сделать собственный вид.
- Ремонт. Ремонт снимает износ и линии царапин вместе с вмятинами. Wash их не трогает.
- Сеть. Линии передаются на все инстансы вместе с вмятинами, отдельной настройки для этого нет.
Настройка
Заголовок раздела «Настройка»- Сделайте профиль, как в Вмятинах и решётке, шаги 1–3. Настройки краски находятся в том же профиле.
- Откройте профиль и найдите категорию Paint. Значения по умолчанию — те, что в таблице ниже. Оставьте их для начала и меняйте по одному параметру.
| Paint | ||
|---|---|---|
| Dent Abrasion | 0.002 | |
| Min Abrasion Depth | 3.0 | |
| Min Scrape Speed | 1.5 | |
| Scrape Rate | 0.05 | |
| Scratch Rate | 0.05 | |
| Scrape Radius | 30.0 | |
| Max Paint Wear | ||
| Max Scratch | ||
- Подключите материал краски. В каждом материале, который должен изнашиваться, поставьте
MF_CF_Paintмежду вашей краской и Base Color, Roughness и Metallic, а его Wear Depth и Scratch питайте отMF_CF_Deform. Шаг 1 Быстрого старта перечисляет десять соединений. - Окрашенный материал получает скалярный параметр
CF_PaintWearсо значением 1. Экземпляр этого материала, который использует общий мастер кузова, но не должен изнашиваться, ставит его в 0. Тот же скаляр масштабирует и линии царапин, так что 0 выключает и их. - Проверьте атлас царапин. В 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::ScratchAtlas | Render target RG8, где хранятся покрытие линиями и направление каждой точки; размер как у атласа решётки. Без пригодного атласа линий нет. | /Crushform/Atlas/RT_CF_ScratchAtlas |
UCFSettings::ScrapeReportInterval | Секунды между отчётами о потёртостях. | 0.1 |
UCFSettings::MaxScrapeDt | Самое долгое скольжение в секундах, которое засчитывает один отчёт. | 0.25 |
CF_PaintWear | Скаляр окрашенного материала. Экземпляр ставит 0, чтобы остановить износ. | 1 |
Проверка работы
Заголовок раздела «Проверка работы»- Откройте Proving Ground в Play In Editor и проведите машину вдоль стены со скоростью больше 1.5 м/с. Краска изнашивается там, где трётся металл, а тонкие линии царапин идут вдоль направления вашего движения. Чем больше проходов, тем плотнее линии.
- Введите
Crushform.Debug 2. Оверлей окрашивает узел по смещению или по износу, в зависимости от того, что больше. Изношенная полоса видна как повреждённые узлы. - Введите
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, как описано выше.
