A render() függvényünk gondoskodik a színtér objektumainak a kiválasztott kamera szerinti 2D vetítéséről és az eredmény megjelenítéséről. Ez egy képkockát jelenít meg.
Amennyiben a színterünk dinamikus, időben változó, gondoskodnunk kell a folyamatos frissítésről. Erre célszerű egy különálló animate() függvényt írni, amely első hívása után a JavaScript requestAnimationFrame() függvényét használva folyamatosan újrahívódik. Paraméterként az animáló függvényünk nevét kell átadni, ezt a hívást az animáló függvényben elhelyezve biztosítja a folyamatos működést.
A függvény használatával a rendszer gondoskodni fog a megfelelő sebességű időzítésről. A dokumentáció szerint ez jellemzően 60 képkocka másodpercenként, illetve amennyiben a böngésző támogatja, a képernyő frissítési frekvenciájának megfelelő érték (pl. 75 vagy 100 is lehet). Vagyis ennyiszer hívódik meg az animate() függvényünk. Ha a modellünk túl komplex, túl sok számítást igényel a megjelenítése, a megjelenítési ráta természetesen ennél kisebbé is válhat, "szaggatni" fog az eredmény. Ha a frissítési időközt nem vesszük figyelembe, akkor a számítógépenként esetlegesen különböző frissítési időköz miatt más sebességű animációkat fogunk látni! A probléma megoldását később tárgyaljuk, egyelőre ezzel nem foglalkozunk a modellezéseink során.
Amennyiben az oldal háttérbe kerül, energiatakarékossági és rendszer hatékonysági okokból az animáció szüneteltetésre kerül(het) (ne rajzoljunk, ha úgysem látszik), ezt a viselkedést a böngésző szabályozza.
Az animate() függvényben lehetőségünk van a modellezést befolyásoló globális változóink figyelembe vételére, a tárgyak, kamerák paramétereinek módosítására. Jelen példában a tárgyat reprezentáló mesh X- és Y-tengelyek menti elforgatási paramétereit módosítjuk.
Az animate() a render() függvényünket hívja az új képkocka megjelenítéséhez.
A render() függvényünkben a scene színtér camera kamera szerinti 2D vetített képét a renderelő objektum render függvényhívásával állíthatjuk elő.
function animate() {
// Újabb képkocka rajzolásának kérése.
// Maximálisan 60 FPS-t biztosít a rendszer.
requestAnimationFrame( animate );
// Objektum elforgatási paraméterének módosítása
mesh.rotation.x += 0.01;
mesh.rotation.y += 0.01;
// Új képkocka rajzolása
render();
}
function render() {
// 3D -> 2D vetített kép kiszámítása.
// scene 3D színtér képe a camera kamera szemszögéből.
renderer.render( scene, camera );
}