Rozdział 5 Oświetlenie: cienie własne
|
|
- Dominika Stankiewicz
- 7 lat temu
- Przeglądów:
Transkrypt
1 Rozdział 5 Oświetlenie: cienie własne Wersja z Trudno przecenić rolę światła w grafice 3D. Podobnie jak w kinie, to dzięki oświetleniu nasz umysł daje się nabierać i obraz widziany na płaskim ekranie interpretuje jako trójwymiarowy. Nawet najbardziej wymyślne trójwymiarowe modele bez oświetlenia są po prostu płaskie. W dużym stopniu, wspólnie z teksturowaniem, to oświetlenie odpowiedzialne jest za realizm wygenerowanej sceny. Wreszcie to cienie własne i rzucane są także jednym z tych elementów, które budują nastrój sceny. W MonoGame zaimplementowany jest rozszerzony model oświetlenia Phonga, w którym oprócz światła otoczenia, światła rozproszonego i rozbłysku uwzględnione zostało również tzw. światło emisyjne. Klasa BasicEffect, z której w tym module będziemy nadal korzystać zawiera trzy predefiniowane źródła światła, których większość parametrów można modyfikować. Wśród tych parametrów nie ma jednak położenia, które jest ustalone. Pełną kontrolę nad źródłami światła uzyskamy dopiero implementując model Phonga w tworzonych samodzielnie efektach (moduły 11-13). W tych modułach założenia teoretyczne tego modelu zostaną przedstawione dokładniej. Natomiast w tym module skoncentrujemy się na użyciu gotowego rozwiązania oferowanego przez MonoGame. Model Phonga nie wyczerpuje jednak zagadnienia oświetlenia w MonoGame. Światło to przecież nie tylko jasność powierzchni (cienie własne) i efekt rozbłysku, a również cienie rzucane na inne przedmioty. Ze światłem jako zjawiskiem fizycznym wiążą się również takie zagadnienia jak przezroczystość i mgła, które realizowane są w grafice 3D za pomocą mechanizmu mieszania kolorów. Kolejnym ważnym zagadnieniem jest inny pomysł zrealizowany przez Phonga, a mianowicie sposób imitowania gładkich zaokrąglonych powierzchni za pomocą niewielkiej ilości werteksów. Mam na myśli cieniowanie Phonga. Te wszystkie zagadnienia zostaną omówione w tym module. Oświetlenie Zanim zamontujemy na naszej scenie żarówkę lub reflektor powinniśmy wpierw przygotować wyświetlany na scenie model tak, aby zareagował na oświetlenie. Powinniśmy mianowicie zdefiniować wektory normalne kolejną własność werteksów modelu. Wektor normalny zasadniczo określa kierunek prostopadły do powierzchni. Wektory normalne są wykorzystywane przez silniki graficzne 3D (OpenGL, Direct3D, MonoGame) do obliczania jasności powierzchni. Umożliwiają bowiem wyznaczenie wzajemnego położenia źródła światła i oświetlanej powierzchni. Mimo, że intuicja podpowiada nam, że wektor normalny powinien być własnością powierzchni (prymitywu), przypisany jest do werteksu. Jednak dzięki temu możliwe jest stosowanie technik uśredniania i interpolacji normalnych (o nich niżej), które pozwalają na zmniejszeni ilości werteksów używanych do opisu modelu. Definiowanie normalnych zacznijmy od prostopadłościanu, w przypadku którego ich kierunek jest oczywisty - wyznaczają go wersory kartezjańskiego układu współrzędnych. Potem przejdziemy do czworościanu, w którym tak prosto już nie jest. Na warsztat weźmy projekt komponentu Prostopadloscian z poprzedniego modułu.
2 Definiowanie własnego formatu werteksów Do obecnego zestawu własności werteksów, tj. do pozycji i koloru, chcielibyśmy dodać wektory normalne. Zestaw predefiniowanych typów werteksów nie obejmuje takiej możliwości podobnie, jak nie ma typu obejmującego czwórkę własności pozycji, koloru, normalnej i współrzędnej teksturowania. Jest tak ponieważ po włączeniu teksturowania kolor jest rzadko wykorzystywany. My jednak zdefiniujemy odpowiednie struktury, co da nam pretekst do zajrzenia do mechanizmu wiążącego atrybuty werteksu w shaderach z własnościami klasy opisującej werteks w MonoGame. Nowe typy werteksu umieścimy w osobnym pliku (np. NoweTypyWerteksow.cs); na razie zdefiniujemy werteks uzupełniający przesyłane dane o wektor normalny, a w rozdziale 7. dodamy jeszcze współrzędne teksturowania: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; namespace MojaDrugaGraMonoGame public struct VertexPositionNormalColor : IVertexType public Vector3 Position; public Vector3 Normal; public Color Color; public static readonly VertexDeclaration VertexDeclaration = new VertexDeclaration( new VertexElement(0,VertexElementFormat.Vector3, VertexElementUsage.Position, 0), new VertexElement(3 * sizeof(float), VertexElementFormat.Vector3, VertexElementUsage.Normal, 0), new VertexElement(6 * sizeof(float), VertexElementFormat.Color, VertexElementUsage.Color, 0) ); VertexDeclaration IVertexType.VertexDeclaration get return VertexDeclaration; public VertexPositionNormalColor(Vector3 position, Vector3 normal, Color color) this.position = position; this.normal = normal; this.color = color; Przyjrzyjmy się powyższej strukturze. Wyposażona jest w trzy pola mogące przechowywać własności werteksów: dwa trójelementowe wektory (Vector3), w którym przechowywane będzie położenie werteksu i wektor normalny oraz obiekt typu Color (z przestrzeni nazw Microsoft.Xna.Framework.Graphics, a nie z System.Drawing). Obowiązkowym elementem struktury opisującej werteks jest pole lub własność typu VertexDeclaration. Jej obecność wymusza implementowany przez strukturę interfejs IVertexType. Inicjując to pole musimy utworzyć tablicę obiektów typu VertexElement opisujących poszczególne atrybuty werteksu. W przypadku struktury VertexPositionNormalColor tablica ta zawiera trzy elementy opisujące kolejne własności werteksu przesyłane do strumienia oraz ich interpretację. Dla przykładu drugi element tej tablicy opisujący normalną zainicjowany poleceniem
3 new VertexElement(3 * sizeof(float), VertexElementFormat.Vector3, VertexElementUsage.Normal, 0), informuje, o tym, że 1) element należy przesłać do zerowego (domyślnego) strumienia, 2) że w paczce opisującej jeden werteks liczby opisujące wektor normalny zaczynają się od dwunastego bajtu (każda liczba float i uint zapisana jest w czterech bajtach), 3) w aplikacji MonoGame własność jest zapisywana w trójelementowym wektorze, co określa automatycznie jej wielkość, 4) wskazuje na domyślną metodę teselatora 1, 5) i wreszcie wskazuje na sens własności (pozycja, kolor, normalna, współrzędna teksturowania, głębokość, styczna itd.) 2 oraz 6) indeks interpretacji (używana przy nadawaniu wielu interpretacji). Powyższa implementacja struktury werteksu różni się nieco od struktur zdefiniowanych w MonoGame. W tamtych, np. w VertexPositionColor (można ją obejrzeć dzięki poleceniu Go To Definition z menu kontekstowego edytora), a w strukturach zdefiniowane są w nadpisane metody Equals, GetHashCode i ToStrings oraz w operatory porównania (== i!=). Można to jednak uznać za różnice czysto kosmetyczne. Definiowanie wektorów normalnych prostopadłościany Teraz przejdźmy do klasy Prostopadloscian definiującej komponent rysujący prostopadłościan i zamieńmy wszystkie wystąpienia VertexPositionColor na VertexPositionNormalColor (najlepiej użyć automatycznej zmiany Ctrl+H). Oznacza to zmianę w wielu miejscach konstruktora i w dwóch miejscach metody Draw (w deklaracji werteksu i w wywołaniu metody gd.vertices[0].setsource). W konstruktorze w momencie, w którym zmienimy polecenia inicjujące elementy tablicy werteksów będziemy musieli uzupełnić argumenty konstruktora o wektor normalny. Najprościej użyć stałych Vector3.UnitX, Vector3.UnitY i Vector3.UnitZ odpowiednio dla ścian prawej, górnej i przedniej. Do ścian lewej, dolnej i tylnej powinniśmy użyć tych wersorów ze znakiem minus. Po wszystkich zmianach konstruktor powinien wyglądać jak na poniższym listingu: public Prostopadloscian( Game game, BasicEffect efekt, float dx, float dy, float dz, Color? kolor) : base(game) dx /= 2; dy /= 2; dz /= 2; gd = game.graphicsdevice; this.efekt = (BasicEffect)efekt.Clone(); Vector3[] punkty = new Vector3[8] new Vector3(-dx, -dy, dz), new Vector3(dx, -dy, dz), new Vector3(dx, dy, dz), new Vector3(-dx, dy, dz), new Vector3(-dx, -dy, -dz), new Vector3(dx, -dy, -dz), new Vector3(dx, dy, -dz), new Vector3(-dx, dy, -dz) ; Color kolor1 = kolor?? Color.Cyan; Color kolor2 = kolor?? Color.Magenta; Color kolor3 = kolor?? Color.Yellow; 1 Teselator to moduł karty graficznej odpowiedzialny za teselację (triangularyzację). Jest to proces grupowania przesłanej do karty listy werteksów opisujących płaszczyzny w trójki opisujące trójkąty. W nowoczesnych kartach graficznych teselator, obok vertex i pixel shadera może być programowany. 2 Porównaj z semantyką w HLSL (moduł 11-13)
4 VertexPositionNormalColor[] werteksy = new VertexPositionNormalColor[6 * 4] //przednia ściana new VertexPositionNormalColor(punkty[3], Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[2], Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[0], Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[1], Vector3.UnitZ, kolor1), //tylna ściana new VertexPositionNormalColor(punkty[7], -Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[4], -Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[6], -Vector3.UnitZ, kolor1), new VertexPositionNormalColor(punkty[5], -Vector3.UnitZ, kolor1), //górna ściana new VertexPositionNormalColor(punkty[3], Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[7], Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[2], Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[6], Vector3.UnitY, kolor2), //dolna ściana new VertexPositionNormalColor(punkty[0], -Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[1], -Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[4], -Vector3.UnitY, kolor2), new VertexPositionNormalColor(punkty[5], -Vector3.UnitY, kolor2), ; //lewa ściana new VertexPositionNormalColor(punkty[3], -Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[0], -Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[7], -Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[4], -Vector3.UnitX, kolor3), //prawa ściana new VertexPositionNormalColor(punkty[1], Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[2], Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[5], Vector3.UnitX, kolor3), new VertexPositionNormalColor(punkty[6], Vector3.UnitX, kolor3) buforwerteksow = new VertexBuffer( gd, VertexPositionNormalColor.VertexDeclaration, werteksy.length, BufferUsage.WriteOnly); buforwerteksow.setdata<vertexpositionnormalcolor>(werteksy); Zmieniając typ werteksów w całym pliku Prostopadloscian.cs zmieniliśmy je także w metodzie Prostopadloscian.Draw. Warto jednak upewnić się, czy na pewno wszystko jest w niej w porządku, a więc czy nowy typ werteksu znalazł się w deklaracji i w wywołaniu metody gd.vertices[0].setsource: public override void Draw(GameTime gametime) gd.setvertexbuffer(buforwerteksów); foreach (EffectPass pass in efekt.currenttechnique.passes) pass.apply(); for (int i = 0; i < 6; ++i) gd.drawprimitives(primitivetype.trianglestrip, 4 * i, 2); base.draw(gametime); Oświetlenie domyślne Po przygotowaniu modelu, możemy go oświetlić. Do tego użyjemy oświetlenia zaimplementowanego w klasie efektu BasicEffect. Zawiera ona trzy predefiniowane źródła światła, które można nawet w pewnym zakresie kontrolować (nie można jednak zmieniać ich
5 położenia). Plik efektu zawiera także parametry kontrolujące własności materiału. Należy bowiem zdawać sobie sprawę, że w grafice 3D (OpenGL, Direct3D, MonoGame) stosuje się dość realistyczne podejście do oświetlenia. Na ostateczny kolor modelu, jaki widzimy na ekranie wpływa zarówno kolor jego materiały, jak i kolor źródeł, którymi jest oświetlany. W MonoGame, podobnie jak np. w OpenGL, możemy zatem niezależnie ustalać składowe RGB źródła światła oraz współczynniki absorpcji poszczególnych składowych pochłanianych przez materiał. Współczynniki ustalamy osobno dla każdej składowej poszczególnych typów oświetlenia. Na razie pozostawimy domyślne ustawienia oświetlenia bez zmian ograniczając się do ich aktywacji i obniżenia współczynnika reakcji materiału na światło otoczenia. To ostatnie jeżeli jest ustawione na maksimum, ukrywa wszystkie cienie (i zmarszczki). Wróćmy zatem do klasy gry Game1 i do jej metody Game1.Initialize dodajmy dwie instrukcje: efekt.enabledefaultlighting(); efekt.ambientlightcolor = Color.Gray.ToVector3(); Należy je oczywiście umieścić po utworzeniu obiektu efekt. Aby pogłębić realizm zmieniłem także domyślne radosno-błękitne tło na czarne (argument metody gd.clear, zob. rysunek 1). Rysunek 1. Dzięki oświetleniu widać, że obiekty są trójwymiarowe Typy światła Oświetlenie domyślne można w pewnym zakresie kontrolować. Możliwości te nie dorównują wprawdzie tym, jakie zyskujemy tworząc własne efekty w języku HLSL, ale wystarczą aby zrozumieć jak działa system oświetlenia w MonoGame. W MonoGame mamy do czynienia z czterema typami światła: światło otoczenia, światło rozproszone, światło rozbłysku oraz światło emisyjne. Pierwsze trzy pochodzą z modelu Phonga stosowanym także w OpenGL, natomiast czwarte jest znane z Direct3D. W konsekwencji określając własności materiału możemy ustalić jak reaguje on na światło otoczenia, światło rozproszone itd. Natomiast definiując źródła światła określamy jedynie komponent światła rozproszonego i reflektora (światła rozbłysku). Tylko te dwa typy światła mają bowiem ustaloną pozycję (dzięki czemu można w ogóle mówić o ich źródle), a w przypadku reflektora także kierunek. Światło rozproszone (diffuse) imituje mleczną żarówkę. Posiada pozycję i rozjaśnia powierzchnie skierowane w kierunku źródła. Ich jasność jest proporcjonalna do cosinusa kąta między ustalanym przy definiowaniu werteksów wektorem normalnym i wektorem wskazującym na źródło (wzór Lamberta). Nie zależy od położenia kamery (rysunek 2).
6 Rysunek 2. Jasność powierzchni w świetle rozproszonym nie zależy od położenia kamery Powierzchnie nieoświetlone przez światło rozproszone są zupełnie czarne. To niezupełnie odpowiada naszemu codziennemu doświadczeniu. W rzeczywistości bowiem nie tylko żarówki (i gwiazdy) są źródłami światła, ale również wszystkie jasne przedmioty (i księżyc), które odbijają padające na nie światło. Ze względu na możliwości obliczeniowe w OpenGL i MonoGame obiekty oświetlane nie są jednak wtórnymi źródłami światła 3. Zamiast tego stosuje się światło otoczenia. Światło otoczenia (ambient) w jednakowy sposób rozświetla całą scenę (zob. planszę na następnej stronie). Nie ma źródła, ani kierunku. Zastosowane samodzielnie odpowiada oświetleniu uzyskiwanemu w dobrze oświetlonym pokoju z wieloma wtórnymi źródłami światła gdy żaden przedmiot nie rzuca wyraźnych cieni. Światło rozbłysku (specular, w malarstwie odpowiada mu tzw. blink) to odpowiednik zajączka oślepiającego kamerę lub oko, gdy promień światła odbitego od powierzchni skierowany jest wprost w obiektyw. W odróżnieniu od światła rozproszonego jasność tej składowej zależy nie tylko od położenia źródła światła i kierunku normalnej, ale także od położenia kamery. Ściśle rzecz biorąc zależy od podniesionego do n-tej potęgi kąta między kierunkiem światła odbitego z punktowego źródła światła, a kierunkiem do kamery (rysunek 3). Wartość potęgi to moc rozbłysku określa m.in. zakres w jakim efekt jest widoczny. Często modelem, na którym prezentowana jest ta składowa oświetlenia jest sfera, bowiem wartość potęgi n wpływa na wielkość widocznej na powierzchni sfery plamki światła (zob. Powierzchnia przejmuje kolor światła rozbłysku tym bardziej im mniejszy jest kąt odchylenia od kierunku światła odbitego. Rysunek 3. Rozbłysk zależy od kąta między promieniem odbitym i kierunkiem do kamery Światło emisyjne (emission) to imitacja światła emitowanego przez przedmiot. Objawia się to jego lśnieniem, tak jakby przedmiot był źródłem światła. Należy jednak pamiętać, że efekt dotyczy tylko samego przedmiotu. Przypisanie bryle komponentu światła emisyjnego nie oznacza, że przedmiot ten oświetla płaszczyzny innych przedmiotów. 3 Choć mówi się od pewnego czasu o uwzględnieniu elementów technik śledzenia promieni (ang. ray tracing) w grafice czasu rzeczywistego, to na razie projekty te nie są zrealizowane.
7 Bardziej wnikliwy opis modelu oświetlenia Phonga znajduje się w module 13, w którym opisujemy jego własną implementację przygotowaną w HLSL. Rozbłysk Rozproszone Otoczenia Rozbłysk + Rozproszone Rozproszone + Otoczenia Rozbłysk + Rozproszone + Otoczenia j.w. + Emisji Rysunek 4. Plansza prezentująca typy oświetlenia w modelu Phonga
8 Eksperymenty z własnościami materiału i źródłami światła W świetle domyślnym klasy BasicEffect zdefiniowane są trzy światła. W każdym z nich można zmienić kolor światła rozproszonego oraz kolor i moc światła reflektora odpowiedzialnego za rozbłysk. Niezależnie od tego możemy ustalić własności materiału dla światła otoczenia, światła emisji, światła rozproszonego i rozbłysku. Przekonajmy się na własne oczy jak to wszystko działa. Zacznijmy od ustawienia wszystkich aborcyjnych własności materiałów na zero, co odpowiada przypisaniu im czarnego koloru. Wyłączmy również źródła światła 1 i 2 pozostawiając jedynie źródło światła o numerze 0, w którym włączamy komponent światła rozproszonego i ustawiamy go na maksimum (kolor biały), a składowe RGB rozbłysku na 50% (kolor szary). //cialo doskonale czarne efekt.ambientlightcolor = Color.Black.ToVector3(); efekt.diffusecolor = Color.Black.ToVector3(); efekt.specularcolor = Color.Black.ToVector3(); efekt.emissivecolor = Color.Black.ToVector3(); //zrodla swiatla efekt.directionallight0.diffusecolor = Color.White.ToVector3(); efekt.directionallight0.specularcolor = Color.Gray.ToVector3(); efekt.directionallight1.diffusecolor = Color.Black.ToVector3(); efekt.directionallight1.specularcolor = Color.Black.ToVector3(); efekt.directionallight2.diffusecolor = Color.Black.ToVector3(); efekt.directionallight2.specularcolor = Color.Black.ToVector3(); Po uruchomieniu aplikacji zobaczymy wielkie nic. Cała scena pogrążona będzie w mroku. Prostokąt nie odbija bowiem żadnego światła choć to jest włączone i znajduje się po prawej stronie sceny. Zwiększmy teraz nieco własności materiału odpowiedzialne za odbicie światła rozbłysku: efekt.specularcolor = Color.White.ToVector3(); efekt.specularpower = 16; Pojawi się sam rozbłysk (lewy rysunek w górnym wierszu na planszy z poprzedniej strony). Tak jakbyśmy mieli do czynienia z zupełnie przezroczystym szkłem (ew. czarnym lśniącym monolitem) oświetlonym reflektorem. Zwiększmy teraz współczynniki odbicia światła rozproszonego: efekt.diffusecolor = Color.White.ToVector3(); Dzięki niemu prostopadłościan zacznie reagować na komponent światła rozproszonego źródła światła i oświetlone zostaną ściany skierowane na prawo (na planszy lewy rysunek w drugim wierszu). Lewa ściana pozostanie jednak zupełnie czarna. To nie odpowiada rzeczywistości, w której zazwyczaj światło dociera ze wszystkich kierunków dzięki wielokrotnym odbiciom i rozproszeniom na wszystkich przedmiotach w otoczeniu. Ten fakt odtwarza światło otoczenia. Jeżeli ustawimy i te parametry materiału, które odpowiadają za reakcję na światło otoczenia zobaczymy cały prostopadłościan z pełnym wrażeniem trójwymiarowości (na planszy lewy rysunek w trzecim wierszu). efekt.ambientlightcolor = Color.Gray.ToVector3(); Możemy również dodać światło emisyjne imitujące fakt bycia źródłem światła (rysunek w dolnym wierszu): efekt.emissivecolor = Color.White.ToVector3(); Uwaga! W świetle domyślnym włączenie samego komponentu materiału odpowiedzialnego za odbijanie światła otoczenia przy wyzerowanych współczynnikach odbijania światła rozproszonego
9 lub rozbłysku nie daje żadnego efektu. Rysunek z prawej strony górnego wiersza jest więc trochę oszukany powstał przez wyłączenie komponentów rozproszonych źródeł światła. Cieniowanie dla werteksów, czy dla pikseli? Klasa BasicEffect pozwala na ustalenie, czy obliczenia jasności mają być prowadzone w jednostce cieniowania (szaderze) werteksów, czy pikseli. Ta druga możliwość dostępna jest wyłącznie, gdy karta graficzna wspiera Pixer Shader Model w wersji 2.0. Cieniowanie na poziomie werteksów jest szybsze, z tego prostego powodu, że ilość werteksów definiujących aktorów jest mniejsza niż ilość pikseli obrazu. Jednak obliczanie cieniowania w szaderze pikseli daje znacznie lepsze efekty dla tej samej liczby werteksów definiujących gładką figurę (por. rysunek). Różnica między dwoma możliwościami stanie się jaśniejsza po utworzeniu własnych szaderów w modułach W przypadku shadera kryjącego się za klasą BasicEffect o tym, gdzie mają być przeprowadzane obliczenia decyduje własność BasicEffect.PreferPerPixelLighting. Jeżeli ustawiona jest na true i dysponujemy odpowiednim sprzętem obliczenia wykonywane będą w szaderze pikseli (zob. rysunek 5). Rysunek 5. Oświetlenie zrealizowane w shaderze werteksów (z lewej) i shaderze pikseli (z prawej) Iloczyn wektorowy Ustalanie wektorów normalnych w przypadku prostopadłościanów jest łatwe używamy wersorów kartezjańskiego układu współrzędnych. Załóżmy jednak, że chcemy obliczyć normalną do dowolnego trójkąta zadanego trzema punktami lub dwoma wektorami. Może to być na przykład jedna ze ścian czworościanu foremnego (tetraedru), który będziemy oświetlać w laboratorium podstawowym. Aby ustalić wektor normalny do takiego trójkąta, należy obliczyć unormowany iloczyn wektorowy dwóch wektorów napinających ów trójkąt (rysunek 6). Kolejność wektorów w iloczynie jest ważna podobnie jak w przypadku nawijania. Normalna do powierzchni powinna być bowiem skierowana na zewnątrz bryły tj. do przodu trójkąta. Zatem obliczając iloczyn wektorowy, można to łatwo zrobić korzystając z metody Vector3.Cross, pamiętajmy o regule śruby prawoskrętnej. Rysunek 6. Iloczyn wektorowy
10 Uśrednianie i interpolacja normalnych Wprowadzając pojęcie wektora normalnego jako własności werteksu przywołałem termin uśredniania i interpolacji normalnych. Tej techniki dotyczyć będą dwa z zadań laboratorium rozszerzonego. Wyobraźmy sobie bryłę zbudowaną z kwadratów i przypominającą sferę. Jeżeli werteksy każdego kwadratu owej bryły mają przypisaną jedną wspólną normalną, która jest rzeczywiście prostopadła do płaszczyzny każdego z tych kwadratów, to jasność ustalana jest dla całego kwadratu i przez to są one wyraźnie widoczne. Mamy wówczas do czynienia z cieniowaniem płaskim (rysunek poniżej, z lewej strony). Zsumujmy teraz normalne czterech sąsiadujących kwadratów i ową średnią, po unormowaniu, przypiszmy do tego werteksu, który jest ich wspólnych wierzchołkiem. Po tej operacji każdy kwadrat, z których zbudowana jest sfera wyposażony będzie w cztery różne normalne. W przypadku sfery jego kierunek można ustalić prościej wektor normalny jest przedłużeniem promienia. Rysunek 7. Uśrednianie i interpolacja normalnych Łatwo to zrozumień na przykładzie figury płaskiej np. kwadratu (rysunek 7, lewy). Proces ten nazywa się uśrednianiem normalnych. Dalszy etap to interpolacja normalnych (por. rysunek 8). Podobnie, jak w przypadku kolorów, także normalne mogą być bowiem cieniowane (rysunek 7, prawy). Powoduje to osobne obliczanie jasności światła rozproszonego i rozbłysku dla każdego punktu prymitywu i stopniową zmianę ich jasności (rysunek powyżej, prawy). W efekcie kanciasta sfera zmienia się w sferę okrągłą bez zwiększenia ilości opisujących ją punktów. Proces ten nazywamy cieniowaniem Phonga. Oszczędność jest zresztą podwójna. Po pierwsze dzięki cieniowaniu sfera dobrze wygląda już przy stosunkowo niewielkiej liczbie kwadratów, a po drugie zauważmy, że w każdym wierzchołku nie ma już czterech werteksów z różnymi normalnymi, a jeden, w którym jest wspólna uśredniona normalna.
11 Rysunek 8. Schematyczne przedstawienie uśredniania i interpolacji normalnych Zadania Zadanie 1 Po kursie, który przeszedłeś na temat oświetlenia i uśredniania normalnych czujesz się na tyle doświadczony, aby zabrać się za zdefiniowanie normalnych w przypadku kwadryk. Zmodyfikuj istniejącą klasę Kwadryki (por. zadanie rozszerzone z modułu pierwszego) tak, aby dla każdej pary werteksów określających kolejny czworokąt (dwa trójkąty) w paśmie trójkątów zdefiniowana została normalna uśredniająca wartości wersorów prostopadłych do tych czworokątów dla dwóch sąsiednich czworokątów. Podpowiedź: Tak zdefiniowane normalne uwzględniają uśrednianie normalnych w obrębie pasma (PrimitiveType.TriangleStrip). Ponieważ większość kwadryk (walec, stożek, dysk) zbudowane są z pojedynczych pasm jest to rozwiązanie w pełni wystarczające. Jednak nie w przypadku sfery, w której należy także dodać uśrednianie po czworokątów z sąsiednich pasm. Można też do sprawy podejść prościej przedefiniowując normalne tak, żeby były równoległe do promienia w punkcie, w którym definiowany jest werteks.
12 Zadanie 2 W projekcie 2C2-0 Oswietlenie (lab. rozsz.) - Dwudziestoscian znajduje się komponent rysujący dwudziestościan foremny. Jego ściany są trójkątami foremnymi. Zdefiniuj wektory normalne do każdego werteksu tak, aby był on uśrednieniem pięciu normalnych określonych dla pięciu trójkątów korzystających z tego wierzchołka. Podpowiedź: Czy musisz obliczać wektory prostopadłe do poszczególnych ścian ikosaedru, żeby policzyć normalne dla werteksów? Czy można tak zmodyfikować typ werteksu, aby w ogóle uniknąć definiowania normalnych?
Rozdział 5 Oświetlenie: cienie własne i rzucane. Mieszanie kolorów
Rozdział 5 Oświetlenie: cienie własne i rzucane. Mieszanie kolorów Wersja z 2014-03-29 Trudno przecenić rolę światła w grafice 3D. Podobnie jak w kinie, to dzięki oświetleniu nasz umysł daje się nabierać
Rozdział 4 Komponenty gry na przykładzie prostopadłościanu
Rozdział 4 Komponenty gry na przykładzie prostopadłościanu Wersja z 2014-03-21 Budowanie gry, nawet stosunkowo prostej, to spore wyzwanie dla programisty. Bardzo łatwo zgubić się w dużej ilości linii kodu
Oświetlenie obiektów 3D
Synteza i obróbka obrazu Oświetlenie obiektów 3D Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Rasteryzacja Spłaszczony po rzutowaniu obraz siatek wielokątowych
Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38
Wykład 5 Potok Renderowania Oświetlenie mgr inż. 1/38 Podejście śledzenia promieni (ang. ray tracing) stosuje się w grafice realistycznej. Śledzone są promienie przechodzące przez piksele obrazu wynikowego
OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska
OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera
Animowana grafika 3D. Opracowanie: J. Kęsik.
Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl Powierzchnia obiektu 3D jest renderowana jako czarna jeżeli nie jest oświetlana żadnym światłem (wyjątkiem są obiekty samoświecące) Oświetlenie
6 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 6 1/7 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Materiały i oświetlenie 6 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie Specyfikacja biblioteki OpenGL rozróżnia trzy
Materiały. Dorota Smorawa
Materiały Dorota Smorawa Materiały Materiały, podobnie jak światła, opisywane są za pomocą trzech składowych. Opisują zdolności refleksyjno-emisyjne danej powierzchni. Do tworzenia materiału służy funkcja:
Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.
Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy
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
Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny
Laboratorium grafiki komputerowej i animacji Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Przygotowanie do ćwiczenia: 1. Zapoznać się ze zdefiniowanymi w OpenGL modelami światła i właściwości materiałów.
Grafika 3D program POV-Ray - 1 -
Temat 1: Ogólne informacje o programie POV-Ray. Interfejs programu. Ustawienie kamery i świateł. Podstawowe obiekty 3D, ich położenie, kolory i tekstura oraz przezroczystość. Skrót POV-Ray to rozwinięcie
Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie
Model oświetlenia Radosław Mantiuk Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Obliczenie koloru powierzchni (ang. Lighting) Światło biegnie od źródła światła, odbija
Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.
Ustawienia materiałów i tekstur w programie KD Max. 1. Dwa tryby własności materiału Materiał możemy ustawić w dwóch trybach: czysty kolor tekstura 2 2. Podstawowe parametry materiału 2.1 Większość właściwości
OpenGL Światło (cieniowanie)
OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);
Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.
Oświetlenie w OpenGL Oprogramowanie i wykorzystanie stacji roboczych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl W OpenGL źródło światła w scenie składa się z trzech składowych oświetlenia: otoczenia,
GRK 4. dr Wojciech Palubicki
GRK 4 dr Wojciech Palubicki Uproszczony Potok Graficzny (Rendering) Model Matrix View Matrix Projection Matrix Viewport Transform Object Space World Space View Space Clip Space Screen Space Projection
Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe
Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe Czym są tekstury? Tekstury są tablicowymi strukturami danych o wymiarze od 1 do 3, których elementami są tzw. teksele.
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
OpenGL Światło (cieniowanie)
OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/6 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Manipulowanie przestrzenią 2 Przygotował: mgr inż. Maciej Lasota 1) Manipulowanie przestrzenią Istnieją dwa typy układów współrzędnych:
Rozdział 6 Cienie rzucane. Mieszanie kolorów
Rozdział 6 Cienie rzucane. Mieszanie kolorów Wersja z 2014-04-04 W tym rozdziale omówione są zagadnienia związane znaczeniowo z oświetleniem: cienie rzucane, przezroczystość, mgła. Nie maja one jednak
Światła i rodzaje świateł. Dorota Smorawa
Światła i rodzaje świateł Dorota Smorawa Rodzaje świateł Biblioteka OpenGL posiada trzy podstawowe rodzaje świateł: światło otoczenia, światło rozproszone oraz światło odbite. Dodając oświetlenie na scenie
Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Podstawy grafiki 3D Wstęp: W drugiej części przedstawione zostaną podstawowe mechanizmy
Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE
Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE Tworzy światło punktowe emitujące światło we wszystkich kierunkach. Lista monitów Wyświetlane są następujące monity. Określ położenie źródłowe : Podaj wartości
Światło. W OpenGL można rozróżnić 3 rodzaje światła
Wizualizacja 3D Światło W OpenGL można rozróżnić 3 rodzaje światła Światło otaczające (ambient light) równomiernie oświetla wszystkie elementy sceny, nie pochodzi z żadnego konkretnego kierunku Światło
1. Prymitywy graficzne
1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy
GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu
GRAKO: ŚWIATŁO I CIENIE Metody oświetlania Metody cieniowania Przykłady OŚWIETLENIE: elementy istotne w projektowaniu Rozumienie fizyki światła w realnym świecie Rozumienie procesu percepcji światła Opracowanie
Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor
Model oświetlenia emisja światła przez źródła światła interakcja światła z powierzchnią absorbcja światła przez sensor Radiancja radiancja miara światła wychodzącego z powierzchni w danym kącie bryłowym
OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23
OpenGL : mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski 1/23 Folder z plikami zewnętrznymi (resources) Po odpaleniu przykładowego projektu, nie uruchomi się on poprawnie. Powodem
Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych
Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji
Programowanie telefonów z Windows Phone 7, cz. 3
Programowanie telefonów z Windows Phone 7, cz. 3 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup
Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie
Grafika 3D na przykładzie XNA 3.1
Jacek Matulewski, Tomasz Dziubak Grafika 3D na przykładzie XNA 3.1 ITA-106 Wersja 1.02 (XNA 3.1, PS 2.0) Toruo, listopad 2010 2010 Jacek Matulewski, Tomasz Dziubak. Autor udziela prawa do bezpłatnego kopiowania
1. Oświetlenie Materiały i powierzchnie
1. Oświetlenie Rzeczywiste światło emitowane przez określone źródło, odbijane jest na milionach powierzchni obiektów, po czym dociera do naszych oczu powodując, że widzimy dane przedmioty. Światło padające
OpenGL przezroczystość
OpenGL przezroczystość W standardzie OpenGL efekty przezroczystości uzyskuje się poprzez zezwolenie na łączenie kolorów: Kolor piksela tworzy się na podstawie kolorów obiektu przesłanianego i przesłaniającego
Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak
Modelowanie i wstęp do druku 3D Wykład 1 Robert Banasiak Od modelu 3D do wydruku 3D Typowa droga...czasem wyboista... Pomysł!! Modeler 3D Przygotowanie modelu do druku Konfiguracja Programu do drukowania
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
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Praktyczne przykłady wykorzystania GeoGebry podczas lekcji na II etapie edukacyjnym.
Praktyczne przykłady wykorzystania GeoGebry podczas lekcji na II etapie edukacyjnym. Po uruchomieniu Geogebry (wersja 5.0) Pasek narzędzi Cofnij/przywróć Problem 1: Sprawdź co się stanie, jeśli połączysz
3 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 3 1/5 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Rysowanie prymitywów 3 Przygotował: mgr inż. Maciej Lasota 1) Rysowanie prymitywów Podstawową rodziną funkcji wykorzystywanych
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
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
Programowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
OpenGL model oświetlenia
Składowe światła OpenGL Światło otaczające (ambient) OpenGL model oświetlenia Nie pochodzi z żadnego określonego kierunku. Powoduje równomierne oświetlenie obiektów na wszystkich powierzchniach i wszystkich
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r
Gry Komputerowe Laboratorium 4 Teksturowanie Kolizje obiektów z otoczeniem mgr inż. Michał Chwesiuk 1/29 Klasa Stwórzmy najpierw klasę TextureManager, która będzie obsługiwała tekstury w projekcie. 2/29
Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30
Wykład 4 mgr inż. 1/30 Synteza grafiki polega na stworzeniu obrazu w oparciu o jego opis. Synteza obrazu w grafice komputerowej polega na wykorzystaniu algorytmów komputerowych do uzyskania obrazu cyfrowego
Grafika 3D program POV-Ray - 36 -
Temat 7: Rodzaje oświetlenia. Rzucanie cieni przez obiekty. Sposób rozchodzenia się, odbijania i przyjmowania światła na obiekcie. Ważną umiejętnością przy ray-tracingu jest opanowanie oświetlenia. Tym
Języki i metody programowania Java Lab2 podejście obiektowe
Języki i metody programowania Java Lab2 podejście obiektowe https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf Zofia Kruczkiewicz 1 Zadanie
Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a
TEMATYKA: Krzywe Bézier a Ćwiczenia nr 7 DEFINICJE: Interpolacja: przybliżanie funkcji za pomocą innej funkcji, zwykle wielomianu, tak aby były sobie równe w zadanych punktach. Poniżej przykład interpolacji
Dziedziczenie. Zadanie 1
Dziedziczenie Zadanie 1 Napisz klasę KolorowyPunkt, która dziedziczy po klasie Punkt a dodatkowo przechowuje informacje o kolorze. Uzupełnij ją o metody umożliwiające pobieranie i ustawianie koloru. Pamiętaj
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ć
Implementacja filtru Canny ego
ANALIZA I PRZETWARZANIE OBRAZÓW Implementacja filtru Canny ego Autor: Katarzyna Piotrowicz Kraków,2015-06-11 Spis treści 1. Wstęp... 1 2. Implementacja... 2 3. Przykłady... 3 Porównanie wykrytych krawędzi
GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie
GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46
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
Zaawansowana Grafika Komputerowa
Zaawansowana Komputerowa Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Luty 2017 Michał Chwesiuk Zaawansowana Komputerowa 28 Luty 2017 1/11 O mnie inż.
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Grafika komputerowa Wykład 10 Modelowanie oświetlenia
Grafika komputerowa Wykład 10 Instytut Informatyki i Automatyki Państwowa Wyższa Szkoła Informatyki i Przedsiębiorczości w Łomży 2 0 0 9 Spis treści Spis treści 1 2 3 Spis treści Spis treści 1 2 3 Spis
W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.
1. Podstawy matematyki 1.1. Geometria analityczna W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora. Skalarem w fizyce nazywamy
Przekształcanie wykresów.
Sławomir Jemielity Przekształcanie wykresów. Pokażemy tu, jak zmiana we wzorze funkcji wpływa na wygląd jej wykresu. A. Mamy wykres funkcji f(). Jak będzie wyglądał wykres f ( ) + a, a stała? ( ) f ( )
Formatowanie komórek
Formatowanie komórek Korzystając z włączonego paska narzędziowego Formatowanie możemy, bez szukania dodatkowych opcji sformatować wartości i tekst wpisany do komórek Zmiana stylu czcionki (pogrubienie,
SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa
SIMR 06/07, Analiza, wykład, 07-0- Przestrzeń wektorowa Przestrzeń wektorowa (liniowa) - przestrzeń (zbiór) w której określone są działania (funkcje) dodawania elementów i mnożenia elementów przez liczbę
Przewodnik po soczewkach
Przewodnik po soczewkach 1. Wchodzimy w program Corel Draw 11 następnie klikamy Plik /Nowy => Nowy Rysunek. Następnie wchodzi w Okno/Okno dokowane /Teczka podręczna/ Przeglądaj/i wybieramy plik w którym
Grafika komputerowa Tekstury
. Tekstury Tekstury są dwuwymiarowymi obrazkami nakładanymi na obiekty lub ich części, w celu poprawienia realizmu rysowanych brył oraz dodatkowego określenia cech ich powierzchni np. przez nałożenie obrazka
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
KONSTRUKCJA TRÓJKĄTA 1 KONSTRUKCJA TRÓJKĄTA 2 KONSTRUKCJA CZWOROKĄTA KONSTRUKCJA OKRĘGU KONSTRUKCJA STYCZNYCH
Wstęp Ten multimedialny program edukacyjny zawiera zadania konstrukcyjne pozwalające na samodzielne ćwiczenie i sprawdzenie wiadomości w zakresie konstrukcji podstawowych figur geometrycznych. Jest przeznaczony
Ć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
PODSTAWY > Figury płaskie (1) KĄTY. Kąt składa się z ramion i wierzchołka. Jego wielkość jest mierzona w stopniach:
PODSTAWY > Figury płaskie (1) KĄTY Kąt składa się z ramion i wierzchołka. Jego wielkość jest mierzona w stopniach: Kąt możemy opisać wpisując w łuk jego miarę (gdy jest znana). Gdy nie znamy miary kąta,
Podstawy POV-Ray a. Diana Domańska. Uniwersytet Śląski
Podstawy POV-Ray a Diana Domańska Uniwersytet Śląski Kamera Definicja kamery opisuje pozycję, typ rzutowania oraz właściwości kamery. Kamera Definicja kamery opisuje pozycję, typ rzutowania oraz właściwości
Zjawisko widzenia obrazów
Zjawisko widzenia obrazów emisja światła przez źródła światła interakcja światła z powierzchnią absorbcja światła przez sensor Źródła światła światło energia elektromagnetyczna podróżująca w przestrzeni
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Raytracer. Seminaria. Hotline. początkujący zaawansowani na miejscu
Seminaria początkujący zaawansowani na miejscu Hotline wsparcie techniczne +420 571 894 330 zdalne sterowanie przez Team Viewer email carat@technodat.cz Zespół Spis treści Spis treści... - 2 - Informacja...
Graficzne opracowanie wyników pomiarów 1
GRAFICZNE OPRACOWANIE WYNIKÓW POMIARÓW Celem pomiarów jest bardzo często potwierdzenie związku lub znalezienie zależności między wielkościami fizycznymi. Pomiar polega na wyznaczaniu wartości y wielkości
Agnieszka Kamińska, Dorota Ponczek. Matematyka na czasie Gimnazjum, klasa 3 Rozkład materiału i plan wynikowy
Agnieszka Kamińska, Dorota Ponczek Matematyka na czasie Gimnazjum, klasa Rozkład materiału i plan wynikowy I. FUNKCJE 1 1. Pojęcie funkcji zbiór i jego elementy pojęcie przyporządkowania pojęcie funkcji
Podstawy algorytmiki i programowania - wykład 4 C-struktury
1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski
Rachunek wektorowy - wprowadzenie dr inż. Romuald Kędzierski Graficzne przedstawianie wielkości wektorowych Długość wektora jest miarą jego wartości Linia prosta wyznaczająca kierunek działania wektora
Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:
1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,
Rysowanie precyzyjne. Polecenie:
7 Rysowanie precyzyjne W ćwiczeniu tym pokazane zostaną różne techniki bardzo dokładnego rysowania obiektów w programie AutoCAD 2010, między innymi wykorzystanie punktów charakterystycznych. Z uwagi na
Animacje z zastosowaniem suwaka i przycisku
Animacje z zastosowaniem suwaka i przycisku Animacja Pole równoległoboku Naukę tworzenia animacji uruchamianych na przycisk zaczynamy od przygotowania stosunkowo prostej animacji, za pomocą, której można
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Materiały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Technologie Informacyjne
Grafika komputerowa Szkoła Główna Służby Pożarniczej Zakład Informatyki i Łączności December 12, 2016 1 Wprowadzenie 2 Optyka 3 Geometria 4 Grafika rastrowa i wektorowa 5 Kompresja danych Wprowadzenie
SPRAWDZIAN NR 1. I promienie świetlne nadal są równoległe względem siebie, a po odbiciu od powierzchni II nie są równoległe względem siebie.
SPRAWDZIAN NR 1 ŁUKASZ CHOROŚ IMIĘ I NAZWISKO: KLASA: GRUPA A 1. Na dwie różne powierzchnie światło pada pod tym samym kątem. Po odbiciu od powierzchni I promienie świetlne nadal są równoległe względem
INSTRUKCJA UŻYTKOWANIA PROGRAMU MEB EDYTOR 1. Dane podstawowe Program MEB edytor oblicza zadania potencjalne Metodą Elementów Brzegowych oraz umożliwia ich pre- i post-processing. Rozwiązywane zadanie
STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH
STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH Stereometria jest działem geometrii, którego przedmiotem badań są bryły przestrzenne oraz ich właściwości. WZAJEMNE POŁOŻENIE PROSTYCH W PRZESTRZENI 2 proste
KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012
Rysowanie precyzyjne 7 W ćwiczeniu tym pokazane zostaną wybrane techniki bardzo dokładnego rysowania obiektów w programie AutoCAD 2012, między innymi wykorzystanie punktów charakterystycznych. Narysować
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Wymagania kl. 3. Zakres podstawowy i rozszerzony
Wymagania kl. 3 Zakres podstawowy i rozszerzony Temat lekcji Zakres treści Osiągnięcia ucznia 1. RACHUNEK PRAWDOPODOBIEŃSTWA 1. Reguła mnożenia reguła mnożenia ilustracja zbioru wyników doświadczenia za
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
Transformacje. dr Radosław Matusik. radmat
www.math.uni.lodz.pl/ radmat Cel wykładu Celem wykładu jest prezentacja m.in. przestrzeni modelu, świata, kamery oraz projekcji, a także omówienie sposobów oświetlania i cieniowania obiektów. Pierwsze
Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016
Wymagania na poszczególne oceny szkolne z matematyki dla uczniów klasy IIIa i IIIb Gimnazjum im. Jana Pawła II w Mętowie w roku szkolnym 2015/2016 DZIAŁ 1. FUNKCJE (11h) Uczeń: poda definicję funkcji (2)
0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do
0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do obserwatora f) w kierunku od obserwatora 1. Obrót dookoła osi
Technologie i usługi internetowe cz. 2
Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,
Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows
Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows Phone 7. Skąd i jakie paczki pobrać. Coś napiszemy :-)
Iloczyn wektorowy. Autorzy: Michał Góra
Iloczyn wektorowy Autorzy: Michał Góra 019 Iloczyn wektorowy Autor: Michał Góra DEFINICJA Definicja 1: Iloczyn wektorowy Iloczynem wektorowym wektorów v = ( v x, v y, v z ) R 3 oraz w = ( w x, w y, w z