我有一個THREE.Points對象,我試圖變身爲另一種形狀。如果我簡單地將對象的幾何設置爲新幾何,頂點將自動更新到其新位置:Morphing THREE.Points對象在一段時間內
object.geometry = new THREE.SphereGeometry();
但是,我希望頂點「移動」到他們的新位置,而不是立即出現在那裏。我考慮使用Tweenjs爲每個頂點創建一個新的補間。這似乎工作,但真的laggy,當你有成千上萬的頂點操縱:
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支持它們。
謝謝!這正是我正在尋找的。 –