2013-09-27 15 views
5

Ho giocato con three.js qui - 2toria.com/poolThree.js shadows - come migliorare?

Il problema che sto avendo sta cercando di far apparire meglio le mie ombre. Al momento, sembrano in questo modo: -

enter image description here

Un po 'pixellato. C'è un modo per farli apparire più liscia, come qui: -

enter image description here

Ho provato un paio di cose, ma non riesco a trovare le giuste regolazioni. Il mio renderer è impostato in questo modo: -

renderer.shadowMapEnabled = true; 
renderer.shadowMapSoft = true; 
renderer.shadowMapType = THREE.PCFShadowMap; 

ho pensato shadowMapSoft l'avrebbe fatto, ma no. Qualche idea/aiuto?

risposta

10

In effetti, ho avuto lo stesso problema. La mia soluzione era aumentare le mie sorgenti di luce shadowMapWidth e Height. Nel mio caso si trattava di un riflettore:

spotLight = new THREE.SpotLight(0xAAAAAA); 
spotLight.castShadow = true; 
spotLight.shadowCameraFov = VIEW_ANGLE; 
spotLight.shadowBias = 0.0001; 
spotLight.shadowDarkness = 0.2; 
spotLight.shadowMapWidth = 2048; 
spotLight.shadowMapHeight = 2048; 

Ah un'altra cosa, se si aumenta la dimensione della mappa per la potenza di due si liscia fuori dell'ombra sempre di più, ma si vedrà un calo di prestazioni con geometria complessa. Quindi prova 2048, forse 4096 vedi come funzionano per te.

Ho notato che hai renderer.shadowMapType. Devo indagare su questo, potrebbe rendere i miei progetti molto meglio, grazie :)

+0

Questa risposta è del 2013 quindi è probabile che sia basata su r55 - r64. Ti capita di conoscere il modo di ammorbidire un'ombra in r87? –