当我更改纹理时,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;
当我在 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;