簡體   English   中英

Three.js-比例模型

[英]Three.js - Scale model

基本上,如果選中單選按鈕,我希望將網格x軸的大小增加“ 1”。 如果取消選中單選按鈕,則我希望將其撤消。

通常,我可以通過簡單地設置x軸的大小來做到這一點:

就像是:

如果選中單選按鈕

mesh.scale.x = 2;

如果未選中單選按鈕

mesh.scale.x = 1;

我遇到的困難是我的網格的當前縮放級別因其他一些因素而變化。 因此,x軸的比例級別可能不是“ 1”,而是例如“ 3.7”。

由於上述功能不起作用,因此我正在數學上尋找簡單地在網格上加上和減去“ 1”的東西。

$('input').change(function () {
    if ($('#radio1').is(":checked")) {
        mesh.scale.x = +1;
    }
    if ($('#radio2').is(":checked")) {
        mesh.scale.x = +2;
    }
});

我的函數存在的問題是它將值添加到先前添加的值之上。 我正在尋找可以在添加新值之前將其減去的值。

如果您考慮一下,規模就是您要乘以的東西。 我想使我的對象大10%,或兩倍於其大小,或小30%。 它通常不是加法運算。 所以我會做:

mesh.scale.x *= 1.1; // to make my mesh 10% bigger

要么

mesh.scale.x *= 0.9; // to make my mesh 10% smaller

您可以將比例因子附加到單選按鈕元素,如下所示:

<input type="radio" value="2" name="scalers" />
<input type="radio" value="1.4" name="scalers" />
<input type="radio" value="3.7" name="scalers" />

然后,JS:

var current_scale = 0;
$("input[name=scalers]").change(function() {
   var new_scale = parseFloat($("input[name=scalers]:checked").val());
   mesh.scale.x -= current_scale;
   mesh.scale.x += new_scale;
   current_scale = new_scale;
});

如另一個答案所述,您可能會誤以為您需要增加和減少比例。 因此正確的JS可能是:

var current_scale = 1;
$("input[name=scalers]").change(function() {
   var new_scale = parseFloat($("input[name=scalers]:checked").val());
   mesh.scale.x /= current_scale;
   mesh.scale.x *= new_scale;
   current_scale = new_scale;
});

暫無
暫無

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

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