Processing. Podstawy Processingu



Podobne dokumenty
Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Ćwiczenie P-3. Processing - przetwarzanie obrazów 2D i renderowanie scen 3D. Grafika komputerowa. Instrukcja laboratoryjna

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape

Visual Studio instalacja

Interakcje wizualno-muzyczne. Processing. w programowaniu obrazu. Piotr Welk

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

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

Podstawy Programowania C++

Edytor tekstu OpenOffice Writer Podstawy

Edytor tekstu OpenOffice Writer Podstawy

Podręcznik użytkownika programu. Ceremonia 3.1

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Część 4 życie programu

1 Podstawy c++ w pigułce.

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

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

1. Opis okna podstawowego programu TPrezenter.

Programowanie obiektowe

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

EDYCJA TEKSTU MS WORDPAD

Wprowadzenie do QT OpenGL

Ćwiczenie 1 Automatyczna animacja ruchu

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Opis Edytora postaci Logomocji

I. Program II. Opis głównych funkcji programu... 19

WSKAZÓWKI DO OPRACOWANIA KARTOGRAFICZNEJ CZĘŚCI DOKUMENTACJI KRAJOZNAWCZEJ

Dodanie nowej formy do projektu polega na:

Rys Odtwarzacz filmu. Możemy także skorzystać z programów służących do odtwarzania filmów np. Windows Media Player.

Podstawy Informatyki Wykład V

I - Microsoft Visual Studio C++

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

POMOC / INSTRUKCJA OBSŁUGI

Zaawansowany kurs języka Python

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

Projektowanie graficzne. Wykład 2. Open Office Draw

OpenGL Światło (cieniowanie)

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Animacja. Instrukcja wykonania animacji metodą klatek kluczowych. Autor: Bartosz Kowalczyk. Blender 2.61

WSTI w Katowicach, kierunek Grafika opis modułu Procesing i programowanie

Arkadiusz Kalicki, Lech Mankiewicz Plugin Webcam dla SalsaJ Podręcznik użytkownika

2 Przygotował: mgr inż. Maciej Lasota

Unity 3D - własny ekran startowy i menu gry

Edytor tekstu MS Word podstawy

Szybkie tworzenie grafiki w GcIde

Wstęp do Programowania Lista 1

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Matlab Składnia + podstawy programowania

dr inż. Tomasz Krzeszowski

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

1. Wstęp Pierwsze uruchomienie Przygotowanie kompozycji Wybór kompozycji Edycja kompozycji...

1 Podstawy c++ w pigułce.

KOTLIN. Język programowania dla Androida

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Grafika 3D program POV-Ray - 1 -

Inkscape. Menu. 1 SVG (ang. Scalable Vector Graphics) uniwersalny format dwuwymiarowej, statycznej i

Programowanie komputerowe. Zajęcia 1

RF-graph 1.2 POMOC PROGRAMU

Skrócona instrukcja obsługi darmowego programu do grafiki 3D. Anim8or. Wykonał: Rafał Wojszczyk

Tworzenie prezentacji w MS PowerPoint

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

Praktyka programowania projekt

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Kurs programowania 2 - listy

Rzutowanie DOROTA SMORAWA

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Unity 3D - pierwsze skrypty

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Informatyka w służbie efektów specjalnych. Część druga

Programowanie obiektowe

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

Dodawanie grafiki i obiektów

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

Kurs WWW. Paweł Rajba.

DARMOWA PRZEGLĄDARKA MODELI IFC

IRONCAD IRONCAD Skróty klawiaturowe

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

4.6 OpenOffice Draw tworzenie ilustracji

CorelDRAW. wprowadzenie

PyGame Gra w Ponga. Spis treści

Obsługa mapy przy użyciu narzędzi nawigacji

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Implementacja filtru Canny ego

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

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

3.4. Opis konfiguracji layoutów.

Spora część kodu programu jest dla nas nieprzydatna. Dokonaj zmian tak, aby kod miał postać:

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

Dlaczego stosujemy edytory tekstu?

1. Przypisy, indeks i spisy.

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Plan wykładu. Akcelerator 3D Potok graficzny

Inkscape. Narzędzia informatyki

Writer wzory matematyczne

Prezentacje multimedialne w Powerpoint

Dodatek A. Palety. QuarkXPress 4.1. Projekty praktyczne. Podstawowe palety

Transkrypt:

Processing Podstawy Processingu Processing jest darmowym językiem i środowiskiem, opartym na języku Java, służącym do tworzenia interaktywnych aplikacji graficznych. Został on stworzony w MIT (Massachusetts Institute of Technology) przez Casey a Reasa i Bena Fry a w 2000 roku. Processing można pobrać ze strony: http://processing.org/ Na stronie domowej Processingu znajduje się również dokładny opis wszystkich funkcji, o których będzie mowa w dalszej części. Rysunek 1 przedstawia główne okno Processingu. Widzimy w nim menu, pasek z przyciskami służącymi do kompilacji, uruchamiania, eksportowania itp., edytorem kodu źródłowego oraz konsoli, na której będą wyświetlane wszelkie komunikaty. Programy napisane w Processingu mogą zostać wyeksportowane do apletu Javy lub samodzielnej aplikacji dla systemów Windows, Linux oraz Mac OS. Wszystkie programy są aplikacjami okienkowymi o domyślnym rozmiarze okna 100 100 pikseli. Do zmiany wielkości okna służy funkcja size, która przyjmuje dwa parametry szerokość i wysokość okna w pikselach. Podstawowymi graficznymi prymitywami 2D w Processingu są: punkt funkcja point, linia funkcja line, trójkąt funkcja triangle, elipsa funkcja ellipse, 1

2 Rysunek 1: Processing. prostokąt funkcja rect, czworokąt funkcja quad, łuk funkcja arc, krzywa Béziera funkcja bezier, krzywa Catmulla-Roma funkcja curve. Oprócz wymienionych prymitywów istnieją funkcje beginshape, endshape pomiędzy, którymi definiujemy wierzchołki (funkcja vertex) kształtu. W zależności od wybranego trybu wierzchołki kształtu będą inaczej interpretowane. Do zmiany koloru: tła służy funkcja background, wypełnienia służy funkcja fill, linii obramowania służy funkcja stroke. Możemy wyłączyć wypełnienie funkcją nofill, a linię obramowania funkcją nostroke. W przypadku linii możemy zmienić niektóre jej własności: grubość (funkcja strokeweight), sposób zakończenia linii (funkcja strokecap), styl łączenia linii (funkcja strokejoin). Ponadto możemy włączyć lub wyłączyć antialiasing (funkcje smooth, nosmooth).

3 Oprócz czysto graficznych funkcji Processing dostarcza standardowe możliwości, które dostępne są w każdym języku programowania tzn. komentarze: //, /... / pętle: for, while, instrukcje warunkowe: if, if...else, instrukcję wyboru: switch, operatory porównania: <, <=, >, >=, ==,!=, operatory logiczne:, &&,!, operatory arytmetyczne: +,,, /, %, ++,. Typy wbudowane: char, float, int, byte, boolean. Klasy wbudowane: String, PImage, PFont, BufferedReader, PrintWriter. Oprócz wymienionych typów i klas można definiować własne typy poprzez napisanie odpowiednich klas. Literatura dodatkowa na temat Processingu: [1] Fry B., Visualizing Data, O Reilly, 2008. [2] Greenberg I., Processing: Creative Coding and Computational Art, Friendsofted, 2007. [3] Noble J., Programming Interactivity: A Designer s Guide to Processing, Ardunio, and openframeworks, O Reilly, 2009. [4] Reas C., Fry B., Processing: A Programming Handbook for Visual Designers and Artists, MIT Press, 2007. [5] Rocchesso D., Media Processing in Processing, http://cnx.org/content/col10268/latest (dostępna wrzesień 2009). [6] Shiffman D., Learning Processing: A Beginner s Guide to Programming Images, Animation, and Interaction, Morgan Kaufman, 2008. [7] Terzidis K., Algorithms for Visual Design using the Processing Language, Wiley Publishing Inc., 2009.

4 Czcionki, obrazy, animacja i interakcja w Processingu W Processingu istnieje możliwość tworzenia i wyświetlania napisów. Zanim będziemy mogli używać napisów musimy stworzyć odpowiednią czcionkę w formacie vlw, który jest formatem rastrowym, a nie wektorowym. Żeby utworzyć czcionkę wybieramy menu Tools Create Font, zobaczymy okno, w którym możemy wybrać jedną z czcionek zainstalowanych w systemie, ustalić jej wielkość oraz nadać jej nazwę za pomocą, której będziemy mogli ją wczytać w programie. Mając utworzoną plik z czcionką musimy go wczytać i wybrać jako bieżącą czcionkę. Robimy to następująco: PFont f o n t = loadfont ( nazwa. vlw ) ; textfont ( f o n t ) ; Kiedy ustawimy już czcionkę możemy wyświetlać tekst za pomocą funkcji text, która przyjmuje trzy argumenty: tekst, współrzędne x i y punktu, w którym tekst ma zostać wyświetlony. Kolor czcionki zmieniamy za pomocą funkcji fill. Inne własności jakie możemy zmienić są następujące: wielkość (funkcja textsize), wyrównanie (funkcja textalign), odstęp między wierszami (funkcja textleading). Przydatną funkcją jest funkcja textwidth, która oblicza szerokość podanego napisu w pikselach dla aktualnie ustawionej czcionki. Klasa PImage służy w Processingu do przechowywania obrazów rastrowych: gif, jpg, tga i png. Zanim będziemy mogli skorzystać z obrazu musimy go najpierw wczytać (funkcja loadimage) lub stworzyć (funkcja createimage). Następnie żeby wyświetlić wczytany lub stworzony obraz korzystamy z funkcji image, która ma dwie wersje. Pierwsza przyjmuje obraz oraz współrzędne punktu, w którym ma znaleźć się lewy górny róg obrazu. Druga wersja dodatkowo przyjmuje jeszcze szerokość i wysokość z jaką obraz ma być wyświetlony. W klasie PImage dostępnych jest kilka funkcji, które służą do przekształcania obrazu: mask maskuje część obrazu za pomocą innego obrazu lub tablicy liczb, filter dokonuje filtracji na obrazie (binaryzacja, konwersja do odcieni szarości, negatyw, redukcja liczby kolorów, rozmycie, przeźroczystość), blend miesza region obrazu z innym obrazem (liniowa interpolacja, dodawanie, odejmowanie, rozjaśnianie, przyciemnianie, itp.).

5 Jeśli chcemy dokonać innych bardziej skomplikowanych operacji na obrazach, to musimy napisać własne funkcje, które będą to robiły. W tym przypadku potrzebne będą nam funkcje pobierające i ustawiające pojedynczy piksel obrazu. Do tego celu służą funkcje get i set. W przypadku wielu operacji pobierania i ustawiania piksela wymienione funkcje są nieefektywne. Bardziej efektywnym sposobem jest skorzystanie z jednowymiarowej tablicy pikseli będącej składową klasy PImage i mająca nazwę pixels. Jeśli chcemy zmieniać piksele okna aplikacji, to zanim odwołamy się do tablicy pixels musimy ją wczytać funkcją loadpixels, a po dokonaniu zmian musimy odświeżyć zawartość aplikacji funkcją updatepixels. Processing pozwala w bardzo prosty sposób tworzyć animację. W tym celu należy napisać dwie funkcje: setup, draw. Funkcja setup służy do zainicjowania zmiennych globalnych (zmienne znajdujące się poza funkcjami setup, draw), wczytania zasobów potrzebnych później w programie itp. Funkcja draw jest funkcją, która wykonywana jest w pętli i odpowiada za wyświetlanie poszczególnych klatek animacji. Nie musimy się martwić o efekt migotania podczas animacji ponieważ twórcy Processingu przy obsłudze funkcji draw wykorzystali tzw. podwójne buforowanie, które eliminuje ten efekt. Istnieje możliwość zmiany liczby klatek wyświetlanych na sekundę. Do tego celu służy funkcja framerate. Istnieje również zmienna o tej samej nazwie przechowująca aktualną liczbę klatek na sekundę. Do przerwania pętli wywołującej funkcję draw służy funkcja noloop, do wznowienia funkcja loop. Ponadto mamy funkcję redraw, która wymusza odrysowanie okna aplikacji. Processing umożliwia tworzenie aplikacji interaktywnych. Do interakcji wykorzystywane są: myszka, klawiatura. Dla myszki istnieją zmienne przechowujące współrzędne kursora: mousex, mousey współrzędne aktualnej pozycji kursora, pmousex, pmousey współrzędne poprzedniej pozycji kursora. Do sprawdzenia czy został naciśnięty jakikolwiek przycisk myszki służy zmienna boolowska mousepressed. Żeby sprawdzić, który przycisk został naciśnięty służy zmienna mousebutton, która przyjmuje wartości: LEFT, RIGHT, CENTER. Do obsługi zdarzeń związanych z myszką służą funkcje: mousepressed naciśnięcie przycisku myszki,

6 mousereleased zwolnienie przycisku myszki, mouseclicked kliknięcie, mousemoved ruch myszką, mousedragged ruch myszka z naciśniętym przyciskiem. W przypadku klawiatury istnieje zmienna boolowska keypressed, która służy do sprawdzenia czy został naciśnięty klawisz na klawiaturze. Zmienna key przechowuje ostatnio naciśnięty klawisz. W przypadku klawiszy specjalnych tj. Alt, Control, Shift, strzałki najpierw sprawdzamy czy wartość zmiennej key jest równa CODED, a następnie za pomocą zmiennej keycode sprawdzamy, który klawisz specjalny został naciśnięty. Do obsługi zdarzeń związanych z klawiaturą służą funkcje: keypressed naciśnięcie klawisza, keyreleased zwolnienie klawisza, keytyped naciśniecie klawisza, ale ignorowany jest klawisz specjalny np. po naciśnięciu Shift+a otrzymujemy a. Podstawy grafiki 3D w Processingu Oprócz grafiki 2D w Processingu istnieje możliwość tworzenia grafiki 3D. Żeby móc korzystać z grafiki 3D jako trzeci parametr funkcji size musimy podać jedną z dwóch wartości: P3D renderer grafiki 3D będący częścią Processingu, OPENGL renderer grafiki 3D korzystający z biblioteki OpenGL. W przypadku korzystania z OpenGL-a oprócz przekazania odpowiedniej wartości do funkcji size musimy na początku pliku zaimportować bibliotekę OpenGL: import p r o c e s s i n g. opengl. ; Podobnie jak w przypadku grafiki 2D Processing udostępnia prymitywy 3D: box prostopadłościan, sphere sfera.

7 Ponieważ prymitywy 3D nie posiadają argumentów odpowiedzialnych za ich położenie na scenie, więc do ich pozycjonowania używana jest funkcja translate (translacja obiektu o podany wektor). Oprócz translacji obiekty możemy skalować (funkcja scale) oraz obracać wokół osi OX, OY, OZ (funkcje rotatex, rotatey, rotatez). Dodatkowo możemy dokonać własnego przekształcenia podanego za pomocą macierzy. Służy do tego funkcja applymatrix. Oprócz funkcji applymatrix w Processingu istnieją inne funkcje dotyczące macierzy przekształcenia. Są to: pushmatrix zrzuca bieżącą macierz przekształcenia na stos, popmatrix ściąga macierz ze stosu zastępując nią bieżąca macierz, printmatrix wypisuje na konsoli zawartość bieżącej macierzy, resetmatrix zastępuje bieżąca macierz przekształcenia macierzą jednostkową. Wszystkie prymitywy 2D działają również w trybie 3D z tą różnicą, że musimy podać o jedną współrzędną więcej przy określaniu współrzędnych. Podobnie tworzenie dowolnych kształtów za pomocą funkcji beginshape, endshape i vertex działa w trybie 3D tylko do funkcji vertex należy przekazać trzy współrzędne wierzchołka. Ponieważ scenę 3D oglądamy na ekranie, który jest dwuwymiarowy dużą rolę w tym jak widzimy obiekty odgrywa kamera i to w jakim trybie ona pracuje. W Processingu istnieje kilka funkcji umożliwiających manipulację kamerą: camera ustawia pozycję kamery na podstawie pozycji oka, środka sceny oraz osi, która skierowana jest do góry, begincamera zaczyna zaawansowane ustawienie kamery, endcamera kończy zaawansowane ustawianie kamery, ortho ustawia rzutowanie prostopadłe, perspective ustawia rzutowanie perspektywiczne, frustum ustawia macierz perspektywy za pomocą podanych parametrów. Kolejnym ważnym czynnikiem w naszym postrzeganiu sceny 3D na dwuwymiarowym ekranie jest światło. Do obsługi światła w Processingu udostępniono kilka funkcji:

8 lights włącza domyślne oświetlenie sceny, nolights wyłącza oświetlenie sceny, ambientlight dodaje do sceny światło otoczenia, directionallight dodaje do sceny światło kierunkowe, pointlight dodaje do sceny światło punktowe, spotlight dodaje do sceny światło miejscowe, normal ustawia wektor normalny w bieżącym punkcie. Oprócz ustawień kamery czy światła Processing daje możliwość ustawienia własności materiału (funkcje: ambient, emissive, shininess, specular) oraz ustawienia tekstury (funkcja texture). Processing udostępnia jedynie część funkcji jakie są dostępne w bibliotece OpenGL. Nic nie stoi na przeszkodzie żeby skorzystać z tych funkcji, wystarczy odwoływać się do nich bezpośrednio. To w jaki sposób można tego dokonać można znaleźć między innymi na stronie domowej Processingu.