Płynny zoom dużego obrazka

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
mikema72
Posty: 72
Rejestracja: 09 sty 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Gliwice

Płynny zoom dużego obrazka

Post autor: mikema72 » 09 lut 2013 11:43

Od jakiegoś czasu siedzę nad problemem zrobienia prostego okienka z małym jpg które po kliknięciu rozszerzyło by się PŁYNNIE (coś w stylu animacji na IPhone) na pełny ekran. Problem w tym że nie mogę tego zrobić w LV. Próbowałem już wieeeelu różnych rozwiązań. Od zwykłych dekorów, poprzez wykorzystanie picture i IMAQ ale bez rezultatu Problem w tym, że obrazek wyjściowy np 450x253px24b musi się powiększyć w ciągu np 1sek. na pełny ekran do np 1920x1080x24b tworząc coś w rodzaju płynnego (animowanego) otwarcia programu. Wszystko co wypróbowałem, albo ma problem z zoomem obrazka albo jest za wolne i widać skoki przy powiększaniu. Może ktoś z was ma jakiś ciekawy pomysł? A może w ogóle do tego podejść z jakiejś innej strony? :-\ :-\ :-\
CLAD, LabVIEW 6.0 -> LabVIEW 2013

Awatar użytkownika
Bluesheep
Posty: 14
Rejestracja: 16 sty 2013 21:08
Wersja środowiska: LabVIEW 2013
Lokalizacja: Kraków

Re: Płynny zoom dużego obrazka

Post autor: Bluesheep » 09 lut 2013 14:44

Hej!

Mam pewna propozycję: stwórz sześcian (3D picture Control), będzie się wyświetlał jako kwadrat. Wrzuć na niego jako teksturę swój obrazek, a potem z pomocą shift register powiększaj wymiary sześcianu do oczekiwanych.

Mi to działa, ale nie wiem jak bardzo chcesz żeby "nie zacinało".

Pozdrawiam :)

Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: Płynny zoom dużego obrazka

Post autor: Góras » 09 lut 2013 15:19

Czy rozmiar Front Panel'u ma się zwiększać jednocześnie z obrazkiem?

Jeśli tak, to można to zrobić np. z użyciem 2D Picture i zwiększać proporcjonalnie rozmiar okna wraz z zoomem obrazka (w załączniku VI + obrazek na którym sprawdzałam czy działa). Działa to jednak dosyć wolno więc podejrzewam, że tą wersję już wcześniej skreśliłeś.

Jest więc inna opcja wymagająca więcej zabawy - możesz użyć Picture Ring i wrzucić do niego kolejno powiększone obrazki (np. 200) i w pętli for do Picture Ring podłączyć iterator pętli. Jakby się uprzeć to można zmusić LabView to powiększania i zapisywania obrazków do pliku, które potem wczytasz. Co do zmiany rozmiaru Front Panelu, to można to trochę oszukać - zamiast je zwiększać można ustawić tło Front Panel'u na przeźroczyste. W załączniku przykład ze strony NI jak się takie cuda robi.
Załączniki
Shaped Window.zip
Brak tła Front Panel'u
(527.52 KiB) Pobrany 250 razy
mops.jpg
Obrazek do zoom'owania :)
mops.jpg (32.75 KiB) Przejrzano 5807 razy
ZoomImage.vi
(11.35 KiB) Pobrany 275 razy

mikema72
Posty: 72
Rejestracja: 09 sty 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Gliwice

Re: Płynny zoom dużego obrazka

Post autor: mikema72 » 09 lut 2013 16:42

Dzięki za szybkie podpowiedzi. Picture już przerabiałem. Niestety dla moich potrzeb jest o wiele za wolny. Tak jak pisałem obrazek musi się zmieniać "wyjeżdżając" z małego obrazka do pełnego ekranu w HD, czyli musi się zmieniać i wysokość czy szerokość ale i także Left i Top. Niestety aby było to płynne zużywa strasznie dużo mocy procesora a i tak widać "skoki" i niedoskonałości przesuwu. Zresztą można to zobaczyć na tym przykładzie załączonym przez Górasa (dzięki wielkie :) ) zwiększając końcowy rozmiar obrazka. Zaczyna się nieprzyjemne dla oka "skakanie". Z przeźroczystościami też próbowałem. Męczyłem też subpanele i IMAQ.Wszędzie problem z płynnością głównie przez zmianę wielkości obrazka. W tym ostatnim znowu był jeszcze problem z zoomem. Picture Ring odpada bo ilość bitmap do zrobienia jest za duża. Nie dość że musiałoby ich być kilkadziesiąt dla każdego menu to jeszcze takich klikanych menu jest w moim projekcie też kilkanaście. A także i tutaj jest problem z przesuwaniem left i top kontrolki.
Ale duże piwo dla Bluesheep za pomysł z 3D. :D Robię takie niby menu oparte o "animacje" i myślę że to rozwiązanie może pomóc a nawet ulepszyć moje rozwiązanie. Pytanie tylko czy w trakcie prac coś jeszcze nie wyjdzie... :-\ Ciekawe czy da się nałożyć teksturę na każdą ścianę osobno. Bo można by zrobić trójwymiarowe menu. Nie robiłem jeszcze nic z 3D i nie wiem czego się można spodziewać. Dam znać jak poszło.
CLAD, LabVIEW 6.0 -> LabVIEW 2013

mikema72
Posty: 72
Rejestracja: 09 sty 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Gliwice

Re: Płynny zoom dużego obrazka

Post autor: mikema72 » 09 lut 2013 16:54

CLAD, LabVIEW 6.0 -> LabVIEW 2013

Awatar użytkownika
wino
Posty: 548
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Płynny zoom dużego obrazka

Post autor: wino » 09 lut 2013 21:53

Siema,

Jak chcesz płynności, to spróbuj ruszać "kamerą" nie obrazem jest zdeczka płynniej. Oczywiście mowa o 3d Picture.

mikema72
Posty: 72
Rejestracja: 09 sty 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Gliwice

Re: Płynny zoom dużego obrazka

Post autor: mikema72 » 10 lut 2013 01:22

No i znowu problem... X( #:-s Wszystko pięknie działa na 3d picture ale ... W mojej aplikacji oprócz ruszającego się sześcianu na pierwszym planie, powinno być także tło. I tu jest problem bo jak zrobić nieruchome tło w 3d picture??? Chodzi o to aby przy ruszaniu kamerą (za pomocą myszki) tło jakiegoś obiektu się nie ruszało. Zrobiłem tutaj dwa przykładowe obiekty z których jeden ma się ruszać (być obracany przez użytkownika) a drugi nie (to by było właśnie to tło). Nie wiem czy da się jakoś rozdzielić sceny lub coś w 3D Picture? Albo może ktoś wie jak przeliczyć przesuw myszki (Coords) na obrót osi (XYZi Angle do 3d Picture)? Wszelkie pomysły mile widziane. A swoją drogą to jakieś to LV nie elastyczne... Gdzie sie chce wyjść poza standardowe zastosowania to coś brakuje... :-s
CLAD, LabVIEW 6.0 -> LabVIEW 2013

ODPOWIEDZ