纹理渲染问题

时间:2015-03-05 19:24:32

标签: javascript 3d three.js

Hej,

我在OBJ导入的模型上渲染纹理时遇到问题。

在此图像中,您可以看到纹理的渲染方式。

wrong texture

在这里你可以看到纹理应该如何(映射到对象)

current texture

这是我的代码:

      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);

1 个答案:

答案 0 :(得分:0)

在我看来,你导入的模型没有uvw坐标 将模型加载到3d建模程序中,添加uvw坐标,使用uvw坐标导出。

或者如果你想在代码中这样做,也许这个问题/答案会有所帮助:THREE.js generate UV coordinate