在three.js中動畫(紋理動畫,移動對象,隱藏/顯示對象,...)的最佳選擇是什麼?你使用額外的lib。如tween.js或其他東西?謝謝。THREE.JS中的動畫的最佳選擇
回答
Tween.js是流行的路要走......在檢查的文章: http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/
許多人認爲你需要RequestAnimationFrame管理瀏覽器的性能。 Three.js甚至包括一個cross-browser shim for it。
我也建議Frame.js管理基於時間線的渲染。 RequestAnimationFrame做得很好,但只保留基於瀏覽器性能的最低幀率。像Frame這樣的更好的流量控制庫可以提供最大的幀速率,並且更好地管理多個密集型操作。
此外,Javascript FSM已成爲我的three.js應用程序的重要組成部分。無論您是在構建UI還是遊戲,對象都必須具有狀態,並且對任何複雜的應用程序邏輯都必須認真管理轉換動畫和規則。
是的,你需要一個緩存庫。我經常使用jQuery.easing plugin。這是jQuery.animate一個插件,但寬鬆的功能也可以像這樣訪問:
var x = {}; // an empty object (used when called by jQuery, but not us)
var t = currentTime;
var b = beginningValue;
var c = potentialChangeInValue;
var d = durationOfAnimation;
valueAtTime = jQuery.easing.easeOutExpo(x, t, b, c, d);
這個jQuery插件,最寬鬆的插件是基於Robert Penner's ActionScript2 easing library,這是值得一試,如果T,B ,c,d上面的東西看起來很奇怪。
從版本r48(我認爲)three.js包括核心的RequestAnimationFrame。謝謝,我看到了插件。 – soil 2012-08-01 05:48:50
複製粘貼此:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
(function animloop(){
requestAnimFrame(animloop);
render();
})();
function render()
{
// DO YOUR STUFF HERE (UPDATES AND DRAWING TYPICALLY)
}
原作者是:http://paulirish.com/2011/requestanimationframe-for-smart-animating/
我做了這個模仿人類的特性(幹),軌道,但它可以用於其他動畫一樣物體平移,位置和旋轉。
function twController(node,prop,arr,dur){
var obj,first,second,xyz,i,v,tween,html,prev,starter;
switch(node){
case "camera": obj = camera; break;
default: obj = scene.getObjectByName(node);
}
xyz = "x,y,z".split(",");
$.each(arr,function(i,v){
first = obj[prop];
second = {};
$.each(v,function(i,v){
second[xyz[i]] = v;
})
tween = new TWEEN.Tween(first)
.to(second, dur)
.onUpdate(function(){
$.each(xyz,function(i,v){
obj[prop][xyz[i]] = first[xyz[i]];
})
})
.onComplete(function(){
html = [];
$.each(xyz,function(i,v){
html.push(Math.round(first[xyz[i]]));
})
$("#camPos").html(html.join(","))
})
if(i >0){
tween.delay(250);
prev.chain(tween);
}
else{
starter = tween;
}
prev = tween;
});
starter.start();
}
小綜述在2017年:檢查出這種簡單的時間表-lib的能夠容易地觸發上述FSM(基於狀態阿尼姆)& tween.js(平滑動畫):
謝謝!正是我在找什麼。還有其他的選擇,還是最好的? – 2017-12-11 19:48:33
- 1. Qt嵌入式動畫的最佳選擇?
- 2. 動態查詢的最佳選擇?
- 3. 選擇最佳的輸出
- 4. Simple Three.js動畫
- 5. 可排序/可拖動佈局選擇器的最佳選擇?
- 6. three.js動畫中的生澀動畫動畫
- 7. ::選擇動畫
- 8. 在Flex中使用動畫製作動畫的最佳方式
- 9. Three.js實時動畫
- 10. 鼠標拖動畫線 - 這是Flash還是Flex的最佳選擇?
- 11. Wpf動畫最佳做法
- 12. Iphone動畫最佳實踐
- 13. 如何關閉three.js中的動畫
- 14. MVVM,動畫和命令 - 啓動動畫的最佳方式?
- 15. Three.js:翻譯投影的最佳方法?
- 16. 加速動畫的jquery最佳實踐
- 17. jQuery動畫的最佳策略
- 18. 排隊jQuery動畫的最佳方式
- 19. 選擇最佳矩陣
- 20. 選擇最佳Android佈局
- 21. WaitHandle是最佳選擇嗎?
- 22. 動畫選擇UIButton
- 23. 選擇功能的最佳子集
- 24. 找到IP的最佳選擇
- 25. Power Query - 子選擇的最佳方式?
- 26. $ this-> requestAction()的最佳選擇?
- 27. 什麼是DropCreateDatabaseIfModelChanges(MVC3)的最佳選擇?
- 28. jQuery toggle()方法的最佳選擇?
- 29. Mysql的選擇最佳匹配與像
- 30. 選擇最佳2人的算法
感謝。而對於紋理動畫是最好的選擇呢? https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/Texture-Animation.html – soil 2012-08-01 05:51:36
嗯,我有點偏見,因爲我自己寫了。使用Sprites和uvOffset可能會有更好的方式,但是您提到的代碼對我來說工作正常 - 現場演示請看:http://stemkoski.github.com/Three.js/Texture-Animation.html – 2012-08-01 16:56:33
並且當我將使用帶有texture.offset的ParticleSystem?它比Sprite最簡單嗎?或者THREE.Sprite和THREE.Particle系統的性能是否相同?我的意思是雪碧對我來說有許多無用的選擇。 – soil 2012-08-02 06:23:22