Hej,
我在OBJ导入的模型上渲染纹理时遇到问题。
在此图像中,您可以看到纹理的渲染方式。
在这里你可以看到纹理应该如何(映射到对象)
这是我的代码:
loader = new THREE.ImageLoader();
loader.load('./tex/Stuhl1-vorn.jpg', function (image) {
var imageObj = new Image();
imageObj.src = $(image).prop('src');
var canvas = document.createElement("canvas");
canvas.width = imageObj.width;
canvas.height = imageObj.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(imageObj, 0, 0, imageObj.width, imageObj.height, 0, 0, canvas.width, canvas.height);
texture.image = canvas;
texture.needsUpdate = true;
});
var material = new THREE.MeshLambertMaterial({
map: texture,
needsUpdate: true
});
var loader = new THREE.OBJLoader(manager);
loader.load('obj/sitz.obj', function (object) {
object.traverse(function (child) {
if (child instanceof THREE.Mesh) {
child.material = material;
child.side = THREE.FrontSide;
}
});
object.position.y = -400;
scene.add(object);
}, onProgress, onError);
答案 0 :(得分:0)
在我看来,你导入的模型没有uvw坐标 将模型加载到3d建模程序中,添加uvw坐标,使用uvw坐标导出。
或者如果你想在代码中这样做,也许这个问题/答案会有所帮助:THREE.js generate UV coordinate