diff --git a/src/editor/engine/PrimitiveManager.js b/src/editor/engine/PrimitiveManager.js index 0f501a8..7d2c160 100644 --- a/src/editor/engine/PrimitiveManager.js +++ b/src/editor/engine/PrimitiveManager.js @@ -507,10 +507,10 @@ 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) делает картинку плоской; 0.5 — нормальный компромисс. - mat.ambientColor = new Color3(0.5, 0.5, 0.5); + // ambient (1,1,1) — позволяет scene.ambientColor (0.3,0.3,0.3) подсветить + // тени до 30% яркости цвета. На прямом свете diffuse доминирует. + // Без emissive — контраст света/тени сохраняется как в Roblox. + mat.ambientColor = new Color3(1, 1, 1); // Если задан textureUrl — подгружаем PNG как diffuseTexture. Это // используется для GD-скинов куба (например /gd/skins/cube_smile.png). @@ -575,11 +575,10 @@ export class PrimitiveManager { break; case 'glossy': default: { - // Roblox Plastic — лёгкий specular + чуть emissive чтобы цвет - // не тух в тенях. 8% emissive — сохраняем контраст света/тени - // (как в Roblox: видны грани, объём, тени от строений). - const dc = Color3.FromHexString(color || '#cccccc'); - mat.emissiveColor = new Color3(dc.r * 0.08, dc.g * 0.08, dc.b * 0.08); + // Roblox Plastic — слабый specular, без emissive. + // diffuse=#cccccc должно выглядеть СЕРЫМ (как в Roblox). + // ambient (от scene 0.3 × mat.ambient 0.4) даёт цвет в тенях, + // но не убивает контраст. mat.specularColor = new Color3(0.05, 0.05, 0.05); mat.specularPower = 64; break;