我正在制作一个360度浏览器,所以纹理位于圆柱体内。问题在于它们水平颠倒。
我知道 texture.flipY
,但是在源代码中没有找到texture.flipX
。
那么我该如何在代码中直接将纹理水平翻转或沿x轴翻转?(而不使用图像编辑器)
我正在制作一个360度浏览器,所以纹理位于圆柱体内。问题在于它们水平颠倒。
我知道 texture.flipY
,但是在源代码中没有找到texture.flipX
。
那么我该如何在代码中直接将纹理水平翻转或沿x轴翻转?(而不使用图像编辑器)
要水平翻转纹理,您可以执行以下操作:
texture.wrapS = THREE.RepeatWrapping;
texture.repeat.x = - 1;
three.js r.147
答案比我想象的要简单。
cylinder.scale.x = -1;
别忘了添加
material.side = THREE.DoubleSide;
这可能看起来有些过度,但我认为一个不错的方法是将它围绕中心旋转180度(PI弧度),然后翻转它:
texture.center = new THREE.Vector2(0.5, 0.5);
texture.rotation = Math.PI;
texture.flipY = false;
这里的另一种方法是改变几何形状。在圆柱几何中,您可以指定thetaStart
和thetaLength
以渲染您想要的圆柱截面,并且通常选择正角度,即thetaLength>0
。如果相反地将thetaStart + thetaLength
和-thetaLength
传递给CylinderBufferGeometry
,则圆柱体将顺时针而不是逆时针渲染,并且所有面法线现在都指向内部。因此,不再需要翻转纹理。
RepeatWrapping
会失败。 - Summer Sun