Stefan Dubois WS 02/03 Texturen in Java 3D. Übersicht Was sind Texturen? Klassenhierarchie fünf-Schritt-Plan Optionen für Texturen (Auswahl) TextureAttributes.

Slides:



Advertisements
Ähnliche Präsentationen
Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein.
Advertisements

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Application Programming Interface Graphische Datenverarbeitung
Linien, Flächen & geometrische Figuren von Mario Linge
Geometrie Programmierung beginnend bei 0 ist
Java Beans von Raoul Schneider.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Java: Grundlagen der Sprache
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Java 3D Carina Fleck Licht und Material.
Java3d „Licht und Material“
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA
Programmieren mit JAVA
DVG3 - Bilder IMAGES (Bilder) Vortrag : Ronny Kuhnert am 9. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
DVG Graphik in Swing Graphik in Swing. DVG Graphik in Swing 2 Zeichnen von Objekten in Swing Die Klasse JComponent enthält die Methode.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Programme dokumentieren mit JavaDoc
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Verhalten von Objekten in der Szene
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Kapitel 2: Image J Software für digitale Bilder
Java-Kurs Übung Benutzeroberflächen und Graphik
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Diskrete Mathematik I Vorlesung 2 Arrays.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
JAVA lernen: Methoden.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Grundkurs Informatik 11-13
 Präsentation transkript:

Stefan Dubois WS 02/03 Texturen in Java 3D

Übersicht Was sind Texturen? Klassenhierarchie fünf-Schritt-Plan Optionen für Texturen (Auswahl) TextureAttributes (Auswahl) MIP-mapping Quellen Stefan Dubois WS 02/03

Was sind Texturen? Texturen sind Bilder, die dazu dienen, komplexe Oberflächen von geometrischen Objekten nachzubilden, ohne die Struktur selbst nachbilden zu müssen. In Java 3D erfolgt die Bindung der Textur an das geometrische Objekt durch das Appearance-Objekt (wie auch z.B. Material). Vorteile: flexibel, da wiederverwendbar zeitsparend... Stefan Dubois WS 02/03

Klassenhierarchie Stefan Dubois WS 02/03 class javax.media.j3d.SceneGraphObject class javax.media.j3d.NodeComponent class javax.media.j3d.TextureAttributes class javax.media.j3d.Texture3D class javax.media.j3d.Texture2D class javax.media.j3d.Texture (abstract) class javax.media.j3d.TexCoordGeneration

In fünf Schritten zum Erfolg Erstellen eines Bildes, welches als Textur genutzt werden soll Laden der Textur in ein entsprechendes Objekt Texturkoordinaten festlegen weitere Texturattribute bestimmen (optional) geometrisches Objekt mit der gewünschten Appearence-Klasse erzeugen Stefan Dubois WS 02/03

Schritt 1 Bild mit herkömmlichem Grafikprogramm erstellen Abmessungen beachten: Format muss als 2 n x 2 m darstellbar sein, d.h. jede Dimension muss eine Potenz von 2 sein Beispiele: 64 x 8, 128 x 4, 32 x 32, etc. Stefan Dubois WS 02/03

Schritt 2.1 Laden der Grafikdatei mit dem TextureLoader Konstruktor: public TextureLoader(java.awt.Image image, java.awt.Component observer ) wobei image = URL des zu ladenden Bildes observer = zugegöriger Image-Obserer (überwacht Ladevorgänge von Bildern) TextureLoader loader = new TextureLoader("earth.jpg", this); Stefan Dubois WS 02/03

Schritt 2.1 Unterstützte Grafikformate: JPG GIF PNG GIF und PNG werden mit Transparenz unterstützt weitere Formate (z.B. BMP und TIFF) durch Verwendung des JAI (Java Advanced Imaging) statt des AWT Stefan Dubois WS 02/03

Schritt 2.2 Bild wird aus TextureLoader mit der Methode getImage() in ein ImageComponent extrahiert ImageComponent2D image = loader.getImage(); bzw. ImageComponent3D image = loader.getImage(); Stefan Dubois WS 02/03

Schritt 2.3 Textur-Objekt wird erzeugt public Texture2D(int mipMapMode, int format, int width, int height) bzw. public Texture3D(int mipMapMode, int format, int width, int height, int depth) Stefan Dubois WS 02/03

Schritt 2.3 Parameter für Texture2D mipMapMode = bestimmt Anzahl der Texturebenen BASE_LEVEL für eine Texturebene, MULTI_LEVEL_MIPMAP für mehrere. format = Art des Texturformates INTENSITY, LUMINANCE, ALPHA, LUMINANCE_ALPHA, RGB, RGBA. width = horizontale Ausdehnung des Bildes (2 n ) height = vertikale Ausdehnung des Bildes (2 m ) bei Texture3D zusätzlich depth als dritte Dimension Stefan Dubois WS 02/03

Schritt 2.3 Beispiel: Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight()); bzw. Texture3D texture = new Texture3D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight(), image.getDepth()); Stefan Dubois WS 02/03

Schritt 2.3 Bild in Textur einfügen mit der Methode setImage() public void setImage(int level, image) level = Ebene der Textur (0 bei BASE_LEVEL) image = die gewünschte Instanz der vorher erzeugten ImageComponent texture.setImage(0, image); Stefan Dubois WS 02/03

Schritt 2.3 Alle Codefragmente im von Schritt 2 im Überblick TextureLoader loader = new TextureLoader("earth.jpg", this); ImageComponent2D image = loader.getImage(); Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight()); texture.setImage(0, image); Stefan Dubois WS 02/03

Schritt 3 Stefan Dubois WS 02/03 Neben der physikalischen Größe (Grafikabmessungen in Pixeln) besitzen Texturen auch eine logische Größe (1 1, vergleichbar mit Prozentwerten): v0 bis v3 sind die Eckpunkte eines Quadrates, tc jeweils die Texturkoordinaten

Schritt 3 Beispiel Stefan Dubois WS 02/03

Schritt 3 Beispiel Stefan Dubois WS 02/03

Schritt 3 Stefan Dubois WS 02/03

Schritt 3 Die verwendete Methode im Einzelnen public void setTextureCoordinate(int index, float[] texCoord) index = Nummer des Punktes des geometrischen Objektes texCoord = Koordinaten der Textur Stefan Dubois WS 02/03

Schritt 3 Texturverhalten 1.Objekt bewegt sich unter der Textur (Diaprojektor) 2.Textur bewegt sich mit Objekt public TexCoordGeneration(int genMode, int format) genMode = EYE _LINEAR (1) bzw. OBJECT _LINEAR (2) SPHERE_MAP (Spherical Mapping) format = TEXTURE_COORDINATE_2 (2D) bzw. TEXTURE_COORDINATE_3 (3D) Stefan Dubois WS 02/03

Schritt 4 ist optional Texturattribute werden später behandelt Stefan Dubois WS 02/03

Schritt 5 Mit der Methode setTexture() der Appearance-Klasse wird die Textur dem Apearance-Objekt zugefügt. appear.setTexture(texture); Zum Abschluss wird das gesamte geometrische Objekt erzeugt und der BranchGroup zugefügt. objRoot.addChild(new Sphere(1.0f, Primitive.GENERATE_TEXTURE_COORDS, appear)); Primitive.GENERATE_TEXTURE_COORDS sorgt für eine automatischeTexturkoordinatenzuordnung Stefan Dubois WS 02/03

Optionen für Texturen (Auswahl) Boundary Mode bestimmt das Verhalten der Textur, falls Textur kleiner als zu texturierende Fläche Texture.WRAP = Textur kacheln Texture.CLAMP = Textur nur einmalig verwenden, die übrige Fläche wird mit den Randpixeln der Textur gefüllt setBoundaryModeS(int boundaryModeS) setBoundaryModeT(int boundaryModeT) setBoundaryModeR(int boundaryModeR) Stefan Dubois WS 02/03

TextureAttributes (Auswahl) TextureMode (Methode der Texture-Klasse) setTextureMode(int textureMode) textureMode: BLEND DECAL MODULATE REPLACE beeinflusst Wechselwirkungen zwischen Textur und Objektfarbe Stefan Dubois WS 02/03

TextureAttributes (Auswahl) Weitere Attribute Texture Blend Color Perspective Correction Mode Texture Map Transform Stefan Dubois WS 02/03

MIP-mapping mehrere Texturen auf ein Objekt legen wird verwendet, um Texturen unterschiedlicher Größe entfernungsabhängig zu verwenden Größenstufen durch Halbierung jeder Seite (bis min. 1 x 1) Beispiel: 32 x 8 -> 16 x 4 -> 8 x 2 -> 4 x 1 -> 2 x 1 -> 1 x 1 Stefan Dubois WS 02/03

MIP-mapping Besonderheiten: Texture2D texture = new Texture2D(Texture.MULTI_LEVEL_MIPMAP, Texture.RGB, imageWidth, imageHeight); texture.setImage(imageLevel, image); imageLevel als Variable zum Einsatz in einer Schleife, in der mittels image = loader.getScaledImage(imageWidth, imageHeight); neu skalierte Bilder entstehen Stefan Dubois WS 02/03

Quellen Sun J3D-Tutorial Sun JDK-API Dokumentation Texturen in Java 3D, Florian Angulanza, Manfred Mayr, Christian Osterrieder, 2. Juli Weitere Programme ExTexture.java (Henry A. Sowizral, David R. Nadeau) Jicasso von Colin Mummery Stefan Dubois WS 02/03