Использование 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 ответа:
Если вы используете Альфа-карту, используйте один из этих двух шаблонов при определении вашего материала:
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, упомянутое выше.