Я создал куб (skybox), который использует разные материалы для каждой стороны. Там нет никаких проблем с этим с помощью MeshFaceMaterial
:Three.js: Объедините материалы на одной грани куба (который использует несколько материалов)
var imagePrefix = "images-nissan/pano_";
var imageDirections = ["xpos", "xneg", "ypos", "yneg", "zpos", "zneg"];
var imageSuffix = ".png";
var skyGeometry = new THREE.BoxGeometry(1, 1, 1);
var materialArray = [];
for (var i = 0; i < 6; i++) {
materialArray.push(new THREE.MeshBasicMaterial({
map: THREE.ImageUtils.loadTexture(imagePrefix + imageDirections[i] + imageSuffix),
side: THREE.BackSide
}));
}
var skyMaterial = new THREE.MeshFaceMaterial(materialArray);
var skyBox = new THREE.Mesh(skyGeometry, skyMaterial);
skyBox.name = "interiorMesh";
scene.add(skyBox);
Однако, сейчас я хотел бы добавить материал к одной из граней куба и объединить материалы по этой грани куба.
Поэтому в основном я бы один материал на 5 граней и 2 материалов на 1 грань кубы - Я хочу, чтобы наложить, что «оригинальной» текстуры с другим прозрачным PNG, так что покрывает только определенную часть оригинала изображение. Оба изображения имеют одинаковые размеры, только новый один частично прозрачный. Возможно ли это с CubeGeometry? Или мне нужно сделать это с самолетами? Любая помощь очень ценится!
Вы можете создать собственный GLSL шейдер, который сочетает в себе 2-х цветов (col1.rgb + (col2.rgb * col1.a)) или вы можете использовать метод самолет. Остерегайтесь прозрачности, хотя она не может работать так, как вы ожидаете. – beiller