Introduction au X3D

N'en posez pas trop, spas ? C'est chez web3d-fr, la technique. Ici, c'est juste dépannage.

Introduction au X3D

Messagepar Arsène » Dim 05 Juin 2011 22:40

Un petit exemple que j'utilise dans le cadre du TCK, Technology Compatibility Kit, le programme qui sert à tester si les implémentations de l'API, Application Programming Interface, de Ophiria sont bien compatibles, à commencer par Oniria.

Code: Tout sélectionner
#VRML V2.0 utf8

PROTO OphiriaZone [
    exposedField SFVec3f samplePosition 0 0 0
    exposedField SFRotation sampleOrientation 0 0 1 0
] {
    Group {
    }
}

NavigationInfo {
    type "WALK"
}

DEF ophiriaZone OphiriaZone {
}


Code: Tout sélectionner
#X3D V3.1 utf8

PROFILE Immersive

PROTO OphiriaZone [
    inputOutput SFVec3f samplePosition 0 0 0
    inputOutput SFRotation sampleOrientation 0 0 1 0
] {
    Group {
    }
}

NavigationInfo {
    type "WALK"
}

DEF ophiriaZone OphiriaZone {
}

Je vous laisse deviner quel est celui écrit en VRML et celui en X3D (un indice: ça se passe dès la première ligne).

Je ne sais pas si le profil "Immersive" est le mieux adapté; le nom me plaisait bien dans le contexte.

Comme vous pouvez le constater, c'est très ressemblant; les éditeurs VRML qui ne permettent pas d'éditer aussi du X3D n'ont pas beaucoup d'excuses. C'est pour cette raison, entre autres, que j'ai décidé de favoriser X3D dans le code de Oniria. Le VRML est toujours supporté. Ce que j'entends par "favoriser le X3D" c'est que quand le choix ne sera pas évident, je vérifierais d'abord si ça marche en X3D et, si ce n'est pas le cas, je vérifierais seulement ensuite si ça marche en VRML, dans cet ordre. Donc, dans certains cas spéciaux, une scène écrite en X3D pourrait être plus rapide à démarrer que si elle avait été écrite en VRML.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: Introduction au X3D

Messagepar Arsène » Lun 06 Juin 2011 13:51

Comme je pensais le profil "Immersive" va bien:
implementing the functionality within the X3D architectural framework analogous to that specified in ISO/IEC 14772-1 for the VRML base profile of that standard


La ligne PROFILE indique le niveau minimum de support nécessaire pour votre scène. Correspondant à chaque profil il y a les niveaux des composants supportés.

Par exemple, si la scène a besoin d'avoir un nœud ParticleSystem il y a toujours moyen d'ajouter le composant ParticleSystems:
Code: Tout sélectionner
PROFILE Immersive
COMPONENT H-Anim:1
COMPONENT ParticleSystems:1


Ça permet aux brouteurs X3D de ne charger que les composants dont ils ont besoin pour utiliser la scène. J'ai ajouté les composants H-Anim et ParticleSystems niveau 1. Le composant H-Anim n'a qu'un seul niveau, donc 1. Le composant ParticleSystems a 3 niveaux, les niveaux 2 et 3 ajoutent des possibilités, de nouveaux nœuds et aussi de nouveaux champs aux nœuds définis aux niveaux inférieurs.

Le composant ParticleSystems défini le nœud ParticleSystem ainsi que ConeEmitter, ExplosionEmitter, SurfaceEmitter, etc…
Remarquez le S à la fin du nom du composant "ParticleSystems" et pas à la fin du nom du nœud "ParticleSystem".

Les lignes COMPONENT permettent le support de composants additionnels ou d'augmenter le niveau de supports des composants déjà présents dans le profil. On ne peut pas diminuer le niveau de support des composants d'un profil.

Dans la pratique vous utiliserez toujours le profil et les composants auxquels vous êtes habitués et vous ajouterez des composants selon les besoins de la scène. Vous pouvez aussi n'utiliser toujours que le profil "Full", si vous ne voulez pas optimiser l'utilisation de vos scènes, ce que je ne conseille pas.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: Introduction au X3D

Messagepar Arsène » Lun 06 Juin 2011 21:12

Peut-être un lien, pour ceux qui ne voient vraiment pas de quoi je veux parler dans le message précédent. La doc est construite sur le même schéma que le X3D, les nœuds sont classés par composants et vous avez en annexes les profils. Dans cette partie vous avez une vue du X3D indépendante de tout encodage.

Vous avez donc des profils qui définissent certains niveaux de composants. Les composants ont souvent plusieurs niveaux. À chaque niveau de composant correspondent des nœuds avec certains champs. Plus haut est le niveau d'un composant, plus il a de possibilités : un composant au niveau 3 est capable de faire plus que le même composant au niveau 2 qui est lui capable de faire plus que le même composant au niveau 1 (1 < 2 < 3).

Regardez par exemple le composant Lighting. Au niveau 1, il n'a que le nœud DirectionalLight et encore "Not scoped by parent Group or Transform". Au niveau 2 il a en plus le nœud PointLight "radius optionally supported. Linear attenuation" et aussi le nœud SpotLight "beamWidth optionally supported. radius optionally supported. Linear attenuation". Enfin au niveau 3 tous les champs des nœuds sont supportés.

Si vous avez déjà écrit du VRML vous avez sûrement une idée de ce que sont ces nœuds. Si vous n'avez fait qu'utiliser un modeleur, vous n'avez pas vraiment besoin de comprendre. :)
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: Introduction au X3D

Messagepar Arsène » Lun 06 Juin 2011 21:21

Si avant ça vous n'aviez que de très vagues notions de X3D ou si vous ne connaissiez que le VRML, ne vous en faites pas, j'en suis au même point, je découvre et ensuite je vous fais partager mes découvertes. Donc, je peux avoir tout faux sur le sujet, ce n'est pas grave, il faut bien commencer par un bout. :)
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: Introduction au X3D

Messagepar Taranis » Mar 07 Juin 2011 11:59

Arsène a écrit:Ça permet aux brouteurs X3D de ne charger que les composants dont ils ont besoin pour utiliser la scène.


L'utilisation des niveaux de composants apporte quel type de gain par rapport à un niveau "full" ? Un allègement de la mémoire vive ? Une moindre sollicitation des GPU, CPU ?
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: Introduction au X3D

Messagepar Arsène » Mar 07 Juin 2011 12:19

Taranis a écrit:
Arsène a écrit:Ça permet aux brouteurs X3D de ne charger que les composants dont ils ont besoin pour utiliser la scène.


L'utilisation des niveaux de composants apporte quel type de gain par rapport à un niveau "full" ? Un allègement de la mémoire vive ? Une moindre sollicitation des GPU, CPU ?

Oui, tout à fait, la liste n'est pas exhaustive, tout ce qui est possible comme améliorations de la part des brouteurs.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris


Retour vers Questions techniques

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron