【发布时间】:2020-06-01 19:08:36
【问题描述】:
我希望用户能够在矩形上旋转纹理,同时保持纹理图像的纵横比不变。我正在矩形表面上旋转 1:1 纵横比图像(比如width: 2 和length: 1)
重现步骤: 在下面的纹理旋转示例中
https://threejs.org/examples/?q=rotation#webgl_materials_texture_rotation
如果我们改变几何体的一个面,如下所示:
https://github.com/mrdoob/three.js/blob/master/examples/webgl_materials_texture_rotation.html#L57
var geometry = new THREE.BoxBufferGeometry( 20, 10, 10 );
然后您可以看到,当您使用旋转控件时,图像的纵横比会失真。 (把一个正方形变成一个奇怪的形状)
我知道通过更改 repeatX 和 repeatY 因子我可以控制它。也很容易看出 0 度、90 度旋转时的值。
但我正在努力想出repeatX 和repeatY 的公式,该公式适用于给定矩形面length 和width 的任何纹理旋转。
【问题讨论】:
-
@gaitat 感谢您的建议,我已经阅读过,所有文章问题显示的是要更改哪个属性来编辑比例和偏移量。我已经知道可以通过编辑这些属性来完成。但问题是,是否有一种方法可以在不扭曲原始图像比例的情况下更改这些属性。
-
这看起来像一个三角问题。如果你可以设置一个 JSfiddle 或类似的,我会研究它......
-
我不完全确定您完成的结果应该是什么样子。您是否尝试在保持宽矩形的同时应用旋转而不获得拉伸的“菱形”外观?
标签: three.js