基本上我喜欢将网格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 );
答案 0 :(得分:2)
这是一个几何问题。
之前我没有使用过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
。方法2:
mesh3
缩放k
。mesh3
,mesh31
和mesh32
的两半,使其分别位于mesh1
和mesh2
。mesh1
= mesh31
和mesh2
= mesh32
。方法非常相似。记住three.js的API,以选择最佳方法。
注意:您无需渲染mesh3
。它只作为计算辅助工具存在。
<强>共性:强>
上面提出的想法也可以用于其他情况,其中需要缩放共享共同特征的几何图形。
希望这有帮助。
PS:我意识到这个答案有点抽象。尽管如此,我希望它有所帮助。