In three.js è possibile applicare effetti di post-elaborazione solo alle mesh selezionate?Post-elaborazione su mesh selezionate
Ad esempio per avere un cubo con effetto granulosità mentre il resto della scena non ce l'ha. Grazie!
In three.js è possibile applicare effetti di post-elaborazione solo alle mesh selezionate?Post-elaborazione su mesh selezionate
Ad esempio per avere un cubo con effetto granulosità mentre il resto della scena non ce l'ha. Grazie!
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:
Si tratta di un esempio complicato, quindi dovrai studiarlo attentamente.
three.js.r.77
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.
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". –
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
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? –
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? –
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à? –
(1) Sì, con personalizzato 'ShaderMaterial'. (2) Forse dovresti pubblicare una nuova domanda e chiedere alla comunità. – WestLangley