Javascript 如何克隆three.js几何体?
我试图根据表单传递的比例值计算对象体积。Javascript 如何克隆three.js几何体?,javascript,three.js,Javascript,Three.js,我试图根据表单传递的比例值计算对象体积。 我希望每次都从开始几何体计算比例,所以我的问题是,当我更新几何体时,在下一个值更改时,比例将在更新的几何体上完成。 我想克隆几何体并仅在克隆的几何体上应用比例是可以的,因此每次更改比例值时,我都可以从原始几何体开始,但我不知道如何执行 这是我的密码,有什么建议吗 $(document).on('change', '.scaleBox', function (e) { if (idfile == $(this).attr('idgl')) {
我希望每次都从开始几何体计算比例,所以我的问题是,当我更新几何体时,在下一个值更改时,比例将在更新的几何体上完成。
我想克隆几何体并仅在克隆的几何体上应用比例是可以的,因此每次更改比例值时,我都可以从原始几何体开始,但我不知道如何执行
这是我的密码,有什么建议吗
$(document).on('change', '.scaleBox', function (e) {
if (idfile == $(this).attr('idgl')) {
var val = $(this).val();
if (val <= 0)
val = 0.1;
myObj.scale.set(val, val, val);
myObj.updateMatrix();
myObj.geometry.applyMatrix(myObj.matrix);
myObj.matrix.identity();
myObj.geometry.verticesNeedUpdate = true;
var volume = myVolume(myObj.geometry);
$("#specs-" + idfile).find('.volumeVal').html(myRound(volume, 3));
var box = new THREE.Box3().setFromObject(myObj);
xyzSizes = box.size();
$("#specs-" + idfile).find('.sizesVal').html('x: ' + myRound(xyzSizes.x, 3) + ' y: ' + myRound(xyzSizes.y, 3) + ' z: ' + myRound(xyzSizes.z, 3));
}
});
$(document).on('change','.scaleBox',函数(e){
if(idfile=$(this.attr('idgl')){
var val=$(this.val();
如果(val我通过反转比例因子并重新更新几何体找到了解决方案。
希望这能帮助其他人
这就是结果:
$(document).on('change', '.scaleBox', function (e) {
if (idfile == $(this).attr('idgl')) {
var val = $(this).val();
if (val <= 0)
val = 0.1;
myObj.scale.set(val, val, val);
var box = new THREE.Box3().setFromObject(myObj);
xyzSizes = box.size();
$("#specs-" + idfile).find('.sizesVal').html('x: ' + myRound(xyzSizes.x, 3) + ' y: ' + myRound(xyzSizes.y, 3) + ' z: ' + myRound(xyzSizes.z, 3));
myObj.scale.set(val,val,val);
myObj.updateMatrix();
myObj.geometry.applyMatrix(myObj.matrix);
var volume = myVolume(myObj.geometry);
$("#specs-" + idfile).find('.volumeVal').html(myRound(volume, 3));
myObj.scale.set(1/val,1/val,1/val);
myObj.updateMatrix();
myObj.geometry.applyMatrix(myObj.matrix);
}
});
$(document).on('change','.scaleBox',函数(e){
if(idfile=$(this.attr('idgl')){
var val=$(this.val();
如果(val我通过反转比例因子并重新更新几何体找到了解决方案。
希望这能帮助其他人
这就是结果:
$(document).on('change', '.scaleBox', function (e) {
if (idfile == $(this).attr('idgl')) {
var val = $(this).val();
if (val <= 0)
val = 0.1;
myObj.scale.set(val, val, val);
var box = new THREE.Box3().setFromObject(myObj);
xyzSizes = box.size();
$("#specs-" + idfile).find('.sizesVal').html('x: ' + myRound(xyzSizes.x, 3) + ' y: ' + myRound(xyzSizes.y, 3) + ' z: ' + myRound(xyzSizes.z, 3));
myObj.scale.set(val,val,val);
myObj.updateMatrix();
myObj.geometry.applyMatrix(myObj.matrix);
var volume = myVolume(myObj.geometry);
$("#specs-" + idfile).find('.volumeVal').html(myRound(volume, 3));
myObj.scale.set(1/val,1/val,1/val);
myObj.updateMatrix();
myObj.geometry.applyMatrix(myObj.matrix);
}
});
$(document).on('change','.scaleBox',函数(e){
if(idfile=$(this.attr('idgl')){
var val=$(this.val();
如果@mrapsogos的可能重复,我尝试使用对象克隆,但使用此方法时,每个对象的几何体都相同@mrapsogos的可能重复,我尝试使用对象克隆,但使用此方法时,每个对象的几何体都相同