V12 — СОВМЕСТИМОСТЬ СЕТКИ И ПОПАДАНИЯ
Исследованы исходные VAB/VAJ DressM11B (7956 base / 8028 UV) и Hobble Dress (3471 base / 3610 UV). Активность симуляции проверяется через isActiveAndEnabled. Неактивный компонент не заставляет читать старый буфер симуляции.
При отсутствии активного вывода симуляции используется буфер skin wrap. Допускается точный UV-размер или GPU-дополнение до кратного 256; базовая сетка расширяется по явной карте UV-швов. Непонятные размеры отклоняются с диагностикой.
Match brush to unsmoothed cloth включён по умолчанию. Во время Enable editing сглаживание DAZSkinWrap временно выключается, чтобы сырые координаты ткани соответствовали поверхности для рисования. После завершения редактирования исходное сглаживание возвращается, если режим отделения кусков не требует оставить его выключенным. Это может слегка менять вид края отверстия после выхода из редактирования.
Garment diagnostics выводит UID, base/UV-размеры, выбранный источник координат, активность SIM, шейдер и преобразование alpha UV в Status и Error Log (диагностическая запись намеренно помечается как ошибка для удобства копирования).
Изучены файлы платьев и IL предоставленной DLL. Повторить сбой и проверить исправление внутри VaM здесь не удалось; совместимость с этими платьями требует проверки в игре.
Перед обновлением сохраните пресет, выключите Keep changes on disable/remove в прежнем экземпляре, удалите его и добавьте v12 на исходную одежду.

Clothing Eraser v12: исправлены выражения выбора длины стрелок и радиусов звезды, несовместимые с лексером старого Mono в VaM (CS1525 на ?.97f).

Clothing Eraser v12

УСТАНОВКА И ОБНОВЛЕНИЕ
Положите Seraphim.ClothingEraser.12.var в AddonPackages и добавьте ClothingEraser.cs на Person.
Перед обновлением сохраните пресет. Если в прежней версии есть Keep changes on disable/remove, ВЫКЛЮЧИТЕ его перед удалением старого экземпляра — для новой версии нужна исходная одежда, а не уже изменённая сетка как новая база. После установки v11 выберите ту же одежду и загрузите сохранённый пресет.
Если старый экземпляр уже удалён с сохранением изменений, сначала перезагрузите одежду, затем добавьте v11 и загрузите пресет.

СИММЕТРИЯ И КИСТИ — НОВОЕ В V10
Выбор кисти оставлен в одном списке Brush слева. Дублирующие кнопки справа удалены.
Round — круг; Square — квадрат; Oval — овал; Star — пятиконечная звезда; Heart — сердечко; Torn fabric — неровный разрыв ткани; Ripped tights — узкие волнистые стрелки с поперечными разрывами, как на колготках.
Brush rotation поворачивает кисть от -180 до 180 градусов. Для отчётливой отдельной формы нажмите один раз; при протягивании мыши отпечатки образуют непрерывный след. Для тонких стрелок увеличьте Radius, если они слишком малы.
Mirror left / right включает зеркальный мазок. Symmetry axis (% of view) задаёт положение вертикальной оси на экране; Center symmetry axis возвращает её в центр (50%). Во время редактирования видна голубая линия оси.
Это симметрия ОТНОСИТЕЛЬНО ЭКРАНА, не автоматическая анатомическая или UV-симметрия. Для правой/левой стороны тела установите фронтальный ракурс и совместите ось с его центром. При изменении ракурса или позы может понадобиться перенастройка. Зеркальная кисть рисует только там, где под ней видима выбранная одежда; скрытая обратная сторона не закрашивается.
Проекция показывает обе кисти и соответствует рисованию, включая отражённый поворот и узор разрывов. Если зеркальная точка за пределами окна или не попадает в одежду, второй отпечаток не появляется.
Shift восстанавливает обе стороны; Undo stroke отменяет обе стороны вместе. В области пересечения используется максимальный вес двух отпечатков, а не двойное нанесение мягкой кисти. Сохраняемые маски уже включают оба отпечатка; прежние пресеты совместимы.
Формы рассчитываются заранее при смене кисти, поворота или мягкости. Для двух сторон переиспользуется одна проекция геометрии; материал обновляется один раз за пакет мазков. Дополнительный проход зеркальной стороны всё же увеличивает нагрузку.
Старое значение кисти Torn при восстановлении настроек преобразуется в Torn fabric.

ИМЯ И СОХРАНЕНИЕ ПРЕСЕТА
Введите название в редактируемое поле Preset name. Поддерживаются русские названия.
Choose preset folder выбирает папку, например Custom/Textures/MyClothes.
Save preset сохраняет файлы непосредственно в эту папку, чтобы JSON-пресеты и их миниатюры можно было просматривать вместе:
  Мой пресет.json
  Мой пресет_material_0.png
  Мой пресет_material_1.png (если материалов несколько)
  Мой пресет.jpg (после снимка превью)
Недопустимые символы имени заменяются подчёркиванием. Существующий комплект не перезаписывается: добавляется _2, _3 и т. д. Итоговый путь указан в Status.
Каждый PNG — маска своего материала 1024x1024. Записанные PNG проверяются по контрольной сумме; JSON публикуется последним и тоже проверяется. Дождитесь успешного сохранения перед удалением плагина; удаление во время записи может оставить неполный комплект.

ПРЕВЬЮ ЧЕРЕЗ ШТАТНЫЙ СКРИНШОТ VAM
Take preview after save включён по умолчанию. После успешной записи пресета вызывается штатный DoSaveScreenshot: выставьте ракурс в рамке VaM и подтвердите снимок по подсказке на экране.
VaM пишет JPG с тем же базовым именем, что JSON, и обновляет кэш миниатюр файлового браузера. При загрузке в режиме миниатюр должна отображаться эта картинка.
Отмена снимка не отменяет сохранение JSON/PNG. Для повторного снимка нажмите Retake preview of last save; кнопка относится к последнему сохранению этим экземпляром плагина.
На время перехода к скриншоту Enable editing выключается, чтобы клик для снимка не оставил мазок. Для продолжения рисования включите редактирование снова.
Если скриншот не удалось запустить или записать, пресет остаётся сохранённым. Папки с буквальными .json или .vac в пути не подходят для штатного механизма снимков VaM; выберите другую папку.

ОТКЛЮЧЕНИЕ И УДАЛЕНИЕ
Keep changes on disable/remove включён по умолчанию.
При отключении и удалении сохраняются назначенные маски, изменённые флаги коллизий, треугольники, связи ткани и текущее сглаживание. Незавершённый мазок завершается. Текстуры, используемые материалами, не уничтожаются вместе с плагином.
При обычном отключении записи Undo остаются в экземпляре плагина. После удаления экземпляра история отмены и исходные резервные копии теряются. Повторно добавленный экземпляр считает текущее состояние исходным; для полного возврата к оригиналу переоденьте/перезагрузите одежду.
Это сохранение состояния в ТЕКУЩЕЙ СЦЕНЕ В ПАМЯТИ, а не запекание новой одежды. Перезагрузка сцены/одежды, изменение материалов и пересоздание физики VaM могут сбросить изменения. Для повторного применения сохраните пресет на диск; после загрузки одежды примените его через Clothing Eraser. Положение и скорость уже упавшего куска пресет не сохраняет.
Если выключить Keep changes on disable/remove, отключение временно возвращает исходные маски и физику, а включение применяет правки снова. Удаление в этом режиме возвращает оригинал.
Refresh clothing и выбор другой одежды по-прежнему освобождают предыдущую выбранную одежду с восстановлением: сохраните её пресет перед переключением.

ЗАГРУЗКА
Наденьте и выберите ту же одежду. Нажмите Browse and load preset и выберите именованный JSON. Reload selected preset повторяет загрузку.
Старые пресеты v1–v3 с preset.json в отдельных подпапках поддерживаются. Их можно открыть в прежнем месте.
Проверяются UID одежды, состав материалов, UV tiling/offset, разрешение и контрольные суммы PNG. Все файлы проверяются до применения. Undo stroke отменяет загрузку.
Для переноса копируйте JSON, JPG и все перечисленные в JSON PNG-маски. Для старых пресетов удобнее копировать всю их подпапку. Ручное изменение PNG нарушает контрольную сумму.
Это пресеты Clothing Eraser, не штатные clothing presets VaM. Одна альфа-текстура в штатном пресете не сохраняет разрезанные физические связи.

РИСОВАНИЕ
Выберите одежду и включите Enable editing. Show brush projection показывает место и форму попадания.
Space + левая кнопка — стирать; Space + Shift + левая кнопка — восстанавливать.
Кисти выбираются в списке Brush слева. Undo stroke отменяет мазок; Restore selected clothing возвращает исходную маску и пересчитывает физику.
Проекция обновляется до 20 раз в секунду, не меняет маски и не попадает в экспортированные PNG. Учитывается ближайшая поверхность выбранной одежды, а не перекрывающие её посторонние объекты. Общие UV могут зеркалить мазки.

КОЛЛИЗИИ
Erase collisions (experimental) отключает CollisionEnabled физических частиц, где видимость снижена до 10% исходной. Общая частица сохраняет коллизии, если связанная с ней вершина остаётся видимой. Исходные прозрачные места не считаются новой правкой.
Нужна активная SIM-физика и корректная карта соответствия UV/частиц. При неподдерживаемой разметке показывается ошибка, режим отключается. Для одежды без доступной физики остаётся визуальное стирание.
Обновление до 10 раз в секунду во время рисования требует синхронного чтения GPU; при задержках можно выключить режим.

ОТДЕЛЕНИЕ КУСКОВ
Detach loose pieces (experimental) выключен по умолчанию. После мазка удаляются треугольники у стёртых физических частиц и нейтрализуются связывающие пружины, включая связи через разрез.
Участок без собственных креплений к телу и без связи с закреплённой частью может падать. Даже мягкие собственные крепления сохраняются. Трение, контакт и настройки гравитации могут удерживать свободную часть.
Free pieces / Anchored pieces — результат анализа связности, а не подтверждение фактического падения. Коллизии видимых частей сохраняются.
Узкий разрез может не задеть физические частицы — расширьте его. На границе удаляются целые треугольники; край может стать шире или угловатее альфа-маски. Сглаживание временно выключается, чтобы края не стягивались через разрез.
Восстановление соединений сбрасывает физическую позу всей выбранной поверхности, чтобы упавшие части не растягивали ткань. Отмена мазка не возвращает прежнюю анимационную позу.
При пересоздании буферов режим может остановиться; выключите и включите его снова. Несколько обёрток с общей симуляцией не поддерживаются. Не запускайте ClothingRipper одновременно на той же одежде.

ПРОВЕРКИ И ОГРАНИЧЕНИЯ
Проверены синтаксис C#, модель связности, порядок сохранения, совместимость формата, ветки освобождения ресурсов, математическая симметрия асимметричной повёрнутой кисти и однократная обработка пересечений. Просмотрены диагностические силуэты всех семи форм. Сигнатуры DoSaveScreenshot, ScreenShotCallback, RegisterInputField и UI-поля сверены с предоставленной Assembly-CSharp.dll.
Компиляция, новые кисти, симметрия и интерфейс непосредственно внутри VaM здесь не проверялись. При ошибке пришлите полный текст из Error Log.

АВТОРСТВО РЕФЕРЕНСА
Принцип нейтрализации пружин самосвязью и отключение сглаживания изучены по Mxx.ClothingRipper.2. Mxx: https://www.patreon.com/Mxx . В референсе указана CC BY после 03.07.2026. Звуки и UI референса в пакет не включены.
