fix(import): убрал emissive, только ambient для теней
emissive прибавлялся к diffuse даже на ярком свету — пересвечивал цвета (особенно белые/серые). Новая схема: - emissive = 0 (всегда) - mat.ambientColor = (1,1,1) — пропускает scene.ambientColor (0.3) в тени, делает тени 30% яркости цвета вместо чёрных - На прямом свете diffuse доминирует, всё как должно быть Это должно дать Roblox-look: серый #cccccc выглядит серым, белый выглядит белым, в тенях цвет виден но темнее.
This commit is contained in:
parent
00014717ab
commit
3e928e8d4e
@ -507,10 +507,10 @@ 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 умеренный — чтобы тени не становились грязно-чёрными,
|
// ambient (1,1,1) — позволяет scene.ambientColor (0.3,0.3,0.3) подсветить
|
||||||
// но сохранялся контраст между освещёнными/затенёнными гранями.
|
// тени до 30% яркости цвета. На прямом свете diffuse доминирует.
|
||||||
// (1,1,1) делает картинку плоской; 0.5 — нормальный компромисс.
|
// Без emissive — контраст света/тени сохраняется как в Roblox.
|
||||||
mat.ambientColor = new Color3(0.5, 0.5, 0.5);
|
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).
|
||||||
@ -575,11 +575,10 @@ export class PrimitiveManager {
|
|||||||
break;
|
break;
|
||||||
case 'glossy':
|
case 'glossy':
|
||||||
default: {
|
default: {
|
||||||
// Roblox Plastic — лёгкий specular + чуть emissive чтобы цвет
|
// Roblox Plastic — слабый specular, без emissive.
|
||||||
// не тух в тенях. 8% emissive — сохраняем контраст света/тени
|
// diffuse=#cccccc должно выглядеть СЕРЫМ (как в Roblox).
|
||||||
// (как в Roblox: видны грани, объём, тени от строений).
|
// ambient (от scene 0.3 × mat.ambient 0.4) даёт цвет в тенях,
|
||||||
const dc = Color3.FromHexString(color || '#cccccc');
|
// но не убивает контраст.
|
||||||
mat.emissiveColor = new Color3(dc.r * 0.08, dc.g * 0.08, dc.b * 0.08);
|
|
||||||
mat.specularColor = new Color3(0.05, 0.05, 0.05);
|
mat.specularColor = new Color3(0.05, 0.05, 0.05);
|
||||||
mat.specularPower = 64;
|
mat.specularPower = 64;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user