¿Cuáles son las mejores opciones para animaciones (animaciones de texturas, objetos en movimiento, ocultar/mostrar objetos, ...) en three.js? ¿Usas lib extra? como tween.js o algo más? Gracias.Las mejores opciones para animación en THREE.JS
Respuesta
Tween.js es la forma popular para ir ... compruebe el artículo en: http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/
Muchos coinciden en que es necesario RequestAnimationFrame para gestionar el rendimiento del navegador. Three.js incluso incluye un cross-browser shim for it.
También recomendaría Frame.js para gestionar renders basados en línea de tiempo. RequestAnimationFrame hace un gran trabajo, pero solo mantiene un frame-rate mínimo en función del rendimiento del navegador. Mejores bibliotecas de control de flujo como Frame ofrecen la capacidad de tener una velocidad de cuadros máxima y administrar mejor múltiples operaciones intensivas.
Además, Javascript FSM se ha convertido en una parte esencial de mis aplicaciones three.js. Ya sea que esté construyendo una IU o un Juego, los objetos deben tener estados, y la administración cuidadosa de las animaciones y reglas de transición es esencial para cualquier lógica de aplicación compleja.
Y sí, necesita una biblioteca de aceleración. A menudo uso el jQuery.easing plugin. Es un plugin para jQuery.animate, pero las funciones de aceleración también se puede acceder de esta manera:
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);
Este plugin jQuery, y la mayoría de los plugins de aceleración se basa en Robert Penner's ActionScript2 easing library, que vale la pena ver si el t, b , c, d lo de arriba parece extraño.
Desde la versión r48 (creo) three.js incluye RequestAnimationFrame en el núcleo. Gracias. Veo complementos para eso. – soil
Copia pega este:
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)
}
El autor original es: http://paulirish.com/2011/requestanimationframe-for-smart-animating/
Hice este emular en órbita con características humanas (sacudidas) pero puede usarse para otros animaciones como traducciones objeto, posiciones y rotaciones.
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();
}
pequeña Roundup en 2017: visita este simple línea de tiempo-lib que puede desencadenar fácilmente la mencionada FSM (anim statebased) & tween.js (anim liso):
Gracias! Exactamente lo que estaba buscando. ¿Alguna otra alternativa o es la mejor? –
- 1. Three.js - ¿Hacer una animación de rotación?
- 2. Opciones de animación HTML5 Canvas/CSS3/jQuery
- 3. Mejores opciones que backporting ICS HttpResponseCache
- 4. ¿Cuáles son las mejores opciones actuales para paralelizar una aplicación .NET intensiva en CPU?
- 5. ¿Cuáles son las mejores opciones para editar texto enriquecido en Rails?
- 6. Mejores prácticas de animación de Wpf
- 7. ¿Cuáles son las mejores opciones para el reenvío de puertos NAT?
- 8. ¿Cuáles son las opciones para los efectos animados de jQuery?
- 9. ¿Dónde encontrar todas las opciones para module.config.php?
- 10. Documentación para las opciones Psych to_yaml?
- 11. Animación esquelética utilizando datos analizados desde el archivo COLLADA en Three.js
- 12. mejores prácticas de C++ para las constantes
- 13. Las mejores herramientas de Java para emacs
- 14. ¿Mejores opciones para cumplir en la Ley de cookies del Reino Unido?
- 15. Doctrine 2: las mejores prácticas para i18n?
- 16. Three.js Ellipse
- 17. ¿Cuáles son las mejores opciones disponibles para una interfaz de usuario rica en una aplicación ASP.NET MVC?
- 18. THREE.js renderers
- 19. Three.js JSONLoader
- 20. ¿Puedo ocultar las caras de una malla en three.js?
- 21. Archivo grande (30Mb +) Cargas a través de Internet, ¿cuáles son las mejores opciones?
- 22. Detectar objeto cliqueado en THREE.js
- 23. Three.js First Person Controls
- 24. ¿Cuáles son las diversas opciones/argumentos para "./configure" en Linux
- 25. ¿Cuáles son las opciones para na.action en boxplot?
- 26. ¿Cómo configuro las opciones de HTML para collection_select en Rails?
- 27. ¿Cuáles son las opciones para guardar datos en iOS?
- 28. Partículas vs ParticleSystem en three.js
- 29. Mejores prácticas para PK en SQL Server
- 30. Mejores prácticas para las constantes locales en el objetivo-c
Gracias. Y para la animación de texturas, ¿cuáles son las mejores opciones? https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/Texture-Animation.html – soil
Bueno, soy parcial porque lo escribí yo mismo. Puede haber una forma mejor de usar Sprites y uvOffsets, pero el código al que te refieres funciona bien para mí, para la demostración en vivo: http://stemkoski.github.com/Three.js/Texture-Animation.html –
¿Y cuándo usaré ParticleSystem con texture.offset? Es más simple que Sprite? ¿O THREE.Sprite y THREE.Particle System es lo mismo para el rendimiento? Quiero decir que Sprite tiene muchas opciones inútiles para mí. – soil