Make example animations framerate independent

This commit is contained in:
Diego Marcos Segura
2025-07-04 08:39:25 -05:00
parent c65bbcfefb
commit cd40e139d1
3 changed files with 13 additions and 5 deletions
+5 -2
View File
@@ -50,9 +50,12 @@
modifiers.setDepthColor(butterfly2, 1, 2, true); modifiers.setDepthColor(butterfly2, 1, 2, true);
scene.add(butterfly2); scene.add(butterfly2);
let lastTime;
renderer.setAnimationLoop(function animate(time) { renderer.setAnimationLoop(function animate(time) {
butterfly.rotation.y += 0.01; const deltaTime = time - (lastTime || time);
butterfly2.rotation.x += 0.01; lastTime = time;
butterfly.rotation.y += deltaTime / 2500;
butterfly2.rotation.x += deltaTime / 2500;
renderer.render(scene, camera); renderer.render(scene, camera);
}); });
</script> </script>
+4 -2
View File
@@ -80,10 +80,12 @@
duck.position.set(0, 0.45, -0.4); duck.position.set(0, 0.45, -0.4);
scene.add(duck); scene.add(duck);
let renderedEnvMap = false; let lastTime;
renderer.setAnimationLoop(function animate(time) { renderer.setAnimationLoop(function animate(time) {
const deltaTime = time - (lastTime || time);
lastTime = time;
renderer.render(scene, camera); renderer.render(scene, camera);
duck.rotation.y += 0.01; duck.rotation.y += deltaTime / 2500;
// Make sure we only launch async renderEnvMap once // Make sure we only launch async renderEnvMap once
if (!renderedEnvMap) { if (!renderedEnvMap) {
+4 -1
View File
@@ -106,10 +106,13 @@
await createViewpoint(new THREE.Vector3(0.5, -1, -3), new THREE.Vector2(0.5, -0.5), 1), await createViewpoint(new THREE.Vector3(0.5, -1, -3), new THREE.Vector2(0.5, -0.5), 1),
]; ];
let lastTime;
renderer.setAnimationLoop(function animate(time) { renderer.setAnimationLoop(function animate(time) {
const deltaTime = time - (lastTime || time);
lastTime = time;
scene.background.set(0x000000); scene.background.set(0x000000);
renderer.render(scene, camera); renderer.render(scene, camera);
butterfly.rotation.y += 0.01; butterfly.rotation.y += deltaTime / 2500;
// Render each viewpoint (with a different background each) // Render each viewpoint (with a different background each)
for (let i = 0; i < viewpoints.length; i++) { for (let i = 0; i < viewpoints.length; i++) {