我加载了一个obj模型,我想给每个表面赋予不同的图像。首先,我测试一个图像。但它看起来很小。有谁知道它是怎么回事?
PIC2
这是我的代码
var loader = new THREE.OBJLoader();
loader.load("./models/scene.obj",function (loadedMesh) {
var materialcolor = new THREE.MeshLambertMaterial({color: 0xffff00});
//
var loader = new THREE.TextureLoader();
var texture = loader.load( 'textures/dlam.jpg', render );
//texture.wrapS = THREE.RepeatWrapping;
//texture.wrapT = THREE.RepeatWrapping;
//texture.repeat.set( 4, 4 );
material = new THREE.MeshBasicMaterial( { map: texture } );
//var material2 = new THREE.MeshPhongMaterial( { map: THREE.ImageUtils.loadTexture('textures/crate.jpg') } );
model=loadedMesh.children[0];
model.material=material;
console.log('model',model);
console.log('model.geometry',model.geometry)
console.log('model.geometry',model.geometry)
console.log('faces',model.geometry.faces)
//model.scale.set(4,4,4);
scene.add(model);
答案 0 :(得分:0)
您的代码存在的一个问题是,在您进行材质设置之前,您的纹理无法完成加载。
您希望将纹理加载后的所有内容放入"已加载的"在TextureLoader()上回调.load ..
R.E。纹理大小.. .try设置texture.repeat.set(10,10)或texture.repeat.set(0.1,0.1) 并使用texture.offset.set(nn,nn)来调整定位。 还设置:
texture.wrapS = texture.wrapT = THREE.RepeatWrapping。
让我知道这是否有帮助!
编辑:只需更仔细地阅读您的评论......
在每张脸上获得不同的纹理会很棘手。基本上我会尝试在像Blender这样的建模软件中制作你想要的东西......然后将其导出为GLTF并加载它。
以编程方式进行操作非常繁琐...但你可以。你必须将你的球体分成不同的部分,每个部分都有自己的材料...... 或者将所有纹理合并为一个大纹理,并将其映射。