Gumagamit ang Unity ng RenderTexture upang makabuo ng mga transparent na background screenshot

Unity Uses Rendertexture Generate Transparent Background Screenshots



Mga tala sa pag-unlad ng CubeRoom.

Ang isang tampok sa CubeRoom ay upang ipakita ang bawat object sa isang listahan. Ang gastos ng pag-render ng mga thumbnail sa real time ay masyadong mataas, kaya isaalang-alang ang pagbuo ng isang transparent na background screenshot para sa bawat object.



Natagpuan ito sa Google Mag-render ng mga screenshot na may mga transparent na background mula sa Unity3D Sa artikulong ito, nagsusulat ang may-akda ng isang screenshot ng window ng Game, ang view ng MainCamera, sa texture ng Texture2D, ngunit ang screenshot ay dapat magkaroon ng isang kulay sa background. Ang solusyon ng may-akda ay upang makabuo ng isang screenshot ng isang itim na background at isang puting background, at pagkatapos ay kalkulahin ang pagkakaiba sa kulay ng pixel ng dalawang imahe upang makabuo ng isang transparent na imahe sa background.



Matapos gamitin ang script na ito, napag-alaman na mayroong isang tiyak na pagkakaiba ng kulay sa pagitan ng na-export na larawan at ang aktwal na larawan sa window ng Laro, at kapag kinakalkula ng pamamaraang ito ang mga transparent pixel, ang mga gilid ay hindi naproseso, at ang sawtooth ay nakikita ng hubad mata



Window ng laro:

Bumuo ng mga thumbnail:



Kapag tinitingnan ang dokumentasyon, nakakita ako ng isang espesyal na pagkakayari Pagkakaisa - Mano-manong: Tekstura ng Render Maaari kang kumonekta sa pag-aari ng Target Texture ng isang camera upang makakuha ng isang view ng camera. Kung ang kulay ng background ng camera ay transparent, ang resulta ng pagkakayari ay may isang transparent na channel.

GitHub: TransparentBackgroundScreenshotRecorder.cs

Mga hakbang para sa paggamit

  • Lumikha ng isang bagong Camera upang makabuo ng isang texture upang makakuha ng isang view, ayusin ang posisyon at anggulo. Kung ang nais na imahe ay kapareho ng view sa window ng Laro, maaari mong direktang kopyahin ang MainCamera bilang rendering camera.
  • Lumikha ng RenderTexture at itakda ito sa pag-aari ng Target Texture ng Camera.
  • Itakda ang I-clear ang Mga Flags ng camera ng pag-render sa Solid Color. Kung kailangan mo ng isang transparent na background, itakda ang background transparent na channel sa 0.
  • Will TransparentBackgroundScreenshotRecorder.cs Idinagdag ang script sa pag-render ng camera. Kinakatawan ng Frame Rate ang rate ng frame bawat segundo, at ang Mga Frame To Capture ay kumakatawan sa bilang ng mga larawan na kailangang mabuo. Ang larawan ng unang frame ay maaaring blangko. Ang mga Frame To Capture ay mas mahusay kaysa sa 1.
  • Piliin ang resolusyon ng screen ng window ng Laro, na kapareho ng Sukat ng RenderTexture, na ang resolusyon ng nabuong imahe.
  • Mag-click sa Play!
  • Ang mga larawang na-export bilang default ay nasa direktoryo ng ScreenShots ng proyekto.

kung mayroon ito Pagkakaiba ng kulay , Maaaring ito ang problema ng puwang ng kulay ng RenderTexture, kailangan mong suriin ang RenderTexture sRGB Mga pagpipilian

Bumuo ng mga thumbnail:

Update

Ang umiiral na chromatic aberration ay dahil sa pagwawasto ng gamma. Kung pinili mo ang linear space sa Unity, kailangan mong suriin ang opsyong sRGB.


Karagdagang pagbabasa

Ang prinsipyo ng pag-render sa RenderTexture sa Unity3d

Link ng sanggunian

Mag-render ng mga screenshot na may mga transparent na background mula sa Unity3D

Pagkakaisa - Mano-manong: Tekstura ng Render