簡體   English   中英

ThreeJS:如何將場景渲染為紋理並臨時覆蓋材質?

[英]ThreeJS: How to render scene to texture and temporarily override materials?

基:我有一個帶有普通物體的場景。 他們投下陰影。 地面是THREE.Plane的一個實例。

目標:我想通過將場景渲染為紋理(rtt),然后將信息讀回js來獲取有關陰影的信息。

想法:我將使用正交攝像機從頂部俯視場景來渲染場景。 相機附近屬性將設置為僅渲染對象接觸地面的部分(我已確保每個對象都具有雙面材質)。 地面將使用白色的材質顏色渲染,而所有其他對象將使用黑色的顏色渲染。 材料應該可以投射陰影,地面應該可以接收陰影。

問題:

  1. 如何使用暫時不同的對象材質渲染當前場景(我不想每次都需要獲取陰影信息時都復制它)?

     renderer.render(scene, cameraRTT, rtTexture, true); 
  2. 如何定義這種材料?

您可以嘗試使用場景的overrideMaterial屬性在渲染步驟之間切換材質,例如:

// Note: r66 code
// use material A
scene.overrideMaterial = materialA;
renderer.render(scene, camera, rtTexture);
// use material B
scene.overrideMaterial = materialB;
renderer.render(scene, camera, rtTexture);

您可以在此處查看示例: http : //threejs.org/examples/webgl_postprocessing_godrays.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM