three.js如何移动映射的起点?

时间:2016-09-19 10:05:41

标签: three.js uv-mapping

我应该如何移动贴图纹理的起点?

这是一个带有uv_grid纹理的obj文件。

Before

它显示了中心的一条线(起点),但我想要做的是将映射的起点移动到下面的一侧。

After

我的代码:

var loader = new THREE.ImageLoader();
loader.load("../img/white.jpg", function(image) {
    texture.minFilter = THREE.LinearFilter;
    texture.image = image;
    texture.wrapS = THREE.ClampToEdgeWrapping;
    texture.wrapT = THREE.ClampToEdgeWrapping;
    texture.needsUpdate = true;
}, onProgress, onError);

var loader = new THREE.OBJLoader();
loader.load('../models/body.obj', function(object) {
    object.traverse(function(child) {

        if (child instanceof THREE.Mesh) {
            child.material.map = texture;
        }
    });
    object.name = "object";
    object.position.y = 0;
    scene.add(object);
}, onProgress, onError);

1 个答案:

答案 0 :(得分:0)

首先应该尝试调整纹理offsetrepeat - 参数,看看是否能给你足够好的结果。

如果这没有帮助,你可能需要创建一个新的UV贴图来做你想要的(你没有提到你想要做的事情)。要创建新的UV贴图,基本上有两种选择:

a)以数学方式在three.js中创建一个新的UV贴图。有一些选择,具有不同的复杂性和或多或少有希望的结果。在你的情况下可能会有一个双前/后平面投影。这有点像从正面和背面拍摄照片并将这两张照片一起用作纹理。

b)但是,特别是如果你想让接缝处于合适的位置,你可能想学习如何使用3d软件进行uv-unwrapping(例如blender。有一个非常好的学习曲线,但是每个3D软件都有和blender是免费的和开源,实际上相当不错)。这是一个视频教程,其中包含许多有用的内容:https://www.youtube.com/watch?v=o9TGJj4DvjU