2012-11-12 19 views
14

C'è un modo per scoprire la larghezza di una porzione renderizzata della scena?Three.js - Larghezza di visualizzazione

Ad esempio, se abbiamo una mesh di larghezza 100, ma il rendering con un certo livello di zoom ... come posso calcolare la larghezza della porzione della mesh che viene visualizzata sullo schermo?

risposta

23

Devi essere preciso qui.

È possibile calcolare la regione rettangolare visibile in base al campo visivo della telecamera, camera.fov e una distanza data, dist, dalla fotocamera.

Poiché l'oggetto presumibilmente ha profondità, devi scegliere un piano attraverso la mesh e fare il calcolo a quella distanza.

Ecco come calcolare il visibile height e width per una distanza determinata dist dalla telecamera.

var vFOV = THREE.Math.degToRad(camera.fov); // convert vertical fov to radians 

var height = 2 * Math.tan(vFOV/2) * dist; // visible height 

var width = height * camera.aspect;   // visible width 

Three.js r.87

+0

è 'dist' un valore compreso tra valore di gran lunga di proprietà della fotocamera? –

+0

'dist' deve essere inferiore a' FAR', altrimenti la posizione non sarà visibile. – WestLangley

+1

trully ... ho frainteso, da cosa si verifica 'dist' .. Non riesci a vedere la definizione precedente del suo valore nel codice, descrivi per favore, qual è il' dist'? Dtis = Lontano - Vicino o no? Grazie! –