Was sind die besten Optionen für Animationen (Texturanimationen, bewegliche Objekte, Verstecken/Anzeigen von Objekten, ...) in three.js? Verwenden Sie extra lib. wie Tween.js oder etwas anderes? Vielen Dank.Beste Optionen für Animation in THREE.JS
Antwort
Tween.js ist die beliebte Art und Weise zu gehen ... überprüfen Sie den Artikel auf: http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/
Viele stimmen zu, dass Sie RequestAnimationFrame benötigen Browserleistung zu verwalten. Three.js enthält sogar eine cross-browser shim for it.
Ich würde auch empfehlen Frame.js für die Verwaltung von Timeline-basierten Rendern. RequestAnimationFrame macht gute Arbeit, aber nur eine minimale Framerate basierend auf der Leistung des Browsers. Bessere Flusskontrollbibliotheken wie Frame bieten die Möglichkeit, eine maximale Bildrate zu erzielen und mehrere intensive Operationen besser zu verwalten.
Außerdem ist Javascript FSM ein wesentlicher Bestandteil meiner three.js Anwendungen geworden. Unabhängig davon, ob Sie eine Benutzeroberfläche oder ein Spiel erstellen, müssen die Objekte über Status verfügen, und eine sorgfältige Verwaltung von übergehenden Animationen und Regeln ist für jede komplexe Anwendungslogik unerlässlich.
Und ja, Sie brauchen eine Erleichterung Bibliothek. Ich benutze oft die jQuery.easing plugin. Es ist ein Plugin für jQuery.animate, aber die Lockerung Funktionen können auch wie folgt zugegriffen werden:
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);
Das jQuery-Plugin, und die meisten Lockerung Plugins sind auf Robert Penner's ActionScript2 easing library basieren, die, wenn die t Check-out wert ist b , c, d Ding oben sieht seltsam aus.
Seit der Version r48 (glaube ich) enthält three.js RequestAnimationFrame im Kern. Danke, ich sehe Plugins dafür. – soil
Copy Paste this:
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)
}
Der ursprüngliche Autor ist: http://paulirish.com/2011/requestanimationframe-for-smart-animating/
Ich habe dies mit menschlichen Eigenschaften (ruckartig) umkreisen zu emulieren, aber es kann auch für andere Animationen wie Objekt Übersetzungen verwendet werden, Positionen und Rotationen.
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();
}
kleine Razzia im Jahr 2017: Aktivieren Sie diesen einfachen Timeline-lib aus, die den oben genannten FSM leicht auslösen können (statebased anim) & tween.js (glatt anim):
Danke! Genau das, was ich gesucht habe. Irgendwelche Alternativen oder ist es die beste? –
- 1. Three.js Animation
- 2. Deaktivieren der Animation in three.js
- 3. Three.js - avatar animation
- 4. Three.js Verwenden von 2D-Textur \ Sprite für Animation (planeGeometry)
- 5. Flash Animation in einer Android App - Optionen?
- 6. THREE.JS und Tasten für Start und Pause Animation
- 7. Three.js - Lärm Animation nur aus THREE.FilmPass()
- 8. Putting three.js Animation innerhalb von div
- 9. Ogre Exporteur für three.js
- 10. Der beste Weg, Graphen mit Three.js
- 11. GUI-System für three.js
- 12. Blender Export für THREE.js
- 13. Dokumentation für three.js-Steuerelemente?
- 14. Qt beste Wahl für die Animation auf eingebettet?
- 15. Animation Listener für benutzerdefinierte Animation
- 16. three.js äußeres Leuchten für Kugelobjekt?
- 17. highlight THREE.Line in three.js
- 18. STL exporter für BufferGeometry in THREE.js
- 19. Korrektur für das perspektivische Beschneiden in Three.js
- 20. Multi-Stop-Gradient in Three.js für Linien
- 21. Three.js Ray Casting für Kollisionserkennung
- 22. Beste (effizienteste) Möglichkeit, dynamische Optionen in angularjs anzuzeigen
- 23. Animiertes GIF als Textur in THREE.js
- 24. Animiere ein prozedurales Meer in Three.js
- 25. Optionen für die HTML-Bearbeitung in JavaFX
- 26. Kollision für Child-Mesh für Three.js erkennen
- 27. Beste Logger für Kakao
- 28. Schienen, Optionen für das Modell
- 29. Scala Namenskonvention für Optionen
- 30. Optionen für CD-Brennbibliotheken?
Dank. Und für die Texturanimation sind die besten Optionen das? https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/Texture-Animation.html – soil
Nun, ich bin voreingenommen, weil ich das selbst geschrieben habe. Es könnte einen besseren Weg geben, Sprites und uVOffsets zu verwenden, aber der Code, auf den du dich beziehst, funktioniert gut für mich - für die Live-Demo siehe: http://stemkoski.github.com/Three.js/Texture-Animation.html –
Und wann werde ich ParticleSystem mit texture.offset verwenden? Es ist am einfachsten als Sprite? Oder THREE.Sprite und THREE.Particle System ist das gleiche für die Leistung? Ich meine, der Sprite hat viele nutzlose Möglichkeiten für mich. – soil