簡體   English   中英

如何水平翻轉 Three.js 紋理

[英]How to flip a Three.js texture horizontally

我正在制作 360 查看器,因此紋理位於圓柱體內。 問題是它們水平倒置。

我知道texture.flipY但我沒有在 source上找到texture.flipX

那么如何直接在代碼中水平或沿 x 軸翻轉紋理呢? (不使用圖像編輯器)

要水平翻轉紋理,您可以執行以下操作:

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

正如評論中提到的,這種方法要求紋理的大小為 2 的冪。

三.js r.87

答案比我想象的要容易。

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;

此處的另一種方法是更改​​幾何形狀。 在圓柱幾何體中,您為要渲染的圓柱部分指定thetaStartthetaLength ,通常選擇一個正角,即thetaLength>0 相反,如果您將thetaStart + thetaLength-thetaLengthCylinderBufferGeometry ,圓柱體將順時針渲染而不是逆時針渲染,並且所有面法線現在都指向內部。 因此,無需再翻轉紋理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM