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ę
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?
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. :)
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.
Może po prostu render do tekstury, a teksture na quad?
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
.
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 poleTargetTexture
, do którego podpinasz swój asset typuRenderTexture
. Teraz musisz tylko utworzyćMaterial
, któremu jako teksturę podajeszRenderTexture
. 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 polaDepth
.
Rzeczywiście RenderTexture działa. Bardzo dziękuję za pomoc, pozdrawiam.