如何水平翻转Three.js纹理

Pie*_*ier 8 javascript three.js

我正在制作一个360度观看者,所以纹理在圆柱体内.问题是它们看起来是水平倒置的.

我知道texture.flipY,但我还没有找到一个texture.flipX的来源.

那么如何直接在代码中水平或沿x轴翻转纹理呢?(不使用图像编辑器)

Wes*_*ley 16

要水平翻转纹理,您可以执行以下操作:

texture.wrapS = THREE.RepeatWrapping;
texture.repeat.x = - 1;
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,这种方法要求纹理的大小为2的幂.

three.js r.87

  • 我这样做了,但我没有翻转纹理,而是在整个对象上扩展了 1 像素的纹理。 (2认同)

Pie*_*ier 7

答案比我想的要容易。

cylinder.scale.x = -1;
Run Code Online (Sandbox Code Playgroud)

并且不要忘记添加

material.side = THREE.DoubleSide;
Run Code Online (Sandbox Code Playgroud)

  • three.js不支持负比例因子,并且可能导致不良后果,例如反向缠绕顺序和错误的法线。我不推荐此答案中建议的方法-即使您可能已经在其他地方使用过该方法。 (3认同)