Budowa aplikacji w technologii.net wykład 13 Grafika 3D

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

Download "Budowa aplikacji w technologii.net wykład 13 Grafika 3D"

Transkrypt

1 Budowa aplikacji w technologii.net wykład 13 Grafika 3D 1/49 Grafika 3D w aplikacjach: DirectX lub OpenGL złożony model programistyczny i wymagania sprzętowe ograniczają ich użycie w tworzeniu interfejsu aplikacji Grafika 3D w WPF: Nowy model grafiki trójwymiarowej. Oparcie budowy obiektów 3D o język znaczników i znane elementy: geometrie, pędzle, transformacje, animacje, wiązanie danych. Klasy pomocnicze zapewniają dodatkową funkcjonalność, np. obracanie myszą, hit-testy. Nie nadaje się do wymagających aplikacji (np. gier). Ręczne definiowanie złożonych scen jest mało praktyczne i podatne na błędy.

2 2/49 Podstawy Cztery podstawowe składniki: Viewport widok, przechowuje zawartość 3D Obiekty 3D Źródła światła oświetlają scenę 3D lub jej fragment Kamera zapewnia punkt obserwacyjny Viewport3D Element interfejsu, umieszczany w oknie, a zarazem kontener na scenę 3D. Własność Children zawiera obiekty sceny (w tym źródła oświetlenia) Własność Camera Obiekty trójwymiarowe Dziedziczą z System.Windows.Media.Media3D.Visual3D

3 3/49 Visual3D bazowa dla wszystkich obiektów 3D, możemy z niej dziedziczyć lub użyć ModelVisual3D i zdefiniować geometrię obiektu. Te obiekty wrzucamy do viewportu. Geometry3D analogicznie do Geometry do obrazów 2D reprezentuje siatkę obiektu. Dziedziczy z niej MeshGeometry3D. GeometryModel3D opakowuje geometrię 3D, dodając do niej dane o materiale (kolorze, teksturze), następnie jest używany do wypełnienia Visual3D. Transform3D klasy RotateTransform3D, ScaleTransform3D, TranslateTransform3D, Transform3DGroup, MatrixTransform3D odpowiadają dwuwymiarowym transformacjom. <Viewport3D> <ModelVisual3D> <ModelVisual3D.Content> <GeometryModel3D> <GeometryModel3D.Geometry> <MeshGeometry3D...> </GeometryModel3D.Geometry> </GeometryModel3D> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D>

4 4/49 Geometria Tworzenie obiektu 3D rozpoczyna się od budowy jego geometrii. Służy do tego klasa MeshGeometry3D. MeshGeometry3D reprezentuje siatkę obiektu (mesh). Siatka złożona jest z trójkątów to najprostszy sposób definiowania powierzchni (wystarczą trzy punkty) i są powszechnie wykorzystywane w grafice 3D. Wszelkie inne obiekty są definiowane jako złożenie odpowiedniej liczby trójkątów. Właściwości klasy MeshGeometry3D: Positions kolekcja wszystkich punktów siatki (wierzchołków trójkątów). Często jeden punkt jest wierzchołkiem kilku trójkątów, np: sześcian wymaga 12 trójkątów, ale tylko 8 wierzchołków). TriangleIndices definicja trójkątów. Każdy trójkąt kolekcji jest reprezentowany przez trzy indeksy punktów z kolekcji Positions. Normals to wektory prostopadłe do powierzchni (a raczej prostopadłe do stycznej do powierzchni), definiowane dla wszystkich wierzchołków siatki, są używane do obliczeń oświetlenia. TextureCoordinates określa, jak tekstura 2D ma być mapowana na obiekt 3D. Dla każdego punktu kolekcji Positions dostarcza punkt 2D.

5 5/49 Jednostki nie są ważne pozycja kamery i transformacje określą finalny rozmiar obiektu. Układ współrzędnych prawoskrętny (oś x w prawo, y do góry, z w kierunku patrzącego). <MeshGeometry3D Positions="-1,0,0 0,1,0 1,0,0" TriangleIndices="0,2,1" /> Nie musimy definiować normalnych i tekstur (jeśli wypełnienie to SolidColorBrush). Kolejność definiowania punktów nie ma znaczenia, ale znaczenie ma kolejność podawania indeksów wierzchołków. Kolejność musi być przeciwna do ruchu wskazówek zegara określa to jednoznacznie przód i tył trójkąta (każdy może być wypełniony inną teksturą, często tył w ogóle nie jest rysowany).

6 GeometryModel3D Opakowuje obiekt MeshGeometry3D. Posiada trzy właściwości: Geometry przyjmuje obiekt reprezentujący kształt (MeshGeometry3D). Material i BackMaterial definiują powierzchnię z jakiej zbudowany jest kształt. Określa ona kolor (lub teksturę) obiektu oraz sposób reakcji na oświetlenie. WPF udostępnia cztery klasy materiałów: DiffuseMaterial płaska, matowa powierzchnia. Rozprasza światło równomiernie we wszystkich kierunkach. Najczęściej używana. SpecularMaterial lśniąca, błyszcząca powierzchnia. Naśladuje metal lub szkło. Odbija światło jak lustro (ale nie geometrię). EmissiveMaterial świecąca powierzchnia, generuje własne światło (ale nie jest źródłem światła). MaterialGroup pozwala na łączenie materiałów (np. SpecularMaterial dodający odblask do DiffuseMaterial). 6/49

7 7/49 <DiffuseMaterial Brush="Yellow"/> <MaterialGroup> <DiffuseMaterial Brush="Yellow"/> <SpecularMaterial Brush="White"/> </MaterialGroup> <MaterialGroup> <DiffuseMaterial Brush="Yellow"/> <EmissiveMaterial Brush="Red"/> </MaterialGroup>

8 8/49 Przykład: <GeometryModel3D> <GeometryModel3D.Geometry> <MeshGeometry3D... /> </GeometryModel3D.Geometry> <GeometryModel3D.Material> <DiffuseMaterial Brush="Yellow"/> </GeometryModel3D.Material> </GeometryModel3D> (Nie określiliśmy BackMaterial, a zatem trójkąt będzie widoczny tylko od przodu.)

9 9/49 Źródła światła Uzyskanie cieniowania wymaga dodania do sceny jednego lub kilku źródeł światła. Model oświetlenia w WPF korzysta z wielu uproszczeń: oświetlenie obliczane jest osobno dla każdego obiektu (obiekty nie rzucają na siebie cieni ani odbić), oświetlenie obliczane jest dla wierzchołków i interpolowane na pozostałej powierzchni trójkąta. WPF udostępnia cztery klasy oświetlenia: DirectionalLight równoległe promienie padające we wskazanym kierunku (jak światło słoneczne). AmbientLight światło rozproszone (zazwyczaj używane w połączeniu z innymi źródłami światła). PointLight źródło punktowe, emituje światło z pewnego punktu przestrzeni we wszystkich kierunkach. SpotLight źródło stożkowe, emituje światło z punktu, w określonym kierunku.

10 10/49 Przykład: <DirectionalLight Color="White" Direction="-1,0,-1" /> (Długość wektora nie ma znaczenia, tylko kierunek.) Źródła światła dodawane są do viewportu jak obiekty geometrii: <Viewport3D> <Viewport3D.Camera>...</Viewport3D.Camera> <ModelVisual3D> <ModelVisual3D.Content> <DirectionalLight Color="White" Direction="-1,0,-1" /> </ModelVisual3D.Content> </ModelVisual3D> <ModelVisual3D> <ModelVisual3D.Content> <GeometryModel3D>...</GeometryModel3D> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D>

11 11/49 Kamera Kamera reprezentuje obserwatora. Znajduje się w pewnym położeniu i jest skierowana w pewnym kierunku. Określa jak scena 3D jest rzutowana na powierzchnię 2D. WPF udostępnia trzy klasy kamer: PerspectiveCamera rzut perspektywiczny. OrthographicCamera rzutowanie równoległe: z punktem rzutowania w nieskończoności. MatrixCamera pozwala określić własną macierz rzutowania. Należy określić: położenie kamery (Position) wektor określający orientację (LookDirection) najłatwiej określić jako różnicę punktu na który patrzymy i punktu w którym znajduje się kamera (CenterPointOfInterest CameraPosition) dodatkowo można podać UpDirection określa pochylenie kamery

12 12/49 Przykład: <Viewport3D> <Viewport3D.Camera> <PerspectiveCamera Position="0,0.5,3" LookDirection="0,0,-1" UpDirection="0,1,0" /> </Viewport3D.Camera>... </Viewport3D> Inne przydatne właściwości: FieldOfView odpowiednik ogniskowej, określa kąt widzenia (w OrthographicCamera odpowiednikiem jest Width) NearPlaneDistance i FarPlaneDistance określają minimalną i maksymalną odległość renderowania (domyślnie odpowiednio i Double.PositiveInfinity)

13 13/49 Złożone sceny 3D Sześcian składa się z 8 punktów i 12 trójkątów (po dwa na ścianę). <MeshGeometry3D Positions="0,0,0 10,0,0 0,10,0 10,10,0 0,0,10 10,0,10 0,10,10 10,10,10" TriangleIndices="0,2,1 1,2,3 0,4,2 2,4,6 0,1,4 1,5,4 1,7,5 1,3,7 4,5,6 7,6,5 2,6,3 3,6,7" /> <PerspectiveCamera Position="16,16,21" LookDirection="-3,-3,-4" UpDirection="0,1,0" />... <DirectionalLight Color="White" Direction="-3,-2,-1" />... <DiffuseMaterial Brush="LawnGreen"/>

14 14/49 Normalne są liczone nie dla trójkątów, a dla punktów rodzi to problemy, gdy punkt jest współdzielony. Definiując osobno 24 punkty (po cztery na ścianę) normalne będą prostopadłe do każdej ściany. <MeshGeometry3D Positions="0,0,0 10,0,0 0,10,0 10,10,0 0,0,0 0,0,10 0,10,0 0,10,10 0,0,0 10,0,0 0,0,10 10,0,10 10,0,0 10,10,10 10,0,10 10,10,0 0,0,10 10,0,10 0,10,10 10,10,10 0,10,0 0,10,10 10,10,0 10,10,10" TriangleIndices="0,2,1 1,2,3 4,5,6 6,5,7 8,9,10 9,11,10 12,13,14 12,15,13 16,17,18 19,18,17 20,21,22 22,21,23" />

15 15/49 Możemy też sami ustawić normalne, np. aby uzyskać efekt płynnego przejścia (dobre do naśladowania gładkich struktur). <MeshGeometry3D Positions="0,0,0 10,0,0 0,10,0 10,10,0 0,0,10 10,0,10 0,10,10 10,10,10" TriangleIndices="0,2,1 1,2,3 0,4,2 2,4,6 0,1,4 1,5,4 1,7,5 1,3,7 4,5,6 7,6,5 2,6,3 3,6,7" Normals="0,1,0 0,1,0 1,0,0 1,0,0 0,1,0 0,1,0 1,0,0 1,0,0" />

16 Uwaga: ze względu na wydajność, należy ograniczać liczbę oddzielnych siatek oraz obiektów Visual3D. Pomaga w tym Model3DGroup: <ModelVisual3D> <ModelVisual3D.Content> <Model3DGroup x:name="scene"> <AmbientLight... /> <DirectionalLight... /> <DirectionalLight... /> <Model3DGroup x:name="character01"> <Model3DGroup x:name="torso"> <GeometryModel3D>...</GeometryModel3D> </Model3DGroup> <Model3DGroup x:name="head">... </Model3DGroup> <Model3DGroup x:name="arms">... </Model3DGroup> <Model3DGroup x:name="legs">... </Model3DGroup> </Model3DGroup>... </ModelVisual3D.Content> </ModelVisual3D> 16/49

17 17/49 Zaawansowane materiały DiffuseMaterial może być rysowany również przy użyciu innych pędzli niż SolidColorBrush (LinearGradientBrush, RadialGradientBrush, ImageBrush, VisualBrush). Aby z nich skorzystać, należy dostarczyć informację na temat mapowania pędzla 2D na powierzchnię 3D. Służy do tego właściwość MeshGeometry.TextureCoordinates: każdemu położeniu w przestrzeni 3D (wierzchołkowi) przypisuje położenie na teksturze (w przestrzeni 2D). Użyjmy tekstury z obrazka: <GeometryModel3D.Material> <DiffuseMaterial> <DiffuseMaterial.Brush> <ImageBrush ImageSource="wood.jpg"></ImageBrush> </DiffuseMaterial.Brush> </DiffuseMaterial> </GeometryModel3D.Material>

18 18/49 Nałożenie jej na poniższy kształt nie wystarczy, aby stał się on widoczny. <MeshGeometry3D Positions="0,0,0 10,0,0 0,10,0 10,10,0 0,0,0 0,0,10 0,10,0 0,10,10 0,0,0 10,0,0 0,0,10 10,0,10 10,0,0 10,10,10 10,0,10 10,10,0 0,0,10 10,0,10 0,10,10 10,10,10 0,10,0 0,10,10 10,10,0 10,10,10" TriangleIndices="0,2,1 1,2,3 4,5,6 6,5,7 8,9,10 9,11,10 12,13,14 12,15,13 16,17,18 19,18,17 20,21,22 22,21,23"/> Wytłuszczona ściana (dwa trójkąty) ma wierzchołki o współrzędnych: (0,0,0) (0,0,10) (0,10,0) (0,10,10) Przypisujemy im odpowiednie współrzędne na teksturze (względne, zatem z przedziału [0,1]): (1,1) (0,1) (1,0) (0,0)

19 Podobnie postępujemy z pozostałymi: <MeshGeometry3D... TextureCoordinates="0,0 0,1 1,0 1,1... 1,1 0,1 1,0 0,0 0,0 1,0 0,1 1,1 1,1 0,0 0,1 1,0 1,1 0,1 1,0 0,0 1,1 0,1 1,0 0,0"/> W podobny sposób możemy używać innych pędzli, w tym VisualBrush lub pędzli animowanych. 19/49

20 Przykład tworzenie geometrii w kodzie: <Viewport3D> <Viewport3D.Camera> <PerspectiveCamera Position="0,2.5,2.5" LookDirection="0,-1,-1" UpDirection="0,1,0" /> </Viewport3D.Camera> <ModelVisual3D> <ModelVisual3D.Content> <DirectionalLight Color="White" Direction="-2,-2,-1" /> </ModelVisual3D.Content> </ModelVisual3D> <ModelVisual3D> <ModelVisual3D.Content> <GeometryModel3D x:name="mymodel"> <GeometryModel3D.Material>... </GeometryModel3D.Material> </GeometryModel3D> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D> A w kodzie: mymodel.geometry = Create(50, 50, 1); 20/49

21 21/49 // za: public static MeshGeometry3D Create(int tdiv, int pdiv, double radius) { double dt = 2*Math.PI / tdiv; double dp = Math.PI / pdiv; MeshGeometry3D mesh = new MeshGeometry3D(); for (int pi = 0; pi <= pdiv; pi++) { double phi = pi * dp; for (int ti = 0; ti <= tdiv; ti++) { double theta = ti * dt; } } mesh.positions.add(getposition(theta, phi, radius)); mesh.normals.add(getnormal(theta, phi)); mesh.texturecoordinates.add(gettexturecoordinate(theta, phi));

22 22/49 for (int pi = 0; pi < pdiv; pi++) { for (int ti = 0; ti < tdiv; ti++) { int x0 = ti; int x1 = (ti + 1); int y0 = pi * (tdiv + 1); int y1 = (pi + 1) * (tdiv + 1); mesh.triangleindices.add(x0 + y0); mesh.triangleindices.add(x0 + y1); mesh.triangleindices.add(x1 + y0); } } mesh.triangleindices.add(x1 + y0); mesh.triangleindices.add(x0 + y1); mesh.triangleindices.add(x1 + y1); } mesh.freeze(); return mesh;

23 23/49 private static Point3D GetPosition(double theta, double phi, double radius) { double x = radius * Math.Sin(theta) * Math.Sin(phi); double y = radius * Math.Cos(phi); double z = radius * Math.Cos(theta) * Math.Sin(phi); } return new Point3D(x, y, z); private static Vector3D GetNormal(double theta, double phi) { return (Vector3D)GetPosition(theta, phi, 1.0); } private static Point GetTextureCoordinate(double theta, double phi) { Point p = new Point(theta / (2 * Math.PI), phi / (Math.PI)); } return p;

24 24/49 Niestety, stworzenie złożonej sceny 3D w XAMLu nie jest proste. Istnieją gotowe narzędzia do budowania złożonych scen 3D w WPF, np.: ZAM 3D Blender Wtyczki do profesjonalnych programów 3D (np. Maya, LightWave)

25 25/49 Animacje 3D Najwygodniejszy sposób animowania sceny 3D to transformacje. Transformować możemy: Model3D lub Model3DGroup (pojedynczą siatkę) ModelVisual3D (całą scenę) źródło światła kamerę Przykład obracający się sześcian Definiujemy transformację obrotu: <ModelVisual3D.Transform> <RotateTransform3D CenterX="5" CenterZ="5"> <RotateTransform3D.Rotation> <AxisAngleRotation3D x:name="rotate" Axis="0 1 0" /> </RotateTransform3D.Rotation> </RotateTransform3D> </ModelVisual3D.Transform>

26 Teraz możemy dodać slidera: <Slider Grid.Row="1" Minimum="0" Maximum="360" Orientation="Horizontal" Value="{Binding ElementName=rotate, Path=Angle}" /> Lub animację: <Button Grid.Row="1"> <Button.Content>Go!</Button.Content> <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <BeginStoryboard> <Storyboard RepeatBehavior="Forever"> <DoubleAnimation Storyboard.TargetName="rotate" Storyboard.TargetProperty="Angle" To="360" Duration="0:0:2.5"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button> 26/49

27 27/49 Przemieszczając (TranslateTransform) kamerę wzdłuż ścieżki (AnimationUsingPath) lub według klatek (AnimationUsingKeyFrames) można uzyskać efekt poruszającego się obserwatora. <Storyboard> <Point3DAnimationUsingKeyFrames Storyboard.TargetName="kamera" Storyboard.TargetProperty="Position"> <LinearPoint3DKeyFrame Value="21,-6,-6" KeyTime="0:0:3"/> <LinearPoint3DKeyFrame Value="-6,-6,-11" KeyTime="0:0:6"/> <LinearPoint3DKeyFrame Value="-11,16,16" KeyTime="0:0:9"/> <LinearPoint3DKeyFrame Value="16,16,21" KeyTime="0:0:12"/> </Point3DAnimationUsingKeyFrames> <Vector3DAnimationUsingKeyFrames Storyboard.TargetName="kamera" Storyboard.TargetProperty="LookDirection"> <LinearVector3DKeyFrame Value="-20,15,15" KeyTime="0:0:3"/> <LinearVector3DKeyFrame Value="15,15,20" KeyTime="0:0:6"/> <LinearVector3DKeyFrame Value="20,-15,-15" KeyTime="0:0:9"/> <LinearVector3DKeyFrame Value="-15,-15,-20" KeyTime="0:0:12"/> </Vector3DAnimationUsingKeyFrames> </Storyboard>

28 28/49 Wskazówka: warto dodawać komplet transformacji (i nadawać im nazwy przy pomocy x:name), by następnie móc animować wybrane. W przykładzie umieszczono dwie translacje, bo przesunięcie przed i po obrocie działa inaczej. <Model3DGroup.Transform> <Transform3DGroup> <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/> <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/> <RotateTransform3D> <RotateTransform3D.Rotation> <AxisAngleRotation3D Angle="0" Axis="0 1 0"/> </RotateTransform3D.Rotation> </RotateTransform3D> <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/> </Transform3DGroup> </Model3DGroup.Transform>

29 29/49 Wydajność Renderowanie scen 3D wymaga o wiele większej pracy niż renderowanie scen 2-D W przypadku animacji sceny 3D, WPF próbuje odświeżać zmienione fragmenty 60 razy na sekundę W zależności od skomplikowania sceny, może się zdarzyć, że zasoby pamięciowe karty graficznej się skończą, co doprowadzi do spadku liczby wyświetlanych ramek na sekundę W jaki sposób poprawić wydajność renderowanych scen 3D? Jeżeli nie ma potrzeby przycinania zawartości, która wystaje poza Viewport, należy ustawić właściwość Viewport3D.ClipToBounds na false Jeżeli nie ma potrzeby sprawdzania kliknięć w scenie 3-D, należy ustawić właściwość Viewport3D.IsHitTestVisiblena false Jeżeli Viewport jest większy niż potrzeba, należy go zmniejszyć Jeśli niewygładzone krawędzie kształtów 3D nam nie przeszkadzają można ustawić w Viewporcie własność dołączoną RenderOptions.EdgeMode na Aliased.

30 30/49 Tworzenie wydajnych siatek i modeli Lepiej stworzyć pojedynczą bardziej skomplikowaną siatkę niż kilka prostych Jeżeli istnieje potrzeba wykorzystania różnych materiałów dla jednej siatki, należy zdefiniować obiekt MeshGeometry jednokrotnie (jako zasób), a następnie używać go do tworzenia wielu obiektów GeometryModel3D Kiedykolwiek to możliwe, należy otaczać grupę obiektów GeometryModel3D obiektem Model3DGroup i umieścić ten obiekt w pojedynczym obiekcie ModelVisual3D Nie należy definiować materiału tylnego w przypadku, gdy użytkownik nigdy nie będzie widział tylnej części obiektu Lepiej używać pędzli typu Solid, Gradient, Image niż DrawingBrush i VisualBrush Używając DrawingBrush lub VisualBrush do odrysowania statycznej zawartości należy ustawić w pędzlu dołączoną właściwość RenderOptions.CachingHint na wartość Cache

31 31/49 Hit Testing Rozpoznawania obszaru, który kliknięto (lub wskazano) myszą. Możemy to zrobić na jeden z dwóch sposobów: Obsłużyć zdarzenia myszy w viewporcie i posługując się metodą VisualTreeHelper.HitTest() zlokalizować obiekt, którego dotyczy zdarzenie. Zastąpić obiekt ModelVisual3D obiektem ModelUIElement3D, który posiada obsługę zdarzeń.

32 32/49 Sposób pierwszy Obsługę zdarzenia dodajemy do viewportu. <Viewport3D MouseDown="Viewport3D_MouseDown">... </Viewport3D> Sprawdzamy w jaki ModelVisual3D kliknięto. private void Viewport3D_MouseDown(...) { Viewport3D viewport = (Viewport3D)sender; Point location = e.getposition(viewport); HitTestResult hitresult = VisualTreeHelper.HitTest(viewport, location); if (hitresult!= null && hitresult.visualhit == kostka) { // Kliknięto kostkę } }

33 33/49 Jeśli to informacja nie wystarczy możemy zlokalizować właściwy element GeometryModel3D lub MeshGeometry3D: RayMeshGeometry3DHitTestResult meshhitresult = hitresult as RayMeshGeometry3DHitTestResult; if (meshhitresult!= null) { if (meshhitresult.modelhit ==...)... if (meshhitresult.meshhit ==...)... // punkt 3D w który kliknięto meshhitresult.pointhit... }

34 34/49 Drugi sposób Pierwszy sposób jest nieco żmudny i wymaga szukania w kodzie elementu, którego dotyczy zdarzenie. Innym rozwiązaniem jest zastąpienie obiektu ModelVisual3D obiektem z hierarchii UIElement3D: ModelUIElement3D lub ContainerUIElement3D. Dodają one do elementów 3D obsługę myszy, klawiatury, etc. (ale nie layouty). <Viewport3D x:name="viewport"> <Viewport3D.Camera>...</Viewport3D.Camera> <ModelUIElement3D MouseDown="element_MouseDown"> <ModelUIElement3D.Model> <Model3DGroup>... </Model3DGroup> </ModelUIElement3D.Model> </ModelUIElement3D> </Viewport3D> Jeśli chcemy umieścić kilka elementów umożliwiających interakcję, powinniśmy dodać kilka ModelUIElement3D w jednym ContainerUIElement3D (poza obiektami ModelUIElement3D może on przechowywać również zwykłe ModelVisual3D).

35 <Viewport2DVisual3D> <Viewport2DVisual3D.Geometry> <MeshGeometry3D Positions="10,0,0 10,10,10 10,0,10 10,10,0" TriangleIndices="0,1,2 0,3,1" TextureCoordinates="1,1 0,0 0,1 1,0" /> </Viewport2DVisual3D.Geometry> 35/49 Umieszczanie elementów interfejsu na obiektach 3D Pierwszym sposobem jest wykorzystanie VisualBrush jako tekstury: kopiuje on tylko wygląd elementu, brak interakcji z elementem. Klasa Viewport2DVisual3D pozwala umieścić element na powierzchni 3D (zgodnie z mapowaniem teksturowania): taki element w pełni zachowuje swoją funkcjonalność. Usuwamy jedną ze ścian sześcianu (12,13,14) (12,15,13). Zamiast niej dodajemy Viewport2DVisual3D do viewportu. Geometria to nasza usunięta ściana. Tekstura składa się z tła (imitacja drewna) i fragmentu interfejsu (formularza). Jest on w pełni funkcjonalny.

36 36/49 <Viewport2DVisual3D.Material> <MaterialGroup> <DiffuseMaterial> <DiffuseMaterial.Brush> <ImageBrush ImageSource="wood.jpg"/> </DiffuseMaterial.Brush> </DiffuseMaterial> <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" /> </MaterialGroup> </Viewport2DVisual3D.Material> <Viewport2DVisual3D.Visual> <Border CornerRadius="10" BorderBrush="DarkGoldenrod" BorderThickness="1"> <StackPanel Margin="10"> <TextBlock Margin="3">Wprowadź dane</textblock> <TextBox Margin="3"></TextBox> <Button Margin="3">OK</Button> </StackPanel> </Border> </Viewport2DVisual3D.Visual> </Viewport2DVisual3D>

37 37/49

38 38/49 biblioteka narzędzi, oferująca między innymi dekorator viewporta zapewniający poruszanie kamerą przy pomocy myszy: <Window... xmlns:tools="clr-namespace:_3dtools;assembly=3dtools" Title="3D" Height="300" Width="300"> <Grid> <tools:trackballdecorator> <Viewport3D>... </Viewport3D> </tools:trackballdecorator> </Grid> </Window>

39 39/49 drukowanie Podstawowym punktem wyjścia jest dla nas klasa PrintDialog. Nie tylko pokazuje ona opcje drukowania, ale również umożliwia uruchomienie wydruku: PrintVisual() do drukowania elementów dziedziczących z System.Windows.Media.Visual PrintDocument() do drukowania dokumentów (klasa DocumentPaginator) Drukowanie elementu PrintDialog.PrintVisual() pozwala wydrukować dokładnie to, co widać na ekranie. PrintDialog printdialog = new PrintDialog(); if (printdialog.showdialog() == true) { printdialog.printvisual(canvas, "A Simple Drawing"); } Pierwszy parametr element do wydrukowania. Drugi parametr string identyfikujący zadanie drukarki.

40 <Window...> <Window.CommandBindings> <CommandBinding Command="Print" Executed="print"/> </Window.CommandBindings> <Canvas Name="canvas"> <Path Fill="Yellow" Stroke="Blue" Canvas.Top="30" Canvas.Left="20" > <Path.Data> <GeometryGroup> <RectangleGeometry Rect="0,0 100,60"/> <EllipseGeometry Center="90,10" RadiusX="40" RadiusY="30"/> </GeometryGroup> </Path.Data> </Path> </Canvas> </Window> 40/49

41 Nie ma tu zbyt dużej kontroli nad wydrukiem (ustawienia marginesu, wyrównania, podziału na strony, skalowania). Rozmiar na wydruku jest taki sam, jak rozmiar w oknie. 41/49

42 42/49 Można sobie z tym poradzić dodając transformacje i włączając dopasowanie do rozmiaru strony: PrintDialog printdialog = new PrintDialog(); if (printdialog.showdialog() == true) { // Magnify the output by a factor of 5. canvas.layouttransform = new ScaleTransform(5, 5); // Define a margin. int pagemargin = 5; // Get the size of the page. Size pagesize = new Size(printDialog.PrintableAreaWidth - pagemargin * 2, printdialog.printableareaheight - 20); // Trigger the sizing of the element. canvas.measure(pagesize); canvas.arrange(new Rect(pageMargin, pagemargin, pagesize.width, pagesize.height)); // Print the element. printdialog.printvisual(canvas, "A Scaled Drawing"); // Remove the transform. canvas.layouttransform = null; }

43 43/49

44 44/49 Dokument XPS może być używany jako podgląd wydruku: aplikacja drukuje dokument do pliku XPS, aby go później wyświetlić w oknie. Można to też wykorzystać do asynchronicznego drukowania. (Uwaga: należy pamiętać o dodaniu assembli ReachFramework i System.Printing w References) Należy stworzyć writera (można użyć metody Path.GetTempFileName() aby uzyskać ścieżkę do pliku tymczasowego): XpsDocument xpsdocument = new XpsDocument("filename.xps", FileAccess.ReadWrite); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument); Następnie metody Write() i WriteAsync() umożliwiają wydrukowanie obiektów graficznych (Visual) lub dokumentów (DocumentPaginator). DocumentViewer docviewer = new DocumentViewer(); writer.write(canvas); docviewer.document = xpsdocument.getfixeddocumentsequence(); xpsdocument.close(); File.Delete("filename.xps");

45 45/49 Można stworzyć i wyświetlić okienko z podglądem: Window window = new Window(); window.content = docviewer; window.width = 300; window.height = 300; window.title = "podgląd wydruku"; window.show();

46 46/49 Drukowanie dokumentu Metoda PrintDocument() z PrintDialog oferuje drukowanie dokumentu. Przyjmuje ona parametr typu DocumentPaginator (zadaniem tej klasy jest dzielenie dokumentu na strony obiekty klasy DocumentPage i udostępnianie ich). PrintDialog printdialog = new PrintDialog(); if (printdialog.showdialog() == true) { printdialog.printdocument( ((IDocumentPaginatorSource)docReader.Document).DocumentPaginator, "A Flow Document"); } Jeśli dokument jest zawarty w kontenerze RichTextBox lub FlowDocumentScrollViewer, paginacja zostanie wykonana prawidłowo. Jeśli jednak drukujemy z FlowDocumentPageViewer lub FlowDocumentReader, musimy powtórzyć paginację, aby dostosować ją do strony, a nie okna. (Podobnie jest z kolumnami.) (Oczywiście warto zachować te wartości, by przywrócić je, gdy wrócimy do okienka.) FlowDocument doc = docreader.document; doc.pageheight = printdialog.printableareaheight; doc.pagewidth = printdialog.printableareawidth; printdialog.printdocument( ((IDocumentPaginatorSource)doc).DocumentPaginator, "A Flow Document");

47 Kontrola nad paginacją na wydruku Możemy uzyskać kontrolę nad paginacją pisząc własną klasę DocumentPaginator. Nie musimy robić paginacji ręcznie (można to zadanie zostawić paginatorowi z dokumentu), ale możemy np. dodać nagłówek i stopkę do każdej strony. public class HeaderedFlowDocumentPaginator : DocumentPaginator { // The real paginator (which does all the pagination work). private DocumentPaginator flowdocumentpaginator; // Store the FlowDocument paginator from the given document. public HeaderedFlowDocumentPaginator(FlowDocument document) { flowdocumentpaginator = ((IDocumentPaginatorSource)document).DocumentPaginator; } public override bool IsPageCountValid { get { return flowdocumentpaginator.ispagecountvalid; } } public override int PageCount { get { return flowdocumentpaginator.pagecount; } } public override Size PageSize { get { return flowdocumentpaginator.pagesize; } set { flowdocumentpaginator.pagesize = value; } } public override IDocumentPaginatorSource Source { get { return flowdocumentpaginator.source; } } public override DocumentPage GetPage(int pagenumber) {... } } 47/49

48 48/49 Gdy pobierana jest strona, możemy dodać własne elementy: public override DocumentPage GetPage(int pagenumber) { // Pobierz stronę DocumentPage page = flowdocumentpaginator.getpage(pagenumber); // Opakuj ją w Visual ContainerVisual newvisual = new ContainerVisual(); newvisual.children.add(page.visual); // Stwórz nagłówek DrawingVisual header = new DrawingVisual(); using (DrawingContext dc = header.renderopen()) { Typeface typeface = new Typeface("Times New Roman"); FormattedText text = new FormattedText("Page " + (pagenumber + 1).ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 14, Brushes.Black); dc.drawtext(text, new Point(96 * 0.25, 96 * 0.25)); } // Dodaj nagłówek do Visual newvisual.children.add(header); // Stwórz i zwróć nową stronę dokumentu DocumentPage newpage = new DocumentPage(newVisual); return newpage; }

49 49/49 Aby modyfikować Visual musimy usunąć dokument z kontenera na czas drukowania: FlowDocument document = docreader.document; docreader.document = null; HeaderedFlowDocumentPaginator paginator = new HeaderedFlowDocumentPaginator(document); printdialog.printdocument(paginator, "A Headered Flow Document"); docreader.document = document; Drukowanie zakresu stron Własność PrintDialog.UserPageRangeEnabled na true umożliwi wybór zakresu przez użytkownika (Selection i Current Page są nieobsługiwane). Możemy też ustawić MaxPage i MinPage, aby nadać mu ograniczenie. Następnie odczytujemy własność PageRangeSelection. Jeśli ma wartość UserPages, to możemy odczytać PageRange.PageFrom i PageRange.PageTo. Wykorzystanie tej informacji należy do nas.

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

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

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

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

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

Bardziej szczegółowo

Aleksandra Zając. Raport. Blender. Pokemon: Eevee

Aleksandra Zając. Raport. Blender. Pokemon: Eevee Aleksandra Zając Raport Blender Pokemon: Eevee 1. Modelowanie Przed rozpoczęciem modelowania do Blendera załadowałam obraz przedstawiający wybranego pokemona, aby podczas modelowania jak najlepiej odwzorować

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

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz Dynamiczne i wydajne tworzenie interfejsu użytkownika Piotr Michałkiewicz Główne punkty prezentacji View i ViewGroup w kodzie OnClick() i Tag Space widget i GridLayout Dynamiczne dodawanie widgetów Animations

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

Oświetlenie obiektów 3D

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

Bardziej szczegółowo

5.4. Efekty specjalne

5.4. Efekty specjalne 5.4. Efekty specjalne Przedstawiliśmy już sobie sporo kwestii związanych z dodawaniem, edytowaniem czy usuwaniem elementów, które możemy zamieścić w prezentacji. Ale pomyłką było by stwierdzenie, że więcej

Bardziej szczegółowo

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import Fraction.h #import <stdio.h> #import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:

Bardziej szczegółowo

Dodawanie grafiki i obiektów

Dodawanie grafiki i obiektów Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,

Bardziej szczegółowo

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Autodesk 3D Studio MAX Teksturowanie modeli 3D Autodesk 3D Studio MAX Teksturowanie modeli 3D dr inż. Andrzej Czajkowski Instyt Sterowania i Systemów Informatycznych Wydział Informatyki, Elektrotechniki i Automatyki 25 kwietnia 2017 1 / 20 Plan Wykładu

Bardziej szczegółowo

TWORZENIE PREZENTACJI MS POWERPOINT

TWORZENIE PREZENTACJI MS POWERPOINT TWORZENIE PREZENTACJI MS POWERPOINT Wstęp TWORZENIE PREZENTACJI MS POWERPOINT Czasami zdarza się, że zostajemy poproszeni o poprowadzenia spotkania czy szkolenia w firmie, w której pracujemy lub po prostu

Bardziej szczegółowo

Animowana grafika 3D. Opracowanie: J. Kęsik.

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

Bardziej szczegółowo

Autodesk 3D Studio MAX Animacja komputerowa i praca kamery

Autodesk 3D Studio MAX Animacja komputerowa i praca kamery Autodesk 3D Studio MAX Animacja komputerowa i praca kamery dr inż. Andrzej Czajkowski Instyt Sterowania i Systemów Informatycznych Wydział Informatyki, Elektrotechniki i Automatyki 5 maja 2017 1 / 22 Plan

Bardziej szczegółowo

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2. Spis treści: 1 Podstawy pracy z aplikacją... 2 1.1 Układ strony... 2 strona 1 z 7 1 Podstawy pracy z aplikacją InDesign jest następcą starzejącego się PageMakera. Pod wieloma względami jest do niego bardzo

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- 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

Bardziej szczegółowo

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu Komputerowe systemy na rynkach finansowych wykład 5 MQL4 - funkcje operujące na obiektach wykresu ObjectCreate - funkcja tworzy nowy obiekt graficzny, określonego typu oraz nadaje mu nazwę i przyporządkowuje

Bardziej szczegółowo

DARMOWA PRZEGLĄDARKA MODELI IFC

DARMOWA PRZEGLĄDARKA MODELI IFC www.bimvision.eu DARMOWA PRZEGLĄDARKA MODELI IFC BIM VISION. OPIS FUNKCJONALNOŚCI PROGRAMU. CZĘŚĆ I. Spis treści OKNO GŁÓWNE... 1 NAWIGACJA W PROGRAMIE... 3 EKRAN DOTYKOWY... 5 MENU... 6 ZAKŁADKA WIDOK....

Bardziej szczegółowo

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

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt. Grafika w dokumencie Wprowadzanie ozdobnych napisów WordArt Do tworzenia efektownych, ozdobnych napisów służy obiekt WordArt. Aby wstawić do dokumentu obiekt WordArt: 1. Umieść kursor w miejscu, w którym

Bardziej szczegółowo

1 Tworzenie brył obrotowych

1 Tworzenie brył obrotowych 1 Tworzenie brył obrotowych Do tworzenia brył obrotowych w programie Blender służą dwa narzędzia: Spin i SpinDup. Idea tworzenia brył obrotowych jest prosta i polega na narysowania połowy przekroju poprzecznego

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji. Ćwiczenie 5 - Tworzenie animacji Podczas tworzenia prostej animacji wykorzystywać będziemy okno Timeline domyślnie ustawione na dole okna Blendera (Rys. 1). Proces tworzenia animacji polega na stworzeniu

Bardziej szczegółowo

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

Unity 3D - własny ekran startowy i menu gry www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie własnego ekranu startowego oraz menu gry. Własny ekran startowy Tworzymy nowy, pusty obiekt GameObject Create Empty i nadajemy

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

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. 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

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

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ą

Bardziej szczegółowo

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

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

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

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak ANDROID OpenGL ES 1.0 Tomasz Dzieniak Wymagania JRE & JDK 5.0 + IDE (Eclipse 3.3.1 + / Netbeans 7.0.0 +) Android SDK Starter Package Android SDK Components Pierwszy program Project name: OpenGL Build Target:

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Publisher 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Pasek narzędzi Szybki dostęp

Bardziej szczegółowo

Inventor 2016 co nowego?

Inventor 2016 co nowego? Inventor 2016 co nowego? OGÓLNE 1. Udoskonalenia wizualizacji, grafiki i programu Studio Nowa obsługa oświetlenia opartego na obrazie (IBL, Image Based Lighting) Wszystkie style oświetlenia w programie

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski:

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski: Temat 6: Tekst w przestrzeni trójwymiarowej. Podstawy tworzenia animacji. Instrukcja warunkowa if. Program pozwala umieszczać na scenie nie tylko bryły, czy figury płaskie, ale też tekst. Polecenie tworzące

Bardziej szczegółowo

3 Programy do tworzenia

3 Programy do tworzenia 3 Programy do tworzenia prezentacji PowerPoint 2007 3.1. Tworzenie prezentacji w programie PowerPoint 2007 Tworzenie prezentacji w programie PowerPoint 2007 jest podobne jak w programie PowerPoint 2003.

Bardziej szczegółowo

Spis treści. Lekcja 1: PowerPoint informacje podstawowe 1. Lekcja 2: Podstawy pracy z prezentacjami 36. Umiejętności do zdobycia w tej lekcji 36

Spis treści. Lekcja 1: PowerPoint informacje podstawowe 1. Lekcja 2: Podstawy pracy z prezentacjami 36. Umiejętności do zdobycia w tej lekcji 36 Spis treści Lekcja 1: PowerPoint informacje podstawowe 1 Umiejętności do zdobycia w tej lekcji 1 Elementy programu 2 Poruszanie się po obszarze roboczym 2 Uruchamianie programu 2 UŜycie narzędzi ekranowych

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname=mainregion /> 1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism

Bardziej szczegółowo

Dodanie nowej formy do projektu polega na:

Dodanie nowej formy do projektu polega na: 7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

Ćwiczenie dodatkowe - Wybrane narzędzia modelowania Zadanie Przygotować model stołu z krzesłami jak na rysunku poniżej(rys. 1).

Ćwiczenie dodatkowe - Wybrane narzędzia modelowania Zadanie Przygotować model stołu z krzesłami jak na rysunku poniżej(rys. 1). Ćwiczenie dodatkowe - Wybrane narzędzia modelowania Zadanie Przygotować model stołu z krzesłami jak na rysunku poniżej(rys. 1). Wymiary krzesła: wymiary przednich nóg: 1 x 1 x 6 wymiary tylnich nóg połączonych

Bardziej szczegółowo

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły Po uruchomieniu programu Blender zawsze ukaże się nam oto taki widok: Jak

Bardziej szczegółowo

Wprowadzenie do programu 3ds Max THEBRAIN

Wprowadzenie do programu 3ds Max THEBRAIN Szkolenie obejmuje zapoznanie się z interface m programu oraz zagadnieniami związanymi z modelowaniem w programie 3Ds Max. W trakcie szkolenia uczestnik będzie przyswajał wiedzę poprzez wykonywanie ćwiczeń,

Bardziej szczegółowo

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista 5.0 5.3.3.6 Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista Wprowadzenie Wydrukuj i uzupełnij to laboratorium. W tym laboratorium, będziesz korzystać z narzędzi administracyjnych

Bardziej szczegółowo

WAŻNE! colour.me Google Fonts tutaj

WAŻNE! colour.me Google Fonts tutaj Otwieramy dokument, ustalamy podstawowe parametry. 1. Wpisujemy liczbę stron w tym przypadku będą to 2 (przód i tył). 2. Ustalamy rozmiar docelowy w tym przypadku 85x55 mm. 3. Odznaczamy opcję: strony

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

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

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

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3 Księgarnia PWN: Roland Zimek - Swish Max3 Spis treści Wprowadzenie... 11 1. Opis programu i instalacja... 15 1.1. Nowości w SWiSH Max3... 15 1.1.1. Projekty... 15 1.1.2. Ścieżka ruchu... 16 1.1.3. Narzędzie

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Wykład 4. Rendering (1) Informacje podstawowe

Wykład 4. Rendering (1) Informacje podstawowe Wykład 4. Rendering (1) Informacje podstawowe Z punktu widzenia dzisiejszego programowania gier: Direct3D jest najczęściej wykorzystywanym przez profesjonalnych deweloperów gier API graficznym na platformie

Bardziej szczegółowo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 12. Programowanie serwera MS SQL 2005 w C# Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych

Laboratorium Systemów Operacyjnych Laboratorium Systemów Operacyjnych Użytkownicy, Grupy, Prawa Tworzenie kont użytkowników Lokalne konto pozwala użytkownikowi na uzyskanie dostępu do zasobów lokalnego komputera. Konto domenowe pozwala

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego 1/34 Wymagania wstępne: Znajomość podstaw programowania. Efekty kształcenia: Umiejętność tworzenia prostych aplikacji

Bardziej szczegółowo

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7 5.0 5.3.3.5 Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7 Wprowadzenie Wydrukuj i uzupełnij to laboratorium. W tym laboratorium, będziesz korzystać z narzędzi administracyjnych

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

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

Informatyka w służbie efektów specjalnych. Część druga Informatyka w służbie efektów specjalnych. Część druga Aleksander Denisiuk. http://wmii.uwm.edu.pl/~denisjuk/uwm/ 28 września 2017 1 Modelowanie UFO 1. Usuń kostkę Delete 2. Wyłącz perspektywę F5 3. Ustaw

Bardziej szczegółowo

Zad. 6: Sterowanie robotem mobilnym

Zad. 6: Sterowanie robotem mobilnym Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia

Bardziej szczegółowo

1. Prymitywy graficzne

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

Bardziej szczegółowo

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

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.

Bardziej szczegółowo

Grafika Komputerowa Materiały Laboratoryjne

Grafika Komputerowa Materiały Laboratoryjne Grafika Komputerowa Materiały Laboratoryjne Laboratorium 10 Blender, podstawy Wstęp Blender jest rozbudowanym narzędziem do tworzenia i edycji obiektów, scen i animacji 3D. Poznanie go na przyzwoitym poziomie

Bardziej szczegółowo

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku. Aktywności to podstawowe elementy związane z platformą Android. Dzięki poznaniu aktywności będziesz w stanie napisać pierwszą aplikację przeznaczoną na urządzenie mobilne. Po dodaniu kontrolek możesz w

Bardziej szczegółowo

Przygotowanie grafiki 3D do gier komputerowych

Przygotowanie grafiki 3D do gier komputerowych Grafika Komputerowa i Wizualizacja Przygotowanie grafiki 3D do gier komputerowych Rafał Piórkowski Plan wykładu 1. Ogólne wiadomości 2. Modelowanie high poly 3. Rzeźbienie 4. Modelowanie low poly 5. Model

Bardziej szczegółowo

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka II. Laboratorium Aplikacja okienkowa Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.

Bardziej szczegółowo

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

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

Bardziej szczegółowo

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Zaawansowane metody programowania Copyright c 2014 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

Visual Studio instalacja

Visual Studio instalacja Visual Studio 2017 - instalacja Do tej pory napisaliśmy wiele programów, z czego niemal wszystkie były aplikacjami konsolowymi. Najwyższy więc czas zająć się tworzeniem aplikacji z graficznym interfejsem

Bardziej szczegółowo

Kurs programowania 2 - listy

Kurs programowania 2 - listy Kurs programowania 2 - listy Listy rozwijane (ComboBox) Listy rozwijane (rozwijalne) można tworzyć przy użyciu klasy ComboBox. W tabeli poniżej właściwości udostępniane przez tę kontrolkę. Najważniejsza

Bardziej szczegółowo

Grafika 3D program POV-Ray - 1 -

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

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

Unity 2D - prosta gra

Unity 2D - prosta gra www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie prostej gry 2D. Prosta gra Stworzymy prostą grę, w której będziemy sterować pojazdem kosmicznym i będziemy mogli strzelać

Bardziej szczegółowo

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

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

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

SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A)

SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A) SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A) GRUPA KOMPETENCJI KOMPETENCJE OBJĘTE STANDARDEM ECCC 1. Teoria grafiki komputerowej 1.1. Podstawowe pojęcia

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

2 Przygotował: mgr inż. Maciej Lasota

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:

Bardziej szczegółowo

Wprowadzenie do QT OpenGL

Wprowadzenie do QT OpenGL Wprowadzenie do QT mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski 1/21 - Open Graphics Library Open Graphics Library API pozwalające na wykorzystanie akceleracji sprzętowej do renderowania

Bardziej szczegółowo

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński MonoGame Wieloplatformowe gry w C# Mateusz Cicheński Plan prezentacji Założenia Alternatywy Narzędzia Różnice między WP8, ios, Android DEMO Podsumowanie Założenia CEL: Stworzenie wieloplatformowej gry

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1 Ćwiczenie 1 Uruchamianie programu w Netbeans Uruchom środowisko Netbeans. Stwórz nowy projekt typu Java Application. Nadaj projektowi nazwę HelloWorld (Project Name), zwróć uwagę na folder, w którym zostanie

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

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Programowanie obiektowe i zdarzeniowe wkład 2 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine("

Bardziej szczegółowo

Wyciągnięcie po linii prostej w ujęciu powierzchniowym w NX firmy Siemens Industry Software

Wyciągnięcie po linii prostej w ujęciu powierzchniowym w NX firmy Siemens Industry Software Wyciągnięcie po linii prostej w ujęciu powierzchniowym w NX firmy Siemens Industry Software 1. Extrude opis okna dialogowego: Section wybór profilu do wyciągnięcia, Direction określenie kierunku i zwrotu

Bardziej szczegółowo

6.4. Efekty specjalne

6.4. Efekty specjalne 6.4. Efekty specjalne W programie MS PowerPoint 2010 znajdziemy coś takiego jak efekty specjalne. Służą one po to by prezentacja nie stała się monotonna i zachęcała widzów do uwagi poprzez zastosowane

Bardziej szczegółowo

Ustawienia kolorów w Fiery Command WorkStation 6 FS200

Ustawienia kolorów w Fiery Command WorkStation 6 FS200 Korzystanie z tego dokumentu To narzędzie zastępuje starszą ilustrację schematu blokowego dotyczącego kolorów Fiery. Jego zadaniem jest przedstawienie użytkownikom dokładnej ścieżki przetwarzania kolorów

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych Projekt: Wdrożenie strategii szkoleniowej prowadzony przez KancelarięPrezesa Rady Ministrów Projekt współfinansowany przez Unię

Bardziej szczegółowo

Tworzenie gier na urządzenia mobilne

Tworzenie gier na urządzenia mobilne Katedra Inżynierii Wiedzy Ćwiczenia 1 e-mail: przemyslaw.juszczuk@ue.katowice.pl Konsultacje: na stronie katedry + na stronie domowej Pokój 202c budynek A pjuszczuk.pl Warunki zaliczenia Kolokwium z części

Bardziej szczegółowo

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project JUNG Java Universal Network/Graph Framework JUNG jest to biblioteka służąca do modelowania, analizy i wizualizacji danych reprezentowanych w postaci grafów lub sieci. Architektura JUNGa wspiera różnorodność

Bardziej szczegółowo

OpenGL przezroczystość

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

Bardziej szczegółowo

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

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.

Bardziej szczegółowo

3.7. Wykresy czyli popatrzmy na statystyki

3.7. Wykresy czyli popatrzmy na statystyki 3.7. Wykresy czyli popatrzmy na statystyki Współczesne edytory tekstu umożliwiają umieszczanie w dokumentach prostych wykresów, służących do graficznej reprezentacji jakiś danych. Najprostszym sposobem

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

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

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

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

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

I. Program II. Opis głównych funkcji programu... 19 07-12-18 Spis treści I. Program... 1 1 Panel główny... 1 2 Edycja szablonu filtrów... 3 A) Zakładka Ogólne... 4 B) Zakładka Grupy filtrów... 5 C) Zakładka Kolumny... 17 D) Zakładka Sortowanie... 18 II.

Bardziej szczegółowo

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące IRONCAD IRONCAD 2016 TriBall o Narzędzie pozycjonujące Spis treści 1. Narzędzie TriBall... 2 2. Aktywacja narzędzia TriBall... 2 3. Specyfika narzędzia TriBall... 4 3.1 Kula centralna... 4 3.2 Kule wewnętrzne...

Bardziej szczegółowo