Indietro

Cerbiatto nel bosco

Un cerbiatto vaga in una foresta di cedri giganti in stile Yakushima: il cerbiatto è generato e riggato automaticamente con Tripo, la foresta è interamente procedurale, e raggi di luce volumetrici, ombre morbide, giorno e notte e vento sono renderizzati in tempo reale — con registrazione video direttamente nella pagina.

Autore: 希彼赫
Provalo dal vivo
Cerbiatto nel boscoProvalo dal vivo

Su questo progetto

«Cerbiatto nel bosco» è una scena three.js in tempo reale che gira nel browser: un cerbiatto vaga in una foresta di cedri giganti in stile Yakushima mentre la luce del sole filtra dalle aperture della chioma, l’erba ondeggia al vento e le farfalle svolazzano intorno ai fiori. Portalo a passeggio, raccogli le particelle di luce, passa dal giorno alla notte di luna — oppure affidalo alla camera cinematografica e registra un video direttamente nella pagina.

Il cerbiatto è stato creato con la Tripo API — generazione, low-poly intelligente, verifica della riggabilità e rigging automatico da quadrupede — ed esportato come GLB riggato; la foresta è interamente procedurale. Texture di Poly Haven (CC0).

Si gusta al meglio in un browser desktop con la tastiera; sul telefono tocca il terreno per far camminare il cerbiatto e trascina per orbitare la camera.

Punti salienti

  1. Guida il cerbiatto con WASD o clicca sul terreno per mandarlo lì; tieni premuto Shift per trottare e trascina per orbitare la camera
  2. Cammina dentro le particelle luminose per raccoglierle — prendile tutte e nove per una cascata di campanelli mentre i fasci di luce si accendono; premi E o clicca sul cerbiatto e alzerà lo sguardo verso di te
  3. Premi R per passare dal giorno alla notte di luna, o G per una raffica che piega l’erba e disperde le farfalle
  4. Premi C per la camera cinematografica e V per registrare un video con l’audio direttamente nella pagina; H nasconde il pannello dei tasti

Analisi tecnica

  • Il cerbiatto · Generato e riggato automaticamente con Tripo

    Il cerbiatto esce da una pipeline della Tripo API — generazione del modello, low-poly intelligente, verifica della riggabilità e rigging automatico da quadrupede — e arriva come GLB di circa 15.000 triangoli con uno scheletro da quadrupede di 41 ossa e texture PBR. La pagina lo carica con GLTFLoader e lo scala a un’altezza della testa di circa 1,55 m, la taglia di un cervo sika.

    Il rig di Tripo ha nomi ordinati: ogni zampa è suddivisa da Limb_0 a Limb_3, mentre colonna, collo e testa sono numerati in sequenza, così il codice trova per nome ogni zampa, la colonna e il collo e li pilota direttamente — senza mappare a mano un osso alla volta. Uno shader tinge il mantello del bruno rossiccio estivo del cervo sika e sparge una fila di macchie chiare lungo il dorso; le macchie sono ancorate alle coordinate della bind pose, quindi restano ferme sulla pelle mentre il cerbiatto cammina, e in controluce il pelo si accende di un bordo caldo.

  • Andatura · Una camminata calcolata dal vivo sul rig

    La camminata viene calcolata con l’IK su questo rig al caricamento della pagina. Prima le traiettorie degli zoccoli: a terra ogni zoccolo scorre all’indietro esattamente alla velocità del corpo; in aria si solleva, si allunga in avanti e si riappoggia. Le zampe si muovono nell’ordine posteriore sinistra, anteriore sinistra, posteriore destra, anteriore destra, ciascuna a terra per circa il 70% del tempo, mentre il corpo si limita a ondeggiare e oscillare leggermente. Ogni zampa è risolta con un’IK a tre segmenti che mantiene il segmento superiore e quello inferiore all’angolo della bind pose, con una piega in più del polso quando una zampa anteriore si alza. L’intera andatura viene cotta in un loop di 48 frame e affidata ad AnimationMixer.

    La velocità di riproduzione è la velocità del corpo divisa per quella con cui gli zoccoli scorrono all’indietro: che il cerbiatto passeggi o trotti con Shift premuto, i suoi zoccoli non scivolano mai. Da fermo, il codice ruota le quattro ossa dalla parte alta della schiena alla testa: il cerbiatto bruca per un po’, alza la testa per guardare di lato, poi la riabbassa — e appena si rimette in cammino, il collo si solleva.

  • La foresta · Cresciuta interamente nel codice

    A parte il cerbiatto, tutto nella foresta è generato dal codice; le uniche texture sono set CC0 di Poly Haven per corteccia di cedro, roccia muschiosa e terreno del bosco. I cedri giganti sono alti circa 44 m: gli alberi principali in primo piano hanno mesh proprie, mentre le file retrostanti sono disegnate in batch con InstancedMesh, e la curvatura dei tronchi usa la stessa formula nello shader e in JS, così i rami restano attaccati ai tronchi curvi. Tra i giganti cresce uno strato di alberi giovani da 8–17 m, e arbusti, felci, rocce e tronchi caduti riempiono il sottobosco.

    Il suolo è coperto da 120.000 fili d’erba istanziati che ondeggiano nel vertex shader; premi G per una raffica di sei secondi che piega l’erba e disperde le farfalle. L’erba sa anche dov’è il cerbiatto e si scosta intorno a lui. Diciotto farfalle svolazzano pigre intorno ai fiori finché il cerbiatto non si avvicina e le fa volare via, e 70 foglie che cadono, complete di picciolo e nervature, scendono volteggiando e si illuminano attraversando i fasci di luce.

  • Luce · Fasci volumetrici e chiazze di sole

    La chioma è formata da qualche centinaio di ciuffi di foglie appiattiti; man mano che ciascuno viene posizionato, lo si proietta a terra lungo la luce del sole e lo si tiene lontano da 29 punti di caduta predefiniti, così la luce cade in fasci separati. La luce volumetrica avanza a passi lungo ogni raggio visivo campionando la shadow map del sole a metà risoluzione, poi viene composta con nebbia di distanza, tone mapping ACES, bloom e FXAA.

    Le ombre sono riscritte come ombre morbide PCSS — più ci si allontana dall’oggetto che fa ombra, più il bordo si ammorbidisce — e le chiazze di luce che filtrano dalla chioma sono calcolate nello spazio della luce, così erba, corteccia, cerbiatto e fasci di luce condividono lo stesso disegno. La polvere nell’aria brilla solo dentro i fasci e quasi scompare nell’ombra. Premi R e la scena sfuma nella notte in tre secondi: il sole diventa una fredda luce lunare, i fasci si attenuano e le particelle brillano come lucciole.

  • Camera e cattura · Riprendi direttamente nella pagina

    Premi C per la camera cinematografica: gira lentamente attorno al cerbiatto, salendo e scendendo, con tutta l’interfaccia nascosta. Premi V per registrare — MediaRecorder cattura il canvas WebGL e l’audio a 60 fps e 16 Mbps, salvando in MP4 dove il browser lo supporta e altrimenti in WebM, e il livello di qualità resta bloccato durante la registrazione, così la risoluzione non salta a metà clip.

    Ogni suono è sintetizzato dal vivo con Web Audio: un rintocco di campane a vento per ogni particella raccolta, che sale lungo una scala pentatonica, e un soffio quando si alza la raffica. La risoluzione si adatta al frame rate e scende di un livello quando i frame calano, e 1 / 2 / 3 bloccano a mano la qualità bassa, media o alta.