1 DirectX X Files. conv3ds file.3ds

Wielkość: px
Rozpocząć pokaz od strony:

Download "1 DirectX X Files. conv3ds file.3ds"

Transkrypt

1 1 DirectX X Files Witam, witam. Po wielu namowach, prośbach i groźbach w końcu ustąpię i zrobię Wam tutorial o ładowaniu modeli na naszą scenę. Długo się z tym nosiłem, chciałem Wam dać jakąś moją wydumaną bibliotekę, ale w końcu stwierdziłem, że jest beznadziejna i zrobimy tak, jak należy - posłużymy się dzisiaj znów naszym wspaniałym pakietem, czyli rzecz będzie o plikach *.x (X Files). Nie będą one miały jednak nic wspólnego z agentami FBI uganiającymi się za zielonymi ludkami. W końcu będziemy mogli się wyrwać ze świata sześcianów i prostokątów w świat trochę bardziej realnych brył trójwymiarowych. Większość z Was ma zapewne dosyć mojego przykładowego sześcianu, na którym prezentujemy nasze kolejne sztuczki. Jest on wprawdzie dosyć wdzięcznym modelem do nauki, no ale bez przesady, ileż można. Mamy tyle wspaniałych programów do modelowania scen 3D, że o ilości darmowych modeli nie wspomnę. Aż prosi się o ich wykorzystanie, no a my do tej pory nie wiemy jak. Bardziej ambitni na pewno sobie już poradzili. Mając do dyspozycji biblioteki, które wczytują modele z plików programów 3D (na sieci błąka się ich całe mnóstwo) ładowali sobie ich dane na przykład do bufora wierzchołków i w jakiś tam sposób radzili sobie. Direct3D nie byłby jednak pełną biblioteką gdyby nie umożliwiał ładowania i osadzania na scenie modeli wczytywanych z plików. Żeby jednak być trochę oryginalnymi, panowie z Microsoftu wymyślili sobie nie wiadomo po co własny format plików z modelami. Nazwali jest właśnie plikami *.x (może byli fanami naszego serialu?). W każdym razie my dostaliśmy do ręki format pliku i odpowiednie narzędzia, które posłużą nam do tego szczytnego celu, jakim będzie załadowanie modeli na scenę. Powiedzmy sobie zatem kilka słów o plikach *.x. Pliki *.x zostały wprowadzone w wersji DirectX 2.0 i były one wtedy w formie tekstowej (o tym za chwilę). W wersji 3.0 dostępne już były pliki w postaci binarnej, ale dopiero w wersji 6.0 dano użytkownikom pakietu do ręki narzędzia (interfejsy i metody), które pozwalają odczytywać i co ciekawe również zapisywać do plików w formacie *.x. Jak twierdzą twórcy pakietu DirectX, format plików *.x jest formatem bardzo elastycznym, może przechowywać modele (jako siatki), tekstury, animacje i obiekty zdefiniowane przez użytkownika. Jak widać, format faktycznie bardzo uniwersalny. Weźmy dla przykładu animację. Możliwość przechowania całej animacji daje nam do ręki różnorakie możliwości. Możemy sobie na przykład w naszym programie do modelowania i animacji stworzyć jakąś piękną scenę, potem załadować sobie to do DirectX-a i voila! Będziemy sobie odtwarzać to w czasie rzeczywistym z możliwością naszej ingerencji. Wyobrażacie sobie na przykład grę z grafiką obecną na przykład w filmie "Final Fantasy"? No ale wróćmy może na ziemię ;-), bo nie stać nas jeszcze na komputery, które potrafią takie coś policzyć "na żywca", choć podobno są czynione próby :-). Swoją drogą każdy fan grafiki komputerowej powinien obejrzeć ten film, bo kto wie, czy za parę lat nie skończy jako producent takich właśnie filmów. Cóż jeszcze wynika z uniwersalności plików *.x. Na przykład możemy sobie tworzyć hierarchię obiektów (kto pracował z takimi programami jak 3D Studio Max, LightWave itp.), ten wie o czym mówię. Można raz zapisany obiekt wykorzystywać potem w pliku wiele razy (odwołując się do niego). Ten rysunek, jak zwykle skopiowany bezczelnie z DirectX SDK, pokazuje hierarchię interfejsów dotyczących plików *.x i ich wzajemne zależności. O niektórych z nich będzie okazja powiedzieć bliżej w naszym tutorialu, o niektórych może powiemy sobie trochę później. Napisałem wcześniej o jakiś formatach - tekstowym i binarnym. Otóż pliki *.x mogą właśnie istnieć w takich dwóch postaciach. W tekstowym pliku będziemy mieć mnóstwo różnych dziwnych oznaczeń, słów kluczowych i danych. My nie będziemy się tym formatem zajmować, bo jakoś nie czuję do niego sentymentu. Zapewniam, że używanie plików *.x w formacie binarnym nie różni się niczym od tych w tekstowym i jak ktoś się koniecznie upiera, to może sobie używać obydwu równocześnie. Funkcję DirectX-a są na tyle mądre, że nie przejmują się tym kompletnie. Format binarny jest dla mnie bardziej zwarty no i przynajmniej nikt nie może nam w nim grzebać bezkarnie, no bo kto się połapie w masie krzaczków jakie ujrzy po otwarciu takie pliku... Nie będę tutaj się rozpisywał na temat wszystkich aspektów budowy pliku *.x, bo na to znajdziemy jeszcze czas. Pokażę jak załadować plik na scenę i jak otrzymywać w ogóle pliki *.x. I zaczniemy właśnie od tego. Aby użyć pliku *.x trzeba go najpierw mieć. W SDK oczywiście znajdziemy wiele przykładowych plików no ale nam marzy się zupełnie co innego. Całe morze Internetu i modele wszelkiego rodzaju - począwszy od prostych sześcianów na modelach zawierających po 150 tysięcy wierzchołków. Co w takim razie będzie nam potrzebne? Po pierwsze pliki z modelami - o nie nie jest trudno. Wpisujemy w wyszukiwarce "3D models" i jazda, mamy całe mnóstwo. Tutaj jedna, bardzo ważna uwaga! Modele muszą być w formacie starego dobrego 3D Studio Max - pliki z rozszerzeniem *.3ds. Oczywiście programów do modelowania jest całe mnóstwo i każdy z nich posiada własny format zapisu danych, ale każdy szanujący się powinien mieć konwerter do formatu *.3ds. 3D Studio Max był jednym z pierwszych, bardzo zaawansowanych jak na owe czasy programów nie tylko do modelowania ale także animacji i pewnie dlatego przez tradycję panowie z Microsoftu zdecydowali się właśnie na na stare 3D Studio. W każdym razie dlaczego o tym piszę - żaden program nie zapisuje na razie w formacie *.x używanym przez Direct3D i nie wygląda na to, żeby się to miało wkrótce zmienić. Dlatego też potrzebny był konwerter z plików 3D Studio do formatu *.x. W pakiecie SDK dostajemy do ręki coś takiego. Program nazywa się "conv3ds.exe" i jak dobrze poszukacie, to na pewno znajdziecie. Cóż robi ten program - w zasadzie już napisałem i powinno wystarczyć. No ale jak to wiadomo w życiu nie wszystko jest takie proste jakby się zdawało. Wywołanie programu jest zupełnie banalne, linia: conv3ds file.3ds spowoduje, że powstanie nam plik o nazwie file.x zawierający wszystko to, co zawierał plik *.3ds. Takie wywołanie konwertera powoduje, że plik wynikowy będzie miał format binarny (domyślny) czyli w sumie taki o jaki nam chodzi. Ponieważ jednak nasz program zawiera sporo ciekawych opcji, więc przyjrzyjmy mu się bliżej. Przepiszę znowu bezczelnie kawał dokumentacji, no ale nigdzie indziej nie znalazłem info na ten temat:

2 2 DirectX X Files conv3ds -A file.3ds Napisałem wcześniej, że do Direct3D możemy ładować nie tylko modele, ale także całe animacje. I jeśli wiemy, że plik *.3ds zawiera taką animację to aby znalazła się ona w pliku *.x, musimy wywołać konwerter w sposób następujący: conv3ds -m File.3ds Jeśli na przykład na scenie mamy kilka modeli, lub jeden model złożony z kilku oddzielnych obiektów (na przykład samochód = karoseria + koła + wnętrze itp.) a chcemy aby załadował się on nam jako całość, to powinniśmy zrobić tak: conv3ds -T File.3ds Pewną ciekwą sztuczkę można zrobić, jeśli plik zawiera animację, ale nie chcemy ładować wszystkich klatek z pliku. Możemy "upakować" niejako wszystkie klatki i obiekty do pierwszej klatki animacji, tak że mogą one zostać załadowane jednym wywołaniem funkcji. Pierwsza klatka zostanie załadowana z pliku *.x, reszta natomiast zostanie załadowana z pliku x3ds_nazwa, który powstanie po użyciu takiej opcji konwersji. Plik ten nie będzie miał rozszerzenia. Jeśli użyjemy takiej opcji to nie będzie ona działać jeśli jednocześnie użyjemy opcji -m. conv3ds -s10 File.3ds conv3ds -s0.1 File.3ds Czasem zdarza się, że pomimo naszych usilnych wysiłków okaże się, że nasz model jest za duży a akurat pożyczyliśmy płytkę z programem do modelowania kumplowi. Co wtedy? Nie stoimy jeszcze na straconej pozycji. Możemy sobie przy ładowaniu przeskalować nasz model o wybraną, w zasadzie dowolną wartość. Można to robić oczywiście w górę tak, jak w pierwszym przykładowym wywołaniu (x10) jak i w dół - drugie wywołanie to pomniejszenie modelu 10 razy. Jeśli po konwersji nasz obiekt wyświetlany nie jest do końca taki, jaki sobie wymarzyliśmy - ma dziury, pozmieniane face'y itp., możemy spróbować użyć opcji -r, która odwraca porządek ścianek w modelu podczas konwersji. Opcja -v włącza swego rodzaju tryb debugowania podczas konwersji. W zależności od liczby podanej po literze 'v' możemy otrzymać różne poziomy informacji. I tak: v0 - opcja domyślna, wszelkie informacje wyłączone, v1 - wyświetla ostrzeżenia o złych obiektach (nieprawidłowo zbudowanych?) oraz ogólne informacje co robi konwerter w danej chwili, v2 - wyświetla podstawowe informacje o klatkach kluczowych, obiektach będących przedmiotem konwersji i obiektach, które zostały zapisane, v3 - najwyższy poziom, mnóstwo informacji, bardzo przydatny do usuwania problemów. conv3ds -e"ppm" File.3ds Opcja -e nakazuje konwerterowi zmienić rozszerzenia plików tekstur do których będzie się dowływał model zawarty w pliku *.x, w naszym przykładzie *.ppm. Jeśli plik file.3ds zawiera odnośniki do pliku *.gif, konwerter spowoduje, że plik *.x będzie zawierał odnośniki do plików *.ppm. Konwerter nie konwertuje samych plików tekstur! Tekstury muszą się znajdować w katalogu określonym przez zmienną środowiskową D3DPATH. Opcja -x nakazuje konwersję do plików tekstowych. Są one zdecydowanie większe od binarnych, ale umożliwiają edycję danych z "ręki". Opcja -X nakazuje właczenie podczas konwersji pików *.x zawierających szablony. O szablonach jednak powiemy sobie innym razem. Opcja -t spowoduje, że plik *.x nie będzie zawierał informacji o teksturach. Opcja -N nakazuje, aby w pliku wynikowym *.x nie znalazły się informacje o wektorach normalnych. Opcja -c powoduje to, że plik *.x nie będzie zawierał danych o współrzędnych teksturowania obiektu. Domyślnie, jeśli obiekt nie zawiera współrzędnych teksturowania, użycie opcji -m spowoduje, że wszystkie pary uv będą miały wartość 0, 0. Opcja -f zawiadamia, że plik wyjściowy ma nie zawierać macierzy transformacji. Opcja -z i -Z umożliwiają dostosowanie wartości kanału alfa koloru materiału, z którego są zbudowane ścianki obiektów. Dla przykładu poniższe polecenie powoduje, że konwerter doda wartość 0.1 do wszystkich wartości alfa poniżej 0.2. conv3ds -z0.1 -Z0.2 file.3ds

3 3 DirectX X Files Następujące polecenie powoduje odjęcie od wszystkich wartości kanału alfa liczby 0.2. conv3ds -z"-0.2" -z1 file.3ds Opcja -o umożliwia zmianę nazwy pliku wyjściowego, utworzonego po konwersji. Opcja -h zakazuje pobierania z pliku *.3ds jakichkolwiek informacji o znajdujących się tam hierarchiach, zazwyczaj wstawianych tam przez moduł 3D Studio zwany keyframerem. Zamiast tego wszystkie obiekty są konwertowane jak w swoich startowych ujęciach, jeśli opcja -m nie jest użyta. Jak już nadmieniłem wcześniej, istnieje wiele programów mogących służyć modelowaniu obiektów i animacji. Jednym z nich jest LightWave. Posiada on plugin do eksportu plików w formacie *.3ds potrzebnych konwerterowi. Jednak próba konwersji plików pochodzących z LightWave'a może się skończyć obecnością błędów i dlatego w takim przypadku wskazane jest użycie następującego polecenia: conv3ds -r -N -f -h -T m trans3dfile.3ds Jeśli już dokonaliśmy konwersji i teraz załadujemy nasze modele do programu i będą problemy, to możecie sprawdzić co następuje: Jeśli w ogóle nie widać obiektów załadowanych po konwersji, spróbujcie skonwertować je jeszcze raz przeskalowując jednocześnie (opcja -s) ze współczynnikiem około 100 razy. Jeśli po załadowaniu obiektu i zmianie cieniowania z płaskiego na Gourauda obiekt nagle ciemnieje, spróbujcie konwersji z opcją -N. Jeśli nie są ładowane tekstury po konwersji, to sprawdźcie, czy nie zmieniliście rozszerzeń plików tekstur, czy tekstury znajdują się w katalogu wskazywanym przez zmienną D3DPATH oraz czy wszystkie tekstury mają wielkości będące potęgami liczby 2. Jeszcze jedna uwaga. Konwerter nie potrafi poradzić sobie z obiektami pomocniczymi używanymi w programach do animacji, (tzw. dummy objects) i je ignoruje. Jeśli konwertujecie więc animację, weźcie to pod uwagę. No i z dokumentacji byłoby na razie tyle a my udamy się w tym momencie do naszego kodu, zobaczyć co tam słychać nowego: LPD3DXMESH g_pmesh = NULL; // Our mesh object in sysmem D3DMATERIAL8* g_pmeshmaterials = NULL; // Materials for our mesh LPDIRECT3DTEXTURE8* g_pmeshtextures = NULL; // Textures for our mesh DWORD g_dwnummaterials = 0L; // Number of mesh materials No i tak. Obiekty Direct3D i urządzenia tradycyjnie już pomijamy, bo znamy je doskonale. W zasadzie obiekty materiału i tekstury też znamy i możemy sobie odpuścić ich omawianie. Nowym elementem dla nas jest coś takiego jak obiekt siatki (ang. mesh). W naszym programie tworzymy sobie taki obiekt za pomocą wskaźnika do obiektu siatki. Wskaźnik ten jest określany przez typ LPD3DXMESH. Jakie metody udostępnia nam taki obiekt? Po zajrzeniu do dokumentacji możemy się doskonale przekonać. Nas interesować będzie szczególnie metoda potrafiąca narysować siatkę na ekranie - DrawSubset(). Jak ona dokładnie działa omówimy sobie później, no a my zerknijmy jeszcze na dostępne metody. Mamy do dyspozycji szereg metod, pozwalających na dostęp do buforów zawierających dane naszej siatki, pozwalające na kopiowanie naszych siatek, zwracające ilość różnorakie informacje o siatce, takie jak ilości wierzchołków, face'ów i tym podobne. Czy przydarzy się nam jest wykorzystać nie wiem, ale dobrze wiedzieć, gdzie szukać w razie czego. Innymi słowy, chociaż zamkniemy sobie nasz model w jakimś tajemniczym obiekcie, dzięki jego metodom będziemy mieć nadal nad naszym modelem kontrolę a jak już oswoimy się z jego metodami, to będziemy nim manipulować z łatwością. Ostatnia zmienna typu DWORD będzie określać ilość materiałów, jaką posiada model, co jest dla nas pewną nowością, ponieważ do tej pory każdy model o ile w ogóle posiadał materiał jako taki to był on jeden, no a teraz będziemy mogli mieć ich kilka. Wprawdzie poszczególne części maszyn czy innych wynalazków przeważnie są zrobione z jednego rodzaju materiału to jednak może nam się na przykład zamarzyć, żeby załadować dla przykładu model samochodu w całości (jako jeden obiekt) no i wtedy moglibyśmy mieć problem - szyby inne, opony inne, karoseria jeszcze inna. Dzięki możliwości ładowania różnej ilości materiałów przez Direct3D ten problem dla nasz nie istnieje. Inicjalizacja urządzenia też nie stanowi dla nas żadnej tajemnicy. Standardowe operacje, które wykonujemy chyba codziennie po kilkadziesiąt razy uruchamiając nasze przykłady. Żeby więc niepotrzebnie nie przedłużać, zajmijmy się naszym modelem. Załóżmy, że stworzyliśmy w jakimś programie do modelowania piękny model powiedzmy naszego przyszłego domu ;-) i chcielibyśmy sobie teraz po nim pochodzić i zobaczyć jak to będzie. Napisaliśmy super silnik 3D, który jest w stanie wyrenderować co nam się tylko podoba. Nie mamy tylko czego wyświetlić. Zapisaliśmy jakimś cudem nasz model jako plik *.3ds, więc czas przystąpić do konwersji. Uruchamiamy omawiany powyżej program z odpowiednimi opcjami, podajemy jako parametr plik *.3ds z modelem naszego domu i odpalamy. Jeśli wszystko poszło po naszej myśli to na pewno otrzymaliśmy to, co chcieliśmy - plik moj_dom.x z ewentualnym zestawem tekstur, których tam użyliśmy. No i cóż nam pozostało? Popatrzmy.

4 4 DirectX X Files HRESULT InitGeometry() LPD3DXBUFFER pd3dxmtrlbuffer; // Load the mesh from the specified file if( FAILED( D3DXLoadMeshFromX( "Tiger.x", D3DXMESH_SYSTEMMEM, g_pd3ddevice, NULL, &pd3dxmtrlbuffer, &g_dwnummaterials, &g_pmesh ) ) ) return E_FAIL; // We need to extract the material properties and texture names from the // pd3dxmtrlbuffer D3DXMATERIAL* d3dxmaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer(); g_pmeshmaterials = new D3DMATERIAL8[g_dwNumMaterials]; g_pmeshtextures = new LPDIRECT3DTEXTURE8[g_dwNumMaterials]; // Copy the material g_pmeshmaterials[i] = d3dxmaterials[i].matd3d; // Set the ambient color for the material (D3DX does not do this) g_pmeshmaterials[i].ambient = g_pmeshmaterials[i].diffuse; // Create the texture if(failed(d3dxcreatetexturefromfile(g_pd3ddevice, d3dxmaterials[i].ptexturefilename, &g_pmeshtextures[i]))) g_pmeshtextures[i] = NULL; // Done with the material buffer pd3dxmtrlbuffer->release(); return S_OK; Skoro mamy już nasz model w pliku *.x możemy przystąpić do jego ładowania. Powyższa funkcja ma spowodować, aby nasz dom znalazł się gdzieś w pamięci, skąd będziemy mogli go wyświetlać. Czy się jej to uda? Sprawdźmy. LPD3DXBUFFER pd3dxmtrlbuffer; Zmienną bufora już znamy, omawialiśmy sobie ją przy okazji vertex shadera. Cóż ona będzie zawierać w tym przypadku? Otóż, jeśli funkcji ładującej dane z pliku *.x uda się wszystko tak, jak powinno, to w buforze tym znajdzie się tablica struktur typu D3DXMATERIAL, zawierających dane o materiałach wczytanych z pliku *.x. // Load the mesh from the specified file if( FAILED( D3DXLoadMeshFromX( "Tiger.x", D3DXMESH_SYSTEMMEM, g_pd3ddevice, NULL, &pd3dxmtrlbuffer, &g_dwnummaterials, &g_pmesh ) ) ) return E_FAIL; No i wreszcie długo upragniony moment, czyli ładowanie modelu z pliku. Znowu z pomocą przychodzi nam nieoceniona biblioteka D3DX i jej bardzo pożyteczne funkcje. Użyjemy sobie funkcji D3DXLoadMeshFromX(). Nazwa mówi sama za siebie, no ale parametry już mniej. Cóż więc takiego mamy: "Tiger.x" - pierwszy parametr to jak łatwo się domyślić i zobaczyć nazwa naszego pliku z modelem. Piszę modelem, ponieważ nie eksportujemy żadnej animacji ani hierarchii. D3DXMESH_SYSTEMMEM - Tutaj powinna znaleźć się kombinacja flag określających sposób tworzenia siatki na podstawie danych z pliku. Nasza siatka jest zapisana w specyficzny sposób w pliku, o którym już pisałem kiedyś. Są to dane wierzchołków i indeksy do nich. Czyli tak naprawdę każdy wierzchołek jest zapisany tylko raz i jeśli

5 5 DirectX X Files kilka trójkątów się do niego odwołuje to robi to poprzez jego numer w kolejności - czyli tzw. indeks. W ten sposób oszczędzamy miejsce i pamięć dla danych. Flaga D3DXMESH_SYSTEMMEM określa pewien sposób tworzenia bufora indeksów dla naszej siatki. Co to bufor indeksów i z czym to się je, może powiemy sobie kiedy indziej. Teraz znowu musicie uwierzyć mi na słowo, że tak będzie ok. g_pd3ddevice - Trzeciego parametru nie muszę chyba nikomu opisywać? Oczywiście nasze bardzo pożyteczne urządzenie. NULL - Czwarty parametr może zawierać trochę mniej istotną dla nas wartość, a w szczegółach to bufor zawierający tablicę numerów trzech sąsiednich trójkątów dla tego, którego numer jest aktualnym indeksem tej tablicy. Nas to na razie nie interesuje, więc ustawiamy to sobie na wartość NULL. pd3dxmtrlbuffer - Ten parametr omawialiśmy przed chwilą na górze. Jest to bufor zawierający tablicę struktur typu D3DXMATERIAL, w których zawarte są dane o poszczególnych materiałach użytych w naszym modelu. g_dwnummaterials - zmienna przechowuje ilość materiałów jakie zawiera nasza siatka. Do funkcji podajemy ją jako wskaźnik. g_pmesh - czyli to, co interesuje nas najbardziej w tym momencie, czyli obiekt naszej siatki (ang. mesh). Obiektu tego użyjemy za chwilę do narysowania naszego modelu na ekranie. Ale zanim to nastąpi musimy jeszcze dokonać kilku rzeczy. // We need to extract the material properties // and texture names from the pd3dxmtrlbuffer D3DXMATERIAL* d3dxmaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer(); g_pmeshmaterials = new D3DMATERIAL8[g_dwNumMaterials]; g_pmeshtextures = new LPDIRECT3DTEXTURE8[g_dwNumMaterials]; Jak widać na załączonym fragmencie kodu, będziemy jeszcze potrzebować pewnych namiarów na materiały i tekstury użyte w naszym modelu, które to informacje są zapisane w pliku *.x. Po pierwsze opis materiałów. Jak wiemy, funkcja D3DXLoadMeshFromX() ładuje informacje o materiałach do bufora. W buforze znajduje się tablica ze strukturami D3DXMATERIAL zawierającymi dane o materiałach i teksturach. Jest to struktura zawierająca strukturę D3DMATERIAL8 oraz nazwę pliku z teksturą. Pamiętamy również, że aby użyć materiału na scenie ustawiamy go metodą urządzenia SetMaterial(), tylko że ta metoda potrzebuje wskaźnika do zmiennej będącej strukturą materiału. No a my mamy na razie bufor. Cóż więc zrobić? Ano musimy jakoś do tych danych się dobrać. Ponieważ mamy bufor, w buforze tablicę, więc zastosujemy tu pewną sztuczkę. Wiadomo, że w buforze nic oprócz naszych danych nie ma. Jest więc w pamięci tablica (ciąg) kolejnych struktur zawierających dane materiału. Czyli pobierając wskaźnik do bufora dostaniemy jednocześnie wskaźnik na pierwszy element naszej tablicy! Proste i skuteczne, prawda? Na samym początku naszego programu zadeklarowaliśmy także wskaźniki (w rzeczywistości będą to tablice) na struktury D3DMATERIAL8 oraz LPDIRECT3DTEXTURE8, powyżej zaś wykorzystując właśnie te wskaźniki i ilość materiałów dla naszego modelu tworzymy tablice materiałów i tekstur. // Copy the material g_pmeshmaterials[i] = d3dxmaterials[i].matd3d; // Set the ambient color for the material (D3DX does not do this) g_pmeshmaterials[i].ambient = g_pmeshmaterials[i].diffuse; // Create the texture if(failed(d3dxcreatetexturefromfile(g_pd3ddevice, d3dxmaterials[i].ptexturefilename, &g_pmeshtextures[i]))) g_pmeshtextures[i] = NULL; Spójrzmy bliżej na powyższą pętlę. Kopiujemy z tablicy struktur D3DXMATERIAL8, która to struktura ma dwa pola. Pole pierwsze, MatD3D jest strukturą typu D3DMATERIAL8, drugie to ptexturefilename czyli łatwo się domyśleć. Zmienna g_pmeshmaterials jest teraz tablicą struktur D3DMATERIAL8 o rozmiarze zawartym w zmiennej g_dwnummaterials, czyli określającej ilość materiałów na scenie. Jeśli więc chcemy załadować sobie dane z tablicy struktur D3DXMATERIAL do tablicy ze strukturami D3DMATERIAL8, to musimy się odwołać do pola MatD3D kolejnych struktur w tablicy d3dxmaterials. Ponieważ Direct3D nie nada naszemu materiałowi koloru składowej rozproszonej, musimy jeszcze ten jeden element uzupełnić sami. Przepisujemy więc teraz wartość z pola Diffuse do pola Ambient tej samej tablicy. Tak będzie w sumie najbezpieczniej. Dobra, mamy materiały, więc czas na tekstury. Tablica, z której czytamy nasze dane czyli d3dxmaterials zawiera w polu ptexturefilename nazwę pliku określającą naszą teksturę. Więc w czasie działania naszej pętli nie pozostaje nam nic innego jak tylko tworzyć nasze tekstury! Tablica g_pmeshtextures powinna zawierać nasze tekstury (obiekty tekstur). Z pomocą znowu przyjdzie nam także biblioteka D3DX. Funkcja D3DXCreateTextureFromFile(), którą także dobrze znamy,

6 6 DirectX X Files będzie nam tworzyć kolejne obiekty tekstury w tablicy wykorzystując pole ptexturefilename kolejnych struktur z tablicy d3dxmaterials. Jeśli natomiast nie powiedzie się wywołanie funkcji, tworzącej obiekty tekstur (na przykład nie będzie pliku z teksturą), to wtedy do tablicy zapiszemy wartość NULL i na scenie ujrzymy zapewne trochę zubożony nasz model. No ale może nie będzie aż tak źle. Po naszych rozważaniach wszystko powinno się udać ;-). // Done with the material buffer pd3dxmtrlbuffer->release(); Całą naszą zabawę kończymy zwalniając nasz bufor, w którym znajdują się dane dla materiałów i tekstur, które skopiowaliśmy do tablic za pomocą omówionej przed chwilą pętli. Wywołujemy jak zwykle metodę interfejsu IUnknown, która pozwoli naszemu buforowi odejść w zapomnienie a nam zwróci jakże cenną pamięć. VOID Render() // Clear the backbuffer and the zbuffer g_pd3ddevice->clear( 0, NULL, D3DCLEAR_TARGET D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 ); // Begin the scene g_pd3ddevice->beginscene(); // Setup the world, view, and projection matrices SetupMatrices(); // Meshes are divided into subsets, one for each material. // Render them in a loop // Set the material and texture for this subset g_pd3ddevice->setmaterial( &g_pmeshmaterials[i] ); g_pd3ddevice->settexture( 0, g_pmeshtextures[i] ); // Draw the mesh subset g_pmesh->drawsubset( i ); // End the scene g_pd3ddevice->endscene(); // Present the backbuffer contents to the display g_pd3ddevice->present( NULL, NULL, NULL, NULL ); No i cóż. Model, tekstury i materiały załadowane na scenę, więc nie pozostało nam już nic innego, jak tylko rozpocząć rysowanie! Nasza stara znajoma, czyli funkcja Render(). Prócz standardowej inicjalizacji, czyszczenia tła i ustawienia macierzy da się zauważyć brak metody urządzenia dotyczącej rysowania brył DrawPrimitive(). Dlaczego? Otóż my wykorzystamy do rysowania nasz obiekt siatki. Jest on na tyle sprytny, że potrafi narysować się sam! Nie potrzebujemy już przedzierać się przez wszelkie dane wierzchołków, ilość trójkątów, ustawienia stanów urządzenia. My po prostu każemy się naszemu obiektowi narysować i... i w zasadzie już. Ino, że w tym miejscu czeka nas niespodzianka. W zasadzie kto czytał uważnie to wcale nie powinien być zaskoczony, no ale dla pewności powiedzmy sobie o tym. Jak napisałem dużo wcześniej, możemy mieć model złożony z kilku oddzielnych elementów (dobrym przykładem pozostaje niezmiennie samochód). Każdy element może mieć inny materiał (opona, szyba, karoseria itd.). Możemy skonwertować sobie nasz model do pliku *.x w taki sposób, że wszystkie elementy zostaną połączone w jedną całość. W tym momencie na pewno powstanie pytanie - co z materiałami? Nie możemy oczywiście ich scalić w jedno, bo to zupełnie bez sensu. Podczas konwersji materiały są zapisywane oczywiście po staremu - czyli każdy oddzielnie, no a jak mieliśmy okazję się przekonać, podczas ładowania otrzymujemy wszystkie ładnie podane na tacy. Jeśli nasz model zostaje niejako "scalony" w jedną wielką bryłę to na pewno przy tym nie może zostać zapomniane rozłożenie materiałów na naszym modelu. Model więc zostaje podzielony na pewne segmenty, z których każdy charakteryzuje się materiałem, który jest jemu przydzielony. Oczywiście w większości modeli nie będzie tego problemu, no ale żeby nie robić sobie na przyszłość kłopotów i wyjaśnić istotę rysowania modelu za pomocą obiektu siatki lepiej sobie o tym powiedzieć. Tak więc będziemy mieć nasz model podzielony na pewne fragmenty zależne od materiału. // Set the material and texture for this subset

7 7 DirectX X Files g_pd3ddevice->setmaterial( &g_pmeshmaterials[i] ); g_pd3ddevice->settexture( 0, g_pmeshtextures[i] ); // Draw the mesh subset g_pmesh->drawsubset( i ); Przypatrzmy się temu fragmentowi funkcji renderującej. Znów mamy pętlę, która będzie się wykonywać tyle razy, ile mamy materiałów. Za każdym przebiegiem pętli ustawiony jest materiał i tekstura z tablic, które wypełnialiśmy podczas wczytywania modelu z pliku *.x. Następnie mamy wywołanie tajemniczej jeszcze metody obiektu siatki DrawSubset(). Cóż robi ta metoda? Wiemy już, że model może się składać z kilku "części". W zasadzie żadnej filozofii tutaj nie ma i widać jasno o co chodzi. Jeśli zdarzy się, że model jest złożony z kilku części i każdy z nich ma inny materiał to należy narysować nasz model niejako na raty. Najpierw te części, które posiadają określony materiał, potem te które mają inny i tak w kółko aż model będzie cały. I to właśnie wykonuje metoda DrawSubset(). Pobiera ona jako parametr numer kolejnego fragmentu naszego modelu, który należy narysować. Oczywiście, jak widać, wcześniej ustawiany jest dla danego fragmentu odpowiedni dla niego materiał i tekstura. W ten właśnie sposób możemy rysować złożone modele, które zawierają dużo materiałów i tekstur. Oczywiście w większości przypadków, jak już nadmieniłem, model będzie zawierał jedną teksturę i jeden materiał. No ale rysować należy tak a nie inaczej, żeby nie spotkały nas żadne przykre niespodzianki. No i to w zasadzie tyle, jeśli chodzi o samo rysowanie :-). if( g_pmeshmaterials!= NULL ) delete[] g_pmeshmaterials; if( g_pmeshtextures ) for( DWORD i = 0; i < g_dwnummaterials; i++ ) if( g_pmeshtextures[i] ) g_pmeshtextures[i]->release(); delete[] g_pmeshtextures; if( g_pmesh!= NULL ) g_pmesh->release(); Jeśli już napatrzymy się na nasz wymarzony dom, czy samochód i zapragniemy wrócić do szarej rzeczywistości, to nie zapominajmy o porządkach. Ponieważ stworzyliśmy w naszym programie tablicę obiektów tekstur, więc teraz kultura nakazywałaby wszystkie je usunąć. Tak samo będzie w przypadku materiałów i siatki. Ale chyba to już macie wpojone bardzo mocno i nie muszę Wam o tym pisać bez końca. Wystarczy, że rzucicie okiem na fragment kodu powyżej i wszystko powinno być dla Was całkiem jasne. No i cóż, obrazek z działania programu mamy bardzo powiedziałbym reprezentacyjny :-). Każdy może oczywiście teraz szaleć i wczytywać sobie coraz to inne modele. Oczywiście zwróćcie uwagę na skalę (rozmiary) modeli, bo nasz program nie jest zbyt inteligentny i nie będzie sobie ich skalował, tak żeby było je widać. Tutaj macie oczywiście pole do popisu. Nie opisałem odtwarzania animacji. Nie chciałem wszystkiego na raz a w sumie wydaje mi się, że wczytywanie animacji jest trochę bez sensu. Przecież równie dobrze możemy sobie taką animację odtworzyć w programie do modelowania i animacji (choćby 3D Studio Max). Ale zapewniam, że jeśli zajdzie taka potrzeba to opiszemy i ten proces. Dawno nie wracaliśmy do przykładów z SDK, no ale pewnie zauważyliście, że w ten pokrętny sposób ukończyliśmy niejako analizę tutoriali podstawowych z DirectX SDK. Kod oczywiście wiecie gdzie znaleźć ;-). Do zobaczenia.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Systemy wirtualnej rzeczywistości. Komponenty i serwisy Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki

Bardziej szczegółowo

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji Materiał jest zbiorem informacji o właściwościach powierzchni. Składa się na niego kolor, sposób odbijania światła i sposób nakładania

Bardziej szczegółowo

Tworzenie prezentacji w MS PowerPoint

Tworzenie prezentacji w MS PowerPoint Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje

Bardziej szczegółowo

Opis funkcji modułu Konwerter 3D

Opis funkcji modułu Konwerter 3D Opis funkcji modułu Konwerter 3D www.cadprojekt.com.pl Kliknij na tytuł rozdziału, aby przejść do wybranego zagadnienia MODUŁ KONWERTER 3D...3 Wygląd i funkcje okna modułu Konwerter 3D...3 Konwertowanie

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty. Przyszedł czas na rysowanie własnych figur, czyli prymitywy, obracanie bitmap, oraz alpha blending-czyli półprzezroczystość. Będę opisywał tylko rzeczy nowe-nie ma potrzeby abym się powtarzał. Zaczynajmny

Bardziej szczegółowo

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty 1. Co to jest funkcja? Funkcja jest oddzielnym blokiem kodu, który może być wielokrotnie wykonywany w danym programie, poprzez jej wielokrotne wywoływanie. Do funkcji przekazujemy przeważnie jakieś argumenty,

Bardziej szczegółowo

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy. Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy. #include #include #include #include

Bardziej szczegółowo

Plan wykładu. Akcelerator 3D Potok graficzny

Plan wykładu. Akcelerator 3D Potok graficzny Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D

Bardziej szczegółowo

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Po zainstalowaniu DigitLabu na komputerze otrzymujemy pakiet programów niezbędnych do przygotowania cyfrowych wersji obiektów tekstowych.

Bardziej szczegółowo

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Aplikacje mobilne Pliki zasobów, grafiki, menu, podpinanie zdarzeń dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Pliki zasobów Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy

Bardziej szczegółowo

1 Matematyka Macierze

1 Matematyka Macierze 1 Matematyka Macierze Witam w naszym drugim odcinku małego poradnika matematycznego. Poprzednim razem powiedzieliśmy sobie sporo na temat wektorów i wszelakich operacji, jakie na nich przeprowadzać. No

Bardziej szczegółowo

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3 Matlab, zajęcia 3. Pętle c.d. Przypomnijmy sobie jak działa pętla for Możemy podać normalnie w Matlabie t=cputime; for i=1:20 v(i)=i; e=cputime-t UWAGA: Taka operacja jest bardzo czasochłonna i nieoptymalna

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

INSTRUKCJA UŻYTKOWNIKA. Spis treści. I. Wprowadzenie... 2. II. Tworzenie nowej karty pracy... 3. a. Obiekty... 4. b. Nauka pisania...

INSTRUKCJA UŻYTKOWNIKA. Spis treści. I. Wprowadzenie... 2. II. Tworzenie nowej karty pracy... 3. a. Obiekty... 4. b. Nauka pisania... INSTRUKCJA UŻYTKOWNIKA Spis treści I. Wprowadzenie... 2 II. Tworzenie nowej karty pracy... 3 a. Obiekty... 4 b. Nauka pisania... 5 c. Piktogramy komunikacyjne... 5 d. Warstwy... 5 e. Zapis... 6 III. Galeria...

Bardziej szczegółowo

Nadają się do automatycznego rysowania powierzchni, ponieważ może ich być dowolna ilość.

Nadają się do automatycznego rysowania powierzchni, ponieważ może ich być dowolna ilość. CAD 3W zajęcia nr 2 Rysowanie prostych powierzchni trójwymiarowych. 1. 3wpow (3dface) powierzchnia trójwymiarowa Rysujemy ją tak, jak pisze się literę S (w przeciwieństwie do powierzchni 2W (solid), którą

Bardziej szczegółowo

Stawiamy pierwsze kroki

Stawiamy pierwsze kroki Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów

Bardziej szczegółowo

c. Przesuwamy sześcian wzdłuż osi Z o wartość 5

c. Przesuwamy sześcian wzdłuż osi Z o wartość 5 Celem ćwiczenia będzie stworzenie i zaanimowanie kół zębatych. W przykładzie, posłużymy się metodami odejmowania określonych części obiektu, wykorzystamy funkcję Boolean, która działa na zasadzie algebry

Bardziej szczegółowo

6. Tworzenie nowego projektu

6. Tworzenie nowego projektu 6 6. Tworzenie nowego projektu Poznając w poprzednich rozdziałach podstawy środowiska programu AutoCAD: korzystaliśmy z otwieranego automatycznie pliku projektu, rysowaliśmy obiekty na oko, nie przejmując

Bardziej szczegółowo

DesignCAD 3D Max 24.0 PL

DesignCAD 3D Max 24.0 PL DesignCAD 3D Max 24.0 PL Październik 2014 DesignCAD 3D Max 24.0 PL zawiera następujące ulepszenia i poprawki: Nowe funkcje: Tryb RedSDK jest teraz dostępny w widoku 3D i jest w pełni obsługiwany przez

Bardziej szczegółowo

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu 1. Edytor grafiki Draw 1.1. Okno programu Draw W bezpłatnym pakiecie OpenOffice zawarty jest program graficzny Draw (rysunek 1.1), wyposażony w liczne narzędzia do obróbki obiektów. Program możesz uruchomić,

Bardziej szczegółowo

Jak posługiwać się edytorem treści

Jak posługiwać się edytorem treści Jak posługiwać się edytorem treści Edytor CKE jest bardzo prostym narzędziem pomagającym osobom niezaznajomionym z językiem HTML w tworzeniu interaktywnych treści stron internetowych. Razem z praktyka

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

Symulator tabletu z systemem Windows 8.

Symulator tabletu z systemem Windows 8. Symulator tabletu z systemem Windows 8. Witam w mojej kolejnej publikacji, tym razem dowiesz się: - Jak uruchomić symulator tabletu z w pełni funkcjonalnym systemem operacyjnym Windows 8; - Jak wykorzystać

Bardziej szczegółowo

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9 Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3 Spis treści Wprowadzenie... 9 1. Opis programu i instalacja... 13 1.1. Nowości w SWiSH Max2... 13 1.1.1. Wygląd okna programu... 13 1.1.2. Język skryptowy...

Bardziej szczegółowo

KATEGORIA OBSZAR WIEDZY

KATEGORIA OBSZAR WIEDZY Moduł 6 - Grafika menedżerska i prezentacyjna - od kandydata wymaga się umiejętności posługiwania się programem komputerowym do tworzenia. Zdający powinien posiadać umiejętności wykonania następujących

Bardziej szczegółowo

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna Sylabus Moduł 4: Grafika menedżerska i prezentacyjna Niniejsze opracowanie przeznaczone jest dla osób zamierzających zdać egzamin ECDL (European Computer Driving Licence) na poziomie podstawowym. Publikacja

Bardziej szczegółowo

1. System kontroli wersji. 1.1. Instalacja programu kontroli wersji CVS

1. System kontroli wersji. 1.1. Instalacja programu kontroli wersji CVS 1 1. System kontroli wersji Już przy tak małym projekcie niezbędnym okazało się wdrożenie systemu kontroli wersji, co umożliwiło grupową pracę uczestników projektu. CVS jest narzędziem pomagającym w organizacji

Bardziej szczegółowo

Tworzenie formularzy w Microsoft Office Word 2007

Tworzenie formularzy w Microsoft Office Word 2007 Tworzenie formularzy w Microsoft Office Word 2007 Opublikowano: 5 kwietnia 2007 Autor: Michał Staniszewski W życiu codziennym często wypełniamy różnego rodzaju formularze, podania i coraz częściej mają

Bardziej szczegółowo

Włączanie/wyłączanie paska menu

Włączanie/wyłączanie paska menu Włączanie/wyłączanie paska menu Po zainstalowaniu przeglądarki Internet Eksplorer oraz Firefox domyślnie górny pasek menu jest wyłączony. Czasem warto go włączyć aby mieć szybszy dostęp do narzędzi. Po

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D Wprowadzenie do rysowania w 3D 13 Praca w środowisku 3D Pierwszym krokiem niezbędnym do rozpoczęcia pracy w środowisku 3D programu AutoCad 2010 jest wybór odpowiedniego obszaru roboczego. Można tego dokonać

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu.

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu. Maple i wykresy 1 Program Maple 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu. 1.2 Uruchomienie programu Maple Uruchamiamy go, wpisując w konsoli maple, potwierdzając

Bardziej szczegółowo

1 Moduł Modbus ASCII/RTU 3

1 Moduł Modbus ASCII/RTU 3 Spis treści 1 Moduł Modbus ASCII/RTU 3 1.1 Konfigurowanie Modułu Modbus ASCII/RTU............. 3 1.1.1 Lista elementów Modułu Modbus ASCII/RTU......... 3 1.1.2 Konfiguracja Modułu Modbus ASCII/RTU...........

Bardziej szczegółowo

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum Grażyna Koba Grafika komputerowa materiały dodatkowe do podręcznika Informatyka dla gimnazjum Rysunki i animacje w Edytorze postaci 1. Rysunek w Edytorze postaci Edytor postaci (rys. 1.) jest częścią programu

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Odbicie na szkłach okularów

Odbicie na szkłach okularów Odbicie na szkłach okularów Jedna z wad fotografii studyjnych polega na tym, że w okularach sfotografowanych modeli odbija się oświetlenie i wyposażenie studio. W takich sytuacjach bardzo często stosuje

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Writer wzory matematyczne

Writer wzory matematyczne Writer wzory matematyczne Procesor Writer pracuje zazwyczaj w trybie WYSIWYG, podczas wpisywania wzorów matematycznych nie całkiem. Wzory wpisujemy w oknie edytora wzorów w postaci tekstu. Tekst ten jest

Bardziej szczegółowo

Podstawy 3D Studio MAX

Podstawy 3D Studio MAX Podstawy 3D Studio MAX 7 grudnia 2001 roku 1 Charakterystyka programu 3D Studio MAX jest zintegrowanym środowiskiem modelowania i animacji obiektów trójwymiarowych. Doświadczonemu użytkownikowi pozwala

Bardziej szczegółowo

Animowana grafika 3D Laboratorium 3

Animowana grafika 3D Laboratorium 3 3DStudio MAX teksturowanie modelu budynku dla potrzeb gry 3D W ćwiczeniu tym zakładamy, że mamy już ukończony model naszego budynku. Składa się on z wielu elementów: ścian, okien, drzwi, dachu itp. W teorii

Bardziej szczegółowo

5.4. Tworzymy formularze

5.4. Tworzymy formularze 5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania

Bardziej szczegółowo

Użycie przestrzeni papieru i odnośników - ćwiczenie

Użycie przestrzeni papieru i odnośników - ćwiczenie Użycie przestrzeni papieru i odnośników - ćwiczenie Informacje ogólne Korzystanie z ćwiczeń Podczas rysowania w AutoCADzie, praca ta zwykle odbywa się w przestrzeni modelu. Przed wydrukowaniem rysunku,

Bardziej szczegółowo

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt Zadanie: Utwórz szablon rysunkowy składający się z: - warstw - tabelki rysunkowej w postaci bloku (według wzoru poniżej)

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

Nagrywamy podcasty program Audacity

Nagrywamy podcasty program Audacity Pobieranie i instalacja Program Audacity jest darmowym zaawansowanym i wielościeżkowym edytorem plików dźwiękowych rozpowszechnianym na licencji GNU GPL. Jest w wersjach dla systemów typu Unix/Linux, Microsoft

Bardziej szczegółowo

Sieciowe Technologie Mobilne. Laboratorium 2

Sieciowe Technologie Mobilne. Laboratorium 2 Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji

Bardziej szczegółowo

Jak zainstalować szablon allegro?

Jak zainstalować szablon allegro? Jak zainstalować szablon allegro? W mailu z zakupionym szablonem otrzymali państwo plik zip z numerem szablonu w nazwie. Należy najpierw go rozpakować. W paczce znajduję się pliki: 1. index[nrszablonu].txt

Bardziej szczegółowo

vi - Edytor tekstu. 1. To, co każdy powinien wiedzieć o vi!!!

vi - Edytor tekstu. 1. To, co każdy powinien wiedzieć o vi!!! vi - Edytor tekstu. Pozwolę sobie, na wprowadzenie Was drodzy czytelnicy, w świat magii jaki oferuje nam edytor vi. Na pierwszy rzut oka, vi nie jest imponującym edytorem. Ale posiada jedną niezaprzeczalnie

Bardziej szczegółowo

Zmiana logo. Dziękujemy za wybór naszych rozwiązań. apjoo od Apláuz. Wspólnie przebrniemy przez proces konfiguracji strony www i wstawiania treści.

Zmiana logo. Dziękujemy za wybór naszych rozwiązań. apjoo od Apláuz. Wspólnie przebrniemy przez proces konfiguracji strony www i wstawiania treści. Użytkownicy i hasła Dostęp do zaplecza umożliwia rozbudowany system zarządzania użytkownikami. 1. Konta użytkowników tworzy się wybierając z menu Użytkownicy > Menedżer użytkowników na stronie głownej

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Visio 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zaktualizowane szablony Szablony

Bardziej szczegółowo

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA Forex PitCalculator Forex PitCalculator jest aplikacją służącą do obliczania podatku należnego z tytułu osiągniętych na rynku walutowym zysków. Jest to pierwsze tego typu oprogramowanie na polskim rynku.

Bardziej szczegółowo

Animacje cz. 2. Rysujemy koło zębate

Animacje cz. 2. Rysujemy koło zębate Animacje cz. 2 1. Do wykonania poniższej animacji będziemy potrzebować dodatkowego desenia. Znajduje się on w folderze z instrukcją, żeby program Gimp mógł z niego skorzystać musimy wskazać mu ścieżkę

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

KARTA INFORMACYJNA Z INFORMATYKI DO KLASY 4. Imię i nazwisko ucznia:

KARTA INFORMACYJNA Z INFORMATYKI DO KLASY 4. Imię i nazwisko ucznia: Bezpieczne posługiwanie się komputerem, historia i budowa komputera 1. znam regulamin pracowni komputerowej 2. znam zasady BHP w pracy na komputerze w szkole i w domu 3. potrafię wymienić zasady bezpieczeństwa

Bardziej szczegółowo

7. Dynamiczne generowanie grafiki

7. Dynamiczne generowanie grafiki 7. Dynamiczne generowanie grafiki 7.1. Biblioteka GD Dynamiczne generowanie kodu HTML to podstawowe zastosowanie języka PHP. Często jednak to nie wystarczy i mieszanka: dynamiczny HTML plus statyczna grafika,

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012 1 z 72 Rysunek rysujemy w skali rzeczywistej tzn. jeżeli pas ruchu ma szerokość 3,5m to wpisujemy w AutoCAD: 3,5 jednostki (mapa oczywiście również musi być wstawiona w skali 1:1). Opisany w dalszym ciągu

Bardziej szczegółowo

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE Etapy uruchamiania systemu 010 2 Systemy operacyjne i sieci komputerowe. Część 010. I. Etapy uruchamiania systemu Windows

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Multimedia i interfejsy. Ćwiczenie 5 HTML5 Multimedia i interfejsy Ćwiczenie 5 HTML5 Celem ćwiczenia jest poznanie nowych elementów wprowadzonych w HTML 5, do których należą m.in. video oraz canvas. Poniższy opis przedstawia sposób użycia tych

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Podstawowe elementy GUI cz. 2 i 3 - zadania

Podstawowe elementy GUI cz. 2 i 3 - zadania Podstawowe elementy GUI cz. 2 i 3 - zadania Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy w plikach xml (np. strings.xml). Jest to dobra praktyka, w plikach zasobów możemy umieszczać

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

Instrukcja importu deklaracji pacjentów. do dreryka

Instrukcja importu deklaracji pacjentów. do dreryka Instrukcja importu deklaracji pacjentów do dreryka Jeżeli posiadasz plik sprawozdań do NFZ w formacie XML/PDX lub POZ, czytaj: Rozdział 1. - Import deklaracji z formatów XML/PDX oraz POZ Jeżeli używasz

Bardziej szczegółowo

Animacje oraz ciekawe efekty dostępne w programie GIMP

Animacje oraz ciekawe efekty dostępne w programie GIMP Animacje oraz ciekawe efekty dostępne w programie GIMP Tworzenie Gifów Aby zobrazować różnice w tworzeniu plików z rozszerzeniem gif wykonamy na początek krótkie ćwiczenie. 1.Utwórz niebieską warstwę nad

Bardziej szczegółowo

Baner internetowy w standardzie GIF - metoda tworzenia tandemem aplikacji Illustrator - ImageReady.

Baner internetowy w standardzie GIF - metoda tworzenia tandemem aplikacji Illustrator - ImageReady. Baner internetowy w standardzie GIF - metoda tworzenia tandemem aplikacji Illustrator - ImageReady. Konspekt jest przeznaczony zasadniczo dla studentów II roku studiów zaocznych i studentów dziennych lat

Bardziej szczegółowo

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu I Tworzenie prezentacji za pomocą szablonu w programie Power-Point 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu 2. Po wybraniu szablonu ukaŝe się nam ekran jak poniŝej 3. Następnie

Bardziej szczegółowo

Instrukcja użytkowania

Instrukcja użytkowania Instrukcja użytkowania Aby skutecznie pracować z programem Agrinavia Map należy zrozumieć zasadę interfejsu aplikacji. Poniżej można odszukać zasady działania Agrinavia Map. Szczegółowe informacje na temat

Bardziej szczegółowo

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze ABC komputera dla nauczyciela Materiały pomocnicze 1. Czego się nauczysz? Uruchamianie i zamykanie systemu: jak zalogować się do systemu po uruchomieniu komputera, jak tymczasowo zablokować komputer w

Bardziej szczegółowo

Grafika w aplikacjach lp. Jak zmienić kolor tła?

Grafika w aplikacjach lp. Jak zmienić kolor tła? Grafika w aplikacjach lp W tym rozdziale znajdziesz informacje jak osadzić w tworzonym programie zdjęcia, rysunki, wykresy i inne elementy graficzne. W środowisku lp autor ma dostęp do następujących obiektów

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

True Space 3.2 KURS PODSTAWOWY. program można ściągn ąć za darmo ze strony www.caligari.com. Co to właściwie jest?

True Space 3.2 KURS PODSTAWOWY. program można ściągn ąć za darmo ze strony www.caligari.com. Co to właściwie jest? True Space 3.2 KURS PODSTAWOWY program można ściągn ąć za darmo ze strony www.caligari.com Co to właściwie jest? True Space 3.2 jest programem do tworzenia animacji, realistycznej grafiki i wirtualnych

Bardziej szczegółowo

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued

Bardziej szczegółowo

SCENARIUSZ LEKCJI MATEMATYKI W KLASIE IV

SCENARIUSZ LEKCJI MATEMATYKI W KLASIE IV SCENARIUSZ LEKCJI MATEMATYKI W KLASIE IV Opracowała: Hanna Nowakowska Szkoła Podstawowa im. Jana Pawła II w Żydowie TEMAT : ŻEGNAMY FIGURY PŁASKIE Cel ogólny: Utrwalenie wiadomości o figurach płaskich

Bardziej szczegółowo

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9 Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9 Uruchamianie edytora OpenOffice.ux.pl Writer 9 Dostosowywanie środowiska pracy 11 Menu Widok 14 Ustawienia dokumentu 16 Rozdział 2. OpenOffice

Bardziej szczegółowo

Zacznij Tu! Poznaj Microsoft 2012. Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Zacznij Tu! Poznaj Microsoft 2012. Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska Zacznij Tu! Poznaj Microsoft 2012 Visual Basic Michael Halvorson Przekład: Joanna Zatorska APN Promise, Warszawa 2013 Spis treści Wstęp...................................................................vii

Bardziej szczegółowo

Zaprojektuj kalendarz z TKexe Kalender

Zaprojektuj kalendarz z TKexe Kalender e-learning - samouczek Multimedia XxxxxKoludo Anna Xxxxxxxxxxxx Łódzkie Centrum At litiore sed quam fugidoskonalenia ta plique voluptate Nauczycieli i Kształcenia pero Praktycznego Dempori oribus abo.

Bardziej szczegółowo

Część zadań będzie już zrobiona, np. część programów zainstalowana, ale proszę przeczytać instrukcje i ew. np. zainstalować w domu.

Część zadań będzie już zrobiona, np. część programów zainstalowana, ale proszę przeczytać instrukcje i ew. np. zainstalować w domu. Część zadań będzie już zrobiona, np. część programów zainstalowana, ale proszę przeczytać instrukcje i ew. np. zainstalować w domu. Najpierw zainstalujemy program do symulowania napędu CD/DVD, żeby móc

Bardziej szczegółowo

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji. 1 Moduł Modbus TCP Moduł Modbus TCP daje użytkownikowi Systemu Vision możliwość zapisu oraz odczytu rejestrów urządzeń, które obsługują protokół Modbus TCP. Zapewnia on odwzorowanie rejestrów urządzeń

Bardziej szczegółowo

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2) Grafika w Pascalu. Do tej pory, tworząc programy w Pascalu, wykorzystywaliśmy jedynie tryb tekstowy. Jednak Pascal, tak jak i inne języki programowania, umoŝliwia korzystanie równieŝ z trybu graficznego.

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Przechodzimy do zakładki Przekazywnie dalej i POP/IMAP. Przechodzimy teraz do Mail.app. Menu: Mail -> Preferencje i wybieramy zakładkę Konta

Przechodzimy do zakładki Przekazywnie dalej i POP/IMAP. Przechodzimy teraz do Mail.app. Menu: Mail -> Preferencje i wybieramy zakładkę Konta IMAP Wstęp Poniższy tutorial stworzony został z myślą o osobach chcących skonfigurować swojego Gmail a, Mail.app oraz iphone a by móc jak najlepiej wykorzystać możliwości jakie daje IMAP. Powinno to być

Bardziej szczegółowo

Leszek Stasiak Zastosowanie technologii LINQ w

Leszek Stasiak Zastosowanie technologii LINQ w Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji

Bardziej szczegółowo

Każde menu jest połączone z modułem, którym zarządza się w menedżerze modułów. Cztery dostępne menu widać na pasku Menu (rysunek 4.38).

Każde menu jest połączone z modułem, którym zarządza się w menedżerze modułów. Cztery dostępne menu widać na pasku Menu (rysunek 4.38). 2. Projektant menu Każde menu jest połączone z modułem, którym zarządza się w menedżerze modułów. Cztery dostępne menu widać na pasku Menu (rysunek 4.38). Rys. 2.1. Menu/mainmenu Dostęp do istniejących

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS Ten dokument zawiera informacje o zmianach w wersjach: 3.31 STD w stosunku do wersji 3.30 STD 3.41 PLUS w stosunku do wersji 3.40 PLUS 1. Kancelaria 1.1. Opcje kancelarii Co nowego w systemie Kancelaris

Bardziej szczegółowo

1 Moduł Modbus ASCII/RTU

1 Moduł Modbus ASCII/RTU 1 Moduł Modbus ASCII/RTU Moduł Modbus ASCII/RTU daje użytkownikowi Systemu Vision możliwość komunikacji z urządzeniami za pomocą protokołu Modbus. Moduł jest konfigurowalny w taki sposób, aby umożliwiał

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2 Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2 Spis treści: 1. Tworzenie nowego testu. str 2...5 2. Odczyt raportów z wynikami. str 6...7 3. Edycja i modyfikacja testów zapisanych

Bardziej szczegółowo

Spis treści. 1 Moduł Mapy 2

Spis treści. 1 Moduł Mapy 2 Spis treści 1 Moduł Mapy 2 1.1 Elementy planu............................. 2 1.1.1 Interfejs widoku......................... 3 1.1.1.1 Panel sterujacy.................... 3 1.1.1.2 Suwak regulujacy przybliżenie...........

Bardziej szczegółowo

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Program GEOPLAN umożliwia zmianę układu współrzędnych geodezyjnych mapy. Można tego dokonać przy udziale oprogramowania przeliczającego

Bardziej szczegółowo

instrukcja INSTALACJI www.piersa.pl APi_proxy

instrukcja INSTALACJI www.piersa.pl APi_proxy instrukcja INSTALACJI 1 1. Instalacja Proces instalacji jest prosty wgrywamy pliki na serwer nadajemy prawa chmod 777 lub 755 dla katalogu w którym znajduje się aplikacja przeważnie będzie to katalog public_html

Bardziej szczegółowo

Tworzenie i edycja dokumentów w aplikacji Word.

Tworzenie i edycja dokumentów w aplikacji Word. Tworzenie i edycja dokumentów w aplikacji Word. Polskie litery, czyli ąłóęśźżń, itd. uzyskujemy naciskając prawy klawisz Alt i jednocześnie literę najbardziej zbliżoną wyglądem do szukanej. Np. ł uzyskujemy

Bardziej szczegółowo

Polecenia wsadowe. Automatyzacja procesów przemysłowych jest głównym celem rozwoju oprogramowania

Polecenia wsadowe. Automatyzacja procesów przemysłowych jest głównym celem rozwoju oprogramowania Polecenia wsadowe Wstęp Automatyzacja procesów przemysłowych jest głównym celem rozwoju oprogramowania dedykowanego maszynom CNC. SigmaNEST wychodzi naprzeciw użytkownikom programu, dlatego dla dodatkowego

Bardziej szczegółowo

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Modułowy programowalny przekaźnik czasowy firmy Aniro. Modułowy programowalny przekaźnik czasowy firmy Aniro. Rynek sterowników programowalnych Sterowniki programowalne PLC od wielu lat są podstawowymi systemami stosowanymi w praktyce przemysłowej i stały

Bardziej szczegółowo