2016-05-30 36 views

risposta

3

Sì. C'è un three.js example che mostra come applicare la postelaborazione alle mesh selezionate usando il mascheramento.

penso che ad esempio può essere migliorata per chiarezza, ma è possibile modificare l'esempio in questo modo:

composer4 = new THREE.EffectComposer(renderer, new THREE.WebGLRenderTarget(rtWidth, rtHeight, rtParameters)); 

composer4.addPass(renderScene); 
composer4.addPass(renderMask); 
composer4.addPass(effectDotScreen); 
composer4.addPass(clearMask); 
composer4.addPass(effectVignette); 

Si otterrà un output simile a questo:

postprocessing to selected mesh

Si tratta di un esempio complicato, quindi dovrai studiarlo attentamente.

three.js.r.77

+0

Grazie @WestLangley, è riuscito a farlo funzionare. Tuttavia ho una domanda relativa alla perdita di informazioni sulla profondità: non è possibile utilizzare gli effetti post di three-js (essendo principalmente costruiti come shader di frammenti), usati come materiali delle mesh, evitando il bisogno di maschere? –

+0

E altra domanda: ho un insieme di oggetti separati che ruotano attorno a uno centrale e voglio applicare un mascheramento all'oggetto centrale diverso da quello applicato al set di oggetti separati che ruotano attorno all'oggetto ... c'è qualche modo aggiungere/sottrarre le maschere per ottenere postprocessing diversi in entrambi gli elementi senza glitch di profondità? –

+0

(1) Sì, con personalizzato 'ShaderMaterial'. (2) Forse dovresti pubblicare una nuova domanda e chiedere alla comunità. – WestLangley

5

Sì, se si mette l'oggetto su un'altra scena. Ma dovrai affrontare un problema con il rendering del comando, alcuni oggetti saranno sempre in primo piano. Dipende dalla situazione della scena.

+0

sì, ho bisogno di avere lavoro di profondità ... non posso ad esempio rendere la stessa scena 1 ° e applicare un po 'maschera per gli elementi che non hanno post-elaborazione e poi nell'altra scena rendi tutto tranne gli "elementi di post-elaborazione". quindi gli "elementi non postelaborati" non sono visibili nella seconda scena ma occludono comunque gli "elementi post-elaborazione". –

+0

Dipende dall'elaborazione post che stai utilizzando. Conosco solo il post processing con l'utilizzo del renderer e il renderer deve essere utilizzato su tutta la scena. – Martin

+0

Non è possibile applicare uno shader pass a un materiale? O adattare lo shader del materiale per eseguire alcuni calcoli di colori/effetti in base alle coordinate dello schermo? –