suchen
HeimBackend-EntwicklungXML/RSS-TutorialAusführliche Erläuterung von Beispielen der J2ME 3D-Grafiktechnologie

3D-Grafiktechnologie wird zunehmend in verschiedenen Bereichen eingesetzt, und dazu gehört natürlich auch der J2ME-Bereich. J2ME stellt uns ein optionales Paket wie JSR184 zur Verfügung, bei dem es sich um eine Reihe von APIs handelt, die 3D-Grafikprogrammierung auf Mobiltelefonen implementieren. Gleichzeitig gibt es mit der Entwicklung der Hardware für mobile Geräte immer mehr Mobiltelefone, die dieses optionale Paket unterstützen, wie z. B. die K-Serie, S-Serie usw. von Sony Ericsson.
 
Es ist einfach so, dass ich mich vor einiger Zeit kurz mit 3D-Grafik beschäftigt habe, also werde ich hier mit allen teilen, was ich gelernt habe Ich hoffe, dass jeder gemeinsam JSR184 lernen kann.
 
Kommen wir zur Sache. Stellen wir uns zunächst vor, wie wir die Welt im wirklichen Leben beobachten. Wir beobachten durch unsere Augen und leben in einer Welt, die aus einem dreidimensionalen Koordinatensystem besteht. In Mobile3D gibt es auch eine Weltklasse, die es Ihnen ermöglicht, die Welt nach Ihren Wünschen zu konstruieren. Bei 3D-Grafiken gibt es auch eine Kameraklasse Wie Ihre Augen können Sie Position, Winkel und andere Parameter festlegen, um verschiedene Bilder anzuzeigen.
 
Wie realisiert man die Anzeige von 3D-Bildern in Mobile 3D? Zuerst müssen Sie ein 3D-Modell erstellen oder laden, dann eine Reihe von Parametern wie die Umgebung und die Rendering-Methode in der Szene nach Bedarf festlegen und dann eine Kamera generieren und einrichten und das Licht anpassen Passen Sie die Position und den Winkel an, die Sie benötigen. Okay, was brauchst du noch? Drücken Sie den Auslöser, dieser Schritt wird „Rendern“ genannt und alles ist erledigt. Es klingt einfach und ist tatsächlich nicht schwierig.
 
Lassen Sie uns diese Schritte Schritt für Schritt erklären:

Lassen Sie uns zunächst über die Einrichtung des Modells sprechen. In Mobile 3D ist es dasselbe wie bei den meisten 3D-Programmier-APIs Möglichkeiten: 1. Echtzeitbetrieb generieren; 2 externe Modellierung importieren. Da beim externen Modellimport gleichzeitig die Umgebungsinformationen importiert werden, werde ich Ihnen später eine detaillierte Einführung geben. Hier werde ich mich auf die Einführung des Teils „Echtzeitberechnungsgenerierung“ konzentrieren, der Ihnen hilft, das Funktionsprinzip von Mobile zu verstehen 3D. Mobile 3D stellt uns zwei Klassen zur Verfügung, VertexArray und VertexBuffer, die zum Speichern der Scheitelpunktinformationen des 3D-Modells verwendet werden.
 
Unter diesen ist die VertexArray-Klasse nützlicher und flexibler. Es gibt drei am häufigsten verwendete Verwendungszwecke: 1. Speichern Sie Scheitelpunktkoordinateninformationen. Jemand fragt sich vielleicht, wie diese Klasse drei verschiedene Dinge bewältigt? Lassen Sie uns diese Klasse zunächst analysieren. Der Konstruktor dieser Klasse verfügt über drei Parameter: 1. Die Anzahl der in diese Instanz aufzunehmenden Elemente jedes Unterelement. Dies scheint klar zu machen, warum diese Klasse für drei Dinge verwendet werden kann.
 
Darüber hinaus verfügt diese Klasse auch über einen häufiger verwendeten Methodensatz (int index, int length, short[] array0). Diese Methode wird zum Speichern von Daten in der Instanz des Objekts verwendet Bei dieser Klasse bezieht sich der erste Parameter darauf, von welchem ​​Element ausgegangen werden soll; der zweite Parameter bezieht sich auf die Anzahl der festzulegenden Elemente;
 
 Das Folgende ist eine kurze Einführung in die VertexBuffer-Klasse, die tatsächlich die Frame-Informationen von Polygonen speichert. Ändern Sie die Klasse, um Grafiken zu erstellen, indem Sie Scheitelpunktpositionen, Erkennung und Karteninformationen festlegen. Unter ihnen wird

setPositions(VertexBuffer v, float[]b)

verwendet, um die Scheitelpunktposition festzulegen Die erste wird nicht verwendet. Die letzten beiden werden für Operationen wie den Koordinatenversatz verwendet:
 
 v'=v*s +b
 
Es gibt auch eine
 
 setNormals(vertexBuffer norm)
 
  Methode zum Festlegen von Normalen. Es gibt auch eine sehr wichtige Methode
 
 setTexCoords(int, VertexArray, float, float[])
 
 Zusätzlich zum ersten Parameter in dieser Methode, dem last Die drei sind die gleichen wie
 
 setPositions(VertexBuffer v, float[]b)
 
 . Ist das nicht etwas abstrakt? Lassen Sie mich Ihnen ein Beispiel geben, damit Sie es verstehen können.
 

short x = 20;
  
  short y = 20;
  
  short z = 20;
  
  short fx = (short) -x;
  
  short fy = (short) -y;
  
  short fz = (short) -z;
  
  //定点坐标
  short[] vert = {x,y,z, fx,y,z, x,fy,z, fx,fy,z, //D
  
  fx,y,fz, x,y,fz, fx,fy,fz, x,fy,fz, //C
  
  fx,y,z, fx,y,fz, fx,fy,z, fx,fy,fz, //B
  
  x,y,fz, x,y,z, x,fy,fz, x,fy,z, //F
  
  x,y,fz, fx,y,fz, x,y,z, fx,y,z, //A
  
  x,fy,z, fx,fy,z, x,fy,fz, fx,fy,fz}; //E
  
  try{vertArray=
new
 VertexArray(vert.length/3,3,2);
  vertArray.set(0,vert.length/3,vert);
  }catch(
Exception
 e){System.out.
PRint
ln("vert");}
  
  //发线
  byte[] norm = { 0,0,127, 0,0,127, 0,0,127, 0,0,127,
  
  0,0,-127, 0,0,-127, 0,0,-127, 0,0,-127,
  
  -127,0,0, -127,0,0, -127,0,0, -127,0,0,
  
  127,0,0, 127,0,0, 127,0,0, 127,0,0,
  
  0,127,0, 0,127,0, 0,127,0, 0,127,0,
  
  0,-127,0, 0,-127,0, 0,-127,0, 0,-127,0};
  
  try{normArray=new VertexArray(norm.length/3,3,1);
  normArray.set(0,norm.length/3,norm);
  }catch(Exception e){System.out.println("norm");e.printStackTrace();}
  
  //给出顶点们对应
图片
上的点(vert和tex
数组
是一一对应的)
  short[] tex = { 1, 0, 0, 0, 1, 1, 0, 1,
  
  1, 0, 0, 0, 1, 1, 0, 1,
  
  1, 0, 0, 0, 1, 1, 0, 1,
  
  1, 0, 0, 0, 1, 1, 0, 1,
  
  1, 0, 0, 0, 1, 1, 0, 1,
  
  1, 0, 0, 0, 1, 1, 0, 1 };
  
  try{
  texArray=new VertexArray(tex.length/2,2,2);
  texArray.set(0,tex.length/2,tex);
  }catch(Exception e){System.out.println("tex");}
  
  //建立正方体
  vb=new VertexBuffer();
  vb.setPositions(vertArray,1.0f,
null
);
  vb.setNormals(normArray);
  vb.setTexCoords(0,texArray,1.0f,null);

Im obigen Code erstelle ich alle Scheitelpunkt- und Flächeninformationen, die zum Erstellen eines Würfels erforderlich sind. Jeder sollte jedoch beachten, dass das entsprechende Modell hier nicht generiert wird. Der Grund dafür ist, dass wir keine weiteren Informationen zum Generieren des Modells eingerichtet haben. Schauen wir uns die Klasse TriangleStripArray an, die zur Bildung der Oberfläche benötigt wird ist durch mehrere Flächen, dreieckige Flächen sind eine häufiger verwendete Methode. Auf den konkreten Inhalt werde ich hier nicht näher eingehen.
 
Als nächstes müssen wir auch einige Umgebungs- und Materialinformationen festlegen. Die hier verwendeten Klassen sind Aussehen, Texture2D und Material. Schauen wir uns zunächst ein Beispiel an:

  appearnce=new Appearance();
//创建帖图
  Texture2D texture=new Texture2D(image2d);
  texture.setBl
end
Color(Texture2D.FUNC_DECAL);
  texture.setWrapping(Texture2D.WRAP_REPEAT,Texture2D.WRAP_REPEAT);
  texture.setFiltering(Texture2D.FILTER_NEAREST,Texture2D.FILTER_NEAREST);
  
  material=new Material();
  material.setColor(Material.D
IF
FUSE, 0xFFFFFFFF);
  material.setColor(Material.SPECULAR, 0xFFFFFFFF);
  material.setShininess(100.0f);
  
  appearnce.setTexture(0,texture);
  appearnce.setMaterial(material);
  
  mesh=new Mesh(vb,tsa,appearnce);
  mesh.setAppearance(0,appearnce);

Ich persönlich bin der Meinung, dass die Appearance-Klasse der VertexBuffer-Klasse etwas ähnelt und außerdem mehrere Attribute ; Es sollte betont werden, dass die Einstellungen der Appearance-Klasse weit über die oben angegebenen hinausgehen und es viele Einstellungen gibt (z. B. FOG, also Nebeleinstellungen). Texture2D ist eine Texturklasse. Verwenden Sie sie, um Texturinformationen festzulegen, z. B. ob die Textur gekachelt ist. Der Name Material bedeutet das Material. Hier können Sie die „Reflexionsfähigkeit“, „Farbe“ und andere Informationen einstellen. Darüber hinaus werde ich hier auch eine Methode zum Festlegen von Rendering-Parametern vorstellen

//设置poly模式设置
  PolygonMode polygonMode=new PolygonMode();
  polygonMode.setShading(PolygonMode.SHADE_SMOOTH);
  polygonMode.setCulling(PolygonMode.CULL_NONE);
  
  //生成外貌
  appearnce=new Appearance();
  appearnce.setPolygonMode(polygonMode);
Wenn man sich den gerade gegebenen Code ansieht, scheint er einfacher zu sein als oben, oder? Tatsächlich hat PolygonMode bereits viel Arbeit für uns erledigt. Die Einstellung ist der Verwendung von Poly in 3D MAX sehr ähnlich.

 
 Der Code gibt gerade auch eine Mesh-Klasse an, die das endgültige Modell ist, das wir für diese Art von Material wollen. Nachdem wir das Modell erstellt haben, müssen wir die Kamera erstellen. In Camera werde ich hier nur kurz zwei Methoden vorstellen: setParallel(float, float, float, float) und setPerspective(float, float, float, float). Schauen wir uns zunächst setParallel (float, float, float, float) an. Mit dieser Methode wird die
Ansicht auf eine flache Ansicht eingestellt auf die Höhe, nicht auf den Winkel, denn hier ist der zweite Parameter das Seitenverhältnis der Kamera, zum Beispiel ist unser Fernseher 4:3 und der dritte und vierte Parameter sind es der nächstgelegene bzw. der am weitesten entfernte Rendering-Bereich. Das gleiche setPerspective stellt die Kamera auf eine perspektivische Ansicht ein, die näher am Beobachtungswinkel in unserem täglichen Leben ist. Die letzten drei Parameter dieser Methode sind die gleichen wie die letzten drei Parameter von setParallel, und der erste Parameter ist Angle, das sollten Sie Ignorieren Sie dieses Winkelproblem hier nicht. Dieser Winkel ist ein wichtiger Parameter für die Berechnung der perspektivischen Projektion.  
Es scheint, dass alles vorbereitet ist, aber das ist nicht der Fall. Bisher haben wir nur alle Materialien vorbereitet, die wir benötigen. Werfen wir einen Blick auf den Verwaltungsmechanismus von Mobile 3D. Wer mit 3D-Grafiken vertraut ist, weiß, dass die meisten 3D-Software und 3D-APIs Materialien über eine Baumstruktur verwalten Als Knoten können Sie Ihre eigene Rotationsachse und andere Attribute festlegen und sich gemäß den von Ihnen festgelegten
Animationsinformationen bewegen. In Mobile 3D legen wir fest, dass der Wurzelknoten der Baumstruktur ein Instanzobjekt der Weltklasse sein muss. Kamera und Licht sind relativ speziell und müssen nicht in diesem Baum platziert werden, sondern werden über Objekte der Graphics3D festgelegt Klasse

[Verwandte Empfehlungen]

1.

XML Kostenloses Video-Tutorial

2.

XML Technisches Handbuch

3.

Li Yanhui XHTML-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen der J2ME 3D-Grafiktechnologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Mastering gut geformter XML: Best Practices für den DatenaustauschMastering gut geformter XML: Best Practices für den DatenaustauschMay 14, 2025 am 12:05 AM

Ell formedxmliscrucialfordataExchangeBecauseInitensuresCorrectParsingandundingacrossSystems.1) Start mit der Withadeklaration

XML: Wird es noch verwendet?XML: Wird es noch verwendet?May 13, 2025 pm 03:13 PM

XmlisstillusedDuetoits strukturierteNature, Humanreadabilität und widehäudeadoptioninternenprise-Umgebung.1) ItfacilitatesDataExchangeinsektoren wie Finanz (Swift) und HealthCare (HL7) .2) itshuman-lesbarformatsinmanualDataTataTataTaTaTaTaTaTaTaTaN und -Antable und -AntataN-und

Die Anatomie eines RSS -Dokuments: Struktur und ElementeDie Anatomie eines RSS -Dokuments: Struktur und ElementeMay 10, 2025 am 12:23 AM

Die Struktur eines RSS -Dokuments enthält drei Hauptelemente: 1. Rootelement, das die RSS -Version definiert; 2.: Enthaltende Kanalinformationen wie Titel, Link und Beschreibung; 3..: Darstellung spezifischer Inhalteinträge, einschließlich Titel, Link, Beschreibung usw.

Verständnis von RSS -Dokumenten: Ein umfassender LeitfadenVerständnis von RSS -Dokumenten: Ein umfassender LeitfadenMay 09, 2025 am 12:15 AM

RSS -Dokumente sind ein einfacher Abonnementmechanismus, um Inhaltsaktualisierungen über XML -Dateien zu veröffentlichen. 1. Die RSS -Dokumentstruktur besteht aus Elementen und enthält mehrere Elemente. 2. Verwenden Sie RSS -Leser, um den Kanal abonnieren und Informationen extrahieren, indem Sie XML analysieren. 3. Die erweiterte Verwendung beinhaltet die Filterung und Sortierung mit der FeedParser -Bibliothek. 4. Häufige Fehler umfassen XML -Analyse- und Codierungsprobleme. Das XML -Format und die Codierung müssen beim Debuggen überprüft werden. 5. Vorschläge zur Leistungsoptimierung umfassen Cache -RSS -Dokumente und asynchrone Parsen.

RSS, XML und das moderne Web: eine Inhaltssyndizierung Deep DiveRSS, XML und das moderne Web: eine Inhaltssyndizierung Deep DiveMay 08, 2025 am 12:14 AM

RSS und XML sind im modernen Web immer noch wichtig. 1.RSS wird verwendet, um Inhalte zu veröffentlichen und zu verteilen, und Benutzer können über den RSS -Leser agdieren und Aktualisierungen erhalten. 2. XML ist eine Markup -Sprache und unterstützt die Datenspeicherung und -austausch, und RSS -Dateien basieren auf XML.

Jenseits der Grundlagen: Fortgeschrittene RSS -Funktionen, die von XML aktiviert sindJenseits der Grundlagen: Fortgeschrittene RSS -Funktionen, die von XML aktiviert sindMay 07, 2025 am 12:12 AM

RSS ermöglicht Multimedia -Inhalte Einbettung, bedingte Abonnement sowie Leistungs- und Sicherheitsoptimierung. 1) Multimedia -Inhalte wie Audio und Video durch Tags einbetten. 2) Verwenden Sie den XML -Namespace, um bedingte Abonnements zu implementieren, sodass Abonnenten Inhalte basierend auf bestimmten Bedingungen filtern. 3) Optimieren Sie die Leistung und Sicherheit von RSSFeed über den CDATA -Abschnitt und das XMLSchema, um die Stabilität und Einhaltung von Standards zu gewährleisten.

Dekodierung von RSS: Eine XML -Grundierung für WebentwicklerDekodierung von RSS: Eine XML -Grundierung für WebentwicklerMay 06, 2025 am 12:05 AM

RSS ist ein XML-basiertes Format, das zur Veröffentlichung häufig aktualisierter Daten verwendet wird. Als Webentwickler kann das Verständnis von RSS die Inhaltsaggregation und die Automatisierungsaktualisierungsfunktionen verbessern. Durch das Erlernen von RSS -Struktur, Parsing- und Generationsmethoden können Sie mit RSSFeeds zuversichtlich umgehen und Ihre Fähigkeiten zur Webentwicklung optimieren.

JSON vs. XML: Warum RSS XML ausgewählt hatJSON vs. XML: Warum RSS XML ausgewählt hatMay 05, 2025 am 12:01 AM

RSS wählte XML anstelle von JSON aus, weil: 1) die Struktur- und Überprüfungsfunktionen von XML besser sind als JSON, was für die Bedürfnisse von RSS -komplexen Datenstrukturen geeignet ist. 2) XML wurde zu dieser Zeit ausführlich unterstützt; 3) Die frühen Versionen von RSS basierten auf XML und sind zu einem Standard geworden.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool