(Unity) Renderowanie widoku z kamery w UI

0

Dzień dobry. Posiadam Unity Personal Edition. Korzystam z wersji 5.6.3xf1Linux. Chciałbym aby obraz z jednej z kamer renderował się w UI. Wiem, że jest jakaś możliwość. Bardzo proszę o jakieś linki bądź też całe skrypty.
Z góry dziękuję

0

Opisz dokładniej co chcesz osiągnąć.

Chcesz, żeby obiekty mogły być wyświetlane nad UI?
Czy może chcesz mieć oddzielną kamerę do UI i do gry?
A może chcesz w UI zrobić prostokąt, który wyświetla obraz kamery niczym ekran monitora?

0

Dzień dobry. Liczysz trochę na gotowca, szkoda. Szukałbym w kierunku przechwytywanie video w technologi .NET a następnie przekazanie tego do obiektów Unity. :)

0
Spine napisał(a):

Opisz dokładniej co chcesz osiągnąć.

Chcesz, żeby obiekty mogły być wyświetlane nad UI?
Czy może chcesz mieć oddzielną kamerę do UI i do gry?
A może chcesz w UI zrobić prostokąt, który wyświetla obraz kamery niczym ekran monitora?

3 opcja. Chciałbym, aby był wydzielony prostokąt. Byłyby 2 kamery. Jedna renderowała by UI i wyświetlała je na ekranie, druga renderowałaby obraz gry i przekazywałaby do tego prostokąta. Z tego co zdążyłem się dowiedzieć, jest możliwość zrobienia tego za pomocą Raw Image, ale dowiedziałem się także, że jest to dostępne tylko dla użytkowników Unity Pro, a ja jak już wcześniej mówiłem korzystam z Unity Personal.

1

Może po prostu render do tekstury, a teksture na quad?

https://docs.unity3d.com/Manual/class-RenderTexture.html

1
IpyZ napisał(a):

Z tego co zdążyłem się dowiedzieć, jest możliwość zrobienia tego za pomocą Raw Image, ale dowiedziałem się także, że jest to dostępne tylko dla użytkowników Unity Pro, a ja jak już wcześniej mówiłem korzystam z Unity Personal.

Kiedyś może tak było, ale przez lata trochę rzeczy z PRO udostępniono w Personal.

Na pewno w aktualnej wersji Unity 3D Personal da się to zrobić. Twoje 5.6 to już trochę staroć, więc nie jestem pewien.

Sprawdź, czy w menu kontekstowym (tam gdzie tworzysz nowe skrypty) możesz tworzyć asset typu RenderTexture (który można skonfigurować w inspektorze) i w czy kamerze, której obraz chcesz przechwycić, masz pole TargetTexture, do którego podpinasz swój asset typu RenderTexture. Teraz musisz tylko utworzyć Material, któremu jako teksturę podajesz RenderTexture. Utworzony materiał podpinasz do obiektu UI.

Na Twoim miejscu unikałbym takich kombinacji, jeśli się da. Można zrobić UI z "dziurą" i kamerę gry ustawić tak aby przez tą dziurę było widać obraz, który chcesz wyświetlać.

Jeśli masz wiele kamer, to zainteresuj się też opcją kamery Culling Mask, żeby ustawić kamerę, która wyświetla warstwę UI, i kamerę wyświetlającą warstwy gry. Kolejność zależy od pola Depth.

0
Spine napisał(a):
IpyZ napisał(a):

Z tego co zdążyłem się dowiedzieć, jest możliwość zrobienia tego za pomocą Raw Image, ale dowiedziałem się także, że jest to dostępne tylko dla użytkowników Unity Pro, a ja jak już wcześniej mówiłem korzystam z Unity Personal.

Kiedyś może tak było, ale przez lata trochę rzeczy z PRO udostępniono w Personal.

Na pewno w aktualnej wersji Unity 3D Personal da się to zrobić. Twoje 5.6 to już trochę staroć, więc nie jestem pewien.

Sprawdź, czy w menu kontekstowym (tam gdzie tworzysz nowe skrypty) możesz tworzyć asset typu RenderTexture (który można skonfigurować w inspektorze) i w czy kamerze, której obraz chcesz przechwycić, masz pole TargetTexture, do którego podpinasz swój asset typu RenderTexture. Teraz musisz tylko utworzyć Material, któremu jako teksturę podajesz RenderTexture. Utworzony materiał podpinasz do obiektu UI.

Na Twoim miejscu unikałbym takich kombinacji, jeśli się da. Można zrobić UI z "dziurą" i kamerę gry ustawić tak aby przez tą dziurę było widać obraz, który chcesz wyświetlać.

Jeśli masz wiele kamer, to zainteresuj się też opcją kamery Culling Mask, żeby ustawić kamerę, która wyświetla warstwę UI, i kamerę wyświetlającą warstwy gry. Kolejność zależy od pola Depth.

Rzeczywiście RenderTexture działa. Bardzo dziękuję za pomoc, pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1