Использование alphaMap не обеспечивает прозрачности в моем материале


Я пытаюсь создать поверхность цепочки. У меня есть 2 текстуры; стандартная карта, которая имеет металлический вид металлических звеньев с белым фоном (диффузный):

У меня также есть альфа-Карта:

Я пытаюсь применить их оба к MeshBasicMaterial Без удачи:

var chainlinkMask = THREE.ImageUtils.loadTexture('textures/chainlink_Large-Panels_mask.png');
chainlinkMask.wrapS = THREE.RepeatWrapping;
chainlinkMask.wrapT = THREE.RepeatWrapping;
chainlinkMask.repeat.set( 2, 2 );

var chainlinkDiffuse = THREE.ImageUtils.loadTexture('textures/chainlink_Large-Panels_Diffuse.png');
chainlinkDiffuse.wrapS = THREE.RepeatWrapping;
chainlinkDiffuse.wrapT = THREE.RepeatWrapping;
chainlinkDiffuse.repeat.set( 2, 2 );

material.map = chainlinkMask;
material.alphaMap = chainlinkDiffuse;
material.transparency = true;
material.side = THREE.DoubleSide;

Это дает мне следующее:

Как видите, Альфа-карта не применяется.

Почему бы и нет?

Любая помощь ценится.

3 2

3 ответа:

Попробуйте установить параметр transparent в true вместо transparency

material.transparent = true;

Если вы используете Альфа-карту, используйте один из этих двух шаблонов при определении вашего материала:

alphaMap: texture,
transparent: true,

Или

alphaMap: texture,
alphaTest: 0.5, // if transparent is false
transparent: false,

Используйте последнее, если это возможно, и избегайте артефактов, которые могут возникнуть, когда прозрачный истинен.

Три.Яш Р.85

Прямое использование material.transparent вызовет проблему рендеринга, например. у вас есть 2 плоскости корсинга с каждой из них применены material.transparent = true и material.side = DoubleSide. поверните его, и вы увидите проблему рендеринга. просто используйте решение @WestLangley, упомянутое выше.