【发布时间】:2017-08-02 18:15:12
【问题描述】:
我有一个 THREE.Points 对象,我正试图将其变形为另一种形状。如果我简单地将对象的几何形状设置为新几何形状,顶点将自动更新到它们的新位置:
object.geometry = new THREE.SphereGeometry();
但是,我希望顶点“移动”到它们的新位置,而不是简单地立即出现在那里。我考虑使用 Tweenjs 为每个顶点创建一个新的补间。这似乎可行,但当您有数千个顶点要操作时,它真的很滞后:
function morph(){
var newGeom = new THREE.SphereGeometry(2.5, 64, 64);
var curGeom = box.mesh.geometry;
var targetVertices = newGeom.vertices;
var curVertices = curGeom.vertices;
var less = targetVertices.length < curVertices.length ?targetVertices : curVertices;
var tween;
var cur, target;
for (var i=0; i<curVertices.length; i++){
cur = curVertices[i];
target = targetVertices[i];
tween = new TWEEN.Tween(cur).to(target, 1000);
tween.start();
box.mesh.geometry.verticesNeedUpdate = true;
}
}
有人有更好的解决方案吗?我也尝试过使用变形目标,但我认为 THREE.Points 不支持它们。
【问题讨论】:
标签: three.js