三个 js - 单个对象上的多个 textures/images
Three js - Multiple textures/images on single object
我想实现以下目标:从搅拌机导出 1 个对象 -> 将 2 个不同的纹理应用到 2 个不同的顶点组(手柄和袋子主体)
加载模型的函数:
function loadModel() {
var textureLoader = new THREE.TextureLoader();
var map = textureLoader.load('./leather.jpg');
var material = new THREE.MeshPhongMaterial({map: map});
var loader = new THREE.OBJLoader();
loader.load("bag.obj", function(object) {
object.rotation.y = 90;
scene.add(object);
object.traverse( function ( node ) {
if ( node.isMesh ) node.material = material;
} );
document.querySelector("h1").style.display = "none";
});
}
这将给出:
如何访问不同的顶点组并为其分配不同的纹理?例如,手柄可以是木头的。
在 Blender 的大纲视图中,分离顶点 groups/meshes 并相应地重命名它们 "bagHandle" 和 "bagBody"。
以下代码应该可以工作。
function loadModel() {
var textureLoader = new THREE.TextureLoader();
var bagBodyMap = textureLoader.load('./leather.jpg');
var bagBodyMaterial = new THREE.MeshPhongMaterial({map: bagBodyMap});
var bagHandleMap = textureLoader.load('./wood.jpg');
var bagHandleMaterial = new THREE.MeshPhongMaterial({map: bagHandleMap});
var loader = new THREE.OBJLoader();
loader.load("bag.obj", function(object) {
object.rotation.y = 90;
scene.add(object);
object.traverse( function ( node ) {
if ( node.isMesh ){
if ( node.name == "bagHandle" ){
node.material = bagHandleMaterial;
} else if ( node.name == "bagBody" ){
node.material = bagBodyMaterial;
}
}
});
document.querySelector("h1").style.display = "none";
});
};
我想实现以下目标:从搅拌机导出 1 个对象 -> 将 2 个不同的纹理应用到 2 个不同的顶点组(手柄和袋子主体)
加载模型的函数:
function loadModel() {
var textureLoader = new THREE.TextureLoader();
var map = textureLoader.load('./leather.jpg');
var material = new THREE.MeshPhongMaterial({map: map});
var loader = new THREE.OBJLoader();
loader.load("bag.obj", function(object) {
object.rotation.y = 90;
scene.add(object);
object.traverse( function ( node ) {
if ( node.isMesh ) node.material = material;
} );
document.querySelector("h1").style.display = "none";
});
}
这将给出:
如何访问不同的顶点组并为其分配不同的纹理?例如,手柄可以是木头的。
在 Blender 的大纲视图中,分离顶点 groups/meshes 并相应地重命名它们 "bagHandle" 和 "bagBody"。
以下代码应该可以工作。
function loadModel() {
var textureLoader = new THREE.TextureLoader();
var bagBodyMap = textureLoader.load('./leather.jpg');
var bagBodyMaterial = new THREE.MeshPhongMaterial({map: bagBodyMap});
var bagHandleMap = textureLoader.load('./wood.jpg');
var bagHandleMaterial = new THREE.MeshPhongMaterial({map: bagHandleMap});
var loader = new THREE.OBJLoader();
loader.load("bag.obj", function(object) {
object.rotation.y = 90;
scene.add(object);
object.traverse( function ( node ) {
if ( node.isMesh ){
if ( node.name == "bagHandle" ){
node.material = bagHandleMaterial;
} else if ( node.name == "bagBody" ){
node.material = bagBodyMaterial;
}
}
});
document.querySelector("h1").style.display = "none";
});
};