2

我正在通过three.js 渲染一个球体,当我应用纹理时它工作得很好。然而,我用来制作标记的方程式并不是我可以玩弄的。如何在球体上旋转纹理,以便根据标记位置对齐图像?特别是在x方向。

问题...标记应该在日本鹿儿岛和中国香港标记应在日本鹿儿岛和中国香港上空

应该是……不,我没有解决它……这应该是它的样子,而不是现在的样子不,我没有解决它......这是它应该看起来的样子,而不是现在的样子

var geometry = new THREE.SphereGeometry(200, 40, 30);

    shader = Shaders['earth'];
    uniforms = THREE.UniformsUtils.clone(shader.uniforms);

    uniforms['texture'].texture = THREE.ImageUtils.loadTexture('/images/world5.png');
    texture.wrapS = THREE.RepeatWrapping; // This causes globe not to load
    texture.offset.x = radians / ( 2 * Math.PI ); // causes globe not to load
    material = new THREE.MeshShaderMaterial({

          uniforms: uniforms,
          vertexShader: shader.vertexShader,
          fragmentShader: shader.fragmentShader

        });
    mesh = new THREE.Mesh(geometry, material);
    mesh.matrixAutoUpdate = false;
    scene.addObject(mesh);
4

2 回答 2

4

要将纹理移动一定数量radians的经度,请使用以下模式:

texture.wrapS = THREE.RepeatWrapping; // You do not need to set `.wrapT` in this case

texture.offset.x = radians / ( 2 * Math.PI );

三.js r.58

于 2013-07-10T19:02:36.360 回答
1

要改变纹理看看这个问题,这是另一个对我有用的解决方案。

于 2014-02-04T10:48:38.570 回答