当我更改纹理时,threejs 个人 uvs 不起作用

threejs personal uvs dont work when i change texture

当我在 JavaScript 中加载带有自定义 uv 的模型时,它在我加载模型时工作正常:

var loader=new THREE.JSONLoader();
    loader.load(
    name .js',
    function ( geometry, materials ) {
        var material = new THREE.MeshFaceMaterial( materials );
        var object = new THREE.Mesh( geometry, material );
        object.position.y = -10;
        object.name = name; 
        view3D.scene.add( object );
    }, onProgress, onError) 

我创建了一个新纹理:

function CreateTextureMaterial(ImageName){
    var Texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); 
    var Material = new THREE.MeshBasicMaterial({ 
    map:Texture});
    return Material;
}

然后我将它加载到模型上:

function ChangeTexture(ObjectName, TextureMaterial){
    obj = scene.getObjectByName(ObjectName);
    obj.material = TextureMaterial;
}

它没有像我预期的那样工作 - 它加载了默认的 uvs 集,但不是文件之一。我尝试使用:

var obj = scene.getObjectByName(ObjectName);
var Texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); 
var Material = new THREE.MeshBasicMaterial({ 
map:obj.geomerty.faceVertexUvs});
obj.material=Material;

在我什么也看不见之后。我需要做什么?

因为 MeshFaceMaterial 有点像是 material 的集合,与单个 material 不同,例如 MeshBasicMaterial 的实例。

此外,您必须为 map 应用 图像 纹理。

你也可以这样做。

var texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); var myBasicMaterial = new THREE.MeshBasicMaterial({ map: texture }); obj.material.materials[ 0 ] = myBasicMaterial;