Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - mamut

Strony: [1]
1
Pomoc doraźna / Odp: Jak skompilować kod źródłowy Maszyny?
« dnia: 10 Kwietnia 2015, 00:28:17 »
Kompilacja głównego pliku nie wystarczy, trzeba kompilować całość jako projekt. Wyjścia są dwa:
  • uruchamiasz IDE Borlanda, tam otwierasz projekt (plik .bpr) i klikasz któryś magiczny guzik, pewnie będzie opisanu jako "RUN" (mam uczulenie na to IDE, nie oglądałem go od dawna, stąd nie pamiętam jaki to przycisk)
  • konsolowo możesz użyć programu BPR2MAK.EXE aby utworzyć makefile a następnie zbudować projekt z wykorzystaniem tego makefile poleceniem MAKE.EXE - stosuję tą metodę z powodzeniem na linuxie z wine - obydwa wymienione programy są częścią instalacji IDE BCB 5 (ja chyba mam 5.2)

2
Pomoc w tworzeniu / Odp: GIMP - narzędzie teksturowców
« dnia: 30 Maja 2013, 16:46:55 »
Nie jestem pewien czy to jest to co chcesz osiągnąć: zaznaczenie rozmiaru poprzednio wklejonej warstwy.
W momencie kiedy zaznaczamy coś i wklejamy, nowo utworzona warstwa ma rozmiar tego co wkleiliśmy (żółta obwódka). Żeby uzyskać zaznaczenie rozmiaru takiej warstwy wystarczy Ctrl+A (Zaznaczenie > Całość) (skróty i opisy zgodne z gimp 2.8)

3
Pomoc doraźna / Odp: Problemy z Maszyną 01.13
« dnia: 17 Marca 2013, 14:15:54 »
Zainspirowany pytaniem @El Mecánico znalazłem dokument przygotowany przez nvidię opisujący jak można wymusić użycie karty nvidii w konfiguracji dwu kartowej intel+nvidia: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf (po angielsku)
W skrócie jedyną opcją którą, w naszym przypadku można by spróbować to poprawka do exe która wystawiła by odpowiednią flagę do sterownika nvidii w wersji 302 i wyższej.
extern "C" {
 _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

4
Cytat: wiki.winehq.org/MacOSX
Intel Mac
When Apple announced that Mac OS X was moving to the x86 platform, the Darwine group, along with AlexandreJulliard and KenThomases of CodeWeavers, began working on an x86 version. Code from Darwine was merged into the main Wine tree. All development now happens in WineHQ tree.
Tłumaczenie: Mac OS X na procesorach Intela jest wspierany przez Wine.

Proponuję w takim razie tak samo jak na Linuxach, zainstalować Wine i z wykorzystaniem Wine uruchomić windowy plik binarny. (nie testowałem)

5
Poszukuję, chcę zrobić / Odp: Ekrany w lokomotywach.
« dnia: 29 Października 2012, 12:20:17 »
@ShaXbee: Przeprowadziłem udaną kompilacje z wykorzystaniem Borlandowego kompilatora w wersji 5.5 prostszego przykładu połączenia z Pythonem (bez OpenGL), niestety wersja 5.2 nie radzi sobie z tym (brak wchar.h a zarazem brak obsługi typu wchar_t).

Co do wydajności przetwarzania mogę przytoczyć gdzieś zasłyszany cytat (chyba dotyczy sytuacji w onet.pl)
Cytuj
- jak napisać wydajny kod w Pythonie?
- napisać go w C
tutaj leżące pod spodem biblioteki graficzne są właśnie w taki sposób implementowane (mam wrażenie, że Blender na tej samej zasadzie jest napisany)

W pierwszej kolejności chce sprawdzić jak by to wyglądało przy renderowaniu do pamięci nowej tekstury wyświetlacza co którąś ramkę, dalej osobno renderowanie tekstury do pamięci w jednej ramce, a potem wysłanie jej z pamięci do OpenGL w drugiej.  Mam wrażenie, że na forum czytałem, że jak na razie nie ma wielowątkowości w MaSzynie stąd jej wprowadzanie uważam za ostateczność (trudniejszy debug, różne dziwne zachowania). [tutaj jeszcze nie wiem co oferuje Borland głównie robiłem takie rzeczy forkami na linuxie i przez OpenMP co tutaj raczej nie ma zastosowania]

6
Poszukuję, chcę zrobić / Ekrany w lokomotywach.
« dnia: 13 Października 2012, 18:39:59 »
Witam, mam propozycję ożywienia ekranów montowanych w lokomotywach (na chwilę obecną to chyba kwestia jedynie ET22-2000 oraz ST45 która ekran w MaSzynie ma wyłączony, ale spodziewam się, że z czasem więcej nowoczesnego taboru pojawi się w zasobach MaSzyny). Propozycja sprowadza się do “zlecenia” dynamicznego tworzenia tekstury wyświetlacza językowi skryptowemu (moja propozycja to Python, z założenia tekstura wyświetlacza tworzona była by od nowa przy każdym kolejnym renderowaniu scenerii/kabiny).

Jako, że nie jest to propozycja idealna zacznę od negatywów tego podejścia:
* zachodzi potrzeba dodania do paczki plików wykonywalnych Pythona (aby nie zachodziła potrzeba instalacji środowiska wykonalnego; około 80MB)
* Python nie jest mistrzem szybkości (problem dotyczy większości języków interpretowalnych) co może powodować spowolnienia symulacji (w tym miejscu trudno mi określić jak duży wpływ na symulację może to być, rozwiązania typu tworzenie tekstury co którąś klatkę potencjalnie mogą wchodzić tutaj do gry jako niwelacja spowolnień)
* tworzenie tekstry sprowadzi się do wykonania praktycznie dowolnego kodu, co oznacza, że w którymś momencie osoby o złych intencjach mogły by w nieoficjalnych dodatkach próbować przemycić tutaj potencjalnie szkodliwy kod (teoretycznie można spróbować ograniczyć środowisko wykonywalne tak aby np. funkcje sieciowe pythona nie były dostępne; z drugiej strony pytanie czy ktoś by się pokusił na taki atak na mimo wszystko stosunkowo małą społeczność)

Na co pozwoliło by wprowadzenie tego pomysłu w życie:
* możliwość tworzenia dowolnie zachowującego się wyświetlacza w lokomotywie bez potrzeby dalszych zmian w exe (“program wyświetlacza” ładowany by był w trakcie procesu inicjacji kabiny) na podstawie wcześniej ustalonego zestawu danych przesyłanego z symulatora
* pełna kontrola nad zachowaniem wyświetlacza - aktualnie wyświetlacz w ET22-2000 jest realizowany przez nakładanie kolejnych tekstur na siebie, co w momencie gdy użytkownik nie włączy podświetlenia instrumentów - co zmienia teksturę wyświetlacza z wyłączonego na włączony - widzi kontrolki nakładane na teksturę wyłączonego wyświetlacza, co wygląda poniekąd komicznie.

Stworzyłem małe demo / proof of concept takiego rozwiązania - kręcący się sześcian teksturowany dynamicznie przez Pythona. Dla zainteresowanych udostępniam do pobrania paczkę ze źródłami programu (i kawałkiem Pythona potrzebnym do kompilacji; przykład dla Visual Studio 2010 (budować w konfiguracji Release); bez kawałka Pythona potrzebnym do uruchomienia) oraz paczkę uruchomieniową zawierającą wszystko co jest potrzebne w momencie uruchomienia.

Kod: ( http://eu07.pl/userfiles/21430/priv-py_screen_src.7z ) (458 KB)
Demo: ( http://eu07.pl/userfiles/21430/priv-py_screen_bin.7z ) (16,5 MB)

(do uruchomienia może być potrzebna paczka bibliotek visual studio 2010 do pobrania tutaj: http://www.microsoft.com/en-us/download/details.aspx?id=5555 )

Demo co minutę zmienia program wykorzystany do generowania tekstury sześcianu:
* prosty zegarek
* interfejs mający symulować ET22-2010 na podstawie
&feature=g-u-u

* Hasler nowego typu (żółte diody chyba się w rzeczywistości tak nie zapalają, ale chciałem pokazać coś więcej)
(naciśnięcie klawisza r włącza i wyłącza rotacje, naciśnięcie klawisza p przełącza tryby odświeżania tekstury przez Pythona)

Trochę dłuży opis proponowanej architektury  jest następujący: Symulator podczas ładowania inicjuje klasę Pythona po której wszystkie klasy odpowiadające za rysowanie ekranów dziedziczą. Klasa ta implementuje inicjację identyfikatora tekstury i może zwrócić go do symulatora, z wykorzystaniem wrapperów dla OpenGL wysyła teksturę do środowiska OpenGL - dzięki wykorzystaniu pyOpenGL nie ma potrzeby przesyłania obrazu pomiędzy symulatorem a pythonem gdyż jest to realizowane na poziomie kodu pyOpenGL. Klasy implementujące poszczególne ekrany implenetują dwie funkcje: konstruktor który ma zainicjować teksturę (poprzez wywołanie dziedziczonego konstruktora) oraz załadować do pamięci wszystkie potrzebne obrazy oraz metodę renderującą ekran zwracającą obiekt obrazu (PIL.Image; dziedziczone metody wywołane przez symulator zajmą się resztą - aktualizacją tekstury) przyjmującą jako argument słownik (mapę) z aktualnym stanem symulacji pojazdu.
Do inicjacji klasy potrzebna jest ścieżka do pliku w którym jest zawarta oraz jej nazwa.

Jako, że w przypadku Visual Studio wszystkie opcje kompilacji zaszyte są w plikach konfiguracji, ekwiwalent flag kompilacji dla g++ prezentował by się następująco: -Lpython/lib -Ipython/include -lpython33

W przypadku gdy pomysł zostanie zaakceptowany i wdrożony w życie spodziewam się, że w połączeniu ze skanowaniem torów na potrzeby prowadzenia pojazdów przez AI mogło by to być wyjściem dla stworzenia MaSzynowej sygnalizacji kabinowej. (luźna propozycja)

Kolejnym tematem do rozważenia po integracji Pythona i symulatora może być przekazanie części sterownia maszynami sterowanymi przez mikroprocesory - dla przykładu ET22-2000 i tempomat. W ramach planów wprowadzenia obsługi elektryki lokomotyw przez schematy drabinkowe można rozważyć taką współpracę (nie wiem w jakim stopniu schematy drabinkowe miały by być używane, jak również zdaję sobie sprawę że za ich pomocą można odwzorować sterowanie poprzez mikroprocesory - bo przecież tak je się programuje - ale wykorzystanie tutaj typowego języka programowania wydaje się ciut prostszym rozwiązaniem). (luźna propozycja)

Z mojej strony oferuję się z pomocą przy integracji proponowanego rozwiązania w exe, jak również przygotowania krótkiego kursu tworzenia ekranów na przykładzie tych zawartych w demo. Jako, że nie mam kontaktu z lokomotywami dla tworzenia bardziej rzeczywistych programów ekranów potrzebował bym dodatkowych materiałów i opisów od ludzi którzy mają z nimi styczność na co dzień.

Osobiście uważam, że zastosowanie języka skryptowego może zmobilizować pewną grupę użytkowników (zapewne niewielką) mającą umiejętności programistyczne ale nie wykorzystującą ich do rozwoju symulatora z uwagi na dostępu do kodu exe i przekonanie, że nie mają wystarczająco dużo czasu aby się o taki dostęp starać - w przypadku użycia języków skryptowych rozwój rozszerzenia jest niezależny od exe (z dokładnością do ustalonych struktur danych)

Wprawne oko mogło zauważyć, że czas na animacji “prostego zegarka” podlega drganiom podczas animacji rotacji, jest to wynik przyjętego przeze mnie podejścia do obracania elementów - dysponując jedynie metodą obrotu wokół środka ze względów wydajnościowych obracam obraz wokół środka i wyliczam gdzie punkt środka powinien zostać umieszczony po obrocie, a następnie obrazy są łączone - jako, że operacja łączenia obrazów wymaga zaadresowania przestrzeni adresem pikseli wkrada się tutaj “błąd zaokrągleń” powodujące drgania nakładanego obrazu w każdej kolejnej ramce - jest to też powód dla którego Hasler nie używa igły bazującej na zdjęciu. Wstępne oględziny innej biblioteki pyGame - często używana dotworzenia gier 2D - wskazują, że jej wykorzystanie z tym problemem by nie pomogło. Powiększenie obrazu do odpowiednich rozmiarów dające przesunięcie środka daje satysfakcjonujące wyniki, ale czas łączenia obrazów jest większy. (na chwilę obecną trudno mi powiedzieć na ile animacja obracania będzie w przyszłości potrzebna, więc trudno mi stwierdzić czy jest to problem dyskwalifikujący to rozwiązanie - np. żółte diody na Haslerze obracane są w taki sam sposób, ale jako, że kąt obrotu dla każdej jest stały nie mają żadnych problemów tego typu)

Kolejnym słówkiem komentarza, jako że środowisko Pythonowe jest w większym stopniu odseparowane od tego co się dzieje w exe, realizacja ekranów działających na zasadzie “widok z kamery” nie będzie do zrealizowania o ile widok z tych kamer nie zostanie odpowiednio przesłany do programu pythonowego w momencie wywołania funkcji rysującej ekran. (takie przyszłościowe myślenie)

Jako, że ogólna myśl poprawy obsługi ekranów zapewne zostanie ciepło przyjęta tematem dyskusji powinno być czy proponowane podejście technologiczne jest akceptowalne. Ze szczególnym zwróceniem uwagi, że wszystko tak naprawdę mogło by być zrealizowane z poziomu exe (zapewne dużo, dużo większym nakładem pracy), czy za pomocą dynamicznie ładowanych .dll (osobiście w C++ tego nie robiłem, w Delphi działało w miarę bezboleśnie) gdzie spodziewał bym się większej wydajności przy w dalszym ciągu ciut większym nakładzie pracy ale już z możliwością rozwoju niezależnego od exe.

(Podczas testów na Windows XP na maszynie wirtualnej otrzymałem błąd inicjacji tekstury ET22 wraz z ostrzerzeniem o wewnętrznym będzie maszyny wirtualnej, jeśli ktoś jeszcze z takiego windowsa korzysta prosił bym o potwierdzenie lub zaprzeczenie występowaniu takiego zjawiska - starsza wersja tego ekranu działała w tej konfiguracji)

7
Bieżące Symulatorowe / Odp: Co poprawić w pierwszej kolejności?
« dnia: 19 Września 2012, 17:46:50 »
Może się nie znam, ale dla mnie metoda na lusterka jest taka, że się wylicza współrzędne "pozornej kamery za lustrem", z tego punktu się renderuje scenę, a uzyskany obraz się wkleja w płaszczyznę lustra jako teksturę. Z tego powodu każde lustro to dodatkowe renderowanie scenerii. Jedno lustro to 1/2 dotychczasowego FPS, dwa to 1/3 FPS itd. Żadnego potężnego silnika nie będzie, chyba że zgłosi się ktoś, kto takowy zrobi. Ja specjalistą od grafiki 3D nie jestem i raczej nie będę.

Przy tak realizowanych odbiciach (lustra, odbicia w wodzie) dość dobrze sprawdza się "oszczędność" pod tytułem renderowanie w mniejszej rozdzielczości na potrzeby lustra. Przy wykorzystaniu filtrów typu rozmazanie tekstury (na już wyrenderowany obraz) można też uprościć renderowanie na potrzeby lustra - np. brak antyaliasingu. Nie wiem jaki jest stan luster na lokomotywach, ale spodziewam się, że nie są całkiem doczyszczone i są nadgryzione zębem czasu więc nieidealne odbicie jest jak najbardziej na miejscu. (Nie wiem, jak to wygląda w MaSzynie, w projekcie używającym XNA działało całkiem sprawnie)

Edit: Efekt był dobry nawet przy rozdzielczości dla tekstury lustra (nakładanej na powierzchnię jeziorka) odpowiadającej połowie wysokości i szerokości rozdzielczości sceny

8
Inne niekolejowe / Odp: Brak dźwięku w filmie na youtube
« dnia: 23 Lipca 2012, 18:35:18 »
Na przykład popularnym odtwarzaczem VLC (http://www.videolan.org/index.html) który posiada wiele ciekawych opcji.

Z menu media wybieramy opcję Convert/Save, podajemy plik do konwersji, klikamy convert/save, podajemy gdzie zapisać z listy wybieramy format zapisu (jest sporo przygotowanych wcześniej, możemy ręcznie dostosowywać ustawienia w razie potrzeby), klikamy start i czekamy - trochę to trwa ;)

9
Inne niekolejowe / Odp: Sklep internetowy, serwer - co potrzebne?
« dnia: 16 Czerwca 2012, 21:45:29 »
Dużo więcej dopowiedzieć nie mogę bo miałem kontakt tylko z dwoma wcześniej wspominanymi rozwiązaniami, a i osCommerce był dawno.   Sporo też zależy od Twoich umiejętności bo o ile edycja osCommerce to względnie każda z operacji dzieje się w jednym pliku i jest razem z kodem HTML odpowiadającym za ten widok. Gdzie dla Magento trzeba zapoznać się ze strukturą modułu i szukać plików skórki w osobnym miejscu niż znajduje się kod rozszerzeń. Przy czym Magento jest kompleksowym i zaawansowanym rozwiązaniem, a darmowe moduły również oferują duże możliwości (integracja z PayU, Ratami Lukas, Paczkomaty, logowanie Facebookiem).

Spodziewam się, że osCommerce z racji na swoją prostotę będzie miał większe wsparcie lokalnej społeczności, natomiast z Magento jest gorzej. Muszę jeszcze napomknąć, że Magetno jest prawdopodobnie najbardziej zasobo-żernym dostępnym rozwiązaniem - nie polecał bym dla serwera zrobionego z bardzo starego PC.

10
Inne niekolejowe / Odp: Sklep internetowy, serwer - co potrzebne?
« dnia: 16 Czerwca 2012, 20:47:15 »
Generalnie zwykły PC sklep o małym natężeniu ruchu bez problemów powinien pociągnąć, ale generalnie dobrze by było mieć maszynę z większą ilością równoległych wątków (najlepiej wiele rdzeni). Dalsze przyśpieszenie osiągamy przez więcej RAMu i szybsze dyski. Co prawda ostatnio polska chmura została obrzucona błotem po awarii zasilania w Beyondzie, ale jest to sensowna opcja gdy sklep się rozrośnie.

Co do pisania samemu to jest to trochę odkrywanie koła no nowo, możesz obejrzeć zawsze gotowe systemy z otwartym kodem źródłowym. Kiedyś popularny był osCommerce - ale z tego co pamiętam w kodzie była raczej kaszanka. Osobiście pracuje przy sklepach opartych o Magento (zorientowany obiektowo PHP, dużo wzorca projektowego faktoria). Dla Magento masz dostępne zarówno płatne jak i darmowe moduły na ich stronie http://www.magentocommerce.com/pl - z dużych sklepów w Polsce (przy których ja nie pracuje) to www.matras.pl . Przy czym pierwsze wejście w Magento jest trudne bo w samym kodzie jest utrzymany dość wysoki poziom abstrakcji dla utrzymania wysokiej modułowości, a później wysokiej kultury pracy jak się już system pozna.

Jeżeli dalej masz zamiar pisać całość od zera, polecam wykorzystanie jakiejś podbudowy pod to, żeby wszystkiego nie robić od zera. Aktualnie popularne są frameworki korzystające z wzorca projektowego MVC (model - widok - kontroler). Zależnie od Twoich preferencji języka programowania polecał bym dla PHP - CakePHP, dla Pythona - Django, dla Ruby - RubyOnRails. Wszystkie są oparte o podobną logikę, miłe i przyjemne w nauce i stanowczo przyśpieszają pracę nad stroną.

11
Pomoc doraźna / Odp: Problemy z Paczką Całościową 2011
« dnia: 14 Czerwca 2012, 21:18:35 »
Spodziewam się, że ktoś wcześniej już to zauważył, ale:

Kabiny w ED73 są przesunięte w prawo względem osi pojazdu, problem dotyczy obydwu kabin.

Czysta paczka bez modyfikacji.

Strony: [1]