1. PrimitiveManager: mat.ambientColor=(1,1,1). Теперь scene.ambientColor
("Заливка теней" слайдер) реально влияет на тени. Юзер крутит
значение и видит изменение.
2. converter.py: Roblox-Part импортируется всегда с Anchored=True
(force-anchored). Welds у нас заглушки, без них unanchored Part'ы
рассыпаются физикой. Если юзеру нужно падающее — снимет в
инспекторе вручную.
Деплой converter.py на VM 130 + systemctl restart.
Главная причина пересвета:
1. BrickColor 151 (Earth green = трава Crossroads) ОТСУТСТВОВАЛ
в таблице. Пол получал дефолт #cccccc и выглядел белым.
После анализа карты 344 примитива использовали дефолт.
2. mat.ambientColor=(1,1,1) + scene.ambientColor=(0.3) делало белые
цвета пересветлёнными — серый выглядел белым.
Фикс:
- BRICKCOLOR_TO_HEX расширен с ~50 до ~120 цветов. Добавлены:
151 (Earth green), 26 темный, 18, 115-148, 168-301, 1021-1032 и др.
После: #cccccc дефолт 344→68 (бОльшая часть теперь правильных).
- Убран mat.ambientColor — оставлен default (0,0,0). Lambert чистый:
освещённая грань = diffuse, тень = почти чёрная (scene.ambient смягчает).
Цвета теперь точно как в diffuse, без пересвета.
Деплой: converter.py скопирован на VM 130 + systemctl restart.
Старые Roblox-карты (Crossroads, ROBLOX Battle, и др. из эры 2007-2010)
сохранены в XML-формате (<roblox version=4>... вместо binary <roblox!...).
Наш парсер падал на 'missing <roblox! magic'.
Новое:
- rbxl_xml_parser.py: парсит XML-формат через стандартный xml.etree.
Поддерживает все типичные property-теги: string, bool, int, float,
Vector3, Vector2, CoordinateFrame, Color3, Color3uint8, BrickColor,
Ref, BinaryString, UDim/UDim2, PhysicalProperties, OptionalCFrame.
- В _parse_property: <int name=BrickColor> заворачивается в BrickColor
объект — converter ожидает .code атрибут.
- Алиасы PascalCase: name→Name, size→Size, shape→Shape (старый XML
использовал camelCase с маленькой первой буквой).
app.py:
- /analyze: авто-детект XML vs Binary по magic bytes. Если XML —
используем parse_xml(), иначе старый parse().
Тест на arch1_Original_Crossroads.rbxl: 877 instances, 777 Part,
83 Model — конвертится в 777 примитивов без warnings.