recherche
Maisondéveloppement back-endTutoriel XML/RSSExplication détaillée d'exemples de technologie graphique 3D J2ME

La technologie graphique 3D est de plus en plus utilisée dans divers domaines, et bien sûr cela inclut également le domaine J2ME. J2ME nous fournit un package optionnel tel que JSR184, qui est un ensemble d'API qui implémentent la programmation graphique 3D sur les téléphones mobiles. Dans le même temps, avec le développement du matériel des appareils mobiles, de plus en plus de téléphones mobiles prennent en charge ce package optionnel, comme les séries K, S, etc. de Sony Ericsson.
 
Il se trouve que j'ai brièvement étudié le graphisme 3D il y a quelque temps, j'ai donc récemment commencé à étudier Mobile 3D. Ici, je vais partager ce que j'ai appris avec tout le monde, j'espère que cela pourra être utile à tout le monde. j'espère que tout le monde pourra apprendre JSR184 ensemble.
 
Passons aux choses sérieuses. Tout d’abord, imaginons comment nous observons le monde dans la vraie vie. Nous observons à travers nos yeux et nous vivons dans un monde composé d'un système de coordonnées tridimensionnel. Dans Mobile3D, il existe également une classe Monde qui vous permet de construire le monde que vous voulez comme vous le souhaitez. Bien sûr, c'est plus professionnel ici, nous l'appelons « scène » ; comme vos yeux. Vous pouvez définir sa position, son angle et d’autres paramètres pour afficher différentes images.
 
Comment afficher des images 3D dans Mobile 3D ? Tout d'abord, vous devez créer ou charger un modèle 3D, puis définir une série de paramètres tels que l'environnement et la méthode de rendu dans la scène selon les besoins, puis générer et configurer une caméra et ajuster la lumière. vous voulez. Ajustez la position et l’angle dont vous avez besoin. OK, de quoi d'autre as-tu besoin ? Appuyez sur le déclencheur, cette étape s'appelle "rendu" et tout est fait. Cela semble simple et n'est en fait pas difficile.
 
Expliquons ces étapes étape par étape :

Tout d'abord, parlons de l'établissement du modèle Dans Mobile 3D, c'est la même chose que la plupart des API de programmation 3D. Il y en a deux. façons : 1. Générer un fonctionnement en temps réel ; 2 importations de modélisation externes. Étant donné que l'importation de modélisation externe importera les informations d'environnement en même temps, je vous donnerai une introduction détaillée plus tard. Ici, je me concentrerai sur l'introduction de la partie « génération de calculs en temps réel », qui vous aidera à comprendre le principe de fonctionnement de Mobile. 3D. Mobile 3D nous fournit deux classes, VertexArray et VertexBuffer, qui sont utilisées pour enregistrer les informations de sommet du modèle 3D.
 
Parmi elles, la classe VertexArray est plus utile et plus flexible. Il existe trois utilisations les plus couramment utilisées de cette classe 1. Enregistrer les informations de coordonnées de sommet ; Quelqu’un pourrait se demander comment cette classe gère trois choses différentes ? Analysons cette classe.Tout d'abord, le constructeur de cette classe a 3 paramètres : 1. Le nombre d'éléments à inclure dans cette instance ; 2. Le nombre d'éléments à inclure dans chaque élément ; chaque sous-élément. Cela semble expliquer pourquoi cette classe peut être utilisée pour 3 choses.
 
De plus, cette classe a également un ensemble de méthodes plus couramment utilisées (int index, int length, short[] array0). Cette méthode est utilisée pour stocker des données dans l'instance objet de). cette classe. , le premier paramètre fait référence à l'élément à partir duquel commencer ; le deuxième paramètre fait référence au nombre d'éléments à définir et le troisième paramètre est le paramètre réel ;
 
 Ce qui suit est une brève introduction à la classe VertexBuffer, qui est la classe qui enregistre réellement les informations frame des polygones. Modifiez la classe pour créer des graphiques en définissant les positions des sommets, la découverte et les informations cartographiques. Parmi eux,

setPositions(VertexBuffer v, float s, float[]b)

est utilisé pour définir la position du sommet. Dans cette méthode, vous constaterez qu'il y a 3 paramètres. Le premier n'est pas utilisé. Comme mentionné, ce sont les informations de coordonnées du sommet. Les deux derniers sont utilisés pour des opérations telles que le décalage des coordonnées. L'opération est la formule mathématique suivante :
 
 v'=v*s. +b
 
Il existe également une méthode
 
 setNormals(vertexBuffer norm)
 
  pour définir les normales. Il existe également une méthode très importante
 
 setTexCoords(int, VertexArray, float, float[])
 
 En plus du premier paramètre de cette méthode, le last Les trois sont identiques à
 
 setPositions(VertexBuffer v, float s, float[]b)
 
 . N'est-ce pas un peu abstrait ? Laissez-moi vous donner un exemple pour que vous puissiez comprendre.
 

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

Dans le code ci-dessus, je crée toutes les informations de sommet et de face nécessaires pour créer un cube, mais chacun doit noter que le modèle correspondant n'est pas généré ici. La raison est que nous n'avons pas configuré d'autres informations pour générer le modèle. Jetons un coup d'œil à la classe TriangleStripArray. Cette classe est la classe d'informations sur les triangles nécessaires pour former la surface. Toute personne familiarisée avec les graphiques 3D sait que la construction de graphiques 3D. se fait à travers plusieurs surfaces. Pour construire un solide 3D, les surfaces triangulaires sont une méthode plus couramment utilisée. Je ne développerai pas ici le contenu spécifique.
 
Ensuite, nous devons également définir certaines informations sur l'environnement et le matériau. Les classes utilisées ici sont Appearance, Texture2D et Material. Regardons d'abord un exemple :

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

Je pense personnellement que la classe Appearance est quelque peu similaire à la classe VertexBuffer, et est également titulaire de plusieurs attributs ; Il convient de souligner que les paramètres de la classe Apparence sont bien plus que ce qui est indiqué ci-dessus, et qu'il existe de nombreux paramètres (tels que FOG, qui sont des paramètres de brouillard). Texture2D est une classe de texture Utilisez-la pour définir les informations de texture, par exemple si la texture est en mosaïque. Le nom Matériau désigne le matériau Ici, vous pouvez définir la « réflectivité », la « couleur » et d'autres informations. De plus, je présenterai également ici une méthode de définition des paramètres de rendu

//设置poly模式设置
  PolygonMode polygonMode=new PolygonMode();
  polygonMode.setShading(PolygonMode.SHADE_SMOOTH);
  polygonMode.setCulling(PolygonMode.CULL_NONE);
  
  //生成外貌
  appearnce=new Appearance();
  appearnce.setPolygonMode(polygonMode);

En regardant le code qui vient d'être donné, cela semble plus simple que ce qui précède, n'est-ce pas ? En fait, PolygonMode a déjà fait beaucoup de travail pour nous. Le réglage est très similaire à l'utilisation de Poly dans 3D MAX.
 
Le code de tout à l'heure donne également une classe Mesh, qui est le modèle final que nous souhaitons pour ce type de matériau. Après avoir établi le modèle, nous devons créer la caméra. Dans Camera, je ne présenterai ici que brièvement deux méthodes : setParallel(float, float, float, float) et setPerspective(float, float, float, float). Regardons d'abord setParallel(float, float, float, float). Cette méthode consiste à définir la méthode view de la caméra sur une vue plate ; le premier paramètre consiste à définir la hauteur de l'angle de vue. à la hauteur, pas à l'angle, car voici la vue plate ; le deuxième paramètre est le rapport hauteur/largeur de la caméra, par exemple, notre téléviseur est en 4:3 et le film grand écran est en 16:9, les troisième et quatrième paramètres sont ; respectivement la plage de rendu la plus proche et la plus éloignée. Le même setPerspective définit la caméra sur une vue en perspective, qui est plus proche de l'angle d'observation dans notre vie quotidienne. Les trois derniers paramètres de cette méthode sont les mêmes que les trois derniers paramètres de setParallel, et le premier paramètre est Angle, vous devriez le faire. Il ne faut pas ignorer ici cette question d'angle. Cet angle est un paramètre important pour le calcul de la projection en perspective.
 
Il semble que tout soit mis en place, mais ce n'est pas le cas Jusqu'à présent, nous avons seulement préparé tout le matériel dont nous avons besoin. Jetons un coup d'œil au mécanisme de gestion de Mobile 3D. Les personnes familiarisées avec les graphiques 3D savent que la plupart des logiciels 3D et des API 3D gèrent les matériaux via une structure arborescente. L'avantage est que chaque modèle, groupe de modèles, caméra et autres éléments. En tant que nœud, vous pouvez définir votre propre axe de rotation et d'autres attributs, et vous pouvez vous déplacer en fonction des informations d'animation que vous avez définies. Dans Mobile 3D, il nous est stipulé que le nœud racine de l'arborescence doit être un objet instance de classe World. La caméra et la lumière sont relativement particulières et n'ont pas besoin d'être placées dans cet arbre, mais sont paramétrées via des objets. de la classe Graphics3D

[Recommandations associées]

1 Tutoriel vidéo gratuit XML

Manuel technique XML<.>

3.

Tutoriel vidéo XHTML de Li Yanhui

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Maîtrise XML bien formé: meilleures pratiques pour l'échange de donnéesMaîtrise XML bien formé: meilleures pratiques pour l'échange de donnéesMay 14, 2025 am 12:05 AM

Bien forméxmliscrucialfordataExchangeBecauseIntenSuresCorrectParsingAnduskerSpreingActrasSystems.1) startwithadeclarationlike.2)

XML: Est-il toujours utilisé?XML: Est-il toujours utilisé?May 13, 2025 pm 03:13 PM

XmlisstitillouesduetoitsstructuredNature, humanreadabilité et largementpreadoptioninterpriseenvironments.1) itfacilitedataexchangeinsectors likefinance (swift) andhealthcare (hl7) .2) itShuman-redableformatairsinmanualdataSpectionedIlting.3) xmlisusen

L'anatomie d'un document RSS: structure et élémentsL'anatomie d'un document RSS: structure et élémentsMay 10, 2025 am 12:23 AM

La structure d'un document RSS comprend trois éléments principaux: 1.: Élément racine, définissant la version RSS; 2.: Contenant des informations sur le canal, telles que le titre, le lien et la description; 3.: Représentant des entrées de contenu spécifiques, y compris le titre, le lien, la description, etc.

Comprendre les documents RSS: un guide completComprendre les documents RSS: un guide completMay 09, 2025 am 12:15 AM

Les documents RSS sont un mécanisme d'abonnement simple pour publier des mises à jour de contenu via des fichiers XML. 1. La structure du document RSS se compose et des éléments et contient plusieurs éléments. 2. Utilisez les lecteurs RSS pour vous abonner au canal et extraire les informations en analysant XML. 3. L'utilisation avancée comprend le filtrage et le tri à l'aide de la bibliothèque FeedParser. 4. Les erreurs courantes incluent les problèmes d'analyse XML et d'encodage. Le format XML et l'encodage doivent être vérifiés lors du débogage. 5. Les suggestions d'optimisation des performances incluent les documents RSS Cache et l'analyse asynchrone.

RSS, XML et le Web moderne: une plongée profonde de syndication de contenuRSS, XML et le Web moderne: une plongée profonde de syndication de contenuMay 08, 2025 am 12:14 AM

RSS et XML sont toujours importants dans la toile moderne. 1.RSS est utilisé pour publier et distribuer du contenu, et les utilisateurs peuvent s'abonner et obtenir des mises à jour via le lecteur RSS. 2. XML est un langage de balisage et prend en charge le stockage et l'échange de données, et les fichiers RSS sont basés sur XML.

Au-delà des bases: fonctionnalités RSS avancées activées par XMLAu-delà des bases: fonctionnalités RSS avancées activées par XMLMay 07, 2025 am 12:12 AM

RSS permet l'intégration du contenu multimédia, l'abonnement conditionnel et l'optimisation des performances et de la sécurité. 1) Intégrer le contenu multimédia tel que l'audio et la vidéo via des balises. 2) Utilisez l'espace de noms XML pour implémenter des abonnements conditionnels, permettant aux abonnés de filtrer le contenu en fonction de conditions spécifiques. 3) Optimisez les performances et la sécurité de RSSFeed via la section CDATA et XMLSChema pour assurer la stabilité et la conformité aux normes.

Décodage RSS: une amorce XML pour les développeurs WebDécodage RSS: une amorce XML pour les développeurs WebMay 06, 2025 am 12:05 AM

RSS est un format basé sur XML utilisé pour publier des données fréquemment mises à jour. En tant que développeur Web, la compréhension de RSS peut améliorer les capacités de l'agrégation et de la mise à jour de l'automatisation du contenu. En apprenant la structure RSS, l'analyse et les méthodes de génération, vous pourrez gérer en toute confiance RSSFeeds et optimiser vos compétences en développement Web.

JSON contre XML: Pourquoi RSS a choisi XMLJSON contre XML: Pourquoi RSS a choisi XMLMay 05, 2025 am 12:01 AM

RSS a choisi XML au lieu de JSON car: 1) les capacités de structure et de vérification de XML sont meilleures que JSON, ce qui convient aux besoins des structures de données complexes RSS; 2) XML a été largement soutenu à l'époque; 3) Les premières versions de RSS étaient basées sur XML et sont devenues une norme.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
<🎜> Obscur: Expedition 33 - Comment obtenir des catalyseurs de chrome parfaits
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.