fix(import): расширил BrickColor палитру + убрал ambient material
Главная причина пересвета: 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.
This commit is contained in:
parent
3e928e8d4e
commit
3a82b3c64d
Binary file not shown.
@ -103,19 +103,42 @@ SHAPE_TO_PRIMITIVE = {
|
||||
# ────── BrickColor таблица (упрощённая) ──────
|
||||
# Roblox использует old BrickColor enum (числа 1-1032). Только распространённые:
|
||||
BRICKCOLOR_TO_HEX = {
|
||||
1: '#f2f3f3', 5: '#d9e4f7', 9: '#9c9e9c', 11: '#e8eaea',
|
||||
21: '#c4281c', 23: '#0d69ac', 24: '#f5cd30', 26: '#27313e',
|
||||
28: '#293f1a', 29: '#a3bb71', 37: '#4b9740', 38: '#ab5a32',
|
||||
101: '#dab8a3', 102: '#82c1e9', 103: '#9b9696', 104: '#6b327a',
|
||||
105: '#cf8b3e', 106: '#d97e29', 107: '#3a8fbf', 108: '#695b50',
|
||||
111: '#a7a6a6', 119: '#aac84a', 125: '#e8b486', 138: '#8a8a76',
|
||||
141: '#26462b', 153: '#9b605a', 192: '#5a3019', 194: '#9c9b91',
|
||||
199: '#3c3e3f', 208: '#dbdcdc', 224: '#f3e3a5', 226: '#fff8a8',
|
||||
# Базовые тона
|
||||
1: '#f2f3f3', 2: '#a1a5a2', 3: '#f9e999', 5: '#d9e4f7',
|
||||
9: '#9c9e9c', 11: '#e8eaea', 18: '#cc8e69', 21: '#c4281c',
|
||||
23: '#0d69ac', 24: '#f5cd30', 26: '#1b2a35', 28: '#293f1a',
|
||||
29: '#a3bb71', 37: '#4b9740', 38: '#ab5a32', 101: '#dab8a3',
|
||||
102: '#82c1e9', 103: '#9b9696', 104: '#6b327a', 105: '#cf8b3e',
|
||||
106: '#d97e29', 107: '#3a8fbf', 108: '#695b50', 111: '#a7a6a6',
|
||||
115: '#c7d23c', 116: '#56fff0', 118: '#b4d2e4', 119: '#aac84a',
|
||||
120: '#d4f0a6', 123: '#cf6b6f', 124: '#9c54a6', 125: '#e8b486',
|
||||
126: '#a6c2e3', 127: '#deb87b', 128: '#a37e5b', 131: '#9ba19d',
|
||||
133: '#cc7c39', 134: '#de8b5f', 135: '#74859c', 136: '#876a7a',
|
||||
137: '#e6a262', 138: '#8a8a76', 140: '#234770', 141: '#26462b',
|
||||
143: '#bdc3e3', 145: '#5c8aa1', 146: '#75718b', 147: '#9a8a64',
|
||||
148: '#5a605a', 149: '#1b2a47', 150: '#9ea1a3',
|
||||
# ВАЖНО: 151 — Earth green (тёмная трава Crossroads)
|
||||
151: '#7c9b53',
|
||||
153: '#9b605a', 154: '#7a2d2d', 157: '#f5e09c', 158: '#b58c9c',
|
||||
168: '#3c3a37', 176: '#a39989', 178: '#aa724c', 180: '#cc9555',
|
||||
190: '#f7b830', 191: '#e69138',
|
||||
192: '#5a3019', 193: '#f59d24', 194: '#9c9b91', 195: '#447ba6',
|
||||
196: '#283970', 198: '#7b4b85', 199: '#3c3e3f', 200: '#7a854b',
|
||||
208: '#dbdcdc', 209: '#a4733f', 210: '#7d8a8e', 211: '#9da3b3',
|
||||
212: '#a5cce0', 213: '#6584b5', 215: '#7c8aa4', 216: '#8a5040',
|
||||
217: '#7a5443', 218: '#94748a', 219: '#5c5a8a', 220: '#a3a8c4',
|
||||
221: '#cc4488', 222: '#e8a8e0', 223: '#dd7790', 224: '#f3e3a5',
|
||||
225: '#e8b685', 226: '#fff8a8', 232: '#bce0f0', 268: '#3c2e74',
|
||||
301: '#73584b',
|
||||
# Бипалитра 1001-1032 — стандартные яркие цвета
|
||||
1001: '#ffffff', 1002: '#cccccc', 1003: '#000000', 1004: '#ff0000',
|
||||
1005: '#ff8000', 1006: '#ffff00', 1007: '#80c000', 1008: '#00ff00',
|
||||
1009: '#00c080', 1010: '#0080ff', 1011: '#0000ff', 1012: '#5000ff',
|
||||
1013: '#a000ff', 1014: '#ff00ff', 1015: '#ff0080', 1016: '#ff80c0',
|
||||
1017: '#ff8080', 1018: '#ffc080', 1019: '#ffff80', 1020: '#80ff80',
|
||||
1021: '#80c0ff', 1022: '#80ffff', 1023: '#80ff00', 1024: '#00ff80',
|
||||
1025: '#ff4040', 1026: '#8a0028', 1027: '#001f80', 1028: '#4d4d4d',
|
||||
1029: '#9d9d9d', 1030: '#5e3923', 1031: '#7a4f30', 1032: '#cca5a5',
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -507,10 +507,11 @@ export class PrimitiveManager {
|
||||
const matName = `${mesh.name}_mat`;
|
||||
const mat = new StandardMaterial(matName, this.scene);
|
||||
mat.diffuseColor = Color3.FromHexString(color || '#888888');
|
||||
// ambient (1,1,1) — позволяет scene.ambientColor (0.3,0.3,0.3) подсветить
|
||||
// тени до 30% яркости цвета. На прямом свете diffuse доминирует.
|
||||
// Без emissive — контраст света/тени сохраняется как в Roblox.
|
||||
mat.ambientColor = new Color3(1, 1, 1);
|
||||
// ambient НЕ выставляем — иначе scene.ambient (0.3) + ambient(0.4-1.0)
|
||||
// приплюсовывается к diffuse и цвета становятся пересвеченными
|
||||
// (особенно белые/серые становятся пересветлёнными).
|
||||
// Babylon default (0,0,0) даёт чистый Lambert: освещённый цвет=diffuse,
|
||||
// тень=чёрная (что в Roblox смягчается scene.ambient).
|
||||
|
||||
// Если задан textureUrl — подгружаем PNG как diffuseTexture. Это
|
||||
// используется для GD-скинов куба (например /gd/skins/cube_smile.png).
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user