fix(import): сочные цвета в импортированных Roblox-картах
Crossroads-импорт давал тёмно-грязные цвета вместо классических насыщенных Roblox-цветов: - трава тёмно-зелёная вместо ярко-зелёной - дороги серые вместо белых - крыши приглушённо-красные Причины: 1. mat.ambientColor=(0,0,0) default — scene.ambientColor=(0.3,0.3,0.3) не действовал. Тени получали 0 контрибьюшна цвета. 2. material=glossy (default для Roblox Plastic) шёл в case default: только specularColor=(0,0,0), без emissive — цвет blandный. Фикс: - mat.ambientColor=(1,1,1) для всех материалов: подмешивает scene ambient в тени, цвета остаются видны. - Для glossy/default: emissive = 25% цвета (как в studs/45%, но скромнее), specular слабый (0.05). Roblox-look — насыщенный даже без прямого света. Также case 'matte' теперь отдельный (был под default).
This commit is contained in:
parent
0b677529e1
commit
14e173a089
Binary file not shown.
@ -507,6 +507,11 @@ export class PrimitiveManager {
|
|||||||
const matName = `${mesh.name}_mat`;
|
const matName = `${mesh.name}_mat`;
|
||||||
const mat = new StandardMaterial(matName, this.scene);
|
const mat = new StandardMaterial(matName, this.scene);
|
||||||
mat.diffuseColor = Color3.FromHexString(color || '#888888');
|
mat.diffuseColor = Color3.FromHexString(color || '#888888');
|
||||||
|
// ambient — даёт «среднее» освещение боковым граням что не освещены
|
||||||
|
// прямо. Без этого scene.ambientColor=(0.3,0.3,0.3) не работает —
|
||||||
|
// материал тени получает только diffuse от hemi, что приводит к
|
||||||
|
// тёмно-грязным цветам в импортированных Roblox-картах.
|
||||||
|
mat.ambientColor = new Color3(1, 1, 1);
|
||||||
|
|
||||||
// Если задан textureUrl — подгружаем PNG как diffuseTexture. Это
|
// Если задан textureUrl — подгружаем PNG как diffuseTexture. Это
|
||||||
// используется для GD-скинов куба (например /gd/skins/cube_smile.png).
|
// используется для GD-скинов куба (например /gd/skins/cube_smile.png).
|
||||||
@ -567,9 +572,20 @@ export class PrimitiveManager {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'matte':
|
case 'matte':
|
||||||
default:
|
|
||||||
mat.specularColor = new Color3(0, 0, 0);
|
mat.specularColor = new Color3(0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
case 'glossy':
|
||||||
|
default: {
|
||||||
|
// Roblox Plastic — это белый specular маленький + цвет «сочный»
|
||||||
|
// даже в тени. Подмешиваем 25% цвета в emissive чтобы избежать
|
||||||
|
// грязных тёмных пятен в импортированных Roblox-картах
|
||||||
|
// (Crossroads и подобные). Specular низкий и нейтральный.
|
||||||
|
const dc = Color3.FromHexString(color || '#cccccc');
|
||||||
|
mat.emissiveColor = new Color3(dc.r * 0.25, dc.g * 0.25, dc.b * 0.25);
|
||||||
|
mat.specularColor = new Color3(0.05, 0.05, 0.05);
|
||||||
|
mat.specularPower = 64;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Триггеры — всегда полупрозрачные жёлтые в редакторе
|
// Триггеры — всегда полупрозрачные жёлтые в редакторе
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user