[英]Scale mesh1, mesh2 automatically change it's position?
基本上,我喜欢将网格1的右侧连接到网格2的左侧。
目前,如果我缩放mesh1,则必须重新定位mesh2,以使其具有与以前相同的距离。
因此,将网格1缩放到z:2
var tween = new TWEEN.Tween(mesh1.scale).to({ z: 2 }, 1000).start();
tween.easing(TWEEN.Easing.Elastic.InOut);
为了与网格1保持相同的距离,我必须将网格2重新定位为z:1.5
var tween = new TWEEN.Tween(mesh2.position).to({ z: 1.5 }, 1000).start();
tween.easing(TWEEN.Easing.Elastic.InOut);
连接彩色网格面时是否有任何选择? 那么,如果我缩放网格1,则网格2会自动更改其位置?
...
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var mesh1 = new THREE.Mesh( geometry,
new THREE.MeshPhongMaterial({color: 0x222222}));
mesh1 .position.set( 0, 0, 0 );
mesh1 .scale.set( 1, 1, 1 );
scene.add( mesh1 );
var mesh2 = new THREE.Mesh( geometry,
new THREE.MeshPhongMaterial({color: 0x222222}));
mesh2 .position.set( 0, 0, 1 );
mesh2 .scale.set( 1, 1, 1 );
scene.add( mesh2 );
这是一个几何问题。
我以前没有使用three.js,但我相信我有一个几何解决方案。
考虑一个第三假想目, mesh3
,使得它的组合mesh1
和mesh2
。
那是:
mesh1: position(0, 0, 0), scale(1, 1, 1);
mesh2: position(0, 0, 1), scale(1, 1, 1);
mesh3: position(0, 0, 0), scale(1, 1, 2); // Loosely, mesh3 = mesh1 + mesh2
现在,用标量k
缩放结构,我提出了两种方法:
方法1:
mesh1
和mesh3
各自通过k
。 mesh3
和mesh1
, meshDiff
。 mesh2
= meshDiff
。 方法二:
k
缩放mesh3
。 mesh3
, mesh31
和mesh32
两半, mesh3
使它们分别沿着mesh2
mesh1
和mesh2
定向。 mesh1
= mesh31
和mesh2
= mesh32
。 这些方法非常相似。 请记住three.js的API,以选择最佳方法。
注意:不需要渲染mesh3
。 它仅作为计算辅助而存在。
概论:
上面提出的想法也可以用在其他情况下,其中共享一个公共特征的几何形状需要缩放。
希望这可以帮助。
PS:我知道这个答案有点抽象。 尽管如此,我希望它会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.