2014-10-10 5 views
6

Sto utilizzando THREE.WebGLRenderer e vorrei disegnare alcuni punti bianchi della stessa dimensione in posizioni specifiche nello spazio 3D.three.js Come eseguire il rendering di un semplice punto bianco/punto/pixel

Devo utilizzare sprite, calcolare le coordinate dello schermo 2D e utilizzare SpriteMaterial.useScreenCoordinate?

Devo semplicemente ricalcolare la dimensione degli sprite utilizzando la distanza di questi alla fotocamera?

Posso utilizzare SpriteMaterial.scaleByViewport o SpriteMaterial.sizeAttenuation? C'è qualche documentazione per questo?

C'è qualcosa come GL_POINTS? Sarebbe bello definire solo 1 vertice e ottenere un pixel colorato in quella posizione. Dovrei provare con PointCloud?

Grazie per eventuali suggerimenti!

Modifica: tutti i punti devono avere la stessa dimensione sullo schermo .

risposta

7

Utilizzando .sizeAttenuation e un singolo vertici funziona PointCloud, ma ci si sente un po '... overengineered:

var dotGeometry = new THREE.Geometry(); 
dotGeometry.vertices.push(new THREE.Vector3(0, 0, 0)); 
var dotMaterial = new THREE.PointsMaterial({ size: 1, sizeAttenuation: false }); 
var dot = new THREE.Points(dotGeometry, dotMaterial); 
scene.add(dot); 
Problemi correlati