Unity koristi RenderTexture za generiranje prozirnih pozadinskih snimaka zaslona

Unity Uses Rendertexture Generate Transparent Background Screenshots



Bilješke o razvoju CubeRooma.

Značajka u CubeRoom je prikazivanje svakog objekta na popisu. Cijena prikazivanja sličica u stvarnom vremenu previsoka je, pa razmislite o generiranju prozirne pozadine zaslona za svaki objekt.



Pronašao na Googleu Renderirajte snimke zaslona s prozirnim pozadinama iz Unity3D U ovom je članku autor napisao tekst zaslona prozora Igre, pogled Glavne kamere, u teksturu Texture2D, ali snimka zaslona mora imati boju pozadine. Autorsko rješenje je generiranje snimke zaslona crne i bijele pozadine, a zatim izračunavanje razlike u boji piksela dviju slika kako bi se generirala prozirna pozadinska slika.



Nakon korištenja ove skripte utvrđeno je da postoji određena razlika u boji između izvezene slike i stvarne slike u prozoru Igre, a kada se ovom metodom izračunaju prozirni pikseli, rubovi se ne obrađuju, a pila je vidljiva golim oko.



Prozor igre:

Generiraj minijature:



Gledajući dokumentaciju, pronašao sam posebnu teksturu Unity - Priručnik: Render Texture Možete se povezati sa svojstvom Target Texture (Fotografska tekstura) fotoaparata da biste dobili pogled na kameru. Ako je boja pozadine fotoaparata prozirna, dobivena tekstura je s prozirnim kanalom.

GitHub: TransparentBackgroundScreenshotRecorder.cs

Koraci za upotrebu

  • Stvorite novu kameru za generiranje teksture za dobivanje pogleda, podešavanje položaja i kuta. Ako je željena slika jednaka prikazu u prozoru Game, možete izravno kopirati MainCamera kao kameru za prikazivanje.
  • Stvorite RenderTexture i postavite ga na svojstvo Target Texture na kameri.
  • Postavite Clear Flags na kameri za prikazivanje na Solid Color. Ako trebate prozirnu pozadinu, postavite pozadinski prozirni kanal na 0.
  • Htjeti TransparentBackgroundScreenshotRecorder.cs Skripta dodana u kameru za prikazivanje. Brzina sličica predstavlja brzinu sličica u sekundi, a Okviri za snimanje predstavljaju broj slika koje treba generirati. Slika prvog okvira može biti prazna. Okviri za snimanje bolji su od 1.
  • Odaberite razlučivost zaslona prozora Igre, koja je jednaka veličini RenderTexture, što je razlučivost generirane slike.
  • Kliknite Reproduciraj!
  • Slike izvezene prema zadanim postavkama nalaze se u direktoriju ScreenShots projekta.

ako postoji Razlika u boji , To može biti problem prostora boja RenderTexture, morate provjeriti RenderTexture sRGB Opcije

Generiraj minijature:

Ažuriraj

Postojeća kromatska aberacija nastaje zbog gama korekcije. Ako odaberete linearni razmak u Unityju, morate provjeriti sRGB opciju.


Daljnje čitanje

Princip prikazivanja na RenderTexture u Unity3d

Referentna poveznica

Renderirajte snimke zaslona s prozirnim pozadinama iz Unity3D

Unity - Priručnik: Render Texture