如何水平翻转 Three.js 纹理

How to flip a Three.js texture horizontally

我正在制作 360 度查看器,因此纹理位于圆柱体内。问题是它们水平倒置。

我知道 texture.flipY 但我还没有在 the source 上找到 texture.flipX

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

答案比我想象的要简单。

cylinder.scale.x = -1;

别忘了添加

material.side = THREE.DoubleSide;

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

texture.wrapS = THREE.RepeatWrapping;
texture.repeat.x = - 1;

如评论中所述,此方法要求纹理大小为二次方。

three.js r.87

此处的另一种方法是更改​​几何图形。在圆柱体几何体中,您为要渲染的圆柱体部分指定 thetaStartthetaLength,通常您选择正角,即 thetaLength>0。相反,如果您将 thetaStart + thetaLength-thetaLength 传递给 CylinderBufferGeometry,则圆柱体将顺时针渲染而不是 counter-clockwise,并且所有面法线现在都指向内部。所以,再也不需要翻转纹理了。

这似乎有点矫枉过正,但我​​认为一个很好的方法是围绕它的中心旋转 180 度(PI 弧度)然后翻转它:

texture.center = new THREE.Vector2(0.5, 0.5);
texture.rotation = Math.PI;
texture.flipY = false;