Кажется, это должно быть просто, но ничего не работает. Я устанавливаю цвета для каждой вершины в сетке, используя applyToMesh с объектом VertexData. У меня простой StandardMaterial, без текстур. Я пытаюсь сделать определенные вершины прозрачными, если они появляются поверх чего-то другого, поэтому я установил «a» в цветах rgba на 0,5. Но сетка все еще остается непрозрачной. Я безуспешно пробовал следующее:

Material.hasAlpha = true

Material.needAlphaBlending (истина)

Material.needAlphaBlendingForMesh (истина)

Material.alphamode = ВАВИЛОН.Engine.ALPHA_COMBINE;

Mesh.visibility = 0,9999 для принудительного альфа-смешивания

0
jomak73 13 Дек 2019 в 05:31

2 ответа

Я сделал небольшую демонстрацию, используя разные материалы и прозрачность:

https://www.babylonjs-playground.com/#2Q4S2S#199

Первый (вспомогательный) материал использует png с каналом прозрачности. Если вы установите для hasAlpha значение true и используете альфа-канал из диффузной текстуры, вы можете получить прозрачность:

var material0 = new BABYLON.StandardMaterial("mat0", scene);
material0.diffuseTexture = new BABYLON.Texture("/textures/down.png", scene);
material0.diffuseTexture.hasAlpha = true;
material0.useAlphaFromDiffuseTexture = true;

Для второго материала я использую диффузный цвет и устанавливаю альфа на 0,5. установка значения false для отбраковки задней поверхности материала также покажет "заднюю грань" меша:

var material1 = new BABYLON.StandardMaterial("mat1", scene);
material1.diffuseColor = new BABYLON.Color3(0, 0, 1, 0.5);
material1.alpha = 0.5;
material1.backFaceCulling = false
0
Raanan W 18 Дек 2019 в 11:31
Однако это не позволяет мне быстро включать или выключать определенные вершины карты. Дело в том, что сетка динамически меняет каждый кадр, и различные пиксели быстро становятся непрозрачными и прозрачными.
 – 
jomak73
27 Дек 2019 в 00:13

Попробуйте mesh.hasVertexAlpha = true Это включило альфа-канал для меня. но это создает некоторую проблему с буферизацией z-индекса меша.

0
Katon Zaky 30 Дек 2019 в 22:54