Hyperion Guide du Développeur

HYPERION Demo-System - v1.14.1

Guide de Référence - Version du 19 Décembre 2006

Vous avez toujours rêvé de programmer des jeux vidéos, de créer vos propres applications en 3D ? Vous avez des bases de programmation sous Windows (ou Linux), mais vous n'avez jamais osé faire le premier pas en 3D ? Alors tentez l'expérience Hyperion !

La Home Page d'Hyperion: www.oZone3D.net/hyperion.php

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved
http://www.oZone3D.Net


Hyperion Guide du Développeur - HSDL

Par où commencer ?

Hyperion, malgré la simplification qu'il apporte au niveau de la création de scènes 3D temps réel, est et reste un outil de programmation. Si vous faites vos premiers pas en programmation avec Hyperion, alors assurez-vous d'avoir les prérequis suivants:
  • connaissance de base de Windows et de l'Explorer
  • savoir naviguer dans l'arborescence répertoires et des fichiers
  • savoir créer un répertoire à n'importe quel niveau de l'arborescence
  • savoir utiliser un éditeur de texte développeur. Notepad++ est un bon exemple d'éditeur de code. Notepad++ est gratuit et disponible ici: http://notepad-plus.sourceforge.net.
  • savoir créer un fichier (un fichier texte *.txt par exemple) avec un editeur de texte et le sauvegarder dans un répertoire quelconque (en général celui du projet que vous allez créer)
  • faire la différence entre chemin absolu et chemin relatif pour accéder à un fichier
Ces prérequis sont nécessaires car la mise au point d'une scène 3D avec Hyperion demande la création d'un ou plusieurs fichiers appelés codes sources de types différents (*.xml, *.lua, *.glsl pour les plus courants).

Si vous êtes déjà familier avec les manipulations précédentes, alors la découverte d'Hyperion peut se faire de la manière suivante:
  • assurez vous d'abord d'avoir une carte graphique 3D avec les pilotes graphiques corrrectement installés. Un test rapide peut être fait avec l'utilitaire HardwareInfos. HardwareInfos utilise le même moteur 3D qu'Hyperion donc si vous n'arrivez pas à faire HardwareInfos, il y a peu de chance pour qu'Hyperion fonctionne. Dans la grande majorité des cas, il s'agit d'un problème de pilotes graphiques. Hyperion fonctionne sans problème sur toutes les cartes nVidia (de la Geforce 2 aux dernières 7900) et sur les cartes ATI (de la Radeon 9500 aux dernières X1900). Rendez-vous à la page suivante pour de plus amples informations sur les pilotes graphiques: Graphics Drivers Page.
  • rendez-vous à la page suivante: Première Scène 3D et suivez le guide pas à pas. Ce didacticiel vous permettra de toucher concrétement au code d'une scène 3D simple.
  • rendez-vous ensuite à la page Codes Samples. Vous y trouverez une centaine de scènes 3D de différents niveaux de complexité. Les plus simples se situent dans Codes Samples Basic. Téléchargez les codes samples, et chargez les démos dans Hyperion (soit par un simple drag'n'drop soit par le menu File / Load XML HyperGraph). Une fois que vous vu le rendu visuel d'une démo, chargez son code source dans l'éditeur de texte et analysez le. N'hésitez pas à modifier les valeurs des paramètres afin de voir leur impact sur le fonctionnement de la démo. Utilisez ce guide de référence pour comprendre à quoi servent les paramètres que vous modifiez. Dès que vous avez fait une modification, sauvegardez le code source et rechargez la demo dans Hyperion avec le menu File / Reload Last HyperGraph.
  • lisez la philisophie et le principe de fonctionnement d'Hyperion. Toutes ces informations se trouvent ici: Introduction à Hyperion.
  • Faites une lecture rapide des principes de programmation avec Hyperion.
L'apprentissage par expérimentation est la meilleur façon d'aborder un logiciel comme Hyperion. Il ne faut pas hésitez à modifier les codes sources fournis afin de bien comprendre le fonctionnement d'Hyperion. Vous verrez, très rapidement vous serez à l'aise et dès lors le monde de la programmation graphique vous déroulera le tapis rouge!

Bon voyage dans l'HyperEspace d'Hyperion!

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Développeur - Scripts Loading

Suivez le Guide pas à pas!

Nous allons voir en détail la création d'un script XML, son chargement dans Hyperion, puis la modification de certains paramètres de la scène 3D afin d'en apprécier les effets.

Step 1 - Ouvrir un éditeur de texte

Si vous utilisez déjà un éditeur de texte, démarrez-le. Pour ceux qui n'en possèdent pas, lancez l'éditeur de texte configuré par défaut avec Hyperion. Pour cela, cliquer sur le menu "Tools" puis "Text Editor"

Step 2 - Copier le script XML

Maintenant que l'éditeur de texte est ouvert, faites un copier/coller du code XML ci-dessous:

Step 3 - Sauvegarder le script XML

Dans le Notepad faites une sauvegarde en appuyant sur [CTRL]+[S]. La boîte de dialogue suivante apparaît:

Enregistrez le script avec le nom "test.xml" dans le répertoire de votre choix et validez.

Step 4 - Exécuter le script XML

Maintenant retournez dans Hyperion, faites apparaître le menu contextuel à l'aide du bouton droit de la souris et cliquez sur Load New XML HyperGraph. La boîte de dialogue suivante apparaît:

Sélectionnez le fichier "test.xml" et cliquez sur "Open" pour l'ouvrir.

Si toutes les opérations précedentes ont été effectuées correctement, Hyperion devrait afficher le résultat suivant:

Voilà, vous avez créé et exécuté votre première scène 3D avec Hyperion. Simple non?

Step 5 - Modifier le script XML: la lumière

Maintenant nous allons modifier quelques paramètres afin d'en observer les effets. Commençons par la lumière. Voici le noeud light (lumière):
<light name="my_light" type="OMNI" render="FALSE" >
    <position x="0.0" y="100.0" z="100.0" />
    <diffuse r="1.0" g="1.0" b="1.0" a="1.0" />
</light>
Actuellement le tore est éclairé par une lumière blanche. Nous allons changer cette couleur par du rouge. Pour ce faire, vous allez changer, dans le code source, la ligne suivante dans le noeud light:
    <diffuse r="1.0" g="1.0" b="1.0" a="1.0" />
par celle-ci:
    <diffuse r="1.0" g="0.0" b="0.0" a="1.0" />
Une lumière rouge est simplement une lumière possédant l'attribut r (red pour rouge) à 1.0, l'attribut g (green pour vert) à 0.0 et l'attribut b (blue pour bleu) aussi à 0.0. Maintenant, sauvegardez le script avec [CTRL]+[S], et reloadez la scène en faisant apparaître le menu contextuel et en cliquant sur "Reload Last HyperGraph". Si tout s'est bien passé, vous devriez avoir le résultat suivant:

Step 6 - Modifier le script XML: l'animation

Passons à présent à l'animation. Il existe une quantité de façon d'effectuer l'animation des objets dans Hyperion. La plus simple est d'utiliser les instructions fournies directement par le script XML. Nous allons donc modifier le noeud mesh que voici:
<mesh name="my_torus" render="TRUE" shape_type="TORUS" lighting="TRUE"
      auto_spin="TRUE" polygon_mode="SOLID" >

    <position x="0.0" y="0.0" z="0.0" />

    <torus radius="50.0" vertex_density="20" section_radius="15.0"
              average_normals="TRUE" />

    <attach_material name="mat_torus" />
    <vertices_color r="1.0" g="1.0" b="1.0" a="1.0" />
    <spin_values x="0.0" y="0.0" z="0.0" />
</mesh>
Vous allez changer, dans l'éditeur de texte, la ligne suivante dans le noeud light:
    <spin_values x="0.0" y="0.0" z="0.0" />
par celle-ci:
    <spin_values x="0.4" y="0.0" z="0.0" />
La valeur 0.4 représente une valeur d'angle de rotation autour de l'axe des X de la scene 3D. Maintenant, sauvegardez le script avec [CTRL]+[S], et reloadez la scène en faisant apparaître le menu contextuel et en cliquant sur "Reload Last HyperGraph". Si tout s'est bien passé, vous devriez avoir le résultat suivant:

Et oui, le tore est animé et effectue une rotation autour de l'axe des X.

Step 7 - Modifier le script XML: l'affichage en fil de fer

Il est parfois intéressant de représenter un objet en fil de fer: cela permet d'apprécier plus facilement les parties cachées ou de mieux saisir sa complexité. Pour afficher le tore en fil de fer, modifiez la ligne suivante:
<mesh name="my_torus" render="TRUE" shape_type="TORUS" lighting="TRUE"
      auto_spin="TRUE" polygon_mode="SOLID" >
par celle-ci:
<mesh name="my_torus" render="TRUE" shape_type="TORUS" lighting="TRUE"
      auto_spin="TRUE" polygon_mode="WIREFRAME" >
Maintenant, sauvegardez le script avec [CTRL]+[S], et reloadez la scène en faisant apparaître le menu contextuel et en cliquant sur "Reload Last HyperGraph". Si tout s'est bien passé, vous devriez avoir le résultat suivant:

Voilà, nous sommes arrivés au terme de ce premier tutorial de prise en main d'Hyperion. Maintenant vous disposez des notions élémentaires qui vous permettront d'aborder les tutoriaux fournis avec facilité. A vous de jouer!

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Développeur - Scripts Loading

Chargement des scènes 3D

Cette barre de menu est relativement simple et contient 3 menus: File, Tools et Help.

Menu File:

  • Reload Last Hypergraph: permet de recharger le script Hyperion courant après y avoir apporté des modifications.
  • Load XML Hypergraph: permet de charger un script Hyperion. Un script Hyperion porte l'extension .xml ou .hsdl.
  • Recent Hypergraphs: permet d'accéder aux 10 derniers hypergraphes ouverts.
Le chargement d'un hypergraphe (scène 3D dans la terminologie Hyperion) peut se faire de 2 manières:
  • Par le Menu File
  • Par un drag'n'drop directement depuis l'Explorer de Windows.

Menu Tools:

  • Show Output Debug: affiche la fenêtre de deboguage des scripts LUA. Dans cette fenêtre, toutes les informations passées à la fonction HYP_Trace() y seront affichées (voir LUA Debug).
  • Toggle Display Mouse Coords: permet d'activer ou de désactiver l'affichage des coordonnées de la souris dans le repère 2D d'Hyperion: le point (0, 0) se situant au centre de l'écran, l'axe des X croissant de gauche à droite et celui des Y de bas en haut. Les coordonnées de la souris sont très pratiques pour placer rapidement des hud et autres gui_buttons afin de créer l'interface graphique de votre démo.
  • Text Editor: lance l'éditeur de texte livré par défaut avec Hyperion. Le choix de l'éditeur de texte à lancer se fait dans le fichier de configuration d'Hyperion, hyperion.conf situé à la racine d'Hyperion.
  • Calculator: lance la calculatrice de Windows.

Menu Help:

  • Show HyperGraph Infos: affiche la boîte de dialogue qui donne les informations sur la scène courante. Ces informations doivent être spécifiées dans le script XML au niveau du noeud scene avec l'élément infos.
  • English Reference Guide: ouvre le présent guide de référence en anglais.
  • French Reference Guide: ouvre le guide de référence en français.
  • About Hyperion...: affiche la boîte de dialogue des crédits.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Développeur - HSDL

Voici une introduction rapide aux principes de base de réalisation d'une scène 3D temps réel avec Hyperion.

1 - Le XML

Le Langage de Description de Scène d'Hyperion ou encore HSDL (pour Hyperion Scene Description Language) est basé sur le standard actuel XML.

Le XML: petits rappels

Les documemts XML sont composés d'espace de stockage, nommés entités, qui contiennent des données. Ces données sont constituées de caractères qui représentent les données elles-même et de marqueurs (encore appelés balises) qui sont destinés à définir l'organisation logique des données. Le format XML fournit un ensemble de mécanismes pour imposer des contraintes sur l'organisation des données ainsi que leur structure logique.

Les points forts du XML sont les suivants:
  • XML est capable de supporter un grand nombre de domaines applicatifs.
  • Les documents XML sont lisibles directement par un programmeur et sont raisonnablement clairs.
  • Les documents XML sont faciles à créer.

Edition d'un fichier XML

Mais qu'est-ce qu'un document XML exactement? Un document XML est un simple fichier texte (qui porte souvent l'extension .xml) éditable avec n'importe quel éditeur de texte.

Attention: les logiciels du genre Microsoft Word ne sont pas de simples éditeurs de texte. En effet, ils ajoutent une quantité d'éléments de contrôle et de présentation qui vont perturber et faire échouer le chargement d'une scène avec Hyperion.

Si vous n'avez pas encore d'éditeur de texte atitré, en voici un:
  • Notepad++: c'est un éditeur de texte totalement gratuit. Il supporte la coloration syntaxique pour la plupart des langages dont XML et LUA. Notepad++ est intégré dans Hyperion et est accessible depuis le menu "Tools". Le site officiel de Notepad++ est: http://notepad-plus.sourceforge.net

2 - Structure d'un code source

Structure d'un code source en HSDL

Un code source (ou simplement source) en HSDL (donc un document XML) décrit l'ensemble des données de la scène 3D sous forme arborescente. Un source en HSDL est un fichier texte portant l'extension .xml. Ce source est composé de 2 parties principales et obligatoires:
  • un marqueur indiquant que l'on a à faire à un document de type XML. Ce marqueur est de la forme:
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
    Ce marqueur doit être la première ligne du fichier XML. Voyons de plus prés les différents éléments:
    • version: indique la version xml utilisée dans le fichier. La 1.0 est la plus employée actuellement mais la version 1.1 du standard est prête.
    • encoding: spécifie l'encodage des caractères dans le document XML. "ISO-8859-1" supporte les caractères latins et les caractères accentués!
    • standalone: indique que le document XML est autonome, dans le sens où il ne dépend pas d'autres fichiers comme les DTD (Document Definition Type) ou autres schémas.

  • un élément racine contenant d'autres éléments XML. Les marqueurs (ou tags ou balises) sont similaires à ceux utilisés par le HTML, c'est-à-dire qu'un marqueur ouvrant ressemble à <marque> et un marqueur fermant à </marque>. L'élément racine ou noeud racine (root node) dans la terminologie HSDL est le suivant:
    <hyperion>
Voyons tout cela de plus près avec un exemple:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<hyperion>

<!--
====== SCENE.
Scene node. The scene node describes how the new window will be (size,
background color, ...).
-->
<scene name="hypergraph_01" display_fps="TRUE" show_ref_grid="TRUE" >
    <window_size width="800" height="600" />
    <background_color r="0.1" g="0.1" b="0.2" />
</scene>

<!--
====== CAMERA.
The camera node. A scene can have more than one camera, but only one
is active at a given time.
-->
<camera name="Main_Camera" navigation_mode="FLY" >
    <position x="0.0" y="50.0" z="150.0" />
</camera>

</hyperion>

Règles de codage

  • A la différence de HTML, XML est sensible à la casse, c'est-à-dire que <camera> et <Camera> et <CAMERA> sont 3 marqueurs différents. Donc attention lors de la copie de code HSDL!

  • Les commentaires débutent par <!-- et se terminent par -->. Ils sont indispensables pour la bonne compréhension du code par le lecteur, mais pas obligatoires pour Hyperion. Ils sont autorisés n'importe où dans le document à condition qu'ils ne soient pas insérés au mileu d'un marqueur. Par exemple, la syntaxe
    <camera_name <!-- un commentaire -->>Main_Camera</camera_name>
    n'est pas valide et engedrera une erreur de la part du parser Hyperion.

  • Tous les marqueurs Hyperion sont écrits en lettres minuscules et les différents mots d'un marqueur sont séparés par le symbole "_" (underscore).

  • Chaque marqueur possède un tag ouvrant et fermant:
    <camera>......</camera>

    3 - Les HyperGraphs

    HyperGraph

    Un source HSDL est une hiérarchie de noeuds, le noeud racine étant matérialisé par <hyperion>. Tous les autres noeuds contenus à l'intérieur du noeud racine composent les différents éléments de la scène 3D. L'arborescence de noeuds décrivant une scène est appelée HyperGraph:

    L'HyperGraph est aussi l'autre dénomination pour source HSDL. La scène 3D correspondant à cet hypergraph peut être la suivante:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<hyperion>

<!--
SCENE
-->
<scene name="HSDL_HyperGraph_01" >
    <window_size width="800" height="600" />
    <background_image filename="03_textures/adrift.jpg" />
</scene>

<!--
CAMERA
-->
<camera name="Main_Camera" navigation_mode="FLY" >
    <position x="0.0" y="50.0" z="200.0" />
</camera>

<!--
LIGHT
-->
<light name="light_01" >
    <position x="0.0" y="250.0" z="150.0" />
</light>

<!--
MODEL
-->
<model name="skylab" filename="02_models/skylab.3ds" lighting="TRUE">
    <position x="0.0" y="0.0" z="0.0" />
</model>

</hyperion>

    Le résultat du chargement de ce source donne ceci dans Hyperion:

    Hyperion - Guide de Référence
    Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Développeur - Configuration File

Fichier de configuration d'Hyperion

Hyperion dispose d'un fichier XML de configuration utile pour personnaliser le lancement. Ce fichier se trouve à la racine d'Hyperion et se nomme hyperion.conf. Ce fichier dispose des noeuds XML suivants:
  • startup_params
  • text_editor
  • export
Le noeud startup_params contient les attributs suivants:
  • auto_load: contient le nom d'un script XML (*.xml) ou d'un binaire (*.bin) à charger automatiquement au lancement d'Hyperion. Ce fichier de script doit être impérativement situé dans la racine d'Hyperion, au même niveau que l'exécutable Hyperion.exe. Les données de ce script peuvent être situées dans des sous répertoires relativement au script.
  • fullscreen: permet de forcer le démarrage d'Hyperion en mode fullscreen si si fullscreen="1".
  • width: largeur de la fenêtre en mode fullscreen.
  • height: hauteur de la fenêtre en mode fullscreen.
  • fsaa: permet de spécifier le nombre de samples (ou facteur FSAA) pour le Full Scene Anti Aliasing. Si fsaa est égal à 0 alors le FSAA est désactivé. Le FSAA est activé pour les valeurs suivantes du facteur: 2, 4, 8, 16.
  • trace_level: régle le niveau de trace à ecrire dans le fichier de log d'Hyperion.
    • NORMAL: niveau de trace par défaut.
    • DEBUG: traces plus détaillées. Pratique pour l'équipe de support d'oZone3D.
    • NONE: traces désactivées. Aucun fichier de log n'est crée.
Le noeud text_editor contient les attributs suivants:
  • exe_name: indique le nom de de l'exécutable de l'editeur de texte que l'on peut lancer depuis le menu Tools.
Le noeud export contient les attributs suivants:
  • screenshots_dir: indique le nom du répertoire de destination des captures d'écran faites par script LUA avec la fonction HYP_Camera.MakeScreenshot.
  • bin_export_dir: indique le nom du répertoire de destination des fichiers binaires de scène lors des exports avec CTRL+E.
Si ce fichier est absent, les valeurs par défaut sont les suivantes:
<hyperion_config>
    <startup_params auto_load="" fullscreen="0" width="1024" height="768" fsaa="0" trace_level="NORMAL" />
    <text_editor exe_name="./npp/notepad++.exe" />
    <export screenshots_dir=""
               bin_export_dir="" />
</hyperion_config>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA

Index des Noeuds Hyperion

audio
Permet de charger et de lire des fichiers audio (*.wav, *.mp3, *.xm, *.s3m, etc).
box
Permet de construire rapidement une boîte texturée.
camera
Gestion de la caméra (ou des caméras). Tout ce qui concerne la visualisation de la scène (champs de vision, mode et sensibilité de déplacement, limite de déplacement dans la scène, etc) se traite dans ce noeud.
curve
Permet de tracer n'importe quelle courbe 3D. La plus grande partie du travail se faisant avec du scripting LUA.
font
Gestion du texte en coordonnées d'écran (texte 2D) ou de la scène (texte 3D). Chargement des polices TrueType (*.ttf).
gizmo
Ce noeud est un petit repère à 3 axes, qui n'a pas de représentation physique propre. Si on active son affichage (render_state), on verra 3 petits axes orientés, symbolisant un repère. Il est utilisé par exemple avec les systèmes de particules (par exemple, en rendant le gizmo insivisible, on simule une source d'émission de particules...).
gui_button
Ce noeud permet d'intégrer des boutons intéractifs déclenchant un script LUA lors d'un clic, d'un rollover, etc.
hotkey
Noeud permettant de définir quelle touche sera une hotkey (touche de déclenchement d'action spécifique). Permet d'assigner le déclenchement de n'importe quel script LUA (à condition qu'il soit déjà écrit et enregistré) sur une des 12 touches clavier définies.
hud
Noeud permettant de créer des HUD ou Head Up Display.
hyperion
Noeud racine d'un hypergraphe. Obligatoire.
include
Permet d'inclure d'autres codes sources au sein d'un même fichier. Permet de faire de la programmation modulaire en répartissant le code source complet d'un projet entre plusieurs fichiers sources de taille plus petite.
interval
Permet de découper une démo en plusieurs parties (plages temporelles) et d'exécuter des scripts (LUA) pour chacunes de ces parties.
light
Gestion des lumières, avec toutes les possibilités de réglage via de nombreux attributs. Ce noeud donne toute la valeur à une scène, puisque les objets (leurs matériaux et textures) réagissent en fonction de l'éclairage.
material
Permet de créer des matériaux au choix, en spécifiant leur propriétés (facteurs de réflexion, opacité, etc) en vue de les plaquer sur des modèles (leur sous mesh) importés ou sur des mesh créés directement dans Hyperion (cf. noeud ). En fixant les valeurs de ces paramètres, on peut obtenir de la transparence, un effet de réflexion accru, etc.
mesh
C'est un des noeuds fondamentaux (avec model, light et camera) puisqu'il permet la représentation visuelle de n'importe quel type de forme 3D: depuis les formes basiques générées dans Hyperion (plan, tore, sphère ou encore terrain) aux formes complexes créées avec des logiciels de modélisation tel 3D Studio MAX. Le mesh est par exemple le seul objet de la scène sur lequel on peut appliquer du bumpmapping ou faire du picking.
model
C'est un des noeuds fondamentaux (avec mesh, light et camera) puisqu'il permet le chargement de modèles 3D à partir de fichiers sur le disque dur. Le modèle est une collection de meshes.
motion_path
Permet de spécifier un chemin de parcours destiné à être emprunté par des objets (modèles, caméras, etc). En spécifiant les positions clé et les tangentes correspondantes, Hyperion calculera par interpolation toutes les positions intermédiaires.
mouse
Permet de reprogrammer les événements de la souris (click droit et gauche, moelette et mouvement) à l'aide de scripts.
particle_system
Permet d'intégrer un système de particules. C'est dans un tel noeud que l'on définit le nombre de particules à utiliser et leur texture, l'ajout des noeuds jouant le rôle d'émetteurs de particules, d'actions spécifiques aux particules ainsi que les noeuds obstacles de particules.
particle_system_action
Permet de spécifier des actions prédéfinies sur les particules, comme une variation de vitesse, une variation de couleur, de la gravité, un point d'attraction, etc.
particle_system_emitter
Permet de spécifier les caractéristiques d'un émetteur de particules ( forme de base, type d'emission, durée de vie des particules, ...).
particle_system_obstacle
Permet de mettre en place des obstacles afin de dévier les particules de leur trajectoire.
play_list
Permet de regrouper au sein d'une même liste, plusieurs pistes audio afin de créer une playlist comme dans le logiciel Winamp. Bien sûr, Hyperion va plus loin que la simple lecture séquentielle des pistes: il permet d'asscocier des scripts à chaque pistes audio.
primitive
Ce noeud est un outil de mise au point uniquement. Il permet de définir les formes primitives de base usuelles (plan, disque, sphère) uniquement pour visualiser la position de certains objets que l'on incorporera par la suite. Ces formes ne seront pas prises en compte dans les algorithmes de réflexion d'objets, de transparence, etc. Il ne s'agit que d'un plus qu'offre Hyperion pour aider à construire son environnement 3D.
projector
Pseudo objet simulant le fonctionnement d'un projecteur d'images. Il permet de reproduire le fonctionnement d'une lampe torche ou d'un projecteur de film par exemple. D'autres effets plus avancées comme la lumière extérieure qui filtre au travers d'une fenêtre peuvent être mis en place grâce au projecteur.
scene
Permet de décrire les éléments de base de la scène 3D, comme la taille de la fenêtre d'affichage, la couleur d'arrière plan, le nom de l'auteur, l'activation du module de picking d'objets ou de l'option de capture d'écran, etc.
script
Permet d'intégrer du script LUA spécialement écrit pour interagir avec les objets de la scène 3D.
sequence
Permet de spécifier une séquence d'actions à exécuter. Le passage d'une séquence à l'autre est réalisé par des triggers (déclencheurs).
shader_program
Permet d'intégrer du script écrit en OpenGL Shading Language (OGLSL).
skybox
Pour inclure des skyboxes et créer rapidement des environnements réalistes.
texture
Permet d'importer des fichiers images (*.bmp, *.jpg, *.tif, *.png, *.tga, ...) pour en faire des textures à appliquer aux différents objets (les meshes principalement).
timer
Permet de créer des timer qui exécutent des scripts LUA à intervalles de temps fixes.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - Data Types

Types de données

Voici les types de données utilisés dans les scripts Hyperion.
  • STR63: chaîne de caractères d'une longueur maximale de 63 caractères.
    Exemple: "Modele_Principal"

  • STR127: chaîne de caractères d'une longueur maximale de 127 caractères.

  • STR255: chaîne de caractères d'une longueur maximale de 255 caractères.

  • STR4095: chaîne de caractères d'une longueur maximale de 4095 caractères.

  • REAL: nombre réel. Principalement utilisé pour les positions.
    Exemple: "4.72"

  • CLAMPED_REAL: nombre réel compris entre -1.0 et 1.0 ou 0.0 et 1.0 selon les cas. Principalement utilisé pour les couleurs.
    Exemple: "0.72"

  • INTEGER: nombre entier.
    Exemple: "320"

  • CLAMPED_INTEGER: nombre entier compris entre 0 et 255. Principalement utilisé pour les couleurs.
    Exemple: "192"

  • BOOLEAN: type logique exprimant un état vrai ou faux. Ne peut prendre que les 2 valeurs suivantes:
    • "TRUE"
    • "FALSE"

  • ENUM: donnée pouvant prendre une valeur parmi plusieurs.
    Exemple: voir les facteurs de blending par exemple (mesh, hud).

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - audio

Noeud <audio>

Fonction

Le noeud audio permet de charger des fichiers audio (*.wav, *.mp3, ...) et de les jouer.

Syntaxe générale

<audio />
Noeud exhaustif avec attributs et valeurs par défaut:
<audio
    name=""
    filename=""
    looping="TRUE"
    play="TRUE" />

audio

audio est la balise xml qui définit un noeud audio.

Attributs:

  • filename - [STR255] - nom du ficher audio. Le type de fichier audio jouable dépend du type de plugin audio disponible:
    • plugin FMOD: permet de jouer quasiment tous les types de fichers audio
    • plugin OpenAL: permet de jouer les wav.

  • looping - [BOOLEAN] - active ou désactive le mode loop (boucle). Si ce mode vaut TRUE, le fichier audio est joué continuellement en boucle. Si ce mode vaut FALSE, le fichier audio est joué une seule fois - valeur par défaut: TRUE

  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • play - [BOOLEAN] - active ou désactive la lecture du fichier audio. Cet état est utile lorsque l'on ne souhaite pas démarrer la lecture d'un fichier audio au début du script. On met dans ce cas l'état à FALSE. La lecture du fichier audio peut ensuite être enclenchée par scripting LUA. Se reporter à l'API Hyperion/LUA pour plus d'informations - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.
Exemple:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" />
    <camera name="myCamera" />
    <audio name="bluishbg" filename="mp3/music.mp3" looping="FALSE" play="TRUE" />
</hyperion >

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - box

Noeud <box>

Fonction

Le noeud box permet de construire, de manière simple, une boîte en précisant ses dimensions (largeur, hauteur et profondeur) et les textures à appliquer sur les faces. Cette fonctionnalité est très pratique pour concevoir rapidement des illustrations pour les boîtes de packaging de logiciels. Pour avoir un contrôle plus precis de la boîte, il faut passer par la création complète d'une boîte à partir, par exemple, de mesh de type PLANE.

Si une face ne possède pas de texture, il est possible de lui affecter une couleur unie. Par défaut cette couleur est le noir.

La box ne peut pas être utilisé dans certains cas comme par exemple les ombres volumiques. En effet, pour que l'algorithme des shadow-volumes fonctionne, il faut des surfaces fermées. Or la box est un assemblage de mesh-planes donc de surfaces ouvertes.

Syntaxe générale

<box>
    <color />
    <material_ambient />
    <material_diffuse />
    <material_specular />
    <orientation />
    <position />
    <texture />
</box>
Noeud exhaustif avec attributs et valeurs par défaut:
<box
    name=""
    render="TRUE"
    type="CUBE"
    width="100.0"
    height="100.0"
    depth="100.0"
    lighting="FALSE"
    vertex_density="1" >

    <color
        face="RIGHT"
        r="0.0"
        g="0.0"
        b="0.0"
        a="1.0" />

    <material_ambient
        r="0.9"
        g="0.9"
        b="0.9"
        a="1.0" />

    <material_diffuse
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <material_specular
        r="0.2"
        g="0.2"
        b="0.2"
        a="1.0"
        exp="24.0" />

    <orientation
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <texture
        face="RIGHT"
        name="" />

</box>

box

box est la balise xml qui définit un noeud box.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la box - valeur par défaut: TRUE

  • lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage lors du rendu de la box. Lorsque les calculs d'éclairage sont activés, les valeurs des coefficients des matéraux sont prises en compte - valeur par défaut: FALSE

  • width - [REAL] - largeur de la box - valeur par défaut: 100.0

  • height - [REAL] - hauteur de la box - valeur par défaut: 100.0

  • depth - [REAL] - profondeur de la box - valeur par défaut: 100.0

  • type - [ENUM] - type de la box:
    • USER: l'utilisateur définit lui-même les dimensions de la boîte à l'aide des attributs width, height et depth.
    • DVD: boîte au format DVD: 136x192x15
    • CDROM: boîte au format CDROM: 143x125x11
    • CUBE: boîte cubique: 100x100x100 - valeur par défaut

  • vertex_density - [INTEGER] - spécifie le facteur de densité des vertices pour toutes les faces de la boîte. Par défaut chaque face possède 2 vertices le long de ses 2 dimensions. Cela fait donc 4 vertices par face.
    Avec un facteur de 30, cela fera: (30*2) * (30*2) = 3600 faces.
    Dès que le facteur de densité est supérieur à 1, le mode haute performance pour le rendu des faces est activé.
    Plus la densité du maillage est fine et plus précis seront les calculs de lumière et de réflection spéculaire - valeur par défaut: 1

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément position

position spécifie la position de la boîte dans la scène 3D.

Attributs:
  • x - [REAL] - Coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z de la position - valeur par défaut: 0.0

Elément orientation

orientation spécifie l'orientation de la boîte autour des axes de son repère local.

Attributs:
  • pitch - [REAL] - Angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - Angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - Angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0
Exemple
<box>
    <orientation pitch="30.0" yaw="45.0" />
</box>
Dans cet exemple, la boîte effectue une rotation de 30.0 degrés autour de l'axe des X et de 45.0 degrés autour de l'axe des Y.

Elément texture

texture spécifie le nom de la texture à appliquer sur une face de la boîte.

Attributs:
  • face - [ENUM] - facede la boîte:
    • RIGHT
    • LEFT
    • TOP
    • BOTTOM
    • FRONT
    • BACK
  • name - [STR127] - nom de la texture à appliquer.

Elément color

color spécifie la couleur à appliquer sur une face de la boîte.

Attributs:
  • face - [ENUM] - face de la boîte:
    • RIGHT
    • LEFT
    • TOP
    • BOTTOM
    • FRONT
    • BACK
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • r255 - [CLAMPED_INTEGER] - composante rouge de la couleur. Valeur entière comprise entre 0 et 255 - valeur par défaut: 0
  • r255 - [CLAMPED_INTEGER] - composante verte de la couleur. Valeur entière comprise entre 0 et 255 - valeur par défaut: 0
  • r255 - [CLAMPED_INTEGER] - composante bleue de la couleur. Valeur entière comprise entre 0 et 255 - valeur par défaut: 0

Elément material_ambient

material_ambient spécifie le facteur de réflection ambiant des faces de la boîte.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément material_diffuse

material_diffuser spécifie le facteur de réflection diffus des faces de la boîte.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément material_specular

material_specular spécifie le facteur de réflection spéculaire des faces de la boîte.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • exp - [REAL] - exposant spéculaire - valeur par défaut: 24.0
Exemple
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" show_ref_grid="TRUE" >
        <background_color r="0.3" g="0.1" b="0.0" />
    </scene>
    <camera name="myCamera" />
    <texture name="front_tex" filename="fakir.bmp" />
    <texture name="right_tex" filename="metal16.gif" />
    <box name="myBox" render="TRUE" type="USER" width="120.0" height="100.0" depth="50.0"
         lighting="FALSE" vertex_density="4" >
        <position x="0.0" y="50.0" z="0.0" />
        <material_ambient r="0.4" g="0.4" b="0.4" a="1.0" />
        <material_diffuse r="0.6" g="0.6" b="0.6" a="1.0" />
        <material_specular r="0.1" g="0.1" b="0.1" a="1.0" exp="24.0" />
        <orientation pitch="0.0" yaw="0.0" roll="0.0" />
        <texture face="FRONT" name="front_tex" />
        <texture face="RIGHT" name="right_tex" />
        <color face="TOP" r="0.2" g="0.2" b="0.2" />
    </box>
</hyperion>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - camera

Noeud <camera>

Fonction

Le noeud camera est un des noeuds les plus importants du script XML. Il permet de spécifier l'entité par laquelle est vue la scène 3D. Une caméra (au niveau du moteur oZone3D) est principalement définie par une position dans l'espace, un point de vision (lookat), un champ de vision (fov) et des plans de clipping proche et lointain (near and far clipping planes). Plusieurs caméras peuvent être déclarées, mais seule la première ayant un état actif (camera_active_state) sera prise en compte. Les autres caméras pouvant être activées à leur tour par script LUA (ou autre: Python, ...).

Par défaut, Hyperion crée une caméra de type FLY: cette caméra permet de se déplacer n'importe où dans la scène 3D.

Syntaxe générale

<camera>
    <add_child />
    <limit_position />
    <limit_angle />
    <lookat />
    <orientation />
    <position />
    <up />
    <viewport />
</camera>
Noeud exhaustif avec valeurs par défaut:
<camera
    name=""
    navigation_mode="FLY"
    active="TRUE"
    fov="60.0"
    mouse_move_speed="0.25"
    mouse_wheel_speed="100.0"
    keyboard_speed="100.0"
    display_position="FALSE"
    display_view_direction="FALSE"
    display_orientation="FALSE"
    motion_path=""
    play_motion_path="FALSE"
    motion_path_time_offset="0.0"
    motion_path_time_step="0.01"
    display_motion_path_curve="FALSE"
    display_motion_path_tangents="FALSE"
    near_plane="1.0"
    far_plane="4000.0"
    target_object=""
    frustum_culling_test_shape="BOUNDING_SPHERE"
    inertia="TRUE"
    linear_speed="100.0"
    inertia_linear_damping="500.0"
    widescreen="FALSE" >

    <add_child
        name="" />

    <limit_position
        x_min="-10000.0"
        y_min="-10000.0"
        z_min="-10000.0"
        x_max="10000.0"
        y_max="10000.0"
        z_max="10000.0"  />

    <limit_angle
        pitch_min="-80.0"
        pitch_max="80.0" />

    <lookat
        x="0.0"
        y="0.0"
        z="0.0"
        w="1.0" />

    <orientation
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

    <position
        x="0.0"
        y="100.0"
        z="150.0" />

    <up
        x="0.0"
        y="1.0"
        z="0.0" />

    <viewport
        x="0.0"
        x="0.0"
        width="1024"
        height="768" />
</camera>

camera

camera est la balise xml qui définit un noeud camera.

Attributs:

  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la caméra - valeur par défaut: TRUE

  • far_plane - [REAL] - distance sur l'axe des Z de la caméra du plan de clipping lointain. Les objets situés après ce plan ne seront pas affichés (c'est le far plane clipping) - valeur par défaut: 4000.0

  • fov - [REAL] - spécifie le Field Of View en degrés - valeur par défaut: 60.0

  • display_motion_path_curve - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) l'affichage du motion path - valeur par défaut: FALSE

  • display_motion_path_tangents - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) l'affichage des tangentes du motion path - valeur par défaut: FALSE

  • display_position - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) l'affichage de la position de la caméra sous la forme <X Y Z> dans la partie supérieure gauche de la zone cliente 3D - valeur par défaut: FALSE

  • display_view_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) l'affichage du vecteur de vue de la caméra sous la forme <X Y Z> dans la partie supérieure gauche de la zone cliente 3D - valeur par défaut: FALSE

  • display_orientation - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) l'affichage de l'orientation de la caméra sous la forme des angles d'Euler <pitch yaw roll> dans la partie supérieure gauche de la zone cliente 3D - valeur par défaut: FALSE

  • keyboard_speed - [REAL] - sensibilité du clavier pour le backward, forward et le strafe - valeur par défaut: 100.0

  • motion_path - [STR127] - nom du motion path. Ce nom doit référencer un noeud motion_path valide.

  • motion_path_time_offset - [REAL] - permet de contrôler la valeur temporelle de départ de l'animation. Par défaut cette valeur de départ est le temps normalisé 0.0. Cet offset permet placer plusieurs objets sur un motion-path avec un décalage (offset) pour chacun d'eux. - valeur par défaut: 0.0

  • motion_path_time_step - [REAL] - permet de contrôler la vitesse d'animation en spécifiant l'incrément temporel le long du motion-path. Le temps est normalisé le long du motion-path, c'est à dire que le temps vaut 0.0 pour la première keyframe et vaut 1.0 pour la dernière. - valeur par défaut: 0.01

  • mouse_wheel_speed - [REAL] - sensibilité de la roulette de la souris pour le backward et le forward - valeur par défaut: 100.0

  • mouse_move_speed - [REAL] - sensibilité des mouvement de la souris pour les rotations - valeur par défaut: 0.25 mouse_move_speed

  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • navigation_mode: - [ENUM] - mode de navigation de la caméra - valeur par défaut: FLY
    Les valeurs suivantes sont acceptées:
    • WALK: permet de se déplacer seulement sur le plan X-Z.
    • EXAMINE: déplace la caméra autour d'une sphère dont le centre est positionné à l'aide de <camera_lookat>. Dans ce mode la caméra ne peut rentrer dans la sphère de rayon 10.0 unités et centrée en <camera_lookat>.
    • FLY: permet de se déplacer n'importe où dans la scène. Dans ce mode, un appui sur [Ctrl]+[Left_Mouse] permet de faire du strafe (ou pan). Valeur par défaut.
    • DOOM_LIKE: comme le mode FLY sauf qu'il n'y a plus besoin d'appuyer sur le bouton gauche de la souris pour tourner la caméra. Dans ce mode, le curseur de la souris est automatiquement caché.
    • QUAKE_LIKE: comme le mode WALK sauf qu'il n'y a plus besoin d'appuyer sur le bouton gauche de la souris pour tourner la caméra. Dans ce mode, le curseur de la souris est automatiquement caché.
    • FIXED: caméra fixe sans possibilité de déplacement.

    Fonctionnalités des touches en fonction du clavier (suisse, français ou anglais):
    • Clavier avec un layout suisse
      • [W]: camera forward
      • [S]: camera backward
      • [A]: camera left strafe
      • [D]: camera right strafe
    • Clavier avec un layout français ou anglais (USA)
      • [Z]: camera forward
      • [S]: camera backward
      • [Q]: camera left strafe
      • [D]: camera right strafe

  • near_plane - [REAL] - distance sur l'axe des Z de la caméra du plan de clipping proche. Les objets situés avant ce plan ne seront pas affichés (c'est le near plane clipping). - valeur par défaut: 1.0

  • play_motion_path - [BOOLEAN] - active (TRUE - défaut) ou désactive (FALSE) l'animation de la position le long d'un motion path - valeur par défaut: TRUE

  • target_object - [STR127] - nom de l'objet qui servira de cible de visée à la caméra, c'est à dire l'objet sur lequel la caméra pointe son vecteur vision. Cela permet de garder un objet spécifique toujours dans le champ de vision de la caméra. Ce nom doit référencer un noeud valide.

  • frustum_culling_test_shape - [ENUM] - permet de spécifier le type de volume englobant utilisé lors des tests de clipping dans la pyramide de visualisation de la camera. Les valeurs suivantes sont acceptées:
    • BOUNDING_SPHERE - valeur par défaut
    • BOUNDING_BOX

  • inertia - [BOOLEAN] - active (TRUE - défaut) ou désactive (FALSE) la gestion de l'inertie pour les mouvements de translation de la caméra - valeur par défaut: TRUE

  • linear_speed - [REAL] - fixe la vitesse linéaire de la caméra en unités par secondes. Même effet que keyboard_speed - valeur par défaut: 100.0

  • inertia_linear_damping - [REAL] - fixe le facteur d'amortissement de la vitesse linéaire en unités par secondes - valeur par défaut: 500.0

  • widescreen - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) le mode 16:9 - valeur par défaut: FALSE

Elément add_child

add_child permet d'ajouter un enfant à la caméra courante. Cela permet de mettre en place facilement des hiérarchies complexes. Toute transformation (rotation ou translation) du caméra courant sera répercutée sur les enfants. Ce permet de mettre en place de manière trés simple une démo du style Doom-Like ou un objet (par exemple un fusil) est attaché comme enfant à la caméra.

Attributs:
  • name - [STR127] - Nom de l'objet enfant.

Elément viewport

viewport spécifie la zone de l'écran dans laquelle sera rendue la scène 3D. Par défaut le viewport adopte les dimensions de la zone cliente 3D définies par <window_size>.

Attributs:
  • x - [INTEGER] - coordonnée X du point gauche-bas (left_down) du viewport - valeur par défaut: 0
  • y - [INTEGER] - coordonnée Y du point gauche-bas (left_down) du viewport - valeur par défaut: 0
  • width - [INTEGER] - largeur du viewport - valeur par défaut: 1024
  • height - [INTEGER] - hauteur du viewport - valeur par défaut: 768

Elément position

position spécifie la position dans la scène 3D.

Attributs:
  • x - [REAL] - Coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z de la position - valeur par défaut: 0.0

Elément orientation

orientation spécifie l'orientation initiale de la caméra. Mais cette orientation est interprété de deux façons selon le mode de navigation FLY ou EXAMINE. En mode FLY, les angles pitch, yaw et roll sont interprêtés de manière classique c'est à dire qu'ils expriment une rotation autour des axes du tripod local de la camera. En mode EXAMINE, ils expriment une rotation autour des axes absolus du monde 3D et l'angle roll n'est pas pris en compte. De plus en mode EXAMINE, il existe dès le départ un décalage de 90.0 degrés au niveau du yaw.

Attributs:
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0
Exemple
<camera name="cam" navigation_mode="EXAMINE" >
    <orientation pitch="20.0" yaw="90.0" />
</camera>
Cet exemple permet d'initialiser une caméra en mode EXAMINE en tenant compte du décalage de 90.0 sur l'angle yaw.

Elément lookat

lookat permet de positionner le point de vision de la caméra dans l'espace 3D de la scène. Le vecteur 4D lookat peut être utilisé de 2 façons:
  • si la coordonnée w est égale à 1.0: lookat représente une position dans la scène 3D.
  • si la coordonnée w est égale à 0.0: lookat représente le vecteur direction de la vue.

Attributs:
  • x - [REAL] - Coordonnée X du point de visée de la caméra - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y du point de visée de la caméra - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z du point de visée de la caméra - valeur par défaut: 0.0
  • w - [REAL] - Coordonnée W du point de visée de la caméra - valeur par défaut: 1.0

Elément up

up sécifie le vecteur d'orientation de la caméra.

Attributs:
  • x - [REAL] - Coordonnée X du point de visée de la caméra - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y du point de visée de la caméra - valeur par défaut: 1.0
  • z - [REAL] - Coordonnée Z du point de visée de la caméra - valeur par défaut: 0.0

Elément limit_position

limit_position permet de définir un parallélépipède 3D qui fixe le volume limite des positions de la caméra dans la scène 3D. Cette balise ne possède pas de sous balises mais des attributs xml.

Attributs:
  • x_min, y_min, z_min - [REAL] - position minimale limite. Elle correspond au coin gauche inférieur du parallélépipède. Par défaut ces 3 valeurs sont réglées à -10000.0.
  • x_max, y_max, z_max - [REAL] - position maximale limite. Elle correspond au coin droit supérieur du parallélépipède. Par défaut ces 3 valeurs sont réglées à 10000.0.

Exemple
<camera name="cam" >
    <limit_position x_min="-200.0" y_min="10.0" z_min="-200.0"
                       x_max="200.0" y_max="100.0" z_max="200.0" />
</camera>
Dans cet exemple, la caméra ne pourra jamais descendre en dessous de y=10.0. Pratique pour éviter de traverser le sol.

Elément limit_angle

limit_angle permet de définir les angles limites de rotation de la caméra. Cette instruction est principalement utilisée avec le mode EXAMINE pour limiter le pitch de la camera. Pratique pour limiter la caméra au niveau du sol par exemple.

Attributs:
  • pitch_min - [REAL] - angle pitch minimal en degrés - Valeur par défaut: -80.0.
  • pitch_max - [REAL] - angle pitch maximal en degrés - Valeur par défaut: 80.0.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - curve

Noeud <curve>

Fonction

Le noeud curve permet de tracer des courbes 3D de toutes sortes. L'initialisation du nombre de points de la courbe se fait au niveau du script XML (exemple une courbe avec 1000 points) tandis que l'initialisation des valeurs de position de chacun des ces points se fait par scripting LUA: voir les fonctions de manipulation des courbes.

Syntaxe générale

<curve />
Noeud exhaustif avec attributs et valeurs par défaut:
<curve
    name=""
    render="FALSE"
    group=""
    num_points="100"  />

Elément curve

curve est la balise xml qui défini un noeud curve.

Attributs:

  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du tripode du gizmo - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

  • num_points - [INTEGER] - nombre de points 3D composant la courbe. Valeur par défaut: 100.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - font

Noeud <font>

Fonction

Le noeud font permet d'afficher des informations sous forme textuelle à l'écran. Il utilise les polices TTF (True Type Fonts) présentes sous Windows. Les textes peuvent être affichés en coordonnées 2D ou 3D (pratique pour réaliser par exemple les graduations d'un axe).

Il est possible, à partir de la version 0.9.85, d'afficher du texte depuis un script LUA avec la fonction HYP_DrawText().

Se référer à la fin de cette page pour le code XML Hyperion pour créer cette scène:

Syntaxe générale

<font>
    <text_2d>
        <color />
        <position />
        <text />
    </text_2d>
    <text_3d>
        <color />
        <position />
        <text />
    </text_3d>
</font>
Noeud exhaustif avec attributs et valeurs par défaut:
<font
    name=""
    render="TRUE"
    ttf_name="Arial"
    size="14" >

    <text_2d>
        <color
            r="0.0"
            g="0.0"
            b="0.0" />

        <position
            x="0"
            y="0" />

        <text
            text="" />
    </text_2d>

    <text_3d>
        <color
            r="0.0"
            g="0.0"
            b="0.0" />

        <position
            x="0.0"
            y="0.0"
            z="0.0" />

        <text
            text="" />
    </text_3d>
</font>

Elément font

font est la balise xml qui définit un noeud font.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la font - valeur par défaut: TRUE

  • size - [INTEGER] - spécifie la taille de la police - valeur par défaut: 14

  • ttf_name - [STR127] - nom de la police TrueType utilisée: Arial, Verdana, Trebuchet MS, ... - valeur par défaut: Arial

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

    Elément text_2d

    text_2d permet de créer des sous-noeuds pour afficher des textes en coordonnées 2D à différentes positions.
    Syntaxe
    <font>
    <text_2d>
        <...>
        <...>
    </text_2d>
</font>

    Elément position - (text_2d.position)

    position spécifie la position de départ du texte en 2D. La position est exprimée en coordonnées d'écran, c'est à dire que la position X=0 et Y=0 correspond au coin gauche supérieur de la fenêtre de l'application.

    Attributs:
    • x - [INTEGER] - coordonnée X du début du texte - valeur par défaut: 0
    • y - [INTEGER] - coordonnée Y du début du texte - valeur par défaut: 0

    Elément color - (text_2d.color)

    color spécifie la couleur du texte.

    Attributs:
    • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 0.0
    • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 0.0
    • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 0.0

    Elément text - (text_2d.text)

    text spécifie le texte à afficher sous forme d'une chaîne de caractères.

    Attributs:
    • text - [STR255] - chaîne de caractères composant le texte.

    Elément text_3d

    text_3d permet de créer des sous-noeuds pour afficher des textes en coordonnées 3D à différentes positions.
    Syntaxe
    <font>
    <text_3d>
        <...>
        <...>
    </text_3d>
</font>

    Elément position - (text_3d.position)

    position spécifie la position de départ du texte en 3D. La position est exprimée en coordonnées de la scène 3D au même titre que la position de n'importe quel objet 3D (mesh, model, light, ...).

    Attributs:
    • x - [REAL] - coordonnée X du début du texte - valeur par défaut: 0.0
    • y - [REAL] - coordonnée Y du début du texte - valeur par défaut: 0.0
    • z - [REAL] - coordonnée Z du début du texte - valeur par défaut: 0.0

    Elément color - (text_3d.color)

    color spécifie la couleur du texte.

    Attributs:
    • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 0.0
    • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 0.0
    • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 0.0

    Elément text - (text_3d.text)

    text spécifie le texte à afficher sous forme d'une chaîne de caractères.

    Attributs:
    • text - [STR255] - chaîne de caractères composant le texte.
    Exemple
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" show_ref_grid="FALSE" >
        <background_color r="0.0" g="0.0" b="0.0" />
    </scene>
    <camera name="myCamera" />
    <font name="myFontArial14" render="TRUE" ttf_name="Arial" size="14" >
        <text_2d>
            <color r="1.0" g="1.0" b="0.0" />
            <position x="10" y="20" />
            <text text="Ceci est est texte 2D en Arial 14" />
        </text_2d>
    </font>
    <font name="myFontVerdana30" render="TRUE" ttf_name="Verdana" size="30" >
        <text_2d>
            <color r="0.0" g="1.0" b="1.0" />
            <position x="10" y="80" />
            <text text="Ceci est est texte 2D en Verdana 30" />
        </text_2d>
    </font>
    <font name="myFontTrebuchet24" render="TRUE" ttf_name="MS trebuchet" size="60" >
        <text_2d>
            <color r="1.0" g="0.0" b="1.0" />
            <position x="10" y="150" />
            <text text="Ceci est est texte 2D en Trebuchet 60" />
        </text_2d>
    </font>
</hyperion>

    Hyperion - Guide de Référence
    Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - gizmo

Noeud <gizmo>

Fonction

Le gizmo est un objet immatériel qui sert de point de pivot ou de référentiel lors d'animations. Il est trés utile lors de la mise au point de scènes complexes car il permet de voir, par exemple, la position d'un point particulier de l'espace. Le gizmo est une notion classique dans la plupart des logiciels de modélisation 3D: il est souvent appelé helper ou dummy object selon les cas.

Syntaxe générale

<gizmo>
    <add_child />
    <orientation />
    <position />
    <spin_values />
</gizmo>
Noeud exhaustif avec attributs et valeurs par défaut:
<gizmo
    name=""
    render="FALSE"
    auto_spin="FALSE"
    auto_update_direction="FALSE"
    display_motion_path_curve="FALSE"
    display_motion_path_tangents="FALSE"
    link_to_motion_path="FALSE"
    motion_path=""
    motion_path_time_offset="0.0"
    motion_path_time_step="0.001"
    play_motion_path="TRUE"  >

    <add_child
        name="" />

    <orientation
        ang="0.0"
        x="0.0"
        y="1.0"
        z="0.0" />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <spin_values
        x="0.0"
        y="0.0"
        z="0.0" />
</gizmo>

Elément gizmo

gizmo est la balise xml qui défini un noeud gizmo.

Attributs:
  • auto_spin - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la rotation autour des axes du repère local de l'objet. Les valeurs des angles de rotation doivent être spécifiées par la balise <spin_values> - valeur par défaut: FALSE
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

  • display_motion_path_curve - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du motion path - valeur par défaut: FALSE

  • display_motion_path_tangents - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des tangentes du motion path - valeur par défaut: FALSE

  • motion_path - [STR127] - nom du motion path auquel on attache le gizmo afin de réaliser des déplacements automatiques

  • motion_path_time_offset - [REAL] - permet de contrôler la valeur temporelle de départ de l'animation. Par défaut cette valeur de départ est le temps normalisé 0.0. Cet offset permet placer plusieurs objets sur un motion-path avec un décalage (offset) pour chacun d'eux. - valeur par défaut: 0.0

  • motion_path_time_step - [REAL] - permet de contrôler la vitesse d'animation en spécifiant l'incrément temporel le long du motion-path. Le temps est normalisé le long du motion-path, c'est à dire que le temps vaut 0.0 pour la première keyframe et vaut 1.0 pour la dernière. - valeur par défaut: 0.001

  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • play_motion_path - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'animation de la position le long d'un motion path - valeur par défaut: TRUE

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du tripode du gizmo - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément position

position spécifie la position dans la scène 3D.

Attributs:
  • x - [REAL] - Coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z de la position - valeur par défaut: 0.0

Elément orientation

orientation spécifie l'orientation du gizmo autour d'un axe arbitraire dans son repère local.

Attributs:
  • ang - [REAL] - Angle de rotation en degrés - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - Composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - Composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - Composante Z de l'axe de rotation - valeur par défaut: 0.0
  • pitch - [REAL] - Angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - Angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - Angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0
Exemple
<gizmo>
    <orientation pitch="90.0" roll="45.0" />
</gizmo>
Dans cet exemple, le gizmo effectue une rotation de 90.0 degrés autour de l'axe des X et de 45.0 degrés autour de l'axe des Z.

Elément add_child

add_child permet d'ajouter un enfant au gizmo courant. Cela permet de mettre en place facilement des hiérarchies complexes. Toute transformation (rotation ou translation) du gizmo courant sera répercutée sur les enfants.

Attributs:
  • name - [STR127] - Nom de l'objet enfant.

Elément spin_values

Spécifie les angles de rotation autour des axes de X, Y et Z. A chaque frame, les angles de rotation du gizmo sont incrémentés par les valeurs spécifiées. Cela entraîne donc une animation du gizmo par simple rotation autour des 3 axes.

Attributs:
  • x - [REAL] - Angle de rotation autour de l'axe des X en degrées - valeur par défaut: 0.0
  • y - [REAL] - Angle de rotation autour de l'axe des Y en degrées - valeur par défaut: 0.0
  • z - [REAL] - Angle de rotation autour de l'axe des Z en degrées - valeur par défaut: 0.0
Remarques
Les valeurs précédentes ne prennent effet que si l'attribut auto_spin est à TRUE.
Exemple
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" show_ref_grid="FALSE" >
        <background_color r="0.0" g="0.0" b="0.0" />
    </scene>
    <camera name="myCamera" />
    <gizmo name="myGizmo" render="TRUE" >
        <position y="30.0" />
    </gizmo>
    <font name="myFontArial14" render="TRUE" ttf_name="MS trebuchet" size="16" >
        <text_2d>
            <color r="1.0" g="1.0" b="0.0" />
            <position x="10" y="20" />
            <text text="Position du GIZMO: [0.0   30.0   0.0]" />
        </text_2d>
    </font>
</hyperion>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - gui_button

Noeud <gui_button>

Fonction

Le noeud gui_button permet de créer un des éléments de base d'une interface graphique: les boutons. Les boutons possèdent 2 états: Up et Down (haut et bas). A chacun des états peut être associé un script LUA. Le rollover est aussi géré: lorsque la souris passe sur un bouton ayant le rollover programmé, l'image de ce dernier change et un son est joué. Le gui_button fait référence à des huds pour les images ce qui offre la puissance des huds pour ajouter des effets visuels aux boutons.

Syntaxe générale

<gui_button >
    <position />
    <size />
</gui_button>
Noeud exhaustif avec attributs et valeurs par défaut:
<gui_button
    name=""
    down_image=""
    up_image=""
    oncheck_event_script=""
    onclick_event_script=""
    onuncheck_event_script=""
    rollover_image=""
    rollover_sound=""
    type="PUSH_BUTTON" >

    <position
        x="0.0"
        y="0.0" />

    <size
        width="64"
        height="32" />
</gui_button>

Elément gui_button

gui_button est la balise xml qui définit un noeud gui_button.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • down_image - [STR127] - nom du hud représentant l'image du bouton en position basse.

  • up_image - [STR127] - nom du hud représentant l'image du bouton en position haute.

  • onclick_event_script - [STR127] - nom du fichier de script à exécuter pour cet événement.

  • oncheck_event_script - [STR127] - nom du fichier de script à exécuter pour cet événement.

  • onuncheck_event_script - [STR127] - nom du fichier de script à exécuter pour cet événement.

  • rollover_image - [STR127] - nom du hud représentant l'image du bouton en lors du rollover de souris.

  • rollover_sound - [STR127] - nom du noeud audio représentant le son à jouer lors du rollover de souris.

  • type - [ENUM] - type du bouton:
    • PUSH_BUTTON: le bouton classique à un état. Il passe en position basse lorsque l'on clique dessus et revient en position haute tout de suite après. Un seul script LUA peut être associé à ce bouton: gui_button_onclick_event.
    • CHECK_BUTTON: ce bouton possède 2 états: un click dessus et il prend l'état, un autre click et il reprend l'état haut. A chacun des états est associé un script LUA: gui_button_oncheck_event et gui_button_onuncheck_event.

Elément position

position spécifie la position X et Y du centre du bouton. Le système de coordonnées est celui d'oZone3D à savoir que le point (0, 0) est au centre de la zone cliente, l'axe des X est orienté de la gauche vers la droite et celui des Y du bas vers le haut.

La position du hud doit être la même que celle des huds associés.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0

Elément size

size spécifie les dimensions de la zone sensible du bouton.

Attributs:
  • width - [INTEGER] - largeur de la zone sensible - valeur par défaut: 64
  • height - [INTEGER] - hauteur de la zone sensible - valeur par défaut: 32

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - hotkey

Noeud <hotkey>

Fonction

Le noeud hotkey permet d'associer à certaines touches du clavier des fonctionnalités définies par script LUA.

Syntaxe générale

<hotkey />
Noeud exhaustif avec attributs et valeurs par défaut:
<hotkey
    name=""
    script=""
    key="KEY_SPACE" />

Elément hotkey

hotkey est la balise xml qui définit un noeud hotkey.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • key: - [ENUM] - Touche du clavier qui déclenchera l'exécution du script:
    • KEY_F1
    • KEY_F2
    • KEY_F3
    • KEY_F4
    • KEY_F5
    • KEY_F6
    • KEY_F7
    • KEY_F8
    • KEY_F9
    • KEY_F10
    • KEY_F11
    • KEY_F12
    • KEY_UP
    • KEY_DOWN
    • KEY_LEFT
    • KEY_RIGHT
    • KEY_SPACE
    • KEY_DELETE
    • KEY_INSERT
    • KEY_END
    • KEY_HOME
    • KEY_A
    • KEY_B
    • KEY_C
    • KEY_D
    • KEY_E
    • KEY_F
    • KEY_G
    • KEY_H
    • KEY_I
    • KEY_J
    • KEY_K
    • KEY_L
    • KEY_M
    • KEY_N
    • KEY_O
    • KEY_P
    • KEY_Q
    • KEY_R
    • KEY_S
    • KEY_T
    • KEY_U
    • KEY_V
    • KEY_W
    • KEY_X
    • KEY_Y
    • KEY_Z
    • KEY_0
    • KEY_1
    • KEY_2
    • KEY_3
    • KEY_4
    • KEY_5
    • KEY_6
    • KEY_7
    • KEY_8
    • KEY_9
    • KEY_NUMPAD_0
    • KEY_NUMPAD_1
    • KEY_NUMPAD_2
    • KEY_NUMPAD_3
    • KEY_NUMPAD_4
    • KEY_NUMPAD_5
    • KEY_NUMPAD_6
    • KEY_NUMPAD_7
    • KEY_NUMPAD_8
    • KEY_NUMPAD_9
    • KEY_ADD
    • KEY_SUBTRACT
    • KEY_MULTIPLY
    • KEY_DIVIDE

  • script - [STR255] - nom du script à exécuter pour cette hotkey. Ce nom peut soit référencer un noeud script soit référencer un chemin d'accès à un fichier de script.
    Exemple
    Ce bout de code affiche une boîte de dialogue lorsque l'utilisateur appuie sur la touche SPACE.
    <script name="hello_LUA" run_mode="ASYNCHRONOUS" >
    <raw_data><![CDATA[
    HYP_MsgBox( "Test", "Hello World!" );
    ]]></raw_data>
</script>

<hotkey name="hello" key="KEY_SPACE" script="hello_LUA" />

    Hyperion - Guide de Référence
    Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - hud

Noeud <hud>

Fonction

Le noeud hud permet de définir des éléments 2D toujours affichés au premier plan (comme s'ils étaient collés à la caméra). Hud vient de l'anglais "Head Up Display". La plupart des jeux l'utilisent pour afficher les scores, les niveaux de vie ou de munitions. Il est relativement important pour la finalisation d'une scène. D'ailleurs quasiment tous les tutoriaux livrés avec Hyperion intègrent un ou plusieurs Huds.

Syntaxe générale

<hud>
    <alpha_test_params  />
    <blending_params  />
    <position />
    <size />
    <spin_values />
    <texture />
    <vertex_color />
</hud>
Noeud exhaustif avec attributs et valeurs par défaut:
<hud
    name=""
    render="TRUE"
    texturing="TRUE"
    material_name=""
    auto_spin="FALSE" >

    <alpha_test_params
        active="FALSE"
        func="CMP_FUNC_GREATER"
        ref="0.5" />

    <position
        x="0.0"
        y="0.0" />

    <size
        width="320"
        height="200" />

    <spin_values
        x="0.0"
        y="0.0"
        z="0.0" />

    <texture
        texture_unit="0"
        texture_name=""
        u_tile="1.0"
        v_tile="1.0"
        u_offset="0"
        v_offset="0"
        u_move="0"
        v_move="0" />

    <vertex_color
        index="0"
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0"  />

    <blending_params
        active="FALSE"
        src_factor="BLENDING_FACTOR_SRC_ALPHA"
        dst_factor="BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA" />

</hud>

Elément hud

hud est la balise xml qui définit un noeud hotkey.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • material_name - [STR127] - nom du matériau à affecter à ce hud. Si ce nom n'est pas spécifié, un nom par défaut sera généré. Si ce nom est spécifié, il référence un noeud material dans le code XML.

  • texturing - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'application de texture sur le hud - valeur par défaut: TRUE

  • blending - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le mélange des couleurs - valeur par défaut: FALSE

  • blending_src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1) (Valeur par défaut)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
    Remarque: Le mélange des couleurs ne se fait que si le blending est activé.

  • blending_dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à blending_src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du HUD - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément alpha_test_params

alpha_test_params permet de fixer les paramètres pour l'alpha-test hardware.

Attributs:
  • active - [BOOLEAN] - active ou désactive le test alpha - valeur par défaut: FALSE
  • func - [ENUM] - fonction de comparaison alpha. Les constantes symboliques suivantes sont acceptées:
    • CMP_FUNC_NEVER: le test ne passe jamais.
    • CMP_FUNC_LESS: le test passe si la valeur alpha est plus petite que la valeur de référence.
    • CMP_FUNC_LESS_OR_EQUAL: le test passe si la valeur alpha est plus petite ou égale à la valeur de référence.
    • CMP_FUNC_GREATER: le test passe si la valeur alpha est plus grande que la valeur de référence - valeur par défaut
    • CMP_FUNC_GREATER_OR_EQUAL: le test passe si la valeur alpha est plus grande ou égale à la valeur de référence.
    • CMP_FUNC_EQUAL: le test passe si la valeur alpha est égale à la valeur de référence.
    • CMP_FUNC_NOT_EQUAL: le test passe si la valeur alpha est différente de la valeur de référence.
    • CMP_FUNC_ALWAYS: le test passe toujours.
  • ref - [CLAMPED_REAL] - valeur de référence avec laquelle la valeur alpha entrante est comparée. Cette valeur de référence doit être comprise entre 0.0 et 1.0 - valeur par défaut: 0.5

Elément blending_params

blending_params permet de fixer les paramètres pour le blending (mélange) des couleurs.

Attributs:
  • active - [BOOLEAN] - active ou désactive le blending - valeur par défaut: FALSE
  • src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA
    blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
  • dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA

Elément position

position spécifie la position X et Y du centre du hud. Le système de coordonnées est celui d'oZone3D à savoir que le point (0, 0) est au centre de la zone cliente, l'axe des X est orienté de la gauche vers la droite et celui des Y du bas vers le haut.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0

Elément texture

texture permet d'appliquer une texture et de spécifier les paramètres pour cette texture.

Attributs:
  • texture_unit - [INTEGER] - unité de texture à utiliser pour la texture. Valeur entière comprise entre 0 et 3 - valeur par défaut: 0
  • texture_name - [STR127] - nom de la texture utilisée.
  • u_tile - [REAL] - facteur de tiling pour la coordonnée u - valeur par défaut: 1.0
  • v_tile - [REAL] - facteur de tiling pour la coordonnée v - valeur par défaut: 1.0
  • u_offset - [REAL] - décalage de la coordonnée u - valeur par défaut: 0.0
  • v_offset - [REAL] - décalage de la coordonnée v - valeur par défaut: 0.0
  • u_move - [REAL] - incrément de la coordonnée u à chaque frame - valeur par défaut: 0.0
  • v_move - [REAL] - incrément de la coordonnée v à chaque frame - valeur par défaut: 0.0

Elément spin_values

Spécifie les angles de rotation autour des axes de X, Y et Z. A chaque frame, les angles de rotation du HUD sont incrémentés par les valeurs spécifiées. Mais dans le cas du HUD, seule l'animation autour de l'axe des Z possède un sens.

Attributs:
  • x - [REAL] - Angle de rotation autour de l'axe des X en degrées - valeur par défaut: 0.0
  • y - [REAL] - Angle de rotation autour de l'axe des Y en degrées - valeur par défaut: 0.0
  • z - [REAL] - Angle de rotation autour de l'axe des Z en degrées - valeur par défaut: 0.0
Remarques
Les valeurs précédentes ne prennent effet que si l'attribut auto_spin est à TRUE.

Elément vertex_color

vertex_color spécifie la nouvelle couleur à appliquer à un des 4 vertices qui forment le HUD. Dans un hud les 4 vertices sont indexés comme suit:
2 +----------------------+ 3
  |                      |
  |                      |
  |                      |
  |                      |
  |                      |
0 +----------------------+ 1

Attributs:
  • index - [INTEGER] - index du vertex a changer. Valeur comprise entre 0 et 3 - valeur par défaut: 0
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément size

size active permet de fixer les dimensions du hud.

Attributs:
  • width - [INTEGER] - largeur du hud en pixels - valeur par défaut: 320
  • height - [INTEGER] - hauteur du hud en pixels - valeur par défaut: 200
Exemple
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" show_ref_grid="FALSE" >
        <background_color r="0.0" g="0.0" b="0.0" />
    </scene>
    <camera name="myCamera" />
    <texture name="bglass" filename="bglass.tga" pixel_format="RGBA" />
    <hud name="vitre" blending="TRUE"  blending_src_factor="BLENDING_FACTOR_SRC_ALPHA"
         blending_dst_factor="BLENDING_FACTOR_ONE" >
        <texture texture_name="bglass" texture_unit="0" />
    </hud>
</hyperion>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - hyperion

Noeud <hyperion>

Fonction

Noeud racine et obligatoire de tout hypergraphe.

Syntaxe générale

<hyperion />
Noeud exhaustif avec attributs et valeurs par défaut:
<hyperion
    version_major="1"
    version_minor="6"  />
    version_patch="0"  />

Elément hyperion

hyperion est le noeud racine (ou élément racine) de tout script XML représentant un hypergraphe.

Attributs:
  • version_major - [INTEGER] - version majeure minimale d'Hyperion nécessaire au fonctionnement de l'hypergraphe.

  • version_minor - [INTEGER] - version mineure minimale d'Hyperion nécessaire au fonctionnement de l'hypergraphe.

  • version_patch - [INTEGER] - version patch minimale d'Hyperion nécessaire au fonctionnement de l'hypergraphe.

Exemple:
<hyperion version_major="1" version_minor="6" version_patch="0" >
...
</hyperion>
Cet hypergraphe nécessite au minimum Hyperion 1.6.0 ou supérieur.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - include

Noeud <include>

Fonction

Le noeud include permet d'inclure d'autres fichiers xml Hyperion dans un fichier donné. Cette fonctionnalité permet de répartir un code source en plusieurs fichiers beaucoup plus lisibles car plus petits.

Chaque fichier inclu est considéré comme une petite librairie (lib pour raccourcir). Une lib peut contenir d'autres inclusions de libs. Un même fichier lib peut être inclu dans plusieurs fichiers différents: dans ce cas, la lib ne sera prise en compte qu'une seule fois. Cela a l'avantage de faciliter la conception et l'organisation de projets complexes.

Syntaxe générale

<include />
Noeud exhaustif avec attributs et valeurs par défaut:
<include
    lib="" />

Elément include

include est la balise xml qui définit un noeud include.

Attributs:
  • lib - [STR255] - spécifie le nom du fichier à inclure relativement au fichier courant.
Exemple
<include lib="logo.xml" />
En règle générale, les includes sont placés au début du code, aprés la balise <hyperion version="1.0" >.

Un fichier possède la même structure qu'un fichier de scène standard. Il suffit de remplacer la balise hyperion par hyperion_lib:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<hyperion_lib version="1.0">

<light name="SunLight" type="OMNI" render="FALSE" >
    <light_position x="400.0" y="200.0" z="300.0" />
    <light_ambient r="0.05" g="0.07" b="0.07" a="1.0" />
    <light_diffuse r="0.3" g="0.6" b="0.4" a="1.0" />
    <light_specular r="0.3" g="0.5" b="0.2" a="1.0" />
</light>

</hyperion_lib>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - interval

Noeud <interval>

Fonction

Le noeud interval permet de définir des plages temporelles durant lesquelles le programmeur peut définir diverses actions à l'aide de scripts LUA. Le noeud interval permet de contrôler le flow de la démo.

Syntaxe générale

<interval />
Noeud exhaustif avec attributs et valeurs par défaut:
<interval
    name=""
    start="0"
    end="1000000000"
    start_script=""
    per_frame_script="" />

Elément interval

interval est la balise xml qui définit un noeud interval.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • start_script - [STR255] - nom du fichier de script à exécuter une fois au début de l'interval. Ce nom peut aussi référencer un noeud script déjà existant dans le code XML.

  • per_frame_script - [STR255] - nom du fichier de script à exécuter à chaque frame de l'interval. Ce nom peut aussi référencer un noeud script déjà existant dans le code XML.

  • start - [INTEGER] - spécifie la position temporelle du début de la plage de temps de l'interval. Cette position temporelle est exprimée en millisecondes et est relative au temps de départ du script XML - valeur par défaut: 0

  • end - [INTEGER] - spécifie la position temporelle de la fin de la plage de temps de l'interval. Cette position temporelle est exprimée en millisecondes et est relative au temps de départ du script XML - valeur par défaut: 0

Exemple:
<interval name="i01" start="4000" end="8000" start_script="part1" />

<script name="part1" run_mode="ASYNCHRONOUS" >
    <raw_data><![CDATA[

    NO_STRETCH = 0;
    HORIZONTAL_STRETCH = 1;
    VERTICAL_STRETCH = 2;
    HYP_Hud.ProgressiveDisplay( "hud_dream", 1000 );
    HYP_Hud.ProgressiveUnDisplayWithStretch( "hud_hyperion", 1000, HORIZONTAL_STRETCH );
    HYP_ParticleSystem.Enable( "particle_system_1" );

    ]]></raw_data>
</script>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - light

Noeud <light>

Fonction

Le noeud light est l'objet qui permet de représenter une lumière dynamique. Dans le cas d'une lumière dynamique, les calculs d'éclairage sont refaits intégralement à chaque frame et pour chacun des objets ayant l'attribut lighting à TRUE. Donc, plus de lumières il y aura, plus long seront les calculs et plus le FPS chutera. Le nombre maximal de lumières dynamiques est limité par le hardware. Il est en général de 8. L'utilitaire HardwareInfos permet de connaître ce nombre.

Syntaxe générale

<light>
    <ambient />
    <diffuse />
    <orientation />
    <position />
    <specular />
</light>
Noeud exhaustif avec attributs et valeurs par défaut:
<light
    name=""
    render="FALSE"
    display_tripod="FALSE"
    auto_update_direction="FALSE"
    type="OMNI"
    linear_att="0.0"
    constant_att="1.0"
    quadratic_att="0.0"
    radius="10000.0"
    spot_angle="30.0"
    motion_path=""
    play_motion_path="TRUE"
    motion_path_time_step="0.001"
    motion_path_time_offset="0.0"
    display_motion_path_curve="FALSE"
    display_motion_path_tangents="FALSE"
    link_to_motion_path="FALSE" >

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <orientation
        ang="0.0"
        x="0.0"
        y="0.0"
        z="0.0"
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

    <ambient
        r="0.2"
        g="0.2"
        b="0.2"
        a="1.0" />

    <diffuse
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <specular
        r="0.1"
        g="0.1"
        b="0.1"
        a="1.0" />

</light>

Elément light

light est la balise xml qui définit un noeud light.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.
  • type - [STR127] - type de lumière:
    • OMNI: lumière omni-directionnelle ou de position (valeur par défaut). Ce type de lumière éclaire la scène dans toutes les directions. Elle est définie par une position dans l'espace 3D - valeur par défaut.
    • DIRECTIONAL: lumière directionnelle ou infini. Ce type de lumière éclaire la scène dans une direction particulière. Elle est définie par un vecteur direction mais ne possède pas de position.
    • SPOT: lumière positionnelle et directionnelle. Ce type de lumière éclaire la scène dans une direction particulière et à partir d'une position. Elle est définie par un vecteur direction et elle possède une position dans la scène 3D et un angle d'ouverture (cône du spot).

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la position de la lumière (lumière positionnelle) ou de son vecteur direction (lumière directionnelle) - valeur par défaut: FALSE

  • display_tripod - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du tripode (ou repère local) de la lumière. La visualisation du tripode est utile dans le cas d'une lumière de type SPOT pour le reglage de la direction. - valeur par défaut: FALSE
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

  • constant_att - [REAL] - spécifie le facteur d'atténuation constant de la lumière avec la distance (plus précisement, la distance entre la position de la lumière et un vertex). Donc par définition, les facteurs d'atténuation ne s'appliquent pas à une lumière de type DIRECTIONAL - valeur par défaut: 1.0

    Pour mémoire. le facteur d'atténuation globale de la lumière est défini par:
                                            1.0
att_global = ---------------------------------------------------------
             constant_att + (linear_att * d) + (quadratic_att * d * d)
    où d est la distance entre la lumière et le vertex en cours de traitement.

  • linear_att - [REAL] - spécifie le facteur d'atténuation linéaire de la lumière avec la distance - valeur par défaut: 0.0

  • display_motion_path_curve - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du motion path - valeur par défaut: FALSE

  • display_motion_path_tangents - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des tangentes du motion path - valeur par défaut: FALSE

  • motion_path - [STR127] - nom du motion path auquel on attache le gizmo afin de réaliser des déplacements automatiques

  • motion_path_time_step - [REAL] - permet de contrôler la vitesse d'animation en spécifiant l'incrément temporel le long du motion-path. Le temps est normalisé le long du motion-path, c'est à dire que le temps vaut 0.0 pour la première keyframe et vaut 1.0 pour la dernière. - valeur par défaut: 0.001

  • motion_path_time_offset - [REAL] - permet de contrôler la valeur temporelle de départ de l'animation. Par défaut cette valeur de départ est le temps normalisé 0.0. Cet offset permet placer plusieurs objets sur un motion-path avec un décalage (offset) pour chacun d'eux. - valeur par défaut: 0.0

  • play_motion_path - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'animation de la position le long d'un motion path - valeur par défaut: TRUE

  • quadratic_att - [REAL] - spécifie le facteur d'atténuation quadratique de la lumière avec la distance - valeur par défaut: 0.0

  • radius - [REAL] - spécifie le rayon maximal de portée de la lumière (dans le cas d'une lumière positionnelle). Cette valeur est utilisée avec des vertex et pixel shaders - valeur par défaut: 10000.0

  • spot_angle - [REAL] - permet de régler l'angle d'ouverture du cône de lumière. Cette instruction n'est valable que pour une lumière de type SPOT - valeur par défaut: 30.0
orientation

Elément position

position spécifie la position de la lumière dans la scène 3D. Cette instruction n'est valable que pour une lumière de type OMNI ou SPOT.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position - valeur par défaut: 0.0

Elément orientation

orientation spécifie l'orientation de la lumière autour d'un axe arbitraire dans son repère local. Cette methode ne fonctionne que pour une lumière de type SPOT ou directionnal. Il y a 2 façons d'utiliser les attributs de cet élément: soit en utilisant le quadruplet [ang, x, y, z] soit en utilisant le triplet [pitch, yaw, roll].

Attributs:
  • ang - [REAL] - Angle de rotation en degrés autour de l'axe formé par x, y et z - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - Composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - Composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - Composante Z de l'axe de rotation - valeur par défaut: 0.0
  • pitch - [REAL] - Angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - Angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - Angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0

Elément ambient

ambient permet de régler la couleur ambiante de la lumière. Rappelons que la lumière ambiante est une lumière qui semble venir de partout à la fois. Pour se la représenter, il suffit de regarder l'ombre d'un objet. La couleur de l'ombre est en étroite relation avec la lumière ambiante.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.2
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.2
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.2
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément diffuse

diffuse permet de régler la composante diffuse de la lumière. Rappelons que la lumière diffuse est la lumière qui èclaire directement un objet. Il y a une relation directe entre la quantité de lumière reçue par une face d'un objet et l'angle formé par la normal de cette face par rapport à la position de la lumière.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément specular

specular permet de régler la composante spéculaire de la lumière. Rappelons que la lumière spéculaire est responsable des reflets (que l'on appelle reflets spéculaires) à la surface d'un objet. Les reflets spéculaires varient avec la position du point de vue et donc de la caméra.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - material

Noeud <material>

Fonction

Le noeud material est un noeud fondamental dans Hyperion et surtout au niveau du moteur oZone3D. Un matériau regroupe les différents coefficients physiques qui définissent la façon dont un objet réagit à la lumière ainsi qu'une ou plusieurs textures (selon que l'on fait du simple ou multi texturing). Il contient aussi un élément de plus en plus important avec les dernières génération de cartes graphiques: le vertex/pixel shader.

Syntaxe générale

<material>
    <ambient_reflection_factor />
    <diffuse_reflection_factor />
    <self_illumination_factor />
    <specular_reflection_factor />
    <add_texture />
</material>
Noeud exhaustif avec attributs et valeurs par défaut:
<material
    name=""
    specular_exp="16.0"
    opacity="1.0"
    shader_program_name=""
    shader_program_name_for_ambient_pass=""
    preset="USER" >

    <ambient_reflection_factor
        r="0.9"
        g="0.9"
        b="0.9"
        a="1.0" />

    <diffuse_reflection_factor
        r="0.9"
        g="0.9"
        b="0.9"
        a="1.0" />

    <specular_reflection_factor
        r="0.1"
        g="0.1"
        b="0.1"
        a="1.0" />

    <self_illumination_factor
        r="0.0"
        g="0.0"
        b="0.0"
        a="0.0" />

    <add_texture
        texture_unit="0"
        texture_name="" />
</material>

Elément material

material est la balise xml qui définit un noeud material.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • opacity - [CLAMPED_REAL] - spécifie la valeur du coefficient d'opacité du matériau. L'opacité permet de créer des effets de transparence: une opacité de 1.0 signifie que le matériau est totalement opaque et une opacité de 0.0 signifie que le matériau est totalement transparent - valeur par défaut: 1.0

  • specular_exp - [REAL] - spécifie la valeur du coefficient exponentiel spéculaire du matériau - valeur par défaut: 16.0

  • shader_program_name - [STR127] - nom du noeud vertex/pixel shader à attacher à ce matériau. Dans le cas d'un rendu avec ombres volumiques, ce shader sera utilisé pour la passe d'illumination.

  • shader_program_name_for_ambient_pass - [STR127] - nom du noeud vertex/pixel shader à attacher à ce matériau. Ce shader sera utilisé pour le rendu de la passe ambiante des ombres volumiques.

  • preset - [ENUM] - permet d'initialiser les coefficients ambiant, diffus et spéculaire avec des valeurs correspondants à différents matériaux:
    • BLACK_PLASTIC: plastique noir
    • CHROME: chrome (opacité=1.0)
    • GOLD: or (opacité=1.0)
    • SILVER: argent (opacité=1.0)
    • POLISHED_SILVER: argent poli (opacité=1.0)
    • BRONZE: bronze (opacité=1.0)
    • BRASS: laiton (opacité=1.0)
    • COPPER: cuivre (opacité=1.0)
    • PEWTER: étain (opacité=1.0)
    • JADE: jade (opacité=0.95)
    • EMERALD: émeraude (opacité=0.55)
    • RUBY: rubis (opacité=0.55)
    • PEARL: perle (opacité=0.922)

Elément ambient_reflection_factor

ambient_reflection_factor spécifie la valeur du coefficient de reflection ambiant du matériau.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément diffuse_reflection_factor

diffuse_reflection_factor spécifie la valeur du coefficient de reflection diffus du matériau.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément specular_reflection_factor

specular_reflection_factor spécifie la valeur du coefficient de reflection spéculaire du matériau.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément self_illumination_factor

self_illumination_factor spécifie la valeur du coefficient de reflection d'auto-illumination (ou composante émissive) du matériau.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément add_texture

add_texture permet d'attacher une texture à un matériau. Jusqu'à 4 textures peuvent être attachées à un matériau afin de faire du multitexturing.

Attributs:
  • texture_name - [STR127] - nom du noeud de texture.
  • texture_unit - [INTEGER] - unité de texture à laquelle attacher la texture. Valeur entière comprise entre 0 et 3 - valeur par défaut: 0

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - mesh

Noeud <mesh>

Fonction

Le noeud mesh permet de définir un maillage polygonal. En général, un mesh est un assemblage de primitives planaires telles que le triangle ou le quadrangle. Dans le cas du moteur oZone3D, un maillage polygonal doit être composé exclusivement de triangles. Par cet assemblage de triangles, un mesh peut prendre toutes les formes immaginables. Le plus souvent, un mesh est issu d'un modèle 3D qui a été réalisé dans un logiciel de modélisation (3D Studio MAX, Maya, Lightwave, Cinema4D, ...). Dans certains cas, il est utile de pouvoir générer rapidement des formes basiques comme la sphère. C'est pour cela que Hyperion intègre un certain nombre de forme de base comme la SPHERE, le PLAN, le TORUS, le DISC, le CYLINDER, le TERRAIN_PATH

Le mesh est le vrai élément constitutif d'une scène 3D: on peut l'éclairer, le texturer (et bien sûr multitexturer), on peut lui attribuer ou changer ses paramètres intrinsèques (matériaux, vertices, ...), lui appliquer des effets (particules, déformation, ombres volumiques, vertex et pixel shader, ...).

L'image ci-dessous, issue du tutorial HyperGraph 69 met en oeuvre 2 meshes: un mesh de type TORUS et un autre de type PLANE, auquels on a appliqué un pixel shader pour effectuer l'éclairage:

Syntaxe générale

<mesh>
    <add_child />
    <alpha_test_params />
    <attach_material />
    <bump_mapping_attach_light />
    <optimize />
    <orientation />
    <orientation_pitch_yaw_roll />
    <position />
    <remove_child />
    <scale_vertices />
    <pivot_orientation />
    <pivot_position />
    <spin_values />
    <texture />
    <translate_vertices" />
    <vertices_color" />
    <vertices_uv_tiling" />
    <box  />
    <cylinder  />
    <disc  />
    <plane />
    <ring  />
    <sphere />
    <terrain />
    <torus />
    <vb_quad  />
    <nx_linear_velocity />
    <nx_angular_velocity />
    <nx_misc_data />
    <vertex_normal_field />
    <face_normal_field />
</mesh>
Noeud exhaustif avec attributs et valeurs par défaut:
<mesh
    name=""
    render="TRUE"
    shape_type="SPHERE"
    parent_name=""
    lighting="FALSE"
    texturing="FALSE"
    polygon_mode="SOLID"
    shading_mode="SMOOTH"
    shadow_caster="FALSE"
    use_vbo="FALSE"
    improve_specular_highlights="TRUE"
    normalize="FALSE"
    two_sides_lighting="FALSE"
    flip_normals="FALSE"
    compute_normals="TRUE"
    compute_tangent_space="TRUE"
    average_normals="FALSE"
    auto_spin="FALSE"
    back_face_culling="FALSE"
    camera_collision="FALSE"
    camera_collision_bv_shape="BOX"
    cube_mapping_type="STATIC"
    display_bounding_box="FALSE"
    display_bounding_sphere="FALSE"
    display_motion_path_curve="FALSE"
    display_motion_path_tangents="FALSE"
    display_tripod="FALSE"
    auto_update_direction="FALSE"
    link_to_motion_path="FALSE"
    motion_path=""
    motion_path_time_offset="0.0"
    motion_path_time_step="0.001"
    play_motion_path="TRUE"
    nx_add_to_physics_engine="FALSE"
    update_shader_mode="READWRITE"
    display_shadow_silhouette="FALSE"
    display_shadow_volume="FALSE"
    depth_test="TRUE" >

    <add_child
        name="" />

    <alpha_test_params
        active="FALSE"
        func="CMP_FUNC_GREATER"
        ref="0.5" />

    <blending_params
        active="FALSE"
        src_factor="BLENDING_FACTOR_SRC_ALPHA"
        dst_factor="BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA" />

    <attach_material
        name="" />

    <bump_mapping_attach_light
        name="" />

    <optimize
        vertex_epsilon="0.0001"
        method="NONE" />

    <orientation
        ang="0.0"
        x="0.0"
        y="0.0"
        z="0.0" />

    <orientation_pitch_yaw_roll
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

    <pivot_orientation
        ang="0.0"
        x="0.0"
        y="0.0"
        z="0.0" />

    <pivot_position
        x="0.0"
        y="0.0"
        z="0.0" />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <remove_child
        name="" />

    <scale_vertices
        x="1.0"
        y="1.0"
        z="1.0" />

    <spin_values
        x="0.0"
        y="0.0"
        z="0.0" />

    <texture
        texture_unit="0"
        texture_type="COLOR_MAP"
        texture_name=""
        material_name=""
        mirror="FALSE"
        u_tile="1.0"
        v_tile="1.0"
        u_offset="0.0"
        v_offset="0.0"
        u_move="0.0"
        v_move="0.0" />

    <translate_vertices
        x="0.0"
        y="0.0"
        z="0.0" />

    <vertices_color
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <vertices_uv_tiling
        texture_unit="0"
        u_tile="1.0"
        v_tile="1.0" />

    <plane
        x_size="400.0"
        z_size="400.0"
        num_segs_x="32"
        num_segs_z="32" />

    <torus
        radius="60.0"
        vertex_density="15.0"
        section_radius="32" />

    <box
        width="100.0"
        height="100.0"
        depth="100.0"
        w_segs="5"
        h_segs="5"
        d_segs="5"
        material_face_posx=""
        material_face_negx=""
        material_face_posy=""
        material_face_negy=""
        material_face_posz=""
        material_face_negz=""  />

    <disc
        radius="20.0"
        radius_density="3"
        opening_angle="360.0"
        slices="20" />

    <cylinder
        radius="20.0"
        stacks="10"
        slices="10"
        height="100" />

    <ring
        radius="50.0"
        thickness="10.0"
        sides="10" />

    <sphere
        radius="20.0"
        stacks="10"
        slices="10" />

    <terrain
        heightmap=""
        patch_num_segs="32"
        vertical_scale="50.0"
        patch_size="400.0" />

    <vb_quad
        num_vb_quads="1" />

    <nx_linear_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.14*0.14" />

    <nx_angular_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.15*0.15" />

    <nx_misc_data
        mass="0.0"
        density="0.0"
        actor_type="DYNAMIC" />

    <vertex_normal_field
        render="FALSE"
        g="1.0"
        b="1.0"
        a="0.0"
        length_factor="10.0" />

    <face_normal_field
        render="FALSE"
        g="0.0"
        b="1.0"
        a="0.0"
        length_factor="10.0" />

</mesh>

mesh

mesh est la balise xml qui définit un noeud mesh.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • parent_name - [STR127] - nom de l'objet parent (en général un modèle 3D).

  • shape_type - [ENUM] - forme de base du mesh:
    • PLANE: définit un mesh en forme de plan. Voir plane pour les paramètres du mesh plan.
    • TORUS: définit un mesh en forme de tore. Voir torus pour les paramètres du tore.
    • SPHERE: définit un mesh en forme de sphère. Voir sphere pour les paramètres de la sphère - valeur par défaut
    • DISC: définit un mesh en forme de disque. Voir disc pour les paramètres du disque.
    • RING: définit un mesh en forme d'anneau. Voir ring pour les paramètres de l'anneau.
    • CYLINDER: définit un mesh en forme de cylindre. Voir cylinder pour les paramètres du cylindre.
    • BOX: définit un mesh en forme de boîte. Voir box pour les paramètres de la boîte.
    • VB_QUAD: définit un mesh spécialement optimisé pour le rendu d'un grand nombre de quads. Voir vb_quad pour les paramètres du vb_quad.
    • TERRAIN_PATCH: définit un mesh en forme de terrain carré (patch de terrain). Voir terrain pour les paramètres du patch de terrain.
    • MODEL_SUB_MESH: définit un mesh comme étant un enfant d'un modèle parent. Ce mesh est un mesh existant, appartenant au modèle 3D dont il fait partie. Ce mesh a un nom (comme tous les autres meshes composant le modèle 3D) qu'il faut connaître pour pouvoir en modifier les propriétés. L'utilitaire LynX permet de connaître ce nom, ainsi que ceux des autres meshes du modèle 3D.

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du mesh - valeur par défaut: TRUE

  • auto_spin - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la rotation autour des axes du repère local de l'objet. Les valeurs des angles de rotation doivent être spécifiées par la balise <spin_values> - valeur par défaut: FALSE

  • lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage - valeur par défaut: FALSE

  • normalize - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la normalisation des normales aux vertices après avoir utilisé la fonction LUA HYP_SetObjectScale - valeur par défaut: FALSE

  • two_sides_lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage sur les 2 cotés (front et back) de chaque face composant le mesh - valeur par défaut: FALSE

  • flip_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'inversion des normales des faces du mesh - valeur par défaut: FALSE

  • improve_specular_highlights - [BOOLEAN] - permet d'améliorer les rendus des reflets spéculaires en utlisant une méthode de calcul faisant intervenir le vrai "half-vector". Les spéculaires sont plus réalistes mais entraînent une légère baisse des performances. - valeur par défaut: TRUE

  • back_face_culling - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la suppression des faces arrières - valeur par défaut: FALSE

  • texturing - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'application des textures - valeur par défaut: FALSE

  • blending - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le mélange des couleurs - valeur par défaut: FALSE

  • shadow_caster - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la projection d'ombres volumiques - valeur par défaut: FALSE

  • compute_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le calcul des normales des vertices - valeur par défaut: TRUE

  • compute_tangent_space - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le calcul des normales de l'espace tangent (utile pour le bump mapping) des vertices - valeur par défaut: TRUE

  • average_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le moyennage des normals des vertices - valeur par défaut: FALSE

  • display_bounding_box - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la bounding box - valeur par défaut: FALSE

  • display_bounding_sphere - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la bounding sphere - valeur par défaut: FALSE

  • display_tripod - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du repère local du mesh - valeur par défaut: FALSE
    Remarque: Les axes du tripode sont représentés par les couleurs suivantes:
    • Axe X: rouge
    • Axe Y: vert
    • Axe Z: bleu
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

  • use_vbo - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation des vertex buffer objects pour accélérer le rendu du mesh - valeur par défaut: FALSE
    use_vbo permet d'utiliser les vertex-buffer matériels (les fameux VBO en OpenGL) afin de stocker efficacement les vertices d'un mesh dans la mémoire de la carte graphique. Il est conseillé d'activer cet état pour des meshes statiques ayant un grand nombre de polygones. Un mesh est statique s'il ne subit aucune transformation sur ses vertices.

  • polygon_mode - [ENUM] - spécifie le mode de rendu des faces du mesh:
    • SOLID: les faces sont remplies (solides) - valeur par défaut
    • WIREFRAME: les faces sont rendues en fil de fer

  • shading_mode - [ENUM] - spécifie la façon dont les faces sont coloriées:
    • FLAT: les faces sont coloriées de façon uniforme
    • SMOOTH: les faces sont coloriées de façon à former un dégradé de couleurs - valeur par défaut

  • motion_path - [STR127] - nom du motion path auquel on attache le gizmo afin de réaliser des déplacements automatiques

  • play_motion_path - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'animation de la position le long d'un motion path - valeur par défaut: TRUE

  • display_motion_path_curve - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du motion path - valeur par défaut: FALSE

  • display_motion_path_tangents - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des tangentes du motion path - valeur par défaut: FALSE

  • motion_path_time_step - [REAL] - permet de contrôler la vitesse d'animation en spécifiant l'incrément temporel le long du motion-path. Le temps est normalisé le long du motion-path, c'est à dire que le temps vaut 0.0 pour la première keyframe et vaut 1.0 pour la dernière. - valeur par défaut: 0.001

  • motion_path_time_offset - [REAL] - permet de contrôler la valeur temporelle de départ de l'animation. Par défaut cette valeur de départ est le temps normalisé 0.0. Cet offset permet de placer plusieurs objets sur un motion-path avec un décalage (offset) pour chacun d'eux. - valeur par défaut: 0.0

  • update_shader_mode - [ENUM] - spécifie le mode de lecture/écriture du shader interne:
    • READONLY: le shader du mesh ne peut pas être mis à jour par son parent.

    • READWRITE: le shader du mesh peut être mis à jour par son parent - valeur par défaut
    update_shader_mode spécifie la façon dont le parent (en général un modèle) met à jour le shader de ce mesh. Attention de ne pas confondre le shader d'un objet et un shader program. Le shader d'un objet est un concept propre au moteur oZone3D et c'est en quelque sorte une réunion des différents états de rendu d'un objet (eclairage, texture, fil de fer ou plein, ...). Un modèle possède lui aussi son shader, et par défaut il met à jour le shader de ses sous meshes par copie du sien. Dans certains cas, il se peut que l'on souhaite avoir un ou plusieurs sous meshes dont le shader ne soit pas mis à jour de manière automatique. On spécifie ce mode grâce à la propriété update_shader_mode.

  • camera_collision - [BOOLEAN] - permet de prendre (TRUE) ou ne pas prendre (FALSE) en compte ce mesh dans les calculs de collisions avec la caméra. Le calcul de collision est basé sur la boîte englobante du mesh (bounding box) et sur la position de la caméra - valeur par défaut: FALSE

  • camera_collision_bv_shape - [ENUM] - permet de spécifier la forme du volume englobant pour les tests de collision. La forme du volume englobant est à choisir en fonction de la topologie du mesh:
    • BOX: bounding box - valeur par défaut
    • SPHERE: bounding sphere.

  • cube_mapping_type - [ENUM] - spécifie le type de cube mapping à appliquer au mesh:
    • DYNAMIC: définit un cube mapping dynamique. Cette cubemap est mise à jour à chaque frame et toute modification de l'environnement du mesh sera reflétée dans la cubemap. Cela entraîne une baisse des performances.
    • STATIC: définit un cube mapping statique. Cette cubemap est mise à jour à l'initialisation de la scène et est trés rapide. Cependant toute modification de l'environnement du mesh ne sera plus reflétée dans la cubemap. Ceci est la valeur par défaut.

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

  • nx_add_to_physics_engine - [BOOLEAN] - permet d'ajouter (TRUE) ou non (FALSE) cet objet dans la scène du moteur de simulation physique. Ceci n'a de sens que si le moteur physique (NovodeX) est disponible et si il a été activé au niveaudu noeud scene - valeur par défaut: FALSE

  • display_shadow_silhouette - [BOOLEAN] - permet d'activer le rendu de la silhouette lors du rendu des ombres volumiques. - valeur par défaut: FALSE

  • display_shadow_volume - [BOOLEAN] - permet d'activer le rendu du volume d'ombre lors du rendu des ombres volumiques. - valeur par défaut: FALSE

  • depth_test - [BOOLEAN] - permet d'activer ou désactiver le depth test pour le rendu du mesh - valeur par défaut: TRUE

Elément blending_params

blending_params permet de fixer les paramètres pour le blending (mélange) des couleurs.

Attributs:
  • active - [BOOLEAN] - active ou désactive le blending - valeur par défaut: FALSE
  • src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA
    blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
  • dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA

Elément alpha_test_params

alpha_test_params permet de fixer les paramètres pour l'alpha-test hardware.

Attributs:
  • active - [BOOLEAN] - active ou désactive le test alpha - valeur par défaut: FALSE
  • func - [ENUM] - fonction de comparaison alpha. Les constantes symboliques suivantes sont acceptées:
    • CMP_FUNC_NEVER: le test ne passe jamais.
    • CMP_FUNC_LESS: le test passe si la valeur alpha est plus petite que la valeur de référence.
    • CMP_FUNC_LESS_OR_EQUAL: le test passe si la valeur alpha est plus petite ou égale à la valeur de référence.
    • CMP_FUNC_GREATER: le test passe si la valeur alpha est plus grande que la valeur de référence - valeur par défaut
    • CMP_FUNC_GREATER_OR_EQUAL: le test passe si la valeur alpha est plus grande ou égale à la valeur de référence.
    • CMP_FUNC_EQUAL: le test passe si la valeur alpha est égale à la valeur de référence.
    • CMP_FUNC_NOT_EQUAL: le test passe si la valeur alpha est différente de la valeur de référence.
    • CMP_FUNC_ALWAYS: le test passe toujours.
  • ref - [CLAMPED_REAL] - valeur de référence avec laquelle la valeur alpha entrante est comparée. Cette valeur de référence doit être comprise entre 0.0 et 1.0 - valeur par défaut: 0.5

Elément attach_material

attach_material permet d'attacher un matériau au mesh courant. Si le mesh possède déjà un matériau, il sera remplacé par le nouveau.

Attributs:
  • name - [STR64] - nom du matériau

Elément bump_mapping_attach_light

bump_mapping_attach_light spécifie la lumière à prendre en compte pour le DOT3 bump mapping. Plusieurs appels à mesh_bump_mapping_attach_light permettent de prendre en compte plusieurs lumières.

Pour rappel, le DOT3 Bump Mapping est activé lorsque vous spécifiez une texture avec le paramètre texture_type="NORMAL_MAP".

Attributs:
  • name - [STR127] - nom du noeud de lumière à attacher

Elément orientation

orientation spécifie l'orientation du mesh autour d'un axe arbitraire dans son repère local.

Attributs:
  • ang - [REAL] - Angle de rotation en degrés - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - Composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - Composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - Composante Z de l'axe de rotation - valeur par défaut: 0.0

Elément orientation_pitch_yaw_roll

orientation_pitch_yaw_roll spécifie l'orientation du mesh autour des axes de son repère local.

Attributs:
  • pitch - [REAL] - Angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - Angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - Angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0

Elément plane

plane spécifie les paramètres pour initialiser un mesh de type PLANE.

Attributs:
  • x_size - [REAL] - dimension du plan le long de l'axe des X - valeur par défaut: 400.0
  • z_size - [REAL] - dimension du plan le long de l'axe des Z - valeur par défaut: 400.0
  • num_segs_x - [INTEGER] - nombre de segments le long de l'axe des X - valeur par défaut: 32
  • num_segs_z - [INTEGER] - nombre de segments le long de l'axe des Z - valeur par défaut: 32

Elément position

position spécifie la position X, Y et Z du mesh dans dans son repère local ou par rapport à son parent (en général un modèle).

Attributs:
  • x - [REAL] - Coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z de la position - valeur par défaut: 0.0

Elément pivot_orientation

pivot_orientation permet de modifier l'orientation du pivot (tripode) du mesh courant indépendamment de la position des vertices. Utile lors des animations.

Attributs:
  • ang - [REAL] - Angle de rotation en degrés - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - Composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - Composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - Composante Z de l'axe de rotation - valeur par défaut: 0.0
Remarques
Ne pas confondre pivot_orientation et orientation.

Elément pivot_position

pivot_position permet de modifier la position du pivot (tripode) du mesh courant indépendamment de la position des vertices. Utile lors des animations.

Attributs:
  • x - [REAL] - Coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - Coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - Coordonnée Z de la position - valeur par défaut: 0.0
Remarques
Ne pas confondre pivot_position et position.

Elément sphere

sphere spécifie les paramètres pour initialiser un mesh de type SPHERE.

Attributs:
  • radius - [REAL] - valeur du rayon - valeur par défaut: 20.0
  • stacks - [INTEGER] - nombre de segments horizontaux - valeur par défaut: 10
  • slices - [INTEGER] - nombre de segments verticaux - valeur par défaut: 10

Elément disc

disc spécifie les paramètres pour initialiser un mesh de type DISC.

Attributs:
  • radius - [REAL] - valeur du rayon - valeur par défaut: 20.0
  • radius_density - [INTEGER] - nombre de vertices le long du rayon - valeur par défaut: 3
  • slices - [INTEGER] - nombre de segments composant la circonférence du disque - valeur par défaut: 20
  • opening_angle - [REAL] - angle d'ouverture du disque en degrés - valeur par défaut: 360.0

Elément ring

ring spécifie les paramètres pour initialiser un mesh de type RING.

Attributs:
  • radius - [REAL] - valeur du rayon - valeur par défaut: 50.0
  • thickness - [REAL] - épaisseur de l'anneau - valeur par défaut: 10.0
  • sides - [INTEGER] - nombre de segments composant la circonférence de l'anneau - valeur par défaut: 10

Elément cylinder

cylinder spécifie les paramètres pour initialiser un mesh de type CYLINDER.

Attributs:
  • radius - [REAL] - rayon du cylindre - valeur par défaut: 20.0
  • height - [REAL] - hauteur du cylindre - valeur par défaut: 100.0
  • stacks - [INTEGER] - nombre de segments horizontaux - valeur par défaut: 10
  • slices - [INTEGER] - nombre de segments verticaux - valeur par défaut: 10

Elément box

box spécifie les paramètres pour initialiser un mesh de type BOX.

Attributs:
  • width - [REAL] - largeur (en X) de la boîte - valeur par défaut: 100.0
  • height - [REAL] - hauteur (en Y) de la boîte - valeur par défaut: 100.0
  • depth - [REAL] - profondeur (en Z) de la boîte - valeur par défaut: 100.0
  • w_segs - [INTEGER] - nombre de segments en X - valeur par défaut: 5
  • h_segs - [INTEGER] - nombre de segments en Y - valeur par défaut: 5
  • d_segs - [INTEGER] - nombre de segments en Z - valeur par défaut: 5
  • material_face_posx - [STR64] - nom du matériau à attacher à la face droite (POS X) - valeur par défaut: aucun
  • material_face_negx - [STR64] - nom du matériau à attacher à la face gauche (NEG X) - valeur par défaut: aucun
  • material_face_posy - [STR64] - nom du matériau à attacher à la face supérieure (POS Y) - valeur par défaut: aucun
  • material_face_negy - [STR64] - nom du matériau à attacher à la face inférieure (NEG Y) - valeur par défaut: aucun
  • material_face_posz - [STR64] - nom du matériau à attacher à la face avant (POS Z) - valeur par défaut: aucun
  • material_face_negz - [STR64] - nom du matériau à attacher à la face arrière (NEG Z) - valeur par défaut: aucun

Elément spin_values

spin_values spécifie les angles de rotation autour des axes de X, Y et Z. A chaque frame, les angles de rotation du mesh sont incrémentées par les valeurs spécifiées. Cela entraîne donc une animation du mesh par simple rotation autour des 3 axes.

Attributs:
  • x - [REAL] - Angle de rotation autour de l'axe des X en degrées - valeur par défaut: 0.0
  • y - [REAL] - Angle de rotation autour de l'axe des Y en degrées - valeur par défaut: 0.0
  • z - [REAL] - Angle de rotation autour de l'axe des Z en degrées - valeur par défaut: 0.0
Remarques
Les valeurs précédentes ne prennent effet que si l'attribut auto_spin est à TRUE.

Elément terrain

terrain spécifie les paramètres pour initialiser un mesh de type TERRAIN_PATCH.

Attributs:
  • heightmap - [STR255] - spécifie la texture d'élévation qui représente les hauteurs du terrain pour un mesh de type terrain. Dans la version actuelle, cette texture doit être carrée (256x256, 400x400, 2048x2048, ...) et avoir une résolution de 24 bits par pixel. ATTENTION: contrairement aux autres noeuds utilisants des textures, heightmap représente le nom du fichier image sur le disque dur (chemin relatif d'accès à la heightmap).
  • patch_num_segs - [INTEGER] - nombre de segments pour chaque côté du patch de terrain - valeur par défaut: 32
  • vertical_scale - [REAL] - facteur d'élévation vertical - valeur par défaut: 50.0
  • patch_size - [REAL] - taille du patch de terrain pour chaque côté - valeur par défaut: 400.0

Elément texture

texture spécifie tous les paramètres pour l'application d'une texture au mesh.

Attributs:
  • texture_type - [ENUM] - type de la texture. Indique son utilisation. Les valeurs suivantes sont acceptées:
    • COLOR_MAP: utilisation standard de la texture. Les valeurs de chaque pixel représentent des couleurs - valeur par défaut
    • NORMAL_MAP: à utiliser pour le DOT3 Bump Mapping (fait par les fonctions cablées de la carte graphique). Les valeurs de chaque pixel représentent des vecteurs normaux.
      Remarque 1: dans le cas d'une normal map utilisée dans un pixel shader, utiliser le type COLOR_MAP.
      Remarque 2: une texture dont le type est NORMAL_MAP doit toujours être sur l'unité de texture 0. La première texture représentant la couleur doit dans ce cas commencer à l'unité de texture 2. L'unité de texture 1 est réservée pour le fonctionnement du DOT3 Bump Mapping.
  • material_name - [STR127] - nom du matérau sur lequel appliquer la texture.
  • texture_unit - [INTEGER] - unité de texture à utiliser pour la texture. Valeur entière comprise entre 0 et 3 - valeur par défaut: 0
  • texture_name - [STR127] - nom de la texture utilisée.
  • u_tile - [REAL] - facteur de tiling pour la coordonnée u - valeur par défaut: 1.0
  • v_tile - [REAL] - facteur de tiling pour la coordonnée v - valeur par défaut: 1.0
  • u_offset - [REAL] - décalage de la coordonnée u - valeur par défaut: 0.0
  • v_offset - [REAL] - décalage de la coordonnée v - valeur par défaut: 0.0
  • u_move - [REAL] - incrément de la coordonnée u à chaque frame - valeur par défaut: 0.0
  • v_move - [REAL] - incrément de la coordonnée v à chaque frame - valeur par défaut: 0.0
  • mirror - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le mode texture de réflection. Cette propriété permet de simuler de façon réaliste des reflections sur la surface du mesh: miroir, surface d'eau, ... - valeur par défaut: FALSE
Exemple
<mesh>
    ...
    <texture material_name="floor1_mat"
                  texture_name="ceiling_0_n"
                  u_tile="12.0" v_tile="12.0"
                  texture_unit="0"
                  texture_type="NORMAL_MAP" />

    <texture material_name="floor1_mat"
                  texture_name="ceiling_0_bs"
                  u_tile="12.0" v_tile="12.0"
                  texture_unit="2"
                  texture_type="COLOR_MAP" />
    ...
</mesh>

u_move et v_move spécifient l'incrément par frame des coordonnées de texture de chaque vertex d'un mesh pour une unité de texture particulière. Cela permet de créer facilement des animations de textures. Pour des animations plus complexes, se reporter aux fonctions de l'API Hyperion/LUA concernant la manipulation des meshes.

u_tile et v_tile spécifient le facteur multiplicateur à appliquer aux coordonnées de texture de chaque vertex d'un mesh pour une unité de texture particulière. Voir aussi addressing_mode pour contrôler la façon dont la texture est repétée si le facteur de tiling est supérieur à 1.0.

Elément torus

torus spécifie les paramètres pour initialiser un mesh de type TORUS.

Attributs:
  • radius - [REAL] - rayon principal du tore - valeur par défaut: 60.0
  • vertex_density - [INTEGER] - nombre de vertices le long de la circonférence du tore - valeur par défaut: 32
  • section_radius - [REAL] - rayon de la section du tore - valeur par défaut: 15.0

Elément vb_quad

vb_quad spécifie les paramètres pour initialiser un mesh de type VB_QUAD. Ce type de mesh permet de rendre de manière optimisé un grand nombre de quads. Il a été developpé pour la demo "Animated Grass - Tutor 84". Par défaut, il est initialisé avec 1 quad. Pour rendre 1 quad, il est plus rapide de se servir de la primitive quad prévu a cet effet. Mais dès que le nombre de quads à rendre dépasse la centaine, (500 quads dans la demo Animated Grass) Le vb_quad est en moyenne 2 à 3 fois plus rapide. L'attribut num_vb_quads permet de réserver l'espace mémoire pour stocker num_vb_quads quads. Il faut ensuite, par un script LUA, initialiser la position de chacun des quads en utilisant la fonction HYP_MeshVBQuad_AddQuad() (se reporter au tutor 84 pour un exemple d'utilisation).

Attributs:
  • num_vb_quads - [INTEGER] - nombre maximal de quad géré par ce mesh - valeur par défaut: 1

Elément translate_vertices

translate_vertices permet de translater les vertices d'un mesh sans bouger son point de pivot.

Attributs:
  • x - [REAL] - composante X du vecteur translation - valeur par défaut: 0.0
  • y - [REAL] - composante Y du vecteur translation - valeur par défaut: 0.0
  • z - [REAL] - composante Z du vecteur translation - valeur par défaut: 0.0

Elément vertices_color

vertices_color spécifie la nouvelle couleur à appliquer à tous les vertices (sommets 3D) du mesh.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.9
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Remarques

La couleur des vertices ne prend effet que si l'éclairage est désactivé pour ce mesh.

Elément optimize

optimize permet d'optimiser la géométrie d'un maillage polygonal. Cela est utile lorsque vous souhaitez appliquer des effets de déformation aux meshes. Le moteur d'ombres volumiques optimise par défaut tous les meshes.

Attributs:
  • method - [ENUM] - méthode d'optimisation. Les valeurs suivantes sont acceptées:
    • NONE: n'applique aucune optimisation.
    • VERTICES: optimise les vertices: supprime les vertices isolés et fusionne les vertices ayant la même position (moyennant une tolérance epsilon paramétrable par vertex_epsilon).
    • ALL: optimise les vertices (comme le mode VERTICES) et les faces (suppression des faces dégénérées).
  • vertex_epsilon - [REAL] - permet de spécifier la tolérance pour la fusion de vertices dans le mode d'optimisation VERTICES - valeur par défaut: 0.0001

Elément add_child

add_child permet d'ajouter un enfant au mesh courant. Cela permet de mettre en place facilement des hiérarchies complexes. Toute transformation (rotation ou translation) du mesh courant sera répercutée sur les enfants.

Attributs:
  • name - [STR127] - nom de l'objet enfant à ajouter. Cet objet doit exister.

Elément remove_child

remove_child permet d'enlever un enfant du mesh courant. Cela permet de mettre en place facilement des hiérarchies complexes.

Attributs:
  • name - [STR127] - nom de l'objet enfant à enlever. Cet objet doit exister.

Elément scale_vertices

scale_vertices permet d'appliquer un facteur d'échelle selon les 3 axes X, Y et Z à chaque vertex du mesh.

Attributs:
  • x - [REAL] - Facteur d'échelle en X - valeur par défaut: 1.0
  • y - [REAL] - Facteur d'échelle en Y - valeur par défaut: 1.0
  • z - [REAL] - Facteur d'échelle en Z - valeur par défaut: 1.0

Elément vertices_uv_tiling

scale_vertices permet d'appliquer un facteur de tiling aux coordonnées de textures uv des vertices pour une unité de texture donnée.

Attributs:
  • texture_unit - [INTEGER] - applique le facteur de tiling à toutes les coordonnées de texture correspondants à cette unité de texture - valeur par défaut: 0
  • u_tile - [REAL] - facteur de tiling pour la coordonnée u - valeur par défaut: 1.0
  • v_tile - [REAL] - facteur de tiling pour la coordonnée v - valeur par défaut: 1.0

Elément nx_linear_velocity

nx_linear_velocity permet de spécifier la vitesse lineaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.14*0.14

Elément nx_angular_velocity

nx_angular_velocity permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.15*0.15

Elément nx_misc_data

nx_misc_data permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • mass - [REAL] - mass de l'objet - Valeur par défaut: 100.0
  • density - [REAL] - densité del'objet - Valeur par défaut: 0.0
  • actor_type - [ENUM] - type de l'acteur (objet):
    • STATIC
    • DYNAMIC - valeur par défaut.
    • KINEMATIC

Elément vertex_normal_field

vertex_normal_field permet d'afficher les vecteurs normaux des vertices du mesh.

Attributs:
  • render - [BOOLEAN] - active ou désactive le rendu du champ de vecteurs - valeur par défaut: FALSE
  • r - [CLAMPED_REAL] - composante rouge de la couleur des vecteurs - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur des vecteurs - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur des vecteurs - valeur par défaut: 0.0
  • length_factor - [REAL] - facteur multiplicateur de la longueur des vecteurs - valeur par défaut: 10.0

Elément face_normal_field

face_normal_field permet d'afficher les vecteurs normaux des faces du mesh.

Attributs:
  • render - [BOOLEAN] - active ou désactive le rendu du champ de vecteurs - valeur par défaut: FALSE
  • r - [CLAMPED_REAL] - composante rouge de la couleur des vecteurs - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur des vecteurs - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur des vecteurs - valeur par défaut: 0.0
  • length_factor - [REAL] - facteur multiplicateur de la longueur des vecteurs - valeur par défaut: 10.0

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - model

Noeud <model>

Fonction

Le noeud model permet de définir un modèle 3D. Au niveau du moteur oZone3D, un modèle est une hiérarchie d'objets constituée principalement de meshes. Certains objets comme les gizmos peuvent être présents dans cette hiérarchie afin de servir de point de pivot et mettre au point des hiérarchies complexes. Plus simplement le modèle peut être vu comme une interface pour modifier facilement les propriétés d'un grand nombre de meshes.

Hyperion peut charger directement les modèles 3D aux formats suivants:
  • *.3DS (format binaire de 3D Studio MAX)
  • *.ASE (format ascii de 3D Studio MAX)
  • *.OBJ (format ascii d'Alias|Wavefront)
  • *.FBX (format binaire standard d'Alias - FilmBox/Kaydara)
  • *.TXT (format ascii de MilkShape3D)
  • *.O3MDL (format binaire du moteur oZone3D)
  • *.XML (format XML du moteur oZone3D)
Actuellement les loaders de modèles 3D ne supportent pas les manipulation des pivots et en particulier les rescaling (application d'un facteur d'échelle aux points de pivot). Ceci est particulièrement vrai pour le format *.3DS.

Il est recommandé lors de la modélisation de respecter les principes suivants:
  • toujours nommer explicitement chacun des meshes contituant le modèle 3D. Par exemple dans la modélisation d'une voiture le mesh représentant la roue avant droite devrait s'appeller RightFrontWheel et non Torus01 qui est le nom par défaut. Pour le format *.3DS, ne pas dépasser les 10 caractères.
  • toujours nommer explicitement chacun des matériaux. Pour des raison de performances, il faut diminuer au maximum le nombre de matériaux, eviter d'avoir plusieurs matériaux pour un seul mesh. L'idéal étant un seul matériau avec une seule texture. Utiliser au maximum les possibilités de manipulation des coordonnées de textures offertes par votre logiciel de modélisation pour packer plusieurs textures dans une seule grande texture. Pour le format *.3DS, ne pas dépasser les 10 caractères dans le nommage des matériaux. De même, pour le *.3DS, le nom des fichiers de textures doit respecter le format 8.3 (format standard de nommage des fichiers sous DOS): 8 caractères + 3 pour l'extension.
  • pour le format *.OBJ, il est fortement conseillé de joindre le fichier de matériaux (*.mtl) avec le fichier *.obj.

Voici le code XML Hyperion pour créer cette scène:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0" >
    <scene name="myScene" show_ref_grid="FALSE" >
        <background_color r="0.0" g="0.0" b="0.0" />
    </scene>
    <camera name="myCamera" />
    <light name="myLight" >
        <position x="0.0" y="200.0" z="200.0" />
    </light>
    <model name="myModel" filename="engine.o3mdl" lighting="TRUE" texturing="TRUE"
              use_vbo="TRUE" back_face_culling="TRUE" />
</hyperion>

Syntaxe générale

<model>
    <add_child />
    <alpha_test_params />
    <apply_ambient />
    <apply_diffuse />
    <apply_specular_exp />
    <apply_specular />
    <blending_params />
    <bump_mapping_attach_light />
    <loading_option />
    <ambient_occlusion_lighting />
    <optimize />
    <orientation />
    <orientation_pitch_yaw_roll />
    <position />
    <remove_child />
    <scale />
    <spin_values />
    <vertices_color />
    <nx_linear_velocity />
    <nx_angular_velocity />
    <nx_misc_data />
    <shader_program />
</model>
Noeud exhaustif avec attributs et valeurs par défaut:
<model
    name=""
    filename=""
    load_texture="TRUE"
    render="TRUE"
    texturing="FALSE"
    lighting="FALSE"
    improve_specular_highlights="TRUE"
    normalize="FALSE"
    two_sides_lighting="FALSE"
    flip_normals="FALSE"
    auto_spin="FALSE"
    back_face_culling="FALSE"
    shadow_caster="FALSE"
    compute_normals="TRUE"
    compute_tangent_space="TRUE"
    average_normals="FALSE"
    display_bounding_box="FALSE"
    display_bounding_sphere="FALSE"
    display_tripod="FALSE"
    auto_update_direction="FALSE"
    polygon_mode="SOLID"
    shading_mode="SMOOTH"
    motion_path=""
    play_motion_path="TRUE"
    display_motion_path_curve="FALSE"
    display_motion_path_tangents="FALSE"
    link_to_motion_path="FALSE"
    motion_path_time_offset="0.0"
    motion_path_time_step="0.001"
    camera_collision="FALSE"
    camera_collision_bv_shape="BOX"
    camera_collision_entity="MODEL"
    use_vbo="FALSE"
    use_user_transformation="TRUE"
    nx_add_to_physics_engine="FALSE"
    check_crc32="0" >

    <add_child
        name="" />

    <apply_ambient
        r="0.0"
        g="0.0"
        b="0.0"
        a="0.0" />

    <apply_diffuse
        r="0.0"
        g="0.0"
        b="0.0"
        a="0.0" />

    <apply_specular_exp
        exp="0.0" />

    <apply_specular
        r="0.0"
        g="0.0"
        b="0.0"
        a="0.0" />

    <bump_mapping_attach_light
        name="" />

    <loading_option
        load_texture="TRUE"
        load_normal_map="FALSE"
        pixel_format="RGB_BYTE"
        auto_gen_mipmaps="FALSE"
        compute_vertices_normals="TRUE"
        compute_tangent_space_vectors="TRUE"
        average_vertices_normals="FALSE"
        free_pixmap_after_upload="FALSE"
        s3tc="FALSE" />

    <ambient_occlusion_lighting
        ambient_occlusion_map="" />

    <optimize
        vertex_epsilon="0.0001"
        method="NONE" />

    <orientation
        ang="0.0"
        x="0.0"
        y="0.0"
        z="0.0" />

    <orientation_pitch_yaw_roll
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <remove_child
        name="" />

    <scale
        x="1.0"
        y="1.0"
        z="1.0" />

    <spin_values
        x="0.0"
        y="0.0"
        z="0.0" />

    <vertices_color
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <alpha_test_params
        active="FALSE"
        func="CMP_FUNC_GREATER"
        ref="0.5" />

    <blending_params
        active="FALSE"
        src_factor="BLENDING_FACTOR_SRC_ALPHA"
        dst_factor="BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA" />

    <nx_linear_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.14*0.14" />

    <nx_angular_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.15*0.15" />

    <nx_misc_data
        mass="0.0"
        density="0.0"
        actor_type="DYNAMIC" />

    <shader_program
        name=""
        gpu_shader_for_ambient_pass=""
        apply_to_all_materials="FALSE" />

    </model>

Elément model

model est la balise xml qui définit un noeud model.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • filename - [STR255] - nom du fichier du modèle 3D à charger. Le format des fichiers 3D est dépendant des plugins disponibles avec Hyperion:
    • Plugin pour chargement du format binaire 3DStudio (*.3ds)
    • Plugin pour chargement du format ascii 3DStudio (*.ase)
    • Plugin pour chargement du format ascii MilkShape3D (*.txt)
    • Plugin pour chargement du format ascii Alias|WaveFront (*.obj)
    Hyperion peut bien évidemment charger le format natif du moteur oZone3D: le format *.o3mdl. Ce format peut être créé avec le viewer 3D LynX.

  • load_texture - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le chargement des textures pendant le chargement du modèle - valeur par défaut: TRUE

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du model - valeur par défaut: TRUE

  • lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage - valeur par défaut: FALSE

  • normalize - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la normalisation des normales aux vertices après avoir utilisé la fonction LUA HYP_SetObjectScale - valeur par défaut: FALSE

  • two_sides_lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage sur les 2 cotés (front et back) de chaque face composant les meshes - valeur par défaut: FALSE

  • flip_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'inversion des normales des faces des meshes - valeur par défaut: FALSE

  • improve_specular_highlights - [BOOLEAN] - permet d'améliorer les rendus des reflets spéculaires en utlisant une méthode de calcul faisant intervenir le vrai "half-vector". Les spéculaires sont plus réalistes mais entraînent une légère baisse des performances - valeur par défaut: TRUE

  • texturing - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'application des textures - valeur par défaut: FALSE

  • auto_spin - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la rotation autour des axes du repère local de l'objet. Les valeurs des angles de rotation doivent être spécifiées par la balise <spin_values> - valeur par défaut: FALSE

  • back_face_culling - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la suppression des faces arrières - valeur par défaut: FALSE

  • blending - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le mélange des couleurs - valeur par défaut: FALSE

  • use_vbo - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation des vertex buffer objects pour accélérer le rendu du mesh - valeur par défaut: FALSE
    use_vbo permet d'utiliser les vertex-buffer matériels (les fameux VBO en OpenGL) afin de stocker efficacement les vertices d'un mesh dans la mémoire de la carte graphique. Il est conseillé d'activer cet état pour des meshes statiques ayant un grand nombre de polygones. Un mesh est statique s'il ne subit aucune transformation sur ses vertices.

  • shadow_caster - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la projection d'ombres volumiques - valeur par défaut: FALSE

  • compute_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le calcul des normales des vertices - valeur par défaut: TRUE

  • compute_tangent_space - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le calcul des normales de l'espace tangent (utile pour le bump mapping) des vertices - valeur par défaut: TRUE

  • average_normals - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le moyennage des normals des vertices - valeur par défaut: FALSE

  • display_bounding_box - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la bounding box - valeur par défaut: FALSE

  • display_bounding_sphere - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la bounding sphere - valeur par défaut: FALSE

  • display_tripod - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du repère local du mesh - valeur par défaut: FALSE
    Remarque: Les axes du tripode sont représentés par les couleurs suivantes:
    • Axe X: rouge
    • Axe Y: vert
    • Axe Z: bleu
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

  • polygon_mode - [ENUM] - spécifie le mode de rendu des faces du modèle:
    • SOLID: polygone en mode plein - valeur par défaut
    • WIREFRAME: polygone en mode fil de fer

  • shading_mode - [ENUM] - spécifie la façon dont les faces sont coloriées:
    • FLAT: les faces sont coloriées de façon uniforme
    • SMOOTH: les faces sont coloriées de façon à former un dégradé de couleurs - valeur par défaut

  • motion_path - [STR127] - nom du motion path auquel on attache le gizmo afin de réaliser des déplacements automatiques

  • play_motion_path - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'animation de la position le long d'un motion path - valeur par défaut: TRUE

  • display_motion_path_curve - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du motion path - valeur par défaut: FALSE

  • display_motion_path_tangents - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des tangentes du motion path - valeur par défaut: FALSE

  • motion_path_time_step - [REAL] - permet de contrôler la vitesse d'animation en spécifiant l'incrément temporel le long du motion-path. Le temps est normalisé le long du motion-path, c'est à dire que le temps vaut 0.0 pour la première keyframe et vaut 1.0 pour la dernière - valeur par défaut: 0.001

  • motion_path_time_offset - [REAL] - permet de contrôler la valeur temporelle de départ de l'animation. Par défaut cette valeur de départ est le temps normalisé 0.0. Cet offset permet de placer plusieurs objets sur un motion-path avec un décalage (offset) pour chacun d'eux - valeur par défaut: 0.0

  • check_crc32 - [INTERGER] - permet d'effectuer un test d'intégrité sur le fichier 3D en cours de chargement de type crc32. Ce genre de test est pratique pour contrôler que le bon modèle a été chargé. Cela rend du coup impossible de falsifier une scène Hyperion livrée sous forme d'un binaire: même si le code de description de la scène est sous forme binaire, les textures et les autres objets 3D sont toujours accessibles sous la forme de fichiers classiques. La première personne venue pourrait donc en falsifiant quelques textures ou modèles, s'approprier l'oeuvre. Le code crc32 d'un fichier peut être obtenu à l'aide de l'utilitaire Hyperion_CRC32.exe - valeur par défaut: FALSE

  • camera_collision - [BOOLEAN] - permet de prendre (TRUE) ou ne pas prendre (FALSE) en compte ce modèle dans les calculs de collision avec la caméra. Le calcul de collision est basé sur la boîte englobante du modèle (bounding box) et sur la position de la caméra - valeur par défaut: FALSE

  • camera_collision_bv_shape - [ENUM] - permet de spécifier la forme du volume englobant pour les tests de collision. La forme du volume englobant est à choisir en fonction de la topologie du modèle:
    • BOX: bounding box - valeur par défaut
    • SPHERE: bounding sphere

  • camera_collision_entity - [ENUM] - permet de préciser quel volume englobant est utilisé pour la détection de collision: soit celui du model complet soit ceux des sous-meshes pour plus de précision:
    • MODEL: le volume englobant du modèle est utilisé dans les calculs de collision - valeur par défaut.
    • MESH: le volume englobant de chacun des sous-meshes est utilisé dans les calculs de collision.

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

  • nx_add_to_physics_engine - [BOOLEAN] - permet d'ajouter (TRUE) ou non (FALSE) cet objet dans la scène du moteur de simulation physique. Ceci n'a de sens que si le moteur physique (NovodeX) est disponible et si il a été activé au niveaudu noeud scene - valeur par défaut: FALSE

  • use_user_transformation - [BOOLEAN] - permet d'utiliser les paramètres utilisateur pour la position et l'orientation du modèle. Dans le cas du format O3MFF, la matrice de transformation est déjà initialisée. Afin de pouvoir utiliser cette matrice, il faut désactiver les paramètres utilisateurs. valeur par défaut: TRUE

Elément loading_option

loading_option permet de modifier les options par défaut des loaders d'objets 3D. Plusieurs appels à loading_option permettent de modifier plusieurs options.

Attributs:
  • load_texture - [BOOLEAN] - active le chargement automatique des textures avec le modèle. Même effet que l'attribut load_texture du noeud model - valeur par défaut: TRUE
  • load_normal_map - [BOOLEAN] - charge les textures de bump (les normals maps) du modèle lorsque le bump mapping est effectué par pixel shader - valeur par défaut: FALSE
    Ces textures portent le même nom que celles de base mais avec le suffixe DOT3. Exemple:
    • base: wood.tga
    • bump: woodDOT3.tga
    La base map est chargée sur l'unité de texture 0 et la normal map sur l'unité 1.
  • pixel_format - [ENUM] - spécifie le format de pixel de chaque texture - valeur par défaut: RGB_BYTE
    • RGB_BYTE: pixel codé sur 3 octets (1 octet pour chaque composante) - valeur par défaut
    • RGBA_FLOAT: pixel codé sur 16 octets (4 octets pour chaque composante)
  • s3tc - [BOOLEAN] - active la compression hardware de texture suivant le schémma S3TC - valeur par défaut: FALSE
  • auto_gen_mipmaps - [BOOLEAN] - active la génération hardware des mipmaps pour les textures accompagnant le modèle. Dans ce cas, le filtrage trilinéaire est activé - valeur par défaut: FALSE
  • compute_vertices_normals - [BOOLEAN] - active le calculs des vecteurs normaux (faces et vertices) nécessaire pour l'éclairage - valeur par défaut: TRUE
  • compute_tangent_space_vectors - [BOOLEAN] - active le calculs des vecteurs de l'espace tangent. Ces vecteurs, plus connus sous le nom de vecteurs tangent et binormal sont utilisés dans les algorithmes de bump mapping - valeur par défaut: TRUE
  • average_vertices_normals - [BOOLEAN] - active le moyennage des vecteurs normaux des vertices - valeur par défaut: FALSE
  • free_pixmap_after_upload - [BOOLEAN] - permet de détruire la pixmap et de libérer la mémoire système après avoir tranféré la texture sur la carte graphique - valeur par défaut: FALSE

Elément orientation

orientation spécifie l'orientation du modèle autour d'un axe arbitraire dans son repère local.

Attributs:
  • ang - [REAL] - Angle de rotation en degrés - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - composante Z de l'axe de rotation - valeur par défaut: 0.0
Exemple
<model>
    <orientation ang="90.0" x="0.0" y="0.0" z="1.0" />
</model>
Dans cet exemple, le modèle effectue une rotation de 90.0 degrés autour de l'axe des Z.

Elément orientation_pitch_yaw_roll

orientation_pitch_yaw_roll spécifie l'orientation du modèle autour des axes de son repère local.

Attributs:
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X - valeur par défaut: 0.0
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y - valeur par défaut: 0.0
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z - valeur par défaut: 0.0
Exemple
<model>
    <orientation_pitch_yaw_roll pitch="30.0" yaw="45.0" roll="0.0" />
</model>
Dans cet exemple, le modèle effectue une rotation de 30.0 degrés autour de l'axe des X et de 45.0 degrés autour de l'axe des Y.

Elément position

position spécifie la position X, Y et Z du modèle dans son repère local ou par rapport à son parent.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position - valeur par défaut: 0.0

Elément spin_values

spin_values spécifie les angles de rotation autour des axes de X, Y et Z. A chaque frame, les angles de rotation du modèle sont incrémentés par les valeurs spécifiées. Cela entraîne donc une animation du modèle par simple rotation autour des 3 axes.

Attributs:
  • x - [REAL] - angle de rotation autour de l'axe des X en degrées - valeur par défaut: 0.0
  • y - [REAL] - angle de rotation autour de l'axe des Y en degrées - valeur par défaut: 0.0
  • z - [REAL] - angle de rotation autour de l'axe des Z en degrées - valeur par défaut: 0.0

Remarques

Les valeurs précédentes ne prennent effet que si l'attribut spin_state est à TRUE.

Elément scale

scale permet de réaliser un changement d'échelle du modèle par multiplication des vertices par les facteurs d'échelle. On peut ainsi réaliser des mises à l'échelle uniforme ou non.

Attributs:
  • x - [REAL] - facteur d'échelle en X - valeur par défaut: 1.0
  • y - [REAL] - facteur d'échelle en Y - valeur par défaut: 1.0
  • z - [REAL] - facteur d'échelle en Z - valeur par défaut: 1.0

Elément vertices_color

vertices_color spécifie la nouvelle couleur à appliquer à tous les vertices (sommets 3D) de chacun des sous-meshes du modèle.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Remarques

La couleur des vertices ne prend effet que si l'éclairage est désactivé pour ce modèle. Voir l'attribut lighting pour désactiver l'éclairage.

Elément apply_ambient

apply_ambient permet d'appliquer une nouvelle valeur du coefficient de réflection ambiant au premier matériel de chaque sous-mesh.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément apply_diffuse

apply_diffuse permet d'appliquer une nouvelle valeur du coefficient de réflection diffus au premier matériel de chaque sous-mesh.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément apply_specular

apply_specular permet d'appliquer une nouvelle valeur du coefficient de réflection spéculaire au premier matériel de chaque sous-mesh.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • a - [CLAMPED_REAL] - composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément apply_specular_exp

apply_specular_exp permet d'appliquer une nouvelle valeur du coefficient exponentiel de réflection spéculaire au premier matériel de chaque sous-mesh.

Attributs:
  • r - [REAL] - exposant du coefficient de réflection spéculaire - valeur par défaut: 0.0

Elément alpha_test_params

alpha_test_params permet de fixer les paramètres pour l'alpha-test hardware.

Attributs:
  • active - [BOOLEAN] - active ou désactive le test alpha - valeur par défaut: FALSE
  • func - [ENUM] - fonction de comparaison alpha. Les constantes symboliques suivantes sont acceptées:
    • CMP_FUNC_NEVER: le test ne passe jamais.
    • CMP_FUNC_LESS: le test passe si la valeur alpha est plus petite que la valeur de référence.
    • CMP_FUNC_LESS_OR_EQUAL: le test passe si la valeur alpha est plus petite ou égale à la valeur de référence.
    • CMP_FUNC_GREATER: le test passe si la valeur alpha est plus grande que la valeur de référence - valeur par défaut
    • CMP_FUNC_GREATER_OR_EQUAL: le test passe si la valeur alpha est plus grande ou égale à la valeur de référence.
    • CMP_FUNC_EQUAL: le test passe si la valeur alpha est égale à la valeur de référence.
    • CMP_FUNC_NOT_EQUAL: le test passe si la valeur alpha est différente de la valeur de référence.
    • CMP_FUNC_ALWAYS: le test passe toujours.
  • ref - [CLAMPED_REAL] - valeur de référence avec laquelle la valeur alpha entrante est comparée. Cette valeur de référence doit être comprise entre 0.0 et 1.0 - valeur par défaut: 0.5

Elément blending_params

blending_params permet de fixer les paramètres pour le blending (mélange) des couleurs.

Attributs:
  • active - [BOOLEAN] - active ou désactive le blending - valeur par défaut: FALSE
  • src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA
    blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
  • dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA

Elément bump_mapping_attach_light

bump_mapping_attach_light spécifie la lumière à prendre en compte pour le DOT3 bump mapping. Plusieurs appels à mesh_bump_mapping_attach_light permettent d'attacher plusieurs lumières. Cette instruction est à utiliser lorsque l'option LOAD_BUMP_MAP a été utilisée pour le chargement du modèle 3D.

Attributs:
  • name - [STR127] - nom du noeud de lumière à attacher

Elément optimize

optimize permet d'optimiser la géométrie des sous meshes du modèle. Cela est utile lorsque vous souhaitez appliquer des effets de déformation aux meshes. Le moteur d'ombres volumiques optimise par défaut tous les meshes.

Attributs:
  • method - [ENUM] - méthode d'optimisation. Les valeurs suivantes sont acceptées:
    • NONE: n'applique aucune optimisation.
    • VERTICES: optimise les vertices: supprime les vertices isolés et fusionne les vertices ayant la même position (moyennant une tolérance epsilon paramétrable par vertex_epsilon).
    • ALL: optimise les vertices (comme le mode VERTICES) et les faces (suppression des faces dégénérées).
  • vertex_epsilon - [REAL] - permet de spécifier la tolérance pour la fusion de vertices dans le mode d'optimisation VERTICES - valeur par défaut: 0.0001

Elément add_child

add_child permet d'ajouter un enfant au modèle courant. Cela permet de mettre en place facilement des hiérarchies complexes. Toute transformation (rotation ou translation) du modèle courant sera répercutée sur les enfants.

Attributs:
  • name - [STR127] - nom de l'objet enfant à ajouter. Cet objet doit exister.

Elément remove_child

remove_child permet d'enlever un enfant du modèle courant. Cela permet de mettre en place facilement des hiérarchies complexes.

Attributs:
  • name - [STR127] - nom de l'objet enfant à enlever. Cet objet doit exister.

Elément ambient_occlusion_lighting

ambient_occlusion_lighting permet de spécifier les données afin de mettre en oeuvre un algorithme avancé d'éclairage: l'Ambient Occlusion Lighting. Mais l'ambient occlusion lighting nécessite un vertex/pixel shader afin d'exploiter correctement les données d'occlusion (ces données sont généralement stockées dans un fichier appelé occlusion-map).

La création de l'occlusion map est une étape offline étant donné les temps de calculs (plusieurs heures). A ce titre, Hyperion est livré avec l'utilitaire AOGen, en ligne de commande, qui permet de générer cette map d'occlusion.

Voir le tutoriel Ambient Occlusion Lighting pour plus d'information sur cette technique d'éclairage et sur l'utilisation d'AOGen.

Attributs:
  • active - [BOOLEAN] - TRUE pour autoriser l'initialisation des données d'occlusion et FALSE dans le cas contraire.
  • ambient_occlusion_map - [STR255] - occlusion map.
  • vertex_attrib - [INTEGER] - permet de spécifier l'attribut de vertex dans lequel charger les données d'occlusion. Dans la version actuelle d'Hyperion, seuls les attributs 1, 2, 3, 4 et 5 sont autorisés. Ces attributs sont ensuite accessibles dans un vertex shader (avec le mot clé attribute en GLSL).

Elément nx_linear_velocity

nx_linear_velocity permet de spécifier la vitesse lineaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.14*0.14

Elément nx_angular_velocity

nx_angular_velocity permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.15*0.15

Elément nx_misc_data

nx_misc_data permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • mass - [REAL] - mass de l'objet - Valeur par défaut: 100.0
  • density - [REAL] - densité del'objet - Valeur par défaut: 0.0
  • actor_type - [ENUM] - type de l'acteur (objet):
    • STATIC
    • DYNAMIC - valeur par défaut.
    • KINEMATIC

Elément shader_program

shader_program permet d'appliquer un vertex pixel shader à tous les matériaux composants les sous-meshes du modèle.

Attributs:
  • name - [STR127] - nom du shader program principal (celui qui est utilisé dans le noeud material). Dans le cas d'un rendu avec les onmbres volumiques ce shader est celui de la passe d'illumination.
  • gpu_shader_for_ambient_pass - [STR127] - nom du shader à appliquer lors de la passe ambiante des ombres volumiques.
  • apply_to_all_materials - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'application des shaders pré-cités aux materiaux - valeur par défaut: FALSE

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - motion_path

Noeud <motion_path>

Fonction

Le motion_path (ou chemin d'animation en français) est une courbe dans l'espace qui décrit une trajectoire à suivre par des objets. Cette courbe est, dans la version actuelle d'Hyperion, régie par les équations des splines de Bézier.

Un motion_path est composé d'un nombre quelconque de points spatio-temporels que l'on appelle keyframes. A chaque keyframe correspond une position dans l'espace, une valeur temporelle (non utilisée actuellement dans Hyperion) et une tangente qui permet de modeler localement la courbe.

Hyperion est livré avec un utilitaire, le 3DCameraPathEditor, qui permet de contruire visuellement un nombre quelconque de motion-paths et de les exporter directement sous forme de code XML prêt à l'emploi:

Syntaxe générale

<motion_path>
    <keyframe>
        <key />
        <tangent />
    </keyframe>
</motion_path>
Noeud exhaustif avec attributs et valeurs par défaut:
<motion_path
    name=""
    num_segments_per_patch="1000.0"
    display_keyframe_index="TRUE" >

    <keyframe>
        <key
            x="0.0"
            y="0.0"
            z="0.0" />
        <tangent
            x="0.0"
            y="0.0"
            z="0.0" />
    </keyframe>
</motion_path>

Elément motion_path

motion_path est la balise xml qui définit un noeud motion_path.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • num_segments_per_patch - [INTEGER] - spécifie le nombre de segments pour chaque path de Bézier. Plus ce nombre de segments est élevé, plus l'animation ou le déplacement le long de la courbe sera doux - valeur par défaut: 1000

  • display_keyframe_index - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des numéros d'index des keyframes. L'index d'un keyframe est en relation directe avec l'ordre de saisie des keyframes dans le code xml - valeur par défaut: FALSE

Elément keyframe

keyframe permet de créer des sous-noeuds pour chaque keyframe.
Syntaxe
<motion_path>
    <keyframe>
        <...>
        <...>
    </keyframe>
</motion_path_kf>

Elément key

key spécifie la position de la keyframe dans la scène 3D.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position - valeur par défaut: 0.0

Elément tangent

tangent permet de spécifier le vecteur tangent à la courbe au niveau de la position du keyframe. Le vecteur tangent est une demie tangente et est obtenu par différence entre la position du keyframe et une autre position dans l'espace, justement celle que l'on spécifie à l'aide de cette instruction.

Lorsque l'affichage des tangentes est activé au niveau d'un objet (avec l'attribut display_motion_path_tangents du gizmo par exemple) la demie tangente que l'on spécifie est représentée en jaune (l'autre demie étant verte).

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position - valeur par défaut: 0.0

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - mouse

Noeud <mouse>

Fonction

Le noeud mouse permet de contrôler le fonctionnement de la souris. On peut reprogrammer les fonctionnalités associées à chacun des boutons de la souris (droite et gauche), à la molette (wheel), et au déplacement.

Syntaxe générale

<mouse />
Noeud exhaustif avec attributs et valeurs par défaut:
<mouse
    name=""
    left_button_down_script=""
    left_button_up_script=""
    right_button_up_script=""
    right_button_down_script=""
    move_script=""
    wheel_script="" />

Elément mouse

mouse est la balise xml qui définit un noeud mouse.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • left_button_down_script - [STR255] - emplacement du fichier de script relativement au script XML qui sera exécuté lors d'un appui sur le bouton gauche de la souris. Ce nom peut également référer un noeud script déja présent dans le code XML.

  • left_button_up_script - [STR255] - emplacement du fichier de script relativement au script XML qui sera exécuté lors d'un relachement du bouton gauche de la souris. Ce nom peut également référer un noeud script déja présent dans le code XML.

  • right_button_down_script - [STR255] - emplacement du fichier de script relativement au script XML qui sera exécuté lors d'un appui sur le bouton droit de la souris. Ce nom peut également référer un noeud script déja présent dans le code XML.

  • right_button_up_script - [STR255] - emplacement du fichier de script relativement au script XML qui sera exécuté lors d'un relachement du bouton droit de la souris. Ce nom peut également référer un noeud script déja présent dans le code XML.

  • wheel_script - [STR255] - emplacement du fichier de script relativement au script XML qui sera exécuté lors d'une rotation de la molette. Ce nom peut également référer un noeud script déja présent dans le code XML.

Exemple:
<mouse name="myMouse" left_button_down_script="left_button_down_lua" />

<script name="left_button_down_lua" run_mode="ASYNCHRONOUS"
    <raw_data><![CDATA[
    -- Do something
    HYP_MsgBox("Hello!");
    ]]></raw_data>
</script>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - particle_system

Noeud <particle_system>

Fonction

Le noeud particle_system permet de créer un système de particules.

Le terme particule est pris au sens le plus général. En physique, une particule a le plus souvent une masse et/ou une charge et est soumise aux lois de la gravitation ou des forces électromagnétiques qui influencent sa position et sa vitesse dans l'espace et dans le temps. Le mouvement des particules du système de particules d'oZone3D est basé sur les vraies équations de la physique, ce qui donne aux particules des mouvements très réalistes.

Le système de particules est très pratique pour créer des effets de neige, de pluie, de fumée, des explosions ou tout autre effet visuel.

Des objets appelés émetteurs génèrent des particules à chaque frame, tandis que d'autres objets appelés obstacles et actions sont utilisés pour modifier la direction et la vitesse des particules. Les actions, obstacles et émetteurs qui contrôlent le comportement des particules sont situés dans des plugins.

L'image ci-dessous, issue du tutorial HyperGraph 18 montre un émetteur de type POINT associé à 2 actions de type COLOR et SIZE:

Syntaxe générale

<particle_system>
    <add_action />
    <add_emitter />
    <add_obstacle />
</particle_system>
Noeud exhaustif avec attributs et valeurs par défaut:
<particle_system
    name=""
    particle_texture=""
    num_particles="2000"
    active="TRUE"
    point_sprite="FALSE"
    blending_src_factor="BLENDING_FACTOR_SRC_ALPHA"
    blending_dst_factor="BLENDING_FACTOR_ONE" >

    <add_action
        name="myChild" />

    <add_emitter
        name="myChild" />

    <add_obstacle
        name="myChild" />
</particle_system>

Elément particle_system

particle_system est la balise xml qui définit un noeud particle_system.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • num_particles - [INTEGER] - spécifie le nombre de particules max que doit gérer le système de particules. Plus il y aura de particules, plus les calculs seront lourds ce qui entraînera une baisse du FPS (frames per second) - valeur par défaut: 2000

  • particle_texture - [STR127] - nom du noeud texture representant la texture à appliquer à chaque particule du système.

  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le système de particules - valeur par défaut: TRUE

  • blending_src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA
    blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1) (Valeur par défaut)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
    Remarque 1: Le mélange des couleurs ne se fait que si le blending est activé.
    Remarque 2: A contrario des autres objets (mesh, hud) le blending est toujours activé dans un système de particules.

  • blending_dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à blending_src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE

  • point_sprite - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu haute performance des particules. Ce mode haute performance n'est disponible que si la carte graphique supporte l'extension point_sprite d'OpenGL 1.5. Pour vous en assurer, utilisez l'utilitaire HardwareInfos, livré avec Hyperion - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément add_emitter

add_emitter permet d'ajouter un émetteur au système de particules. Un système de particules peut avoir plusieurs émetteurs de même type ou de type différents.

Attributs:
  • name - [STR127] - nom de l'émetteur

Elément add_action

add_action permet d'ajouter une action au système de particules. Un système de particules peut avoir plusieurs actions de même type ou de type différents.

Attributs:
  • name - [STR127] - nom de l'action

Elément add_obstacle

add_obstacle permet d'ajouter un obstacle au système de particules. Un système de particules peut avoir plusieurs obstacles de même type ou de type différents.

Attributs:
  • name - [STR127] - nom de l'obstacle

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - particle_system_action

Noeud <particle_system_action>

Fonction

Le noeud particle_system_action décrit une action permettant de modifier les caractéristiques de base d'une particule (vitesse, taille, couleur, ...).

Syntaxe générale

<particle_system_action>
    <color_final_color />
    <color_variation_velocity />
    <gravity_vector />
    <orbit_point_acceleration_vector />
    <size_final_size />
    <size_variation_velocity />
</particle_system_action>
Noeud exhaustif avec attributs et valeurs par défaut:
<particle_system_action
    name=""
    master_object=""
    type="GRAVITY" >

    <color_final_color
        r="0.0"
        g="0.0"
        b="0.0"
        a="0.0" />

    <color_variation_velocity
        r="0.001"
        g="0.001"
        b="0.001"
        a="0.0" />

    <gravity_vector
        x="0.0"
        y="0.0"
        z="0.0" />

    <orbit_point_acceleration_vector
        x="0.0"
        y="0.0"
        z="0.0" />

    <size_final_size
        x="10.0"
        y="10.0"  />

    <size_variation_velocity
        x="10.0"
        y="10.0" />
</particle_system_action>

Elément particle_system_action

particle_system_action est la balise xml qui définit un noeud particle_system_action.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • master_object - [STR127] - nom du noeud representant l'objet de référence. La signification de master_object est dépendante du type de l'action.

  • type - [ENUM] - type de l'action:
    • GRAVITY: simule l'effet de la gravité. Voir l'instruction gravity_vector pour paramétrer la gravité - valeur par défaut
    • COLOR: modifie la couleur initiale de la particule. Voir les instructions color_final_color et color_variation_velocity pour paramétrer l'action color
    • SIZE: modifie la taille initiale de la particule. Voir les instructions size_final_size et size_variation_velocity pour paramétrer l'action size
    • ORBIT_POINT: crée un point d'attraction des particules. Voir les instructions orbit_point_acceleration_vector pour paramétrer l'orbit point

Elément gravity_vector

gravity_vector spécifie la valeur du vecteur de gravité.

Attributs:
  • x - [REAL] - composante X du vecteur gravité - valeur par défaut: 0.0
  • y - [REAL] - composante Y du vecteur gravité - valeur par défaut: -10.0
  • z - [REAL] - composante Z du vecteur gravité - valeur par défaut: 0.0

Elément size_final_size

size_final_size spécifie la valeur finale de la taille des particules.

Attributs:
  • x - [REAL] - largeur finale - valeur par défaut: 10.0
  • y - [REAL] - hauteur finale - valeur par défaut: 10.0

Elément size_variation_velocity

size_variation_velocity permet de spécifier la vitesse de variation de la taille pour chaque frame.

Attributs:
  • x - [REAL] - vitesse de variation de la largeur - valeur par défaut: 0.001
  • y - [REAL] - vitesse de variation de la hauteur - valeur par défaut: 0.001

Elément orbit_point_acceleration_vector

orbit_point_acceleration_vector permet de spécifier le vecteur accélération à appliquer aux particules.

Attributs:
  • x - [REAL] - composante X du vecteur accélération - valeur par défaut: 10.0
  • y - [REAL] - composante Y du vecteur accélération - valeur par défaut: 50.0
  • z - [REAL] - composante Z du vecteur accélération - valeur par défaut: 10.0

Elément color_final_color

color_final_color spécifie la valeur finale de la couleur des particules.

Attributs:
  • r - [REAL] - valeur finale de la composante rouge de la couleur - valeur par défaut: 0.0
  • g - [REAL] - valeur finale de la composante verte de la couleur - valeur par défaut: 0.0
  • b - [REAL] - valeur finale de la composante bleue de la couleur - valeur par défaut: 0.0
  • a - [REAL] - valeur finale de la composante alpha de la couleur - valeur par défaut: 0.0

Elément color_variation_velocity

color_variation_velocity permet de spécifier la vitesse de variation de la couleur pour chaque frame.

Attributs:
  • r - [REAL] - valeur de la vitesse de variation pour la composante rouge - valeur par défaut: 0.001
  • g - [REAL] - valeur de la vitesse de variation pour la composante verte - valeur par défaut: 0.001
  • b - [REAL] - valeur de la vitesse de variation pour la composante bleue - valeur par défaut: 0.001
  • a - [REAL] - valeur de la vitesse de variation pour la composante alpha - valeur par défaut: 0.0

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - particle_system_emitter

Noeud <particle_system_emitter>

Fonction

Le noeud particle_system_emitter décrit l'objet qui permet de créer et d'initialiser les particules.

Syntaxe générale

<particle_system_emitter>
    <particle_color />
    <particle_size />
    <mesh_spawn_point />
    <spawn_direction_min />
    <spawn_direction_max />
    <rotation />
</particle_system_emitter>
Noeud exhaustif avec valeurs par défaut:
<particle_system_emitter
    name=""
    master_object=""
    type="POINT"
    particle_lifetime="5.0"
    particle_speed="30.0"
    particle_rate="50.0"
    emission_type="RADIAL" >

    <particle_color
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0"
        var_r="0.0"
        var_g="0.0"
        var_b="0.0"
        var_a="0.0" />

    <particle_size
        width="4.0"
        height="4.0"
        var_width="0.0"
        var_height="0.0" />

    <mesh_spawn_point
        x="0.0"
        y="0.0"
        z="0.0" />

    <spawn_direction_min
        x="-1.0"
        y="-1.0"
        z="-1.0" />

    <spawn_direction_max
        x="1.0"
        y="1.0"
        z="1.0" />

    <rotation
        angle_z="0.0"
        var_angle_z="0.0"  />

</particle_system_emitter>

Elément particle_system_emitter

particle_system_emitter est la balise xml qui définit un noeud particle_system_emitter.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • master_object - [STR127] - spécifie l'objet qui contrôle la forme de base de l'émetteur.

  • type - [ENUM] - type de l'émetteur:
    • POINT
    • LINE
    • SPHERE
    • DISC
    • MESH
    type spécifie le type de l'émetteur, c'est à dire sa forme de base (point, sphère, disque, ...). Cette instruction va de paire avec l'attribut master_object: en effet, les caractéristiques de chaque type d'émetteur (position, radius, longeur, ...) sont initialisées par le noeud décrivant l'objet (appelé dans ce contexte le master-objet): voir les noeuds mesh et primitive pour plus d'informations.

  • particle_lifetime - [REAL] - spécifie le temps de vie d'une particule en secondes - valeur par défaut: 5.0

  • particle_speed - [REAL] - spécifie la vitesse d'éjection d'une particule en unités/seconde - valeur par défaut: 30.0

  • particle_rate - [REAL] - spécifie la quantité de particules emises par seconde - valeur par défaut: 50.0

  • emission_type - [ENUM] - spécifie la façon dont les particules sont émises
    • RADIAL: émet les particules dans toutes les directions selon les valeurs contenues dans les vecteurs spawn_direction_max et spawn_direction_min.
    • DIRECTIONNAL: les particules sont émises dans une direction particulière qui est la normale à la surface du master-object (s'applique principalement à l'émetteur de type DISC).

Elément particle_color

particle_color spécifie la couleur initiale d'une particule. Cette couleur pourra ensuite évoluer en fonction de l'action color.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • var_r - [CLAMPED_REAL] - variance de la composante rouge. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • var_g - [CLAMPED_REAL] - variance de la composante verte. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • var_b - [CLAMPED_REAL] - variance de la composante bleu. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • var_a - [CLAMPED_REAL] - variance de la composante alpha. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément particle_size

particle_size spécifie la taille initiale d'une particule. Cette taille pourra ensuite évoluer en fonction de l'action size.

Attributs:
  • width - [REAL] - largeur de la particule - valeur par défaut: 4.0
  • height - [REAL] - hauteur de la particule - valeur par défaut: 4.0

Elément spawn_direction_max

spawn_direction_max permet de spécifier la valeur maximale du vecteur direction lors de l'initialisation des particules.

Attributs:
  • x - [CLAMPED_REAL] - valeur max de la composante X du vecteur direction - valeur par défaut: 1.0
  • y - [CLAMPED_REAL] - valeur max de la composante Y du vecteur direction - valeur par défaut: 1.0
  • z - [CLAMPED_REAL] - valeur max de la composante Z du vecteur direction - valeur par défaut: 1.0

Elément spawn_direction_min

spawn_direction_min permet de spécifier la valeur minimale du vecteur direction lors de l'initialisation des particules.

Attributs:
  • x - [CLAMPED_REAL] - valeur min de la composante X du vecteur direction - valeur par défaut: -1.0
  • y - [CLAMPED_REAL] - valeur min de la composante Y du vecteur direction - valeur par défaut: -1.0
  • z - [CLAMPED_REAL] - valeur min de la composante Z du vecteur direction - valeur par défaut: -1.0

Elément mesh_spawn_point

mesh_spawn_point permet de spécifier la position du point dans l'espace qui avec chacun des vertices d'un mesh formera le vecteur direction lors de la création des particules pour un émetteur de type MESH.

Attributs:
  • x - [CLAMPED_REAL] - coordonnée X de la position - Valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - coordonnée Y de la position - Valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - coordonnée Z de la position - Valeur par défaut: 0.0

Elément rotation

rotation permet de spécifier l'angle de rotation en Z de la particule.

Attributs:
  • angle_z - [REAL] - angle de rotation en degrés par seconde - Valeur par défaut: 0.0
  • var_angle_z - [REAL] - variance de l'angle de rotation en degrés par seconde - Valeur par défaut: 0.0

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - particle_system_obstacle

Noeud <particle_system_obstacle>

Fonction

Le noeud particle_system_obstacle spécifie le type d'obstacle pour le flow de particules. Un obstacle est un objet qui permet de dévier la trajectoire d'une particule.

L'image ci-dessous, issue du tutorial HyperGraph 29 montre un émetteur de type POINT associé à 1 action de type GRAVITY et 2 obstacles de type PLANE:

Syntaxe générale

<particle_system_obstacle />
Noeud exhaustif avec attributs et valeurs par défaut:
<particle_system_obstacle
    name=""
    master_object=""
    type="PLANE"
    bounce="0.3"
    friction="0.4" />

Elément particle_system_obstacle

particle_system_obstacle est la balise xml qui définit un noeud particle_system_obstacle.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • master_object - [STR127] - spécifie l'objet qui contrôle la forme de base de l'obstacle.

  • type - [ENUM] - type de l'obstacle:
    • SPHERE
    • PLANE
    • DISC
    type spécifie le type de l'émetteur, c'est à dire sa forme de base (plan, sphère, disque, ...). Cette instruction va de paire avec l'insruction particle_system_obstacle_master_object: en effet, les caractéristiques de chaque type d'obstacle (position, radius, longeur, ...) sont initialisées par le noeud décrivant l'objet (appelé dans ce contexte le master-objet): voir le noeud primitive pour plus d'informations.

  • bounce - [REAL] - spécifie le coefficient de rebond de la surface de l'obstacle - valeur par défaut: 0.3

  • friction - [REAL] - spécifie le facteur d'adhérence ou de friction à la surface de l'obstacle - valeur par défaut: 0.5

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - play_list

Noeud <play_list>

Fonction

Le noeud play_list permet de gérer une collection de pistes audio et de les jouer (un peu comme les playLists de Winamp).

Syntaxe générale

<play_list>
    <add_track />
</play_list>
Noeud exhaustif avec attributs et valeurs par défaut:
<play_list
    name=""
    active="TRUE"
    loop="TRUE"
    display_current_audio_track_name="FALSE" >

    <add_track
        name=""
        start_script=""
        per_frame_script="" />

</play_list>

Elément play_list

play_list est la balise xml qui définit un noeud play_list.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.
  • active - [BOOLEAN] - active ou désactive la play list - valeur par défaut: TRUE
  • loop - [BOOLEAN] - active ou désactive le mode loop (boucle). Si ce mode vaut TRUE, le fichier la liste des pistes audio est joué continuellement en boucle. Si ce mode vaut FALSE, la liste des pistes audio est joué une seule fois - valeur par défaut: TRUE
  • display_current_audio_track_name - [BOOLEAN] - active ou désactive l'affichage de du nom de la piste audio en cours de lecture - valeur par défaut: FALSE

Elément add_track

add_track permet d'ajouter une piste audio à la play list. Chaque piste audio peut être accompagné de deux scripts: l'un sera exécuté à l'activation de la piste audio et l'autre sera exécuté à chaque frame de la lecture de la piste audio.

Attributs:
  • name - [STR127] - nom de la piste audio à ajouter dans la play list. Ce nom doit correspondre à celui d'un noeud audio déclaré dans le code XML.
  • start_script - [STR255] - nom du fichier de script à exécuter une fois au démarrage de la lecture de la piste audio.
  • per_frame_script - [STR255] - nom du fichier de script à exécuter à chaque frame pendant la lecture de la piste audio.
Exemple:
<audio name="bluishbg" filename="mp3/tbl/bluishbg.xm"  looping="FALSE" play="FALSE" />
<audio name="valentines" filename="mp3/etak/valentines.mp3" looping="FALSE" play="TRUE" />
<audio name="over2bg" filename="mp3/tbl/over2bg.xm" looping="FALSE" play="FALSE" />

<play_list name="myPlayList" loop="TRUE" active="TRUE" display_current_audio_track_name="TRUE" >
    <add_track name="over2bg" start_script="scripts/over2bg_start.lua" per_frame_script="scripts/over2bg_per_frame.lua"/>
    <add_track name="valentines" start_script="scripts/valentines_start.lua" per_frame_script="scripts/valentines_per_frame.lua"/>
    <add_track name="bluishbg" start_script="scripts/bluishbg_start.lua" per_frame_script="scripts/bluishbg_per_frame.lua"/>
</play_list>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - primitive

Noeud <primitive>

Fonction

Le noeud primitive permet de définir des objets auxilaires d'aide à la mise au point des scènes 3D. La plupart des primitives ne peuvent être représentés qu'en fil de fer (sans éclairage et sans application de texture). On utilise les primitives pour representer la position d'une lumière ou encore comme objets de référence pour les obstacles du système de particules.

Syntaxe générale

<primitive>
    <alpha_test_params />
    <blending_params  />
    <box />
    <color />
    <disc />
    <line />
    <orientation
    <plane />
    <position />
    <quad />
    <sphere />
    <spin_values />
    <triangle />
    <nx_linear_velocity />
    <nx_angular_velocity />
    <nx_misc_data />

</primitive>
Noeud exhaustif avec attributs et valeurs par défaut:
<primitive
    name=""
    material_name=""
    texturing="TRUE"
    shape_type="BOX"
    render="TRUE"
    auto_spin="FALSE"
    billboarding="FALSE"
    lighting="FALSE"
    normalize="FALSE"
    nx_add_to_physics_engine="FALSE"
    display_tripod="FALSE"
    auto_update_direction="FALSE"
    position_ref_object="" >

    <alpha_test_params
        active="FALSE"
        func="CMP_FUNC_GREATER"
        ref="0.5" />

    <blending_params
        active="FALSE"
        src_factor="BLENDING_FACTOR_SRC_ALPHA"
        dst_factor="BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA" />

    <box
        width="20.0"
        height="20.0"
        depth="20.0"
        texture_name=""
        u_offset="0.0"
        v_offset="0.0"  />

    <color
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <disc
        outer_radius="20.0"
        inner_radius="0.0"
        slices="6" />

    <triangle
        index="0.0"
        x="0.0"
        y="0.0"
        z="0.0"
        r="0.0"
        g="0.0"
        b="0.0" />

    <line
        x_start="-20.0"
        y_start="-20.0"
        z_start="-20.0"
        x_end="20.0"
        y_end="20.0"
        z_end="20.0" />

    <orientation
        ang="0.0"
        x="0.0"
        y="1.0"
        z="0.0" />

    <plane
        width="20.0"
        height="20.0"
        texture_name=""
        u_offset="0.0"
        v_offset="0.0"  />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <quad
        width="20.0"
        height="20.0"
        billboarding="FALSE"
        texture_name=""
        u_offset="0.0"
        v_offset="0.0"  />

    <sphere
        outer_radius="20.0"
        inner_radius="0.0"
        slices="6" />

    <spin_values
        x="0.0"
        y="0.0"
        z="0.0" />

    <nx_linear_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.14*0.14" />

    <nx_angular_velocity
        x="0.0"
        y="0.0"
        z="0.0"
        damping="0.5"
        sleep_threshold="0.15*0.15" />

    <nx_misc_data
        mass="0.0"
        desnity="0.0"
        actor_type="DYNAMIC" />

</primitive>

Elément primitive

primitive est la balise xml qui définit un noeud primitive.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du tripode du gizmo - valeur par défaut: TRUE

  • material_name - [STR127] - nom du matériau à affecter à cette primitive. Si ce nom n'est pas spécifié, un nom par défaut sera généré. Si ce nom est spécifié, il référence un noeud material dans le code XML.

  • texturing - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'application de texture sur la prinmitive - valeur par défaut: TRUE

  • auto_spin - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la rotation autour des axes du repère local de l'objet. Les valeurs des angles de rotation doivent être spécifiées par la balise <spin_values> - valeur par défaut: FALSE

  • lighting - [BOOLEAN] - active (TRUE) ou désactive (FALSE) les calculs d'éclairage - valeur par défaut: FALSE

  • normalize - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la normalisation des normales aux vertices après avoir utilisé la fonction LUA HYP_SetObjectScale - valeur par défaut: FALSE

  • shape_type - [ENUM] - forme de base de la primitive:
    • POINT: point 3D (vertex) défini par une position et une couleur. La position du point est spécifiée par l'élément XML et la couleur par
    • LINE: ligne dans l'espace 3D composée de 2 vertices: 1 vertex de départ et 1 vertex de fin
    • TRIANGLE: triangle formé par 3 points 3D (vertices), chaque point étant défini par une position et une couleur
    • DISC: disque formé par des segments de droites. Le nombre de segments de droite est le slice du disque
    • SPHERE: sphère formée par un certain nombre de disques
    • PLANE: plan 3D pouvant être défini suivant XZ
    • QUAD: plan 3D pouvant être défini suivant XY. Le quad se différencie du plan par le billboarding
    • BOX: boîte 3D dont on peut spécifier ses 3 dimensions

  • position_ref_object - [STR127] - permet de lier la position de cette primitive à celle d'un autre objet appellé objet de référence

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

  • nx_add_to_physics_engine - [BOOLEAN] - permet d'ajouter (TRUE) ou non (FALSE) cet objet dans la scène du moteur de simulation physique. Ceci n'a de sens que si le moteur physique (NovodeX) est disponible et si il a été activé au niveaudu noeud scene - valeur par défaut: FALSE

  • display_tripod - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu du repère local du mesh - valeur par défaut: FALSE
    Remarque: Les axes du tripode sont représentés par les couleurs suivantes:
    • Axe X: rouge
    • Axe Y: vert
    • Axe Z: bleu
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

Elément alpha_test_params

alpha_test_params permet de fixer les paramètres pour l'alpha-test hardware.

Attributs:
  • active - [BOOLEAN] - active ou désactive le test alpha - valeur par défaut: FALSE
  • func - [ENUM] - fonction de comparaison alpha. Les constantes symboliques suivantes sont acceptées:
    • CMP_FUNC_NEVER: le test ne passe jamais
    • CMP_FUNC_LESS: le test passe si la valeur alpha est plus petite que la valeur de référence
    • CMP_FUNC_LESS_OR_EQUAL: le test passe si la valeur alpha est plus petite ou égale à la valeur de référence
    • CMP_FUNC_GREATER: le test passe si la valeur alpha est plus grande que la valeur de référence - valeur par défaut
    • CMP_FUNC_GREATER_OR_EQUAL: le test passe si la valeur alpha est plus grande ou égale à la valeur de référence
    • CMP_FUNC_EQUAL: le test passe si la valeur alpha est égale à la valeur de référence
    • CMP_FUNC_NOT_EQUAL: le test passe si la valeur alpha est différente de la valeur de référence
    • CMP_FUNC_ALWAYS: le test passe toujours
  • ref - [CLAMPED_REAL] - valeur de référence avec laquelle la valeur alpha entrante est comparée. Cette valeur de référence doit être comprise entre 0.0 et 1.0 - valeur par défaut: 0.5

Elément blending_params

blending_params permet de fixer les paramètres pour le blending (mélange) des couleurs.

Attributs:
  • active - [BOOLEAN] - active ou désactive le blending - valeur par défaut: FALSE
  • src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA
    blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)
  • dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA

Elément color

color spécifie la nouvelle couleur à appliquer à tous les vertices (sommets 3D) de la primitive.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément position

position spécifie la position de l'objet par rapport à son repère local.

Attributs:
  • x - [REAL] - coordonnée X de la position - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position - valeur par défaut: 0.0

Elément orientation

orientation spécifie l'orientation de l'objet autour d'un axe arbitraire dans son repère local.

Attributs:
  • ang - [REAL] - Angle de rotation en degrés - valeur par défaut: 0.0
  • x - [CLAMPED_REAL] - composante X de l'axe de rotation - valeur par défaut: 0.0
  • y - [CLAMPED_REAL] - composante Y de l'axe de rotation - valeur par défaut: 0.0
  • z - [CLAMPED_REAL] - composante Z de l'axe de rotation - valeur par défaut: 0.0
Exemple
<primitive>
    <orientation ang="90.0" x="0.0" y="0.0" z="1.0" />
</primitive>
Dans cet exemple, la primitive effectue une rotation de 90.0 degrés autour de l'axe des Z.

Ou encore avec les angles d'Euler (PYR):
<orientation pitch="0.0" yaw="0.0" roll="90.0" />

Elément plane

plane spécifie les paramètres pour initialiser une primitive de type PLANE.

Attributs:
  • width - [REAL] - largeur du plan - valeur par défaut: 20.0
  • height - [REAL] - hauteur du plan - valeur par défaut: 20.0
  • texture_name - [STR127] - nom du noeud de texture à appliquer sur cette primitive
  • u_offset - [REAL] - décalage de la coordonnée u de texture - valeur par défaut: 0.0
  • v_offset - [REAL] - décalage de la coordonnée v de texture - valeur par défaut: 0.0

Elément triangle

triangle spécifie les paramètres pour initialiser une primitive de type TRIANGLE.

Attributs:
  • index - [INTEGER] - index du vertex à initialiser - valeur par défaut: 0
  • x - [REAL] - coordonnée X de la position du vertex - valeur par défaut: 0.0
  • y - [REAL] - coordonnée Y de la position du vertex - valeur par défaut: 0.0
  • z - [REAL] - coordonnée Z de la position du vertex - valeur par défaut: 0.0
  • r - [CLAMPED_REAL] - composante rouge de la couleur du vertex - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante rouge de la couleur du vertex - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante rouge de la couleur du vertex - valeur par défaut: 0.0

Elément disc

disc spécifie les paramètres pour initialiser une primitive de type DISC.

Attributs:
  • outer_radius - [REAL] - rayon extérieur du disque - valeur par défaut: 20.0
  • inner_radius - [REAL] - rayon intérieur du disque - valeur par défaut: 0.0
  • slices - [INTEGER] - nombre de segments le long de la circonférence du disque - valeur par défaut: 6

Elément sphere

sphere spécifie les paramètres pour initialiser une primitive de type SPHERE.

Attributs:
  • outer_radius - [REAL] - rayon extérieur de la sphère - valeur par défaut: 20.0
  • inner_radius - [REAL] - rayon intérieur de la sphère - valeur par défaut: 0.0
  • slices - [INTEGER] - nombre de disques qui composent la sphère - valeur par défaut: 6

Elément line

line spécifie les paramètres d'initialisation d'un segment de droite.

Attributs:
  • x_start - [REAL] - coordonnée X du point de départ - valeur par défaut: -20.0
  • y_start - [REAL] - coordonnée Y du point de départ - valeur par défaut: -20.0
  • z_start - [REAL] - coordonnée Z du point de départ - valeur par défaut: -20.0
  • x_end - [REAL] - coordonnée X du point de fin - valeur par défaut: 20.0
  • y_end - [REAL] - coordonnée Y du point de fin - valeur par défaut: 20.0
  • z_end - [REAL] - coordonnée Z du point de fin - valeur par défaut: 20.0
Exemple
<line x_start="-40.0" y_start="-20.0" z_start="40.0"
         x_end="40.0" y_end="20.0" z_end="-40.0" />

Elément quad

quad spécifie les paramètres d'initialisation d'un quad (dimensions et états logiques).

Attributs:
  • width - [REAL] - largeur long de l'axe des X - valeur par défaut: 20.0
  • height - [REAL] - hauteur long de l'axe des Y - valeur par défaut: 20.0
  • texture_name - [STR] - nom de la texture à appliquer
  • billboarding - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) le billboarding - valeur par défaut: FALSE
  • u_offset - [REAL] - décalage de la coordonnée u de texture - valeur par défaut: 0.0
  • v_offset - [REAL] - décalage de la coordonnée v de texture - valeur par défaut: 0.0

Elément box

box spécifie les paramètres d'initialisation d'une boîte.

Attributs:
  • width - [REAL] - largeur - valeur par défaut: 20.0
  • height - [REAL] - hauteur - valeur par défaut: 20.0
  • depth - [REAL] - profondeur - valeur par défaut: 20.0
  • texture_name - [STR] - nom de la texture à appliquer
  • billboarding - [BOOLEAN] - active (TRUE) ou désactive (FALSE - défaut) le billboarding - valeur par défaut: FALSE
  • u_offset - [REAL] - décalage de la coordonnée u de texture - valeur par défaut: 0.0
  • v_offset - [REAL] - décalage de la coordonnée v de texture - valeur par défaut: 0.0

Elément spin_values

spin_values spécifie les angles de rotation autour des axes de X, Y et Z. A chaque frame, les angles de rotation de la primitive sont incrémentés par les valeurs spécifiées. Cela entraîne donc une animation de la primitive par simple rotation autour des 3 axes.

Attributs:
  • x - [REAL] - angle de rotation autour de l'axe des X en degrées - valeur par défaut: 0.0
  • y - [REAL] - angle de rotation autour de l'axe des Y en degrées - valeur par défaut: 0.0
  • z - [REAL] - angle de rotation autour de l'axe des Z en degrées - valeur par défaut: 0.0

Elément nx_linear_velocity

nx_linear_velocity permet de spécifier la vitesse lineaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.14*0.14

Elément nx_angular_velocity

nx_angular_velocity permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - Valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - Valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - Valeur par défaut: 0.0
  • damping - [REAL] - facteur d'amortissement de la vitesse - Valeur par défaut: 0.5
  • sleep_threshold - [REAL] - seuil de mise en sommeil - Valeur par défaut: 0.15*0.15

Elément nx_misc_data

nx_misc_data permet de spécifier la vitesse angulaire d'un objet. Les paramètres de vitesse ne sont pris en compte que si le moteur de simulation physique a été activé au niveau de la scène.

Attributs:
  • mass - [REAL] - mass de l'objet - Valeur par défaut: 100.0
  • density - [REAL] - densité del'objet - Valeur par défaut: 0.0
  • actor_type - [ENUM] - type de l'acteur (objet):
    • STATIC
    • DYNAMIC - valeur par défaut.
    • KINEMATIC

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - projector

Noeud <projector>

Fonction

Le noeud projector permet de simuler le fonctionnement d'un projecteur en projetant simplement une image (texture) sur la scène. L'image suivante montre le fonctionnement du projecteur pour simuler une lampe torche (tutorial 49b):

Syntaxe générale

<projector>
    <texture />
    <position />
    <orientation />
</projector>
Noeud exhaustif avec attributs et valeurs par défaut:
<projector
    name=""
    display_tripod="FALSE"
    auto_update_direction="FALSE"
    blending_src_factor="BLENDING_FACTOR_ONE"
    blending_dst_factor="BLENDING_FACTOR_ONE"
    parent_object=""
    fov="90.0"
    active="TRUE" >

    <texture
        name="0" />

    <position
        x="0.0"
        y="0.0"
        z="0.0" />

    <orientation
        angle="0.0"
        x="0.0"
        y="0.0"
        z="0.0"
        pitch="0.0"
        yaw="0.0"
        roll="0.0" />

</projector>

Elément projector

projector est la balise xml qui définit un noeud projector.

Attributs:

  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML
  • active - [BOOLEAN] - active ou désactive le projector - valeur par défaut: TRUE
  • display_tripod - [BOOLEAN] - active ou désactive le rendu du tripod rendant compte des transformations du projector (translation et rotation) - valeur par défaut: FALSE
  • auto_update_direction - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la mise à jour automatique de la direction (axe des Z) du repère local (tripode) de l'objet - valeur par défaut: FALSE

  • blending_src_factor - [ENUM] - spécifie le facteur de blending source - valeur par défaut: BLENDING_FACTOR_SRC_ALPHA blending_dst_factor spécifie le facteur destination dans l'équation de blending:
    C = Cs*Sf + Cd*Df
    où C est la couleur finale (R, G, B, A), Cs la couleur source ou entrante (Rs, Gs, Bs, As) et Cd est la couleur présente dans le framebuffer (Rd, Gd, Bd, Ad).
    Sf est le facteur de blending source (Sr, Sg, Sb, Sa) et Df est le facteur de blending destination (Dr, Dg, Db, Da).
    • BLENDING_FACTOR_ZERO: (0 0 0 0)
    • BLENDING_FACTOR_ONE: (1 1 1 1) (Valeur par défaut)
    • BLENDING_FACTOR_SRC_ALPHA: (As, As, As, As)
    • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA: (1-Ad, 1-Ad, 1-Ad, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_DST_COLOR: (1-Rd, 1-Gd, 1-Bd, 1-Ad)
    • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA: (1-As, 1-As, 1-As, 1-As)
    • BLENDING_FACTOR_DST_COLOR: (Rd, Gd, Bd, Ad)
    • BLENDING_FACTOR_DST_ALPHA: (Ad, Ad, Ad, Ad)
    • BLENDING_FACTOR_SRC_COLOR: (Rs, Gs, Bs, As)
    • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR: (1-Rs, 1-Gs, 1-Bs, 1-As)

  • blending_dst_factor - [ENUM] - spécifie le facteur de blending destination. Se reporter à blending_src_factor pour les valeurs admissibles - valeur par défaut: BLENDING_FACTOR_ONE

  • parent_object - [STR127] - nom du parent auquel attacher ce projector afin de créer une hiérarchie. Le projecteur n'étant pas un objetc classique comme un mesh ou un gizmo, il n'est pas possible d'utiliser l'instruction add_child d'un node objet.

  • fov - [REAL] - angle de projection en degrés - valeur par défaut: 90.0

Elément texture

texture permet d'associer la texture à projeter au projecteur.

Attributs:
  • name - [STR127] - nom du noeud texture.
Exemple:

<texture name="projo_tex" filename="textures/projector.jpg" />

<projector name="projo1" fov="60.0" >

Elément position

position permet de fixer la position du projecteur. Si le projecteur est un enfant d'un autre objet, cette position exprime une translation par rapport au parent sinon la position est définie par rapport au repère de la scène.

Attributs:
  • x - [REAL] - position en X
  • y - [REAL] - position en Y
  • z - [REAL] - position en Z

Elément orientation

orientation permet de fixer l'orientation du projecteur.

Attributs:
  • angle - [REAL] - angle de rotation en degrés autour de l'axe défini par x, y et z.
  • x - [REAL] - composante X de l'axe de rotation.
  • y - [REAL] - composante Y de l'axe de rotation.
  • z - [REAL] - composante Z de l'axe de rotation.
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X.
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y.
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - scene

Noeud <scene>

Fonction

Le noeud scene a pour but de mettre en place le cadre général d'une scène 3D: couleur de fond, taille de la fenêtre, affichage de diverses informations. La scène est le noeud principal puisque c'est là que tout se passe. La scène a aussi un autre rôle fondamental: celui d'offrir le système de coordonnées absolues (aussi appelé coordonnées du monde) qui permet de positionner les différents objets.

Syntaxe générale

<scene>
    <background_color />
    <background_image />
    <check_hardware_caps />
    <fog />
    <global_ambient_light />
    <infos />
    <infos_color />
    <picking />
    <ref_grid_color />
    <window_size />
    <wait_screen />
    <nx_gravity />
    <nv_sli />
</scene>
Noeud exhaustif avec attributs et valeurs par défaut:
<scene
    name=""
    archive_filename=""
    screenshots_dir=""
    display_fps="FALSE"
    show_ref_grid="FALSE"
    vsync="TRUE"
    clear_color_buffer="TRUE"
    warm_up_caches_cycles="1"
    nx_physics_simulation="FALSE"
    nx_collision_detection="TRUE"
    display_elapsed_time="FALSE"
    display_texture_memory_occupation="FALSE"
    display_all_statistics="FALSE"
    display_hyperion_logo="TRUE"
    make_screenshots="FALSE"
    dump_lua_vm_stack="FALSE"  >

    <background_color
        r="0.3"
        g="0.3"
        b="0.3" />

    <infos_color
        r="1.0"
        g="1.0"
        b="0.0" />

    <background_image
        image="" />

    <check_hardware_caps
        glsl="FALSE"
        dot3="FALSE"
        cube_mapping="FALSE"
        vbo="FALSE"
        shader_model_1_1="FALSE"
        shader_model_2_0="FALSE"
        shader_model_3_0="FALSE"
        shader_model_4_0="FALSE"
        num_texture_units="2"
        s3tc="FALSE"
        nvidia="FALSE"
        ati="FALSE"
        npot_rect="FALSE"
        npot="FALSE"
        fbo="FALSE"
        fp_tex="FALSE"
        vs_tex_samplers="0"
        pvs_tex_samplers="4"
        ati_3dc="FALSE"
        error_message="FALSE" />

    <fog
        color_r="1.0"
        color_g="1.0"
        color_b="1.0"
        color_a="1.0"
        type="EXP2"
        start="0.0"
        end="1.0"
        density="0.002"
        active="FALSE" />

    <global_ambient_light
        r="0.1"
        g="0.1"
        b="0.1"
        a="1.0" />

    <infos
        title="Title: Hyperion Demo"
        author="Author: The oZone3D Team"
        date="Date: Unknown"
        description="Description: Hyperion Demo" />

    <picking
        active="FALSE"
        script="" />

    <window_size
        width="1024"
        height="768"
        width_offset="0"
        height_offset="0"
        fullscreen="FALSE" />

    <ref_grid_color
        r="0.4"
        g="0.4"
        b="0.4" />

    <wait_screen
        image="" />

    <nx_gravity
        x="0.0"
        y="-9.81"
        z="0.0" />

    <nv_sli
        active="TRUE"
        mode="AFR" />

</scene>

Elément scene

scene est la balise xml qui définit un noeud scene.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • archive_filename - [STR255] - chemin d'accès au fichier ZIP contenant toutes les données de la demo. C'est une fonctionnalité très pratique qui permet de rassembler tous les medias et leurs répertoires au sein d'un même et unique fichier. Cependant il y a quelques petites limitations: les textures animées (*.AVI) ne sont pas supportées dans l'archive zip et les modèles 3D doivent être au format *.o3mdl pour pouvoir être chargées depuis l'archive zip.

  • display_fps - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage des FPS (Frames Per Second) - valeur par défaut: FALSE
    Le FPS ou nombre de frames par seconde représente le nombre de fois par seconde que la scène est redéssinée à l'écran. C'est un excellent indicateur des performances de la machine hôte et de la charge de la scène: plus il est haut, mieux c'est!

  • show_ref_grid - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage de la grille de référence. Cette grille est située dans le plan XZ à Y=0. Très pratique pour savoir où l'on se situe - valeur par défaut: FALSE

  • vsync - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la synchronisation verticale. La synchronisation verticale ou VSYNC limite le frame rate à la valeur de la fréquence de rafraîchissement verticale de l'écran configurée sous Windows: 60, 70, 72, 75, 85 ou 100Hz. Cela permet de synchroniser le rendu de la scène à l'écran avec le signal VSYNC. On obtient ainsi un rendu stable et net. Lorsque l'on désactive le VSYNC, la scène est rendue le max de fois possible et l'on peut se retrouver avec des valeurs de FPS qui dépassent allègrement 100: 220, 482, ... Bien sûr ces valeurs correspondent à des scènes faiblement chargées - valeur par défaut: TRUE

  • clear_color_buffer - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'initialisation du framebuffer (ou colorbuffer) au début de chaque frame. En régle générale, clear_color_buffer vaut TRUE afin d'avoir pour chaque nouvelle frame le tampon des couleurs initialisé avec la couleur spécifié par <background_color>. Dans certains cas comme celui de la skybox, on peut gagner en performance en évitant d'initialiser le color buffer vu que la couleur de fond ne sera jamais visible - valeur par défaut: TRUE

  • warm_up_caches_cycles - [INTEGER] - spécifie le nombre de rendus à effectuer sans mettre à jour le frame buffer. Ce nombre de rendus permet d'initialiser tous les caches internes (CPU, moteur 3D, carte graphique). Mettre une valeur de 10 ou de 20 lors de la création d'un benchmark - valeur par défaut: 1.

  • display_elapsed_time - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du temps écoulé depuis le lancement du script courant en millisecondes - valeur par défaut: FALSE

  • display_texture_memory_occupation - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage de la quantité de textures chargé sur la carte graphique en kilo-octet - valeur par défaut: FALSE

  • display_all_statistics - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage de toutes les informations disponibles (temps ecoulé, memoire de texture, nombre de meshes rendus, ...) - valeur par défaut: FALSE

  • screenshots_dir - [STR255] - spécifie le répertoire de destination des captures d'écran. Voir la fonction HYP_MakeScreenshot pour plus d'informations.

  • nx_physics_simulation - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le moteur physique (NovodeX Physics Engine) - valeur par défaut: FALSE

  • nx_collision_detection - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la détection des collision au niveau du moteur physique (NovodeX Physics Engine) - valeur par défaut: TRUE

  • display_hyperion_logo - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'affichage du logo Hyperion en bas à gauche de la fenêtre 3D - valeur par défaut: TRUE

  • dump_lua_vm_stack - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le dump de la stack des fonctions assert() et error() de LUA. Le dump est écrit dans un fichier appelé hyperion_lua_stack_dump.txt et situé dans le répertoire racine d'Hyperion. Cette option n'est disponible que dans la version commerciale - default value: FALSE

  • make_screenshots - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la capture d'écran pour chaque frame. Le répertoire destination des captures d'écran est spécifié par l'attribut screenshots_dir - default value: FALSE

Elément picking

picking active le picking des objets de la scène. Le picking permet de sélectionner à l'aide de la souris des objets dans une scène 3D. Seuls les objets de type mesh peuvent être pickés. Un script LUA est associé au picking et permet d'exécuter une logique quelconque. La fonction HYP_GetScenePickedObjectName() de l'API Hyperion/LUA permet de récupérer le nom du mesh pické.

Attributs:
  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le picking - valeur par défaut: FALSE
  • script - [STR255] - spécifie le nom du fichier de script qui va être exécuté à chaque picking Nom complet du fichier de script relativement au fichier script XML.

Elément wait_screen

wait_screen permet d'afficher une image d''attente pendant le chargement de la demo.

Attributs:
  • image - [STR255] - spécifie le chemin d'accès au fichier de texture (ou image).

Elément window_size

window_size permet de spécifier la taille de la zone cliente de l'application en mode fenêtré ou plein écran (fullscreen).

Attributs:
  • width - [INTEGER] - largeur de la fenêtre en pixels - valeur par défaut: 1024
  • height - [INTEGER] - hauteur de la fenêtre en pixels - valeur par défaut: 768
  • width_offset - [INTEGER] - décalage en X de la position de la fenêtre. Non utilisé en mode fullscreen - valeur par défaut: 0
  • height_offset - [INTEGER] - décalage en Y de la position de la fenêtre. Non utilisé en mode fullscreen - valeur par défaut: 0
  • fullscreen - [BOOLEAN] - permute du mode fenêtré au mode fullscreen - valeur par défaut: FALSE
Remarques
En mode fullscreen, toutes les résolutions ne sont pas valides et sont dépendantes de la carte graphique. Les résolutions suivantes sont valides dans la plupart des cas:
  • 320x200
  • 640x480
  • 800x600
  • 1024x768
  • 1280x1024
  • 1600x1200
  • 1920x1200

Elément infos

infos spécifie les informations concernant la scène: la date de création, l'auteur, le titre, la description.

Attributs:
  • author - [STR127] - auteur de la scène - valeur par défaut: "Author: The oZone3D Team"
  • date - [STR127] - date de création de la scène - valeur par défaut: "Date: Unknown"
  • title - [STR127] - titre de la scène - valeur par défaut: "Title: Hyperion Demo"
  • description - [STR4095] - description de la scène - valeur par défaut: "Description: Hyperion Demo"

Elément infos_color

infos_color spécifie la couleur du texte qui permet d'afficher les informations telles que le FPS, le temps écoulé la position de la caméra, etc.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0

Elément background_color

background_color spécifie la couleur de fond de la scène.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.3
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.3
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.3
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément global_ambient_light

global_ambient_light spécifie la couleur de la lumière ambiante globale de scène.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.1
  • a - [CLAMPED_REAL] - composante alpha de la couleur. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 1.0

Elément background_image

background_image spécifie le nom d'une image de fond. Cette image remplit toute la surface de la zone cliente. Elle ne peut cacher aucun objet. Jusqu'à 100 images de fond peuvent être chargées par des appels successifs à scene_background_image. L'affichage d'une image de fond quelconque nécessitera du scripting LUA en utilisant la fonction HYP_ActiveBkgImage() de l'API Hyperion/LUA. Pratique pour mettre en place un slideshow.

Attributs:
  • image - [STR255] - Nom complet du fichier image relativement au fichier script XML.

Elément check_hardware_caps

check_hardware_caps permet de tester les capacités matérielles de la carte graphique et de stopper le lancement de la démo si la carte graphique ne possède pas les capacités requises. Chaque attribut est un boolean qui indique la capacité à tester.

Attributs:
  • glsl - [BOOLEAN] - TRUE pour activer le test du support de l'OpenGL Shading Language - valeur par défaut: FALSE
  • dot3 - [BOOLEAN] - TRUE pour activer le test du support du Hardware DOT3 Bump Mapping - valeur par défaut: FALSE
  • cube_mapping - [BOOLEAN] - TRUE pour activer le test du support du Hardware Cube Mapping - valeur par défaut: FALSE
  • vbo - [BOOLEAN] - TRUE pour activer le test du support des VBO OpenGL - valeur par défaut: FALSE
  • shader_model_1_1 - [BOOLEAN] - TRUE pour activer le test du support du shader model 1.1 - valeur par défaut: FALSE
  • shader_model_2_0 - [BOOLEAN] - TRUE pour activer le test du support du shader model 2.0 - valeur par défaut: FALSE
  • shader_model_3_0 - [BOOLEAN] - TRUE pour activer le test du support du shader model 3.0 - valeur par défaut: FALSE
  • num_texture_units - [INTEGER] - indique le nombre minimal d'unités de textures que doit posséder la carte pour faire fonctionner la demo - valeur par défaut: 2
  • s3tc - [BOOLEAN] - TRUE pour activer le test du support des textures compressées - valeur par défaut: FALSE
  • nvidia - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques nVidia - valeur par défaut: FALSE
  • ati - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques ATI - valeur par défaut: FALSE
  • npot_rect - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques supportant les textures rectangles - valeur par défaut: FALSE
  • npot - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques supportant les textures NPOT (Non Power Of Two) - valeur par défaut: FALSE
  • fbo - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques supportant les Framebuffers Objects - valeur par défaut: FALSE
  • fp_tex - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques supportant les textures en virgule flottante - valeur par défaut: FALSE
  • vs_tex_samplers - [INTEGER] - indique le nombre minimal d'unités de texture accessible dans un vertex shader - valeur par défaut: 0
  • ps_tex_samplers - [INTEGER] - indique le nombre minimal d'unités de texture accessible dans un pixel shader - valeur par défaut: 4
  • ati_3dc - [BOOLEAN] - TRUE pour limiter le fonctionnement d'une démo aux chipsets graphiques supportant la compression de texture ATI 3Dc - valeur par défaut: FALSE
  • error_message - [STR511] - chaîne de caractères représentant un message d'erreur personnalisé. Ce message sera affiché si un des tests ci dessus n'est pas valide.
Exemple
<scene>
    <check_hardware_caps glsl="TRUE" error_message="Il est temps de changer de carte!" />
</scene>

Elément fog

fog spécifie les paramètres permettant d'initialiser un brouillard de fond de scène.

Attributs:
  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le brouillard - valeur par défaut: FALSE
  • color_r - [CLAMPED_REAL] - composante rouge de la couleur du brouillard - valeur par défaut: 1.0
  • color_g - [CLAMPED_REAL] - composante verte de la couleur du brouillard - valeur par défaut: 1.0
  • color_b - [CLAMPED_REAL] - composante bleue de la couleur du brouillard - valeur par défaut: 1.0
  • color_a - [CLAMPED_REAL] - composante alpha de la couleur du brouillard - valeur par défaut: 1.0
  • type - [ENUM] - type du brouillard:
    • EXP2: le brouillard a une croissance exponentielle - valeur par défaut
    • EXP: le brouillard a une croissance exponentielle.
    • LINEAR: le brouillard a une croissance linéaire.
  • start - [REAL] - permet de spécifier la valeur de départ du brouillard par rapport à la position de la caméra - valeur par défaut: 0.0
  • end - [REAL] - permet de spécifier la valeur de fin du brouillard par rapport à la position de la caméra - valeur par défaut: 1.0
  • density - [REAL] - densité dans le cas d'un brouillard de type EXP ou EXP2 - valeur par défaut: 0.002
Exemple
<scene>
    <fog active="TRUE" type="EXP2" start="0.0" end="1.0"
            density="0.003" color_r="0.7" color_g="0.7" color_b="0.7" />
<scene/>

Elément ref_grid_color

ref_grid_color spécifie la couleur de la grille de référence du plan XZ à Y=0.

Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 0.4
  • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 0.4
  • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 0.4

Elément nx_gravity

nx_gravity spécifie le vecteur gravité pour les simulations physiques. Ce vecteur n'est prie en compte que si le moteur physique est activé.

Attributs:
  • x - [REAL] - coordonnée en X du vecteur gravité - valeur par défaut: 0.0
  • y - [REAL] - coordonnée en Y du vecteur gravité - valeur par défaut: -9.81
  • z - [REAL] - coordonnée en Z du vecteur gravité - valeur par défaut: 0.0

nv_sli element

nv_sli permet de contrôler le mode de fonctionnement du SLI des cartes nVidia.

Attributes:
  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation du SLI - default value: TRUE
  • mode - [ENUM] - spécifie le mode de rendu des frames. Les valeurs suivantes sont acceptées:
    • 0 (AUTO_SELECT)
    • 1 (AFR) - default value
    • 2 (SFR)
    • 4 (COMPATIBILITY)

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - script

Noeud <script>

Fonction

Le noeud script permet de charger un script externe au script XML principal. Ce script externe peut être écrit dans différents langages. Mais actuellement, seul le scripting basé sur le langage LUA est supporté. Se reporter à la page concernant l' API Hyperion/LUA pour plus d'information sur les fonctionnalités disponibles.

Les scripts LUA chargés de cette manière sont autonomes et peuvent avoir plusieurs modes de fonctionnements (run_mode).

Syntaxe générale

<script >
    <raw_data />
</script>
Noeud exhaustif avec attributs et valeurs par défaut:
<script
    name=""
    filename=""
    active="TRUE"
    run_mode="EXECUTE_EACH_FRAME"
    run_in_new_thread="FALSE" />

    <raw_data>
        <![CDATA[

        ]]>
    </raw_data>
</script>

Elément script

script est la balise xml qui définit un noeud script.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • filename - [STR255] - emplacement du fichier de script relativement au script XML.

  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'exécution du script.

  • run_mode - [ENUM] - spécifie le mode de fonctionnement du script:
    • INIT: les scripts avant ce run mode sont excécutés juste à la fin de la compilation de l'arbre de scène. Il est conseillé de n'en créer qu'un par scène. Ce type de script ne peut pas être démarré dans un nouveau thread OS.
    • EXECUTE_ONCE: ces scripts sont exécutés une fois avant le rendu de la première frame et peuvent être démarrés dans un nouveau thread OS.
    • EXECUTE_EACH_FRAME: le script est exécuté à chaque frame (synchrone). Ce type de script ne peut pas être démarré dans un nouveau thread OS. Utile pour les animations - valeur par défaut
    • ASYNCHRONOUS: le script est exécuté de manière asynchrone. Il peut être, par exemple, déclenché par une hotkey. Ce type de script peut être démarré dans un nouveau thread OS.

  • run_in_new_thread - [BOOLEAN] - permet l'exécution du script dans un thread OS différent du thread principal d'Hyperion. A utiliser en connaissance de cause!

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément raw_data

raw_data permet d'intégrer le code source d'un script directement dans le code XML sans devoir faire appel à un fichier extérieur.
Exemple
<script name="updateScene" run_mode="EXECUTE_EACH_FRAME" >
    <raw_data><![CDATA[
    x, y, z = HYP_GetCameraPosition("Main_Camera");
    HYP_SetShaderProgram_Constant_3f("waterShader", "view_position", x, y, z );
    t = HYP_GetElapsedTime()*0.001;
    HYP_SetShaderProgram_Constant_1f("waterShader", "time_0_X", t );
       ]]></raw_data>
</script>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - sequence

Noeud <sequence>

Fonction

Le noeud sequence permet de créer des suites d'actions ou séquences. Une séquence est le regroupement de plusieurs actions et chaque action peut accomplir plusieurs tâches (tasks). Le passage d'une action à l'autre se fait à l'aide de déclencheurs (les triggers) qui sont pour le mpment les touches du clavier. On peut ainsi réaliser avec les séquences des présentations de type slide-show (powerpoint-style) animées.

Syntaxe générale

<sequence>
    <action>
        <task />
    </action>
</sequence>
Noeud exhaustif avec attributs et valeurs par défaut:
<sequence
    name=""
    run_mode="LOOP"
    trigger_type="KEYBOARD_SPACE_KEY" >

    <action>
        <task
            show_object=""
            hide_object=""
            script="" />
    </action>
</sequence>

Elément sequence

sequence est la balise xml qui définit un noeud sequence.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML.

  • run_mode - [ENUM] - spécifie le mode de fonctionnement de la séquence:
    • NO_LOOP: la séquence ne peut être exécutée qu'une fois.
    • LOOP: une fois la séquence finie, le dernier déclencheur refait partir la séquence du début - valeur par défaut

  • trigger_type - [ENUM] - spécifie le déclencheur qui permettra de passer d'une action à la suivante:
    • KEY_SPACE - valeur par défaut
    • KEY_F1
    • KEY_F2
    • KEY_F3
    • KEY_F4
    • KEY_F5
    • KEY_F6
    • KEY_F7
    • KEY_F8
    • KEY_F9
    • KEY_F10
    • KEY_F11
    • KEY_F12

Elément action

action permet de définir une action. Une action peut contenir une ou plusieurs tâches ou micro-actions.
Syntaxe
<sequence>
    <action>
        <...>
        <...>
    </action>
</sequence>

Elément task

task permet de définir une tâche à réaliser.

Attributs:
  • show_object - [STR127] - nom d'un objet dont on veut activer le rendu.
  • hide_object - [STR127] - nom d'un objet dont on veut désactiver le rendu.
  • script - [STR255] - nom complet d'un fichier de script à exécuter. L'emplacement du fichier est relatif au fichier script XML.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - shader_program

Noeud <shader_program>

Fonction

Le noeud shader_program permet de charger et de compiler des shader programs. Ces shaders programs sont les fameux vertex et pixel shaders. Dans la version actuelle d'Hyperion, seuls les shaders programs écrits en language de haut niveau GLSL (OpenGL Shading Language) sont supportés.

Un shader GLSL peut être spécifié soit en donnant la location d'un fichier (attribut filename) contenant le code source, soit en donnant le nom d'un plugin GLSL (attribut shader_plugin_name) soit en codant le shader directement dans le fichier XML dans l'élément raw_data.

Voici un exemple d'utilisation d'un vertex/pixel shader pour rendre un mesh avec un style cartoon (tutorial HyperGraph 48):

Pour aborder sérieusement la programmation des vertex et pixel shaders en GLSL, il est fortement conseillé de se munir de l'Orange Book, le livre de référence en GLSL (de Randi Rost - ISBN: 0-321-19789-5):

Remarque 1: Le nombre de max de constantes pour un shader programme est limité à 16.
Remarque 2: Le nombre de max d'attribut de vertex pour un shader programme est limité à 5.

Syntaxe générale

<shader_program>
    <constant_1i />
    <constant_2i />
    <constant_3i />
    <constant_4i />
    <constant_1f />
    <constant_2f />
    <constant_3f />
    <constant_4f />
    <constant_4x4f />
    <constant_4x4f_view_matrix />
    <constant_4x4f_modelview_matrix />
    <constant_1f_elapsed_time />
    <constant_4f_object_position />
    <vertex_attrib />
    <raw_data />
</shader_program>
Noeud exhaustif avec attributs et valeurs par défaut:
<shader_program
    name=""
    active="TRUE"
    filename="TRUE"
    hardware_target="ALL"
    shader_plugin_name="TRUE" >

    <constant_1i
        name=""
        x="0" />

    <constant_2i
        name=""
        x="0"
        y="0" />

    <constant_3i
        name=""
        x="0"
        y="0"
        z="0" />

    <constant_4i
        name=""
        x="0"
        y="0"
        z="0"
        w="0" />

    <constant_1f
        name=""
        x="0.0" />

    <constant_2f
        name=""
        x="0.0"
        y="0.0" />

    <constant_3f
        name=""
        x="0.0"
        y="0.0"
        z="0.0" />

    <constant_4f
        name=""
        x="0.0"
        y="0.0"
        z="0.0"
        w="0.0" />

    <constant_4x4f
        name=""
        object_name=""
        transformation_type="NONE"
        m0="0.0"
        m1="0.0"
        m2="0.0"
        m3="0.0"
        m4="0.0"
        m5="0.0"
        m6="0.0"
        m7="0.0"
        m8="0.0"
        m9="0.0"
        m10="0.0"
        m11="0.0"
        m12="0.0"
        m13="0.0"
        m14="0.0"
        m15="0.0" />

    <constant_4x4f_view_matrix
        name=""
        transformation_type="NONE"  />

    <constant_4x4f_modelview_matrix
        name=""
        object_name=""
        transformation_type="NONE"  />

    <constant_1f_elapsed_time
        name="" />

    <constant_4f_object_position
        name=""
        object_name=""
        transformation_type="TRANSFORMATION_VIEW_SPACE" />

    <vertex_attrib
        name=""
        value="1" />

    <raw_data>
        <![CDATA[

        ]]>
    </raw_data>

</shader_program>

Elément shader_program

shader_program est la balise xml qui définit un noeud shader_program.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • filename - [STR255] - nom complet du fichier contenant le code source du shader relativement au fichier script XML. Le shader doit être écrit en GLSL.

  • shader_plugin_name - [STR127] - nom d'un plugin GLSL situé dans le répertoire des plugins GLSL d'Hyperion (glsl_plugins/) Le nom du plugin doit être spécifié sans son extension (ex: shader_plugin_name="HYP_Plugin_GLSL_MaterialBumpMapping").

  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le shader - valeur par défaut: TRUE

  • hardware_target - [ENUM] - spécifie sur quel type de carte graphique une shader peut fonctionner:
    • NVIDIA: seulement sur nVidia.
    • ATI: seulement sur ATI
    • ATI_NVIDIA: seulement sur ATI et NVIDIA
    • OTHER: seulement sur tous les autres constructeurs sauf ATI et nVidia
    • NVIDIA_OTHER: seulement sur tous les autres constructeurs et sur nVidia mais pas sur ATI
    • ATI_OTHER: seulement sur tous les autres constructeurs et sur ATI mais pas sur nVidia
    • ALL: tous les constructeurs - valeur par défaut

Elément constant_1i

constant_1i spécifie le nom et la valeur d'une constante entière à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [INTEGER] - valeur de la constante

Elément constant_2i

constant_2i spécifie le nom et la valeur d'un vecteur 2D entier à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [INTEGER] - composante x du vecteur
  • y - [INTEGER] - composante y du vecteur

Elément constant_3i

constant_3i spécifie le nom et la valeur d'un vecteur 3D entier à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [INTEGER] - composante x du vecteur
  • y - [INTEGER] - composante y du vecteur
  • z - [INTEGER] - composante z du vecteur

Elément constant_4i

constant_4i spécifie le nom et la valeur d'un vecteur 4D entier à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [INTEGER] - composante x du vecteur
  • y - [INTEGER] - composante y du vecteur
  • z - [INTEGER] - composante z du vecteur
  • w - [INTEGER] - composante w du vecteur

Elément constant_1f

constant_1f spécifie le nom et la valeur d'une constante réelle à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [REAL] - valeur de la constante

Elément constant_2f

constant_2f spécifie le nom et la valeur d'un vecteur 2D réel à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [REAL] - composante x du vecteur
  • y - [REAL] - composante y du vecteur

Elément constant_3f

constant_3f spécifie le nom et la valeur d'un vecteur 3D réel à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [REAL] - composante x du vecteur
  • y - [REAL] - composante y du vecteur
  • z - [REAL] - composante z du vecteur

Elément constant_4f

constant_4f spécifie le nom et la valeur d'un vecteur 4D réel à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Attributs:
  • name - [STR64] - nom de la constante

  • x - [REAL] - composante x du vecteur
  • y - [REAL] - composante y du vecteur
  • z - [REAL] - composante z du vecteur
  • w - [REAL] - composante w du vecteur

Elément constant_4x4f

constant_4x4f spécifie le nom et la valeur d'une constante matrice carrée de dimension 4 à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader. La matrice 4x4 à utiliser peut provenir de 2 sources:
  • matrice entrée manuellement (attributs m0 à m15).
  • matrice de transformation globale d'un objet de référence récupérée automatiquement à chaque frame (attribut ref_object).
La matrice 4x4 est stocké au format d'OpenGL (matrice colonne). Se repporter à un bon livre sur la programmation OpenGL pour plus de détail.

Si l'attribut ref_object est spécifié, alors les valeurs m0 à m15 seront ignorées.

Attributs:
  • name - [STR64] - nom de la constante

  • object_name - [STR127] - nom de l'objet de reférence dont la matrice de transformation globale va être utilisée.

  • transformation_type - [ENUM] - indique la transformation à effectuer sur la position de l'objet:
    • NONE: la matrice est transmise tel quel au shader, aucune transformation n'est appliquée.
    • INVERSE: la matrice est inversée avant d'être passée au shader.
    • TRANSPOSE: la matrice est transposée avant d'être passée au shader.
    • INVERSE_TRANSPOSE: la matrice est inversée puis transposée avant d'être passée au shader.
    • GET_UPPER_3x3: la matrice 3x3 supérieur est passée au shader. Dans ce cas, il convient de déclarer dans le shader une matrice de type mat3.
  • m0 - [REAL] - valeur de l'élément 0 de la matrice - valeur par défaut: 0.0

  • m1 - [REAL] - valeur de l'élément 1 de la matrice - valeur par défaut: 0.0

  • m2 - [REAL] - valeur de l'élément 2 de la matrice - valeur par défaut: 0.0

  • m3 - [REAL] - valeur de l'élément 3 de la matrice - valeur par défaut: 0.0

  • m4 - [REAL] - valeur de l'élément 4 de la matrice - valeur par défaut: 0.0

  • m5 - [REAL] - valeur de l'élément 5 de la matrice - valeur par défaut: 0.0

  • m6 - [REAL] - valeur de l'élément 6 de la matrice - valeur par défaut: 0.0

  • m7 - [REAL] - valeur de l'élément 7 de la matrice - valeur par défaut: 0.0

  • m8 - [REAL] - valeur de l'élément 8 de la matrice - valeur par défaut: 0.0

  • m9 - [REAL] - valeur de l'élément 9 de la matrice - valeur par défaut: 0.0

  • m10 - [REAL] - valeur de l'élément 10 de la matrice - valeur par défaut: 0.0

  • m11 - [REAL] - valeur de l'élément 11 de la matrice - valeur par défaut: 0.0

  • m12 - [REAL] - valeur de l'élément 12 de la matrice - valeur par défaut: 0.0

  • m13 - [REAL] - valeur de l'élément 13 de la matrice - valeur par défaut: 0.0

  • m14 - [REAL] - valeur de l'élément 14 de la matrice - valeur par défaut: 0.0

  • m15 - [REAL] - valeur de l'élément 15 de la matrice - valeur par défaut: 0.0

Elément constant_4x4f_view_matrix

constant_4x4f_view_matrix permet de transmettre la matrice de vue courante au vertex shader.

Attributs:
  • name - [STR64] - nom de la constante

  • transformation_type - [ENUM] - indique la transformation à effectuer sur la position de l'objet:
    • NONE: la matrice est transmise tel quel au shader, aucune transformation n'est appliquée.
    • INVERSE: la matrice est inversée avant d'être passée au shader.
    • TRANSPOSE: la matrice est transposée avant d'être passée au shader.
    • INVERSE_TRANSPOSE: la matrice est inversée puis transposée avant d'être passée au shader.
    • GET_UPPER_3x3: la matrice 3x3 supérieur est passée au shader. Dans ce cas, il convient de déclarer dans le shader une matrice de type mat3.

Elément constant_4x4f_modelview_matrix

constant_4x4f_modelview_matrix permet de transmettre la matrice de model-view courante au vertex shader. Bien que cette matrice soit déjà accessible directement dans le vertex shader par la variable gl_ModelViewMatrix, il peut être utile d'avoir une version transformée de cette matrice.

Attributs:
  • name - [STR64] - nom de la constante

  • object_name - [STR127] - nom de l'objet de reférence dont la matrice de transformation globale va être utilisée.

  • transformation_type - [ENUM] - indique la transformation à effectuer sur la position de l'objet:
    • NONE: la matrice est transmise tel quel au shader, aucune transformation n'est appliquée.
    • INVERSE: la matrice est inversée avant d'être passée au shader.
    • TRANSPOSE: la matrice est transposée avant d'être passée au shader.
    • INVERSE_TRANSPOSE: la matrice est inversée puis transposée avant d'être passée au shader.
    • GET_UPPER_3x3: la matrice 3x3 supérieur est passée au shader. Dans ce cas, il convient de déclarer dans le shader une matrice de type mat3.

Elément constant_1f_elapsed_time

constant_1f_elapsed_time spécifie le nom et la valeur d'une constante à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.
constant_1f_elapsed_time sert à transmettre au shader la valeur courante du temps écoulé depuis le début du script Hyperion en millisecondes.

Attributs:
  • name - [STR64] - nom de la constante

Elément constant_4f_object_position

constant_4f_object_position spécifie le nom et la valeur d'une constante vecteur 4D à passer au vertex/pixel shader. Le nom de cette constante doit être déclaré dans le code source du shader.
constant_4f_object_position sert à transmettre au shader la valeur courante de la position de l'objet référencé (master object).

Attributs:
  • name - [STR64] - nom de la constante
  • master_object_name - [STR127] - nom du master-object
  • transformation_type - [ENUM] - indique la transformation à effectuer sur la position de l'objet:
    • TRANSFORMATION_NONE: aucune transformation n'est appliquée à la position de l'objet.
    • TRANSFORMATION_VIEW_SPACE: la position de l'objet est tranformé dans l'espace de la caméra active au moment de l'exécution du shader.

Elément vertex_attrib

vertex_attrib spécifie le nom et la valeur d'un attribut de vertex à transmettre exclusivement au vertex shader. Le nom de cette constante doit être déclaré dans le code source du shader.

Il est possible de déclarer au maximun 5 attribut de vertex (de 1 à 5). Les 2 premiers attributs sont automatiquement initialisés par le moteur oZone3D et correspondent aux vecteurs tangent (attrib 1) et binormal (attrib 2). Il est possible d'initialiser chacun des attributs grâce à la fontion HYP_SetMeshVertexAttrib() de la HOST API Lua.

Attributs:
  • name - [STR64] - nom de la constante

  • value - [INTEGER] - valeur numérique entière spécifiant l'index de l'attribut. Doit être supérieur ou égale à 1 - valeur par défaut: 1

Elément raw_data

raw_data permet d'intégrer le code source d'un shader directement dans le code XML sans devoir faire appel à un fichier extérieur.
Exemple
<shader_program  >
    <raw_data><![CDATA[
    [Vertex_Shader]
    void main()
    {
        gl_Position = ftransform();
    }
    [Pixel_Shader]
    void main()
    {
        gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
    }
       ]]></raw_data>
</script>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - skybox

Noeud <skybox>

Fonction

Le noeud skybox permet de créer une skybox. Une skybox est un cube composé de 6 images (textures) dont les 6 faces internes sont affichées derrière tous les autres objets de la scène donnant ainsi l'illusion d'un environnement 3D réaliste. Le centre de la skybox est aligné sur la position de la caméra ce qui fait qu'il est impossible d'atteindre les bords de la skybox.

Syntaxe générale

<skybox>
    <xneg_face />
    <xpos_face />
    <yneg_face />
    <ypos_face />
    <zneg_face />
    <zpos_face />
</skybox>
Noeud exhaustif avec attributs et valeurs par défaut:
<skybox
    name=""
    render="TRUE" >

    <xneg_face
        filename=""
        uv_map_op="NO_SWAP" />

    <xpos_face
        filename=""
        uv_map_op="NO_SWAP" />

    <yneg_face
        filename=""
        uv_map_op="NO_SWAP" />

    <ypos_face
        filename=""
        uv_map_op="NO_SWAP" />

    <zneg_face
        filename=""
        uv_map_op="NO_SWAP" />

    <zpos_face
        filename=""
        uv_map_op="NO_SWAP" />
</skybox>

Elément skybox

skybox est la balise xml qui définit un noeud skybox.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • render - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le rendu de la skybox - valeur par défaut: TRUE

  • group - [STR127] - nom du groupe dans lequel ajouter le noeud courant. Un groupe permet de contrôler le comportement de plusieurs objets d'une manière unique.

Elément xpos_face

xpos_face spécifie la texture (image) située à droite (le long de l'axe des X dans le sens positif).

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Elément xneg_face

xneg_face spécifie la texture (image) située à gauche (le long de l'axe des X dans le sens négatif). Cette balise ne possède que des attributs xml:

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Elément ypos_face

ypos_face spécifie la texture (image) située en haut (le long de l'axe des Y dans le sens positif). Cette balise ne possède que des attributs xml:

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Elément yneg_face

yneg_face spécifie la texture (image) située en bas (le long de l'axe des Y dans le sens négatif). Cette balise ne possède que des attributs xml:

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Elément zpos_face

zpos_face spécifie la texture (image) située derrière la caméra (front) (le long de l'axe des Z dans le sens positif). Cette balise ne possède que des attributs xml:

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Elément zneg_face

zneg_face spécifie la texture (image) située devant la caméra (back) (le long de l'axe des Z dans le sens négatif). Cette balise ne possède que des attributs xml:

Attributs:
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport à l'axe des Y.
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport à l'axe des X.
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport à l'axe des X et des Y.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - texture

Noeud <texture>

Fonction

Le noeud texture permet la réalisation du mapping de texture. C'est une méthode qui permet d'ajouter du réalisme aux objets de la scène 3D. Une texture 2D est une image classique (*.bmp, *.jpg, *.png, ...) qui est appliquée sur les faces des objets 3D (les maillages polygonaux ou meshes principalement).

Syntaxe générale

<texture>
    <cube_map />
    <perlin_noise_params />
    <size />
    <spin_value />
    <alpha_map_color />
    <constant_color />
    <filling_color />
    <inject_opacity_map />
</texture>
Noeud exhaustif avec attributs et valeurs par défaut:
<texture
    name=""
    filename=""
    pixel_format="RGB"
    filtering_mode="LINEAR"
    s3tc="FALSE"
    num_mipmaps="13"
    anisotropy="1.0"
    addressing_mode="WRAP"
    function_type="MODULATE"
    play_avi="TRUE"
    create_opacity_map="FALSE"
    create_binary_alpha_map="FALSE"
    create_constant_alpha_map="FALSE"
    constant_alpha_map_value="0.5"
    gen_coord_mode="NONE"
    type="TEXTURE_2D"
    use_fbo_for_rtt="FALSE"
    fbo_attachment_point="FBO_COLOR_ATTACHMENT0"
    check_crc32="0"
    vertical_flip="FALSE"
    horizontal_flip="FALSE"
    use_texture_matrix="FALSE"
    perlin_noise="FALSE"
    checker_pattern="FALSE" >

    <cube_map
        face="XPOS"
        filename=""
        uv_map_op="NO_SWAP" />

    <perlin_noise_params
        min_color_r="0.0"
        min_color_g="0.0"
        min_color_b="0.0"
        min_color_a="1.0"
        max_color_r="1.0"
        max_color_g="0.0"
        max_color_b="0.0"
        max_color_a="1.0"
        amplitude="200"
        frequency="15" />

    <size
        width="256"
        height="256" />

    <spin_value
        z="0.0" />

    <binary_alpha_map_color
        r="0.0"
        g="0.0"
        b="0.0"
        epsilon="0.0" />

    <constant_color
        r="1.0"
        g="1.0"
        b="1.0"
        a="1.0" />

    <filling_color
        r="0.0"
        g="0.0"
        b="0.0"
        a="1.0" />

    <inject_opacity_map
        filename="" />

</texture>

Elément texture

texture est la balise xml qui définit un noeud texture.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • filename - [STR255] - nom du fichier de texture à charger. Le chemin d'accès est relatif au fichier xml

  • pixel_format - [ENUM] - format du pixel (ou texel):
    • RGB: chaque pixel de la texture est codé sur 3 octets: 1 octet (1 byte) pour chaque composante R, G et B. La valeur de chaque composante est clampée: [0 - 255]. Valeur par défaut
    • BGR: chaque pixel de la texture est codé sur 3 octets: 1 octet (1 byte) pour chaque composante B, G et R. Ce format est à utiliser pour charger des fichiers AVI. La valeur de chaque composante est clampée: [0 - 255]. Valeur par défaut
    • RGBA: chaque pixel de la texture est codé sur 16 octets: 4 octets (1 float) pour chaque composante R, G, B et A. La valeur de chaque composante est clampée: [0.0 - 1.0]. Ce format de pixel est à utiliser dès que l'on doit agir sur le canal alpha de la texture (blending, alpha-test, ...).
    • RGBA_32F: définie une texture virgule flottante (floating point texture). Chaque pixel de la texture est codé sur 128 bits: 32 bits (1 float) pour chaque composante R, G, B et A. La valeur de chaque composante n'est pas clampée: chaque composante est un vrai nombre en virgule flottante du type IEEE 754 32bits. De plus, il faut utiliser un pixel shader pour les rendus utilisants une texture en virgule flottante comme entrée. Ceci s'applique sans tenir compte du type du buffer destination (frame buffer par défaut, FBO ou autre). Sur certaines implémentations matérielles (nVidia), il faut utiliser une texture de type NPOTD (TEXTURE_RECTANGLE_2D) afin d'initialiser le format RGBA_32F.

  • filtering_mode - [ENUM] - mode de filtrage de la texture:
    • NONE: aucun filtrage n'est appliqué à la texture. C'est le mode le plus rapide. Utile pour les objets texturés lointains
    • LINEAR: le filtrage par défaut
    • TRILINEAR: filtrage utilisé principalement en présence de grandes surface texturées ayant du mipmapping
    Le filtrage a pour but de limiter les effets visuels désagréables lorsque la texture est agrandie ou ratrécie.

  • anisotropy - [REAL] - valeur du facteur de filtrage anisotropique Une valeur de 1.0 correspond au filtrage isotropique (filtrage par défaut) - valeur par défaut: 1.0
    Remarque: La valeur max du coefficient de filtrage anisotropique dépend de la carte graphique. Les valeurs suivantes sont courantes: 4.0, 8.0 ou 16.0. Le tool HardwareInfos, livré avec Hyperion, donne cette valeur.

  • addressing_mode - [ENUM] - spécifie le comportement de la texture à ses bords et la façon dont la texture est répétée lorsque le facteur de tiling (uv_tiling) appliqué aux vertices est supérieur à 1.0:
    • WRAP: la texture est répétée dans les 2 direction u et v - valeur par défaut
    • MIRROR: la texture est répétée dans les 2 direction u et v avec effet miroir
    • CLAMP: la texture n'est plus répétée et les bords de la texture ne sont pas pris en compte

  • function_type - [ENUM] - fonction de texture. Cette fonction de texture spécifie la manière dont la texture est composée avec la couleur d'entrée dans le pipeline 3D de la carte graphique. La couleur d'entrée peut être soit la couleur des vertices, soit la texture précédente dans le cas du multitexturing.
    texture_function décrit l'opération effectuée sur les 2 entrées d'une unité de texture:

    Les valeurs suivantes sont acceptées:
    • MODULATE: la texture est multipliée par la couleur d'entrée: Output = A0 * A1 - valeur par défaut
    • REPLACE: la texture n'est pas influencée par la couleur d'entrée: Output = A0
    • ADD: la texture est additionnée à la couleur d'entrée: Output = A0 + A1
    • ADD_SIGNED: la texture est demie-additionnée à la couleur d'entrée: Output = A0 + A1 - 0.5
    • SUB: la texture est soustraite de la couleur d'entrée: Output = A0 - A1
    • INTERPOLATE_CONSTANT: la couleur finale est le résultat de l'interpolation entre la texture et la couleur issue de l'unité de texture précedente: Output = (A0 * A2) + (A1 * (1.0 - A2)). Ici A2 est une couleur constante qui doit être spécifiée par <constant_color>
    • INTERPOLATE_TEXTURE_ALPHA: la couleur finale est le résultat de l'interpolation entre la texture courante et la texture sur l'unité de texture précédente: Output = (A0 * A2) + (A1 * (1.0 - A2)). Ici A2 est une couleur variable qui doit être spécifiée par <inject_opacity_map>

  • gen_coord_mode - [ENUM] - spécifie la manière dont les coordonnées de textures (u et v) sont générées pour chaque vertex d'un objet 3D:
    • NONE: les coords. u et v sont laissées tel quel à l'initialisation de l'objet 3D. Valeur par défaut
    • SPHERE_ENV_MAP: les coords. u et v sont générées automatiquement par le moteur 3D pour créer un effet de mapping sphérique. Ce type de mapping permet de simuler des objets semblant réflechir l'environnement
    • CUBE_ENV_MAP: les coords. u et v sont générées automatiquement par le moteur 3D pour créer un effet de mapping cubique. Ce type de mapping permet de simuler des objets réfléchissant l'environnement. Ce type de mapping est beaucoup plus réaliste que le mode SPHERE_ENV_MAP mais est plus gourmand en terme de ressources GPU (présence et update d'une cube-map)

  • type - [ENUM] - type de la texture:
    • TEXTURE_1D: texture 1D à adressage normalisé (coordonnées de texture entre 0.0 et 1.0).
    • TEXTURE_2D: texture 2D (POTD)à adressage normalisé (coordonnées de texture entre 0.0 et 1.0) - Valeur par défaut.
    • TEXTURE_RECTANGLE_2D: texture 2D (NPOTD) à adressage non normalisé (coordonnées de texture entre 0.0 et max_size image). Attention, ce type de texture n'est pas supportée par tous les modèles de cartes graphiques. Utilisez le tool HardwareInfos pour savoir si votre carte prend en charge ce type de texture.
    • TEXTURE_CUBE_MAP. texture de type cube map. La sélection de ce type initialise automatiquement gen_coord_mode à CUBE_ENV_MAP

  • use_fbo_for_rtt - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation de cette texture avec le FBO (Frame Buffer Object) par défaut. A utiliser lorsque la texture est utilisée comme texture de réflexion - valeur par défaut: FALSE

  • fbo_attachment_point - [ENUM] - spécifie le point d'attachement de la texture dans le FBO.
    • FBO_COLOR_ATTACHMENT0: buffer de couleur 0.
    • FBO_COLOR_ATTACHMENT1: buffer de couleur 1.
    • FBO_COLOR_ATTACHMENT2: buffer de couleur 2.
    • FBO_COLOR_ATTACHMENT3: buffer de couleur 3.

  • perlin_noise - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation du bruit de Perlin pour remplir la texture - valeur par défaut: FALSE

  • check_crc32 - [INTEGER] - permet d'effectuer un test d'intégrité sur la texture de type crc32. Ce genre de test est pratique pour contrôler que la bonne texture a été chargée. Cela rend du coup impossible de falsifier une scène Hyperion livrée sous forme d'un binaire: même si le code de description de la scène est sous forme binaire, les textures et autres objets 3D sont toujours accessibles sous la forme de fichiers classiques. La première personne venue pourrait donc, en falsifiant quelques textures, s'approprier l'oeuvre. Le code crc32 d'un fichier peut être obtenu à l'aide de l'utilitaire Hyperion_CRC32.exe - valeur par défaut: 0

  • vertical_flip - [BOOLEAN] - permet de retourner la texture verticalement si mis à TRUE - valeur par défaut: FALSE

  • horizontal_flip - [BOOLEAN] - permet de retourner la texture hozizontalement si mis à TRUE - valeur par défaut: FALSE

  • use_texture_matrix - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation de la matrice de transformation de texture. La matrice hardware de texture permet d'effectuer, avec très peu de CPU, des transformations complexes de textures. La valeur de rotation de texture est définie par l'attribut spin_value - valeur par défaut: FALSE

  • checker_pattern - [BOOLEAN] - active (TRUE) ou désactive (FALSE) l'utilisation d'un motif en damier pour remplir la texture - valeur par défaut: FALSE

  • create_opacity_map - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la création d'une opacity-map lors du chargement de la texture - valeur par défaut: FALSE Une opacity-map est une texture dans laquelle la valeur contenue dans le canal alpha est la moyenne arithmétique des 3 cannaux r, g et b. Cela permet donc d'avoir une valeur alpha qui varie en fonction de la couleur rgb.

  • create_binary_alpha_map - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la création d'une alpha-map binaire lors du chargement de la texture - valeur par défaut: FALSE Une alpha-map binaire est une texture dans laquelle la valeur contenue dans le canal alpha vaut soit 1.0 soit 0.0. Le choix de la valeur correcte à mettre dépend de la comparaison entre la couleur rgb d'un texel et la couleur spécifiée avec l'élément binary_alpha_map_color.

  • create_constant_alpha_map - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la création d'une alpha-map constante lors du chargement de la texture - valeur par défaut: FALSE Une alpha-map constante est une texture dans laquelle la valeur contenue dans le canal alpha est égale à la valeur spécifiée par l'attribut constant_alpha_map_value.

  • constant_alpha_map_value - [CLAMPED_REAL] - valeur alpha comprise entre 0.0 et 1.0 pour la création d'une alpha-map constante - valeur par défaut: 0.5

  • s3tc - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la création d'une texture compressée suivant le schéma de compression S3TC (DXT1 ou DXT5) - valeur par défaut: FALSE La texture sera compressée avec le format DXT1 si le format de pixel choisi est RGB. La texture sera compressée avec le format DXT5 si le format de pixel choisi est RGBA.

  • num_mipmaps - [INTEGER] - permet de spécifier le nombre de mipmaps à créer lors du chargement de la texture. Dans ce cas, ne pas oublier d'employer filtering_mode="TRILINEAR" et de spécifier la valeur du filtrage anisotropique avec l'attribut anisotropy. Une valeur de 0 désactive le mipmapping - valeur par défaut: 13

  • play_avi - [BOOLEAN] - active (TRUE) ou désactive (FALSE) la lecture d'une texture animée de type AVI - valeur par défaut: TRUE

Elément cube_map

cube_map permet de charger une cube map à partir des textures représentant les 6 faces de la cubemap.

Attributs:
  • face - [ENUM] - face de la cubemap:
    • XPOS (ou right)
    • XNEG (ou left)
    • YPOS (ou top)
    • YNEG (ou bottom)
    • ZPOS (ou front)
    • ZNEG (ou back)
  • filename - [STR255] - emplacement du fichier de texture de la face de la cubemap. L'emplacement est relatif au script xml
  • uv_map_op - [ENUM] - spécifie l'opération à effectuer sur les coordonnées de texture afin de corriger le sens de la texture:
    • NO_SWAP: opération sans effet: laisse les coordonnées de textures inchangées - valeur par défaut
    • SWAP_U: inverse les coordonnées en u: la texture est inversée par rapport a l'axe des Y
    • SWAP_V: inverse les coordonnées en v: la texture est inversée par rapport a l'axe des X
    • SWAP_UV: inverse les coordonnées en u et v: la texture est inversée par rapport a l'axe des X et des Y

Elément size

size permet de spécifier les dimensions de la texture. Cette instruction est à utiliser lorsque la texture est procédurale, c'est à dire générée par Hyperion:
  • texture miroir
  • texture cube map
  • texture avec bruit de Perlin ou motif en damier

Attributs:
  • width - [INTEGER] - largeur de la texture en pixels - valeur par défaut: 256
  • height - [INTEGER] - hauteur de la texture en pixels - valeur par défaut: 256

Elément perlin_noise_params

perlin_noise_params initialise le générateur de bruit de Perlin pour le remplissage de la texture.

Attributs:
  • min_color_r - [CLAMPED_REAL] - composante rouge de la valeur minimum de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • min_color_g - [CLAMPED_REAL] - composante verte de la valeur minimum de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • min_color_b - [CLAMPED_REAL] - composante bleue de la valeur minimum de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • min_color_a - [CLAMPED_REAL] - composante alpha de la valeur minimum de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • max_color_r - [CLAMPED_REAL] - composante rouge de la valeur maximale de la couleur du bruit de Perlin - valeur par défaut: 1.0
  • max_color_g - [CLAMPED_REAL] - composante verte de la valeur maximale de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • max_color_b - [CLAMPED_REAL] - composante bleue de la valeur maximale de la couleur du bruit de Perlin - valeur par défaut: 0.0
  • max_color_a - [CLAMPED_REAL] - composante alpha de la valeur maximale de la couleur du bruit de Perlin - valeur par défaut: 1.0
  • amplitude - [CLAMPED_REAL] - valeur de l'amplitude pour le générateur de bruit de Perlin - valeur par défaut: 200
  • frequency - [CLAMPED_REAL] - valeur de la fréquence du bruit - valeur par défaut: 15

    Elément binary_alpha_map_color

    binary_alpha_map_color spécifie les paramètres pour la génération d'une alpha-map binaire. Les alpha-maps binaires sont des textures avec des zones de transparence totale. Pour que la création de l'alpha map binaire soit effective, il faut mettre l'attribut du noeud texture create_binary_alpha_map="TRUE".

    Attributs:
  • r - [CLAMPED_REAL] - composante rouge de la couleur de transparence. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • g - [CLAMPED_REAL] - composante verte de la couleur de transparence. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • b - [CLAMPED_REAL] - composante bleue de la couleur de transparence. Valeur réelle comprise entre 0.0 et 1.0 - valeur par défaut: 0.0
  • epsilon - [CLAMPED_REAL] - spécifie la tolérance autour de la couleur de transparence pour la réalisation d'alpha-maps binaires. Cela permet de prendre une zone plus ou moins grande autour de la couleur de transparence. - valeur par défaut: 0.0
    Exemple
    <texture create_binary_alpha_map="TRUE ">
    <binary_alpha_map_color r="1.0" g="0.0" b="0.0" epsilon="0.2" />
</texture>
    Ici la couleur de transparence est fixée au rouge pure. Dans l'exemple ci-dessus, tout pixel ayant une couleur comprise entre:
    R [0.8 - 1.0]
    G [0.0 - 0.2]
    B [0.0 - 0.2]
    sera considéré comme transparent.
    Remarques
    Les dimensions de la texture doivent être multiples d'une puissance de 2:
    - 16
    - 32
    - 64
    - 128
    - 256
    - 512
    - 1024
    - 2048

    Elément spin_value

    spin_value initialise une matrice de rotation de texture en Z. Permet de faire tourner une texture sur elle-même.

    Attributs:
  • z - [REAL] - génère une matrice de rotation en z à partir d'un angle de rotation - valeur par défaut: 0.0
    Exemple
    <spin_value ang_z="0.1"  />

    Elément filling_color

    filling_colorp permet de remplir la texture avec une couleur constante.

    Attributs:
    • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 0.0
    • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 0.0
    • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 0.0
    • a - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 1.0

    Elément constant_color

    constant_color spécifie la valeur de la couleur qui sera utilisée avec la fonction de texture INTERPOLATE_CONSTANT.

    Attributs:
    • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 1.0
    • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 1.0
    • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 1.0
    • a - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 1.0

    Elément inject_opacity_map

    inject_opacity_map permet d'injecter une texture d'opacité dans le canal alpha de la texture courante. inject_opacity_map est principalement utilisé avec la fontion de texture INTERPOLATE_TEXTURE_ALPHA mais peut etre utilisé aussi avec du blending ou de l'alpha test.

    Attributs:
    • r - [CLAMPED_REAL] - composante rouge de la couleur - valeur par défaut: 1.0
    • g - [CLAMPED_REAL] - composante verte de la couleur - valeur par défaut: 1.0
    • b - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 1.0
    • a - [CLAMPED_REAL] - composante bleue de la couleur - valeur par défaut: 1.0
    inject_opacity_map couplé avec INTERPOLATE_TEXTURE_ALPHA permet de faire des effets très sympathiques comme la simulation d'un sol partiellement trempé:

    et ci-après, le code source correspondant au sol:
    <texture name="floor_tex" filename="textures/059carr_sol.jpg"
         function_type="INTERPOLATE_TEXTURE_ALPHA" pixel_format="RGBA" >
    <inject_opacity_map filename="textures/gloss_map_01.tga" />
</texture>

<texture name="refl_tex" pixel_format="RGB" >
    <size width="512" height="512" />
</texture>

<material name="floor_mat" >
    <ambient r="0.8" g="0.8" b="0.8" a="1.0" />
    <diffuse r="0.8" g="0.8" b="0.8" a="1.0" />
</material>

<mesh name="floor" shape_type="PLANE" render="TRUE" polygon_mode="SOLID"
      lighting="TRUE" texturing="TRUE"  back_face_culling="FALSE" >

    <plane x_size="512.0" z_size="512.0" num_segs_x="4" num_segs_z="4" />
    <position x="0.0" y="0.0" z="0.0" />

    <attach_material name="floor_mat" />

    <texture material_name="floor_mat"
                  texture_name="floor_tex"
                  texture_unit="1"
                  u_tile="1.0" v_tile="1.0" />

    <texture material_name="floor_mat"
                  texture_name="refl_tex"
                  u_tile="1.0" v_tile="1.0"
                  texture_unit="0"
                  mirror="TRUE" />
</mesh>

    Hyperion - Guide de Référence
    Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - timer

Noeud <timer>

Fonction

Le noeud timer permet de mettre en place une entité (justement le TIMER) qui déclenche un événement à intervalles réguliers. L'événement est en général un script LUA.

Syntaxe générale

<timer />
Noeud exhaustif avec attributs et valeurs par défaut:
<timer
    name=""
    script=""
    time_out="1000"
    active="TRUE"  />

Elément timer

timer est la balise xml qui définit un noeud timer.

Attributs:
  • name - [STR127] - nom du noeud. Ce nom permettra de référencer ce noeud tout au long du script XML

  • active - [BOOLEAN] - active (TRUE) ou désactive (FALSE) le timer - valeur par défaut: TRUE

  • script - [STR255] - emplacement du fichier de script à exécuter à chaque time-out du timer. L'emplacement est relatif au script xml. Ce nom peut aussi référencer un script LUA déjà existant dans le code XML.

  • time_out - [INTEGER] - délai du timer en millisecondes. Dès que le temps correspondant au time-out est écoulé, le script spécifié par l'attribut script est exécuté - valeur par défaut: 1000

Exemple:
<timer name="timer02" script="on_timer02_lua" time_out="10" active="TRUE" />

<script name="on_timer02_lua" run_mode="ASYNCHRONOUS" >
    <raw_data><![CDATA[

    HYP_Object.SetRoll( "plane2", -0.2 );

    ]]></raw_data>
</script>

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA

API Hyperion/LUA

L'API (Application Programming Interface) Hyperion/LUA est l'ensemble des fonctions qui permettent à un script écrit en langage LUA d'interagir avec Hyperion:

Un script LUA peut être intégré dans un hypergraph de plusieurs façons:
  • au moyen du noeud <script>: c'est le moyen le plus simple et le plus direct.
  • au moyen du noeud <hotkey>: un script LUA est déclenché par appui sur une touche.
  • au moyen du noeud <interval>: des scripts LUA sont exécutés soit au début soit pendant l'intervalle.
  • au moyen du noeud <mouse>: des scripts LUA peuvent être exécutés en réponse aux événements de la souris.
  • au moyen du noeud <play_list>: des script LUA peuvent être exécutés pour chacune des pistes audio de la playlist.
  • au moyen du noeud <sequence>: des scripts LUA peuvent être exécutés dans les actions.
  • au moyen du noeud <timer>: un script LUA est exécuté à chaque time-out.

Voici un script LUA tout simple qui se contente d'afficher un grand classique de la programmation: "Hello World!":

--
-- Ceci est un commentaire.
-- Ce script est le Hello World de la programmation LUA.
--
text = "Hello World!";
HYP_MsgBox( "Test LUA", text );

Pour exécuter ce script, il suffit d'insérer le code suivant dans un code source XML Hyperion:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0">

<scene name="training_scene" display_fps="TRUE" show_ref_grid="TRUE" >
    <window_size width="400" height="300" />
    <background_color r="0.0" g="0.0" b="0.0" />
</scene>

<camera name="my_camera" navigation_mode="FLY" fov="50.0" >
    <position x="0.0" y="50.0" z="150.0" />
</camera>

<script name="hello_wolrd_script" filename="scripts/hello_world.lua" run_mode="EXECUTE_ONCE" />

</hyperion>

Ce bout de code suppose que le script LUA ait été enregistré dans un répertoire scripts/ situé au même niveau que le script XML principal. Lors du chargement du script XML dans Hyperion vous verrez apparaître la boîte de dialogue suivante:

Liste des fonctions de l'API

L'API actuelle contient plus d'une centaine de fonctions. Elles sont regroupées par champ d'action:
Debug Lib
HYP_Debug.Trace
Misc Functions
HYP_DrawText
HYP_GetElapsedTime
HYP_GetElapsedTimeSeconds
HYP_GetElapsedTimeMilliSeconds
HYP_GetElapsedTimeMicroSeconds
HYP_GetTimeStep
HYP_GetBaseDir
HYP_GetHyperionDir
HYP_MsgBox
HYP_OpenHTML
HYP_StopApp
HYP_Wait
HYP_GetGCModelString
HYP_GetGCVendorString
HYP_IsATI
HYP_IsNVIDIA
HYP_Project3DTo2D
HYP_Project2DTo3D
Object Lib
HYP_Object.AbsoluteToLocal
HYP_Object.AddChild
HYP_Object.AttachTexture
HYP_Object.AverageNormals
HYP_Object.Check_AABB_Collision
HYP_Object.Check_BS_Collision
HYP_Object.ClearAllMaterials
HYP_Object.Clone
HYP_Object.DetachAllTextures
HYP_Object.DetachTexture
HYP_Object.DisplayBoundingVolume
HYP_Object.DisplayTripod
HYP_Object.FreeAllTextures
HYP_Object.GetBoundingVolumeAbsoluteCenter
HYP_Object.GetAbsolutePosition
HYP_Object.GetAbsoluteTransformMatrix
HYP_Object.GetAbsolute_X_Axis
HYP_Object.GetAbsolute_Y_Axis
HYP_Object.GetAbsolute_Z_Axis
HYP_Object.GetActiveState
HYP_Object.GetChild
HYP_Object.GetChildByIndex
HYP_Object.GetDepthBufferState
HYP_Object.GetDirection
HYP_Object.GetDistanceBetween
HYP_Object.GetIdFromName
HYP_Object.GetNameFromId
HYP_Object.GetNumChildren
HYP_Object.GetPosition
HYP_Object.GetRenderState
HYP_Object.GetSize
HYP_Object.GetPickingState
HYP_Object.GetUpdateTripodDirectionState
HYP_Object.PopTripod
HYP_Object.PushTripod
HYP_Object.RemoveChild
HYP_Object.RemoveSeam
HYP_Object.ResetTripod
HYP_Object.RotateObject
HYP_Object.SetAlphaMappedState
HYP_Object.SetActiveState
HYP_Object.SetDepthBufferState
HYP_Object.SetDepthBufferWritingState
HYP_Object.SetDirection
HYP_Object.SetLightingState
HYP_Object.SetMaterial
HYP_Object.SetNormalizationState
HYP_Object.SetOrientation
HYP_Object.SetPitch
HYP_Object.SetPolygonMode
HYP_Object.SetPosition
HYP_Object.SetRenderState
HYP_Object.SetRoll
HYP_Object.SetScale
HYP_Object.SetPickingState
HYP_Object.SetShadowCasterState
HYP_Object.SetTexturingState
HYP_Object.SetUpdateTripodDirectionState
HYP_Object.SetVBOState
HYP_Object.SetYaw
HYP_Object.Translate
HYP_Object.UpdateGeometryData
HYP_Object.UpdateTripod
HYP_Object.Render
HYP_Object.Update
HYP_Object.SetUpdateState
HYP_Object.GetUpdateState
HYP_Object.GetLightingState
HYP_Object.GetTexturingState
HYP_Object.SetBlendingState
HYP_Object.GetBlendingState
HYP_Object.SetBlendingFactors
HYP_Object.GetBlendingFactors
HYP_Object.SetBackFaceCullingState
HYP_Object.GetBackFaceCullingState
HYP_Object.SetColor
HYP_Object.SetLineWidth
HYP_Object.ComputeNormals
HYP_Object.ComputeTangentSpace
HYP_Object.AverageNormals
Models Lib
HYP_Model.GetFirstSubMesh
HYP_Model.GetSubMeshByName
HYP_Model.Load
HYP_Model.LoadAmbientOcclusionMap
HYP_Model.ScaleVertices
HYP_Model.Save
HYP_Model.SetVerticesColor
HYP_Model.SetCloningMode
HYP_Model.GetNumFaces
HYP_Model.GetNumVertices
Meshes Lib
HYP_Mesh.CastRay
HYP_Mesh.CopyVerticesList
HYP_Mesh.CreateBox
HYP_Mesh.CreatePlane
HYP_Mesh.CreateSphere
HYP_Mesh.CreateTorus
HYP_Mesh.DoTweening
HYP_Mesh.FlipNormals
HYP_Mesh.GetElevation
HYP_Mesh.GetFaceIndexes
HYP_Mesh.GetFaceNormal
HYP_Mesh.GetNumFaces
HYP_Mesh.GetNumPlaneSegments
HYP_Mesh.GetNumVertices
HYP_Mesh.GetVertexAttrib
HYP_Mesh.GetVertexColor
HYP_Mesh.GetVertexNormal
HYP_Mesh.GetVertexPosition
HYP_Mesh.GetVertexUVCoords
HYP_Mesh.PopVerticesList
HYP_Mesh.PushVerticesList
HYP_Mesh.ScaleVertices
HYP_Mesh.SetTexCoordsOffset
HYP_Mesh.SetTexCoordsTiling
HYP_Mesh.SetPivotPosition
HYP_Mesh.SetPivotOrientation
HYP_Mesh.SetUVTiling
HYP_Mesh.SetVertexAttrib
HYP_Mesh.SetVertexColor
HYP_Mesh.SetVerticesColor
HYP_Mesh.SetVertexNormal
HYP_Mesh.SetVertexPosition
HYP_Mesh.SetVertexUVCoords
HYP_Mesh.UpdateAllNormals
HYP_Mesh.UpdateFaceNormalField
HYP_Mesh.UpdateVertexNormalField
HYP_Mesh.VBQuad_AddQuad
HYP_Mesh.VBQuad_SetQuadVertexPosition
HYP_Mesh.VBQuad_GetQuadVertexPosition
HYP_Mesh.VBQuad_SetQuadVertexColor
HYP_Mesh.VBQuad_GetQuadVertexColor
HYP_Mesh.Destroy
HYP_Mesh.GetFaceCenterPosition
Cameras Lib
HYP_Camera.PositionMoveAlongDirection
HYP_Camera.PositionStrafeHorizontal
HYP_Camera.PositionStrafeVertical
HYP_Camera.Disable
HYP_Camera.Enable
HYP_Camera.GetFarPlane
HYP_Camera.GetFOV
HYP_Camera.GetKeyboardSpeed
HYP_Camera.GeLookAtDirection
HYP_Camera.GetNearPlane
HYP_Camera.GetPosition
HYP_Camera.MakeScreenshot
HYP_Camera.SetFarPlane
HYP_Camera.SetFOV
HYP_Camera.SetKeyboardSpeed
HYP_Camera.SetLookAt
HYP_Camera.SetNearPlane
HYP_Camera.SetOrientation
HYP_Camera.SetPitch
HYP_Camera.SetPosition
HYP_Camera.SetRoll
HYP_Camera.SetTarget
HYP_Camera.SetViewParams
HYP_Camera.SetYaw
HYP_Camera.ShakePosition
HYP_Camera.GetNumCameras
HYP_Camera.GetIdByIndex
HYP_Camera.GetNameByIndex
HYP_Camera.GetId
HYP_Camera.GetName
HYP_Camera.GetProjectionMatrix
HYP_Camera.GetViewMatrix
Lighting Lib
HYP_Lighting.GetAmbient
HYP_Lighting.GetDiffuse
HYP_Lighting.GetSpecular
HYP_Lighting.SetAmbient
HYP_Lighting.SetDiffuse
HYP_Lighting.SetSpecular
HYP_Lighting.SetConstantAttFactor
HYP_Lighting.SetLinearAttFactor
HYP_Lighting.SetQuadraticAttFactor
HYP_Lighting.Create
HYP_Lighting.Destroy
HYP_Lighting.SetType
HYP_Lighting.SetSpotCutOff
HYP_Lighting.GetSpotCutOff
HYP_Lighting.GetNumLights
HYP_Lighting.GetIdByIndex
HYP_Lighting.GetNameByIndex
HYP_Lighting.GetId
HYP_Lighting.GetName
Materials Lib
HYP_Material.Create
HYP_Material.Destroy
HYP_Material.SetAmbient
HYP_Material.SetDiffuse
HYP_Material.SetDynamicFriction
HYP_Material.SetResilience
HYP_Material.SetSelfIllumination
HYP_Material.SetSpecular
HYP_Material.SetSpecularExp
HYP_Material.SetStaticFriction
HYP_Material.GetNumMaterials
HYP_Material.GetIdByIndex
HYP_Material.GetNameByIndex
HYP_Material.GetId
HYP_Material.GetName
HYP_Material.AttachTexture
HYP_Material.DetachTexture
HYP_Material.SetShaderProgram
HYP_Material.SetShaderProgramForAmbientPass
Texture Lib
HYP_Texture.SetAddressingMode
HYP_Texture.SetFilteringAnisotropicValue
HYP_Texture.SetFilteringMode
HYP_Texture.SetFunction
HYP_Texture.Save
HYP_Texture.Save
HYP_Texture.LoadTex2D
HYP_Texture.LoadTex2DAvi
HYP_Texture.Create
HYP_Texture.Destroy
HYP_Texture.SetName
HYP_Texture.SetValueTex1DByteRgb
HYP_Texture.SetValueTex1DFloatRgba
HYP_Texture.SetValueTex2DByteRgb
HYP_Texture.SetValueTex2DFloatRgba
HYP_Texture.GetValueTex1DByteRgb
HYP_Texture.GetValueTex1DFloatRgba
HYP_Texture.GetValueTex2DByteRgb
HYP_Texture.GetValueTex2DFloatRgba
HYP_Texture.GetDimensions
HYP_Texture.SetTransformMatrix
HYP_Texture.GetTransformMatrix
HYP_Texture.GetAVINumFrames
HYP_Texture.GetAVIMpf
HYP_Texture.GetAVICurrentTime
HYP_Texture.SetAVICurrentFrame
HYP_Texture.GetAVICurrentFrame
Skyboxes Lib
HYP_SetActiveSkybox
Sound Lib
HYP_Sound.Disable_DSP_Unit
HYP_Sound.Enable_DSP_Unit
HYP_Sound.GetSpectrumValue
HYP_Sound.GetTrackTime
HYP_Sound.GetVolume
HYP_Sound.IsTrackFinished
HYP_Sound.Play
HYP_Sound.SetVolume
HYP_Sound.Stop
HYP_Sound.SetSourcePosition
HYP_Sound.SetListenerPosition
HYP_Sound.SetListenerOrientation
HYP_Sound.Load
HYP_Sound.Unload
HUDs Lib
HYP_Hud.DoFadeInOut
HYP_Hud.ProgressiveDisplay
HYP_Hud.ProgressiveUnDisplayWithStretch
HYP_Hud.GetVertexColor
HYP_Hud.GetVertexPosition
HYP_Hud.SetVertexColor
HYP_Hud.SetVertexPosition
HYP_Hud.SetSize
HYP_Hud.GetSize
HYP_Hud.PushVertices
HYP_Hud.PopVertices
HYP_Hud.SetVertexTexCoord
HYP_Hud.GetVertexTexCoord
Primitives Lib
HYP_Primitive.SetBoxSize
HYP_Primitive.SetBoxVertexPosition
HYP_Primitive.GetBoxVertexPosition
HYP_Primitive.SetBoxVertexColor
HYP_Primitive.GetBoxVertexColor
HYP_Primitive.PushBoxVertices
HYP_Primitive.PopBoxVertices
HYP_Primitive.SetQuadVertexPosition
HYP_Primitive.GetQuadVertexPosition
HYP_Primitive.SetQuadVertexColor
HYP_Primitive.GetQuadVertexColor
HYP_Primitive.CreateLine
HYP_Primitive.SetLineVertexPosition
HYP_Primitive.GetLineVertexPosition
HYP_Primitive.SetLineVertexColor
HYP_Primitive.GetLineVertexColor
HYP_Primitive.CreateBox
HYP_Primitive.SetBoxVertexTexCoords
HYP_Primitive.GetBoxVertexTexCoords
HYP_Primitive.CreateQuad
HYP_Primitive.SetQuadVertexTexCoords
HYP_Primitive.GetQuadVertexTexCoords
HYP_Primitive.CreateTriangle
HYP_Primitive.SetTriangleVertexPosition
HYP_Primitive.GetTriangleVertexPosition
HYP_Primitive.SetTriangleVertexColor
HYP_Primitive.GetTriangleVertexColor
HYP_Primitive.SetTriangleVertexTexCoords
HYP_Primitive.GetTriangleVertexTexCoords
HYP_Primitive.CreateDisc
HYP_Primitive.SetDiscParams
HYP_Primitive.GetDiscParams
HYP_Primitive.CreateSphere
HYP_Primitive.SetSphereParams
HYP_Primitive.GetSphereParams
HYP_Primitive.Destroy
Particle System Lib
HYP_ParticleSystem.DisableEmitterEmission
HYP_ParticleSystem.SetEmitterSpawnVecMax
HYP_ParticleSystem.SetEmitterSpawnVecMin
HYP_ParticleSystem.Disable
HYP_ParticleSystem.EnableEmitterEmission
HYP_ParticleSystem.Enable
HYP_ParticleSystem.SetEmitterMasterObject
Scene Lib
HYP_Scene.ActiveBkgImage
HYP_Scene.SetBackgroundColor
HYP_Scene.EnableFog
HYP_Scene.DisableFog
HYP_Scene.Render
HYP_Scene.SetRenderTarget
HYP_Scene.SetRenderTargetTexture
HYP_Scene.AddObject
HYP_Scene.DisableGroup
HYP_Scene.EnableGroup
HYP_Scene.RemoveObject
HYP_Scene.GetPickedObjectName
HYP_Scene.PickMesh
HYP_Scene.FboGetDefault
HYP_Scene.FboBind
HYP_Scene.FboSetRenderDestination
HYP_Scene.FboSetRenderSource
HYP_Scene.FboAttachTexture
HYP_Scene.FboAllocReadBufferRgba32f
HYP_Scene.FboFreeReadBufferRgba32f
HYP_Scene.FboGetValueReadBufferRgba32f
HYP_Scene.NvSliGetNumGpus
HYP_Scene.NvSliSetState
HYP_Scene.NvSliGetState
HYP_Scene.NvSliSetMode
HYP_Scene.NvSliGetMode
HYP_Scene.GetRayOriginAndDirection
Export Lib
HYP_Export.HYP_ExportSceneForRenderer
Real Time Shaders Lib
HYP_GPUShader.Activate
HYP_GPUShader.Desactivate
HYP_GPUShader.SetConstant_1i
HYP_GPUShader.SetConstant_2i
HYP_GPUShader.SetConstant_3i
HYP_GPUShader.SetConstant_4i
HYP_GPUShader.AllocArray_1iv
HYP_GPUShader.SetArrayElement_1iv
HYP_GPUShader.AllocArray_2iv
HYP_GPUShader.SetArrayElement_2iv
HYP_GPUShader.AllocArray_3iv
HYP_GPUShader.SetArrayElement_3iv
HYP_GPUShader.AllocArray_4iv
HYP_GPUShader.SetArrayElement_4iv
HYP_GPUShader.SetConstant_1f
HYP_GPUShader.SetConstant_2f
HYP_GPUShader.SetConstant_3f
HYP_GPUShader.SetConstant_4f
HYP_GPUShader.AllocArray_1fv
HYP_GPUShader.SetArrayElement_1fv
HYP_GPUShader.AllocArray_2fv
HYP_GPUShader.SetArrayElement_2fv
HYP_GPUShader.AllocArray_3fv
HYP_GPUShader.SetArrayElement_3fv
HYP_GPUShader.AllocArray_4fv
HYP_GPUShader.SetArrayElement_4fv
HYP_GPUShader.SetConstant_4x4f
Scripts Lib
HYP_Script.Exec
HYP_Script.Enable
HYP_Script.Disable
User Input Lib
HYP_Input.DisableDefaultKeyboardFunctionalities
HYP_Input.EnableDefaultKeyboardFunctionalities
HYP_Input.GetJoystickButtonState
HYP_Input.GetJoystickPosition
HYP_Input.GetKeyboardLayout
HYP_Input.GetMouseButtonState
HYP_Input.GetMousePos
HYP_Input.GetMouseWheelDelta
HYP_Input.HideMouseCursor
HYP_Input.IsKeyboardKeyPressed
HYP_Input.IsJoystickEnabled
HYP_Input.ShowMouseCursor
HYP_Input.SetDefaultInputManagementState
HYP_Input.GetDefaultInputManagementState
Motion-Paths Lib
HYP_MotionPath.GetValueByTime
HYP_MotionPath.GetObjectCurrentTime
HYP_MotionPath.Attach
Physics Engine Lib
HYP_Nx_Physics.SetSceneGravity
HYP_Nx_Physics.GetSceneGravity
HYP_Nx_Physics.SetActorLinearVelocity
HYP_Nx_Physics.GetActorLinearVelocity
HYP_Nx_Physics.SetActorLinearDamping
HYP_Nx_Physics.GetActorLinearDamping
HYP_Nx_Physics.SetActorAngularVelocity
HYP_Nx_Physics.GetActorAngularVelocity
HYP_Nx_Physics.SetActorAngularDamping
HYP_Nx_Physics.GetActorAngularDamping
HYP_Nx_Physics.SetActorMass
HYP_Nx_Physics.GetActorMass
HYP_Nx_Physics.SetActorGlobalPosition
HYP_Nx_Physics.GetActorGlobalPosition
HYP_Nx_Physics.SetActorGlobalOrientation
HYP_Nx_Physics.AddForceToActor
HYP_Nx_Physics.AddTorqueToActor
HYP_Nx_Physics.SetActorSleepLinearVelocity
HYP_Nx_Physics.GetActorSleepLinearVelocity
HYP_Nx_Physics.SetActorSleepAngularVelocity
HYP_Nx_Physics.GetActorSleepAngularVelocity
HYP_Nx_Physics.ForceActorToSleep
HYP_Nx_Physics.WakeUpActor
HYP_Nx_Physics.IsActorSleeping
HYP_Nx_Physics.AddBoxActorToScene
HYP_Nx_Physics.AddSphereActorToScene
HYP_Nx_Physics.RemoveActorFromScene
HYP_Nx_Physics.GetActorCollisionState
HYP_Nx_Physics.SetPhysicsEnginePauseSimultationState
HYP_Nx_Physics.SetActorKinematicState
HYP_Nx_Physics.GetActorKinematicState
HYP_Nx_Physics.SetActorInertiaTensor
HYP_Nx_Physics.GetActorInertiaTensor
Projectors Lib
HYP_Projector.Enable
HYP_Projector.Disable
HYP_Projector.SetPosition
HYP_Projector.SetOrientation
Curves Lib
HYP_Curve.GetNumPoints
HYP_Curve.GetValue
HYP_Curve.SetColor
HYP_Curve.SetValue
Playlists Lib
HYP_Playlist.Create
HYP_Playlist.Destroy
HYP_Playlist.AddTrack
HYP_Playlist.RemoveTrack
HYP_Playlist.SetCurrentTrack
HYP_Playlist.GetCurrentTrackId
HYP_Playlist.GetCurrentTrackName
HYP_Playlist.Play
HYP_Playlist.Stop
HYP_Playlist.SetOptions
VertexPool Lib
HYP_VertexPool.Create
HYP_VertexPool.Destroy
HYP_VertexPool.SetVertexPosition
HYP_VertexPool.GetVertexPosition
HYP_VertexPool.SetVertexColor
HYP_VertexPool.GetVertexColor
HYP_VertexPool.SetVerticesColor
HYP_VertexPool.SetVerticesSize
HYP_VertexPool.SetPointSpriteDistAtt
HYP_VertexPool.SetUseOfVertexRenderingState
HYP_VertexPool.SetVertexRenderingState

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie Sonore

API Hyperion/LUA: Libraire sonore

La libraire HYP_Sound permet d'effectuer des opérations générales sur les fichiers audio.
HYP_Sound.Disable_DSP_Unit
HYP_Sound.Enable_DSP_Unit
HYP_Sound.GetSpectrumValue
HYP_Sound.GetTrackTime
HYP_Sound.GetVolume
HYP_Sound.IsTrackFinished
HYP_Sound.Play
HYP_Sound.SetVolume
HYP_Sound.Stop
HYP_Sound.SetSourcePosition
HYP_Sound.SetListenerPosition
HYP_Sound.SetListenerOrientation
HYP_Sound.Load
HYP_Sound.Unload
HYP_Sound.GetIdFromName

SetSourcePosition

SetSourcePosition permet de spécifier la position d'une source sonore.
Syntaxe
HYP_Sound.SetSourcePosition( name|id, x, y, z );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
  • x - [REAL] - coordonnée en X de la position.
  • y - [REAL] - coordonnée en Y de la position.
  • z - [REAL] - coordonnée en Z de la position.

SetListenerPosition

SetListenerPosition permet de spécifier la position de l'écouteur. En général, la position de l'écouteur est celle de la caméra active. Il suffit donc de récupérer la position de la camera et de l'affecter à la fonction SetListenerPosition().
Syntaxe
HYP_Sound.SetListenerPosition( x, y, z );
  • x - [REAL] - coordonnée en X de la position.
  • y - [REAL] - coordonnée en Y de la position.
  • z - [REAL] - coordonnée en Z de la position.

SetListenerOrientation

SetListenerPosition permet de spécifier l'orientation de l'écouteur. En général, l'orientation de l'écouteur est celle de la caméra active. Il suffit donc de récupérer l'orientation de la camera et de l'affecter à la fonction SetListenerOrientation().
Syntaxe
HYP_Sound.SetListenerOrientation( forward_x, forward_y, forward_z, up_x, up_y, up_z );
  • forward_x - [REAL] - coordonnée en X du vecteur direction.
  • forward_y - [REAL] - coordonnée en Y du vecteur direction.
  • forward_z - [REAL] - coordonnée en Z du vecteur direction
  • up_x - [REAL] - coordonnée en X du vecteur haut.
  • up_y - [REAL] - coordonnée en Y du vecteur haut.
  • up_z - [REAL] - coordonnée en Z du vecteur haut.

Play

Play permet de démarrer la lecture d'un fichier audio préalablement chargé par le script XML.
Syntaxe
HYP_Sound.Play( name|id );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
Exemple
HYP_Sound.Play( "dring" );

Stop

Stop permet de stopper la lecture d'un fichier audio.
Syntaxe
HYP_Sound.Stop( name|id );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
Exemple
HYP_Sound.Stop( "dring" );

Enable_DSP_Unit

Enable_DSP_Unit permet d'activer une des unité DSP du sound system. Cette fonction est à appeler une fois par frame afin de pouvoir utiliser la fonction GetSpectrumValue().
Syntaxe
HYP_Sound.Enable_DSP_Unit();

Disable_DSP_Unit

Disable_DSP_Unit permet de désactiver l'unité DSP activé par Enable_DSP_Unit().
Syntaxe
HYP_Sound.Disable_DSP_Unit();

GetSpectrumValue

GetSpectrumValue permet de récuperer composante du spectre audio. Le spectre audio est composé de 512 composantes qui représentent la plage des fréquences audio. Chaque composante correspond à une bande de fréquence de quelques Hertz. La première entrée du spectre est indexé par 0 et la dernière par 511. L'entrée 511 correspond à 22050 Hz. La valeur obtenue par GetSpectrumValue() est comprise entre 0.0 et 1.0.
Syntaxe
value = HYP_Sound.GetSpectrumValue( index );
  • index: [INTEGER] - valeur comprise entre 0 et 511.

GetTrackTime

GetTrackTime permet de récuperer le temps écoulé en millisecondes depuis le début de la piste audio.
Syntaxe
elapsed_time = HYP_Sound.GetTrackTime( name|id );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.

SetTrackVolume

SetTrackVolume permet de régler le volume sonore d'une piste particulière.
Syntaxe
HYP_Sound.SetTrackVolume( name|id, volume );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
  • volume: [INREGER] - valeur du volume comprise entre 0 et 255.

GetTrackVolume

GetTrackVolume permet de régler le volume sonore d'une piste particulière.
Syntaxe
volume = HYP_Sound.GetTrackVolume( name|id );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
  • volume: [INREGER] - valeur du volume comprise entre 0 et 255.

IsTrackFinished

IsTrackFinished permet de savoir si une piste en cours de lecture est finie ou non. Cette fonction retourne 1 si la lecture de la piste est terminée et 0 sinon.
Syntaxe
state = HYP_Sound.IsTrackFinished( name|id );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.
  • state: [INREGER] - 1 pour fini et 0 pour non fini.

Load

Load permet de charger un fichier sonore.
Syntaxe
id = HYP_Sound.Load( filename, loop_mode );
  • filename - [STR255] - localisation du fichier audio relativement au répertoire courant de la démo.
  • loop_mode: [INTEGER] - 1 pour mode looping et 0 pour mode non looping.
  • id: [INTEGER] - identificateur du nouveau sound track.

Unload

Unload permet de décharger un fichier sonore de la mémoire.
Syntaxe
HYP_Sound.Unload( id|name );
  • name - [STR127] - nom du sound track.
  • id: [INTEGER] - identificateur du sound track.

GetIdFromName

GetIdFromName permet de récupérer l'identifiant d'un sound track à partir de son nom.
Syntaxe
id = HYP_Sound.GetIdFromName( name );
  • name - [STR255] - nom du souond track.
  • id: [INTEGER] - identificateur du sound track.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de gestion des Caméras

API Hyperion/LUA: Librairie de gestion des Caméras

HYP_Camera est la librairie de la host API LUA responsable de la gestion des caméras.
HYP_Camera.PositionMoveAlongDirection
HYP_Camera.PositionStrafeHorizontal
HYP_Camera.PositionStrafeVertical
HYP_Camera.Disable
HYP_Camera.Enable
HYP_Camera.GetFarPlane
HYP_Camera.GetFOV
HYP_Camera.GetKeyboardSpeed
HYP_Camera.GeLookAtDirection
HYP_Camera.GetNearPlane
HYP_Camera.GetPosition
HYP_Camera.MakeScreenshot
HYP_Camera.SetFarPlane
HYP_Camera.SetFOV
HYP_Camera.SetKeyboardSpeed
HYP_Camera.SetLookAt
HYP_Camera.SetNearPlane
HYP_Camera.SetOrientation
HYP_Camera.SetPitch
HYP_Camera.SetPosition
HYP_Camera.SetRoll
HYP_Camera.SetTarget
HYP_Camera.SetViewParams
HYP_Camera.SetYaw
HYP_Camera.ShakePosition
HYP_Camera.GetNumCameras
HYP_Camera.GetIdByIndex
HYP_Camera.GetNameByIndex
HYP_Camera.GetId
HYP_Camera.GetName
HYP_Camera.GetProjectionMatrix
HYP_Camera.GetViewMatrix
HYP_Camera.SetViewport
HYP_Camera.GetViewport

ShakePosition

ShakePosition permet de translater la camera le long du vecteur direction.
Syntaxe
HYP_Camera.ShakePosition( camera_name, shake_delay, shake_strength );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • shake_delay - [REAL] - delai en secondes du tremblement.
  • shake_strength - [REAL] - force du tremblement.
Exemple
g_camera_delay = 1.0;
g_camera_strength = 2.5;
HYP_Camera.ShakePosition( "Main_Camera", g_camera_delay, g_camera_strength );

SetKeyboardSpeed

SetKeyboardSpeed permet régler le facteur de vitesse des touches de déplacement (AWSD ou UP, DOWN, RIGHT et LEFT) de la caméra.
Syntaxe
HYP_Camera.SetKeyboardSpeed( camera_name, speed );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • speed - [REAL] - vitesse de déplacement en unités par seconde - valeur par défaut: 100.0.

GetKeyboardSpeed

GetKeyboardSpeed permet récupérer la valeur du facteur de vitesse des touches de déplacement (AWSD ou UP, DOWN, RIGHT et LEFT) de la caméra.
Syntaxe
speed = HYP_Camera.GetKeyboardSpeed( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • speed - [REAL] - vitesse de déplacement en unités par seconde - valeur par défaut: 100.0.

PositionMoveAlongDirection

PositionMoveAlongDirection permet de translater la camera le long du vecteur direction.
Syntaxe
HYP_Camera.PositionMoveAlongDirection( camera_name, speed_x, speed_y, speed_z );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • speed_x - [REAL] - coefficient de translation en X.
  • speed_y - [REAL] - coefficient de translation en Y.
  • speed_z - [REAL] - coefficient de translation en Z.
Exemple
HYP_Camera.PositionMoveAlongDirection( "main_cam", 2.0, 0.0, 2.0 );

PositionStrafeHorizontal

PositionStrafeHorizontal permet de translater la camera le long de l'axe local des X.
Syntaxe
HYP_Camera.PositionStrafeHorizontal( camera_name, speed );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • speed - [REAL] - coefficient de translation.
Exemple
HYP_Camera.PositionStrafeHorizontal( "main_cam", 2.0 );
...

PositionStrafeVertical

PositionStrafeVertical permet de translater la camera le long de l'axe local des Y.
Syntaxe
HYP_Camera.PositionStrafeVertical( camera_name, speed );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • speed - [REAL] - coefficient de translation.
Exemple
HYP_Camera.PositionStrafeVertical( "main_cam", 4.0 );
...

GetLookAtDirection

GetLookAtDirection permet de récupérer le vecteur direction de la caméra. Ce vecteur est vecteur unitaire c'est à dire de norme 1.
Syntaxe
x, y, z = HYP_Camera.GetLookAtDirection( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • x - [REAL] - composante en X du vecteur direction.
  • y - [REAL] - composante en Y du vecteur direction.
  • z - [REAL] - composante en Z du vecteur direction.
Exemple
dir_x, dir_y, dir_z = HYP_Camera.GetLookAtDirection( "main_cam" );
...

SetLookAt

SetLookAt permet de fixer la position du point de visée.
Syntaxe
HYP_Camera.SetLookAt( camera_name, x, y, z, w );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • x - [REAL] - position en X du point de visée.
  • y - [REAL] - position en Y du point de visée.
  • z - [REAL] - position en Z du point de visée.
  • w - [REAL] - permet de spécifier si le triplet {x, y, z} exprime une position dans l'espace (w=1.0) ou un vecteur direction (w=0.0).
Exemple
-- La camera fixe le point {10.0, -30.0, -200.0}
HYP_Camera.SetLookAt( "main_cam", 10.0, -30.0, -200.0, 1.0 );
...

SetPitch

SetPitch permet d'orienter la caméra autour de son axe des X.
Syntaxe
HYP_Camera.SetPitch( camera_name, angle );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe des X de son repère local.
Exemple
HYP_Camera.SetPitch( "main_cam", -30.0 );
...

SetYaw

SetYaw permet d'orienter la caméra autour de son axe des Y.
Syntaxe
HYP_Camera.SetYaw( camera_name, angle );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe des Y de son repère local.
Exemple
HYP_Camera.SetYaw( "main_cam", 10.0 );
...

SetRoll

SetRoll permet d'orienter la caméra autour de son axe des Z.
Syntaxe
HYP_Camera.SetRoll( camera_name, angle );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe des Z de son repère local.
Exemple
HYP_Camera.SetRoll( "main_cam", 5.0 );
...

SetOrientation

SetOrientation permet de changer l'orientation de la caméra en spécifiant un quaternion (angle et axe de rotation).
Syntaxe
HYP_Camera.SetOrientation( camera_name, angle, x, y, z );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe définit par x, y et z.
  • x - [REAL] - composante en X de l'axe de rotation.
  • y - [REAL] - composante en Y de l'axe de rotation.
  • z - [REAL] - composante en Z de l'axe de rotation.
Exemple
HYP_Camera.SetOrientation( "main_cam", -30.0, 0.0, 1.0, 0.0 );
...

SetViewParams

SetViewParams permet de changer les paramètres de base de la caméra: la position et son point de visée.
Syntaxe
HYP_Camera.SetViewParams( camera_name, pos_x, pos_y, pos_z, lookatpos_x, lookatpos_y, lookatpos_z, up_x, up_y, up_z );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • pos_x - [REAL] - position en X.
  • pos_y - [REAL] - position en Y.
  • pos_z - [REAL] - position en Z.
  • lookatpos_x - [REAL] - position en X du point de visée.
  • lookatpos_y - [REAL] - position en Y du point de visée.
  • lookatpos_z - [REAL] - position en Z du point de visée.
  • up_x - [REAL] - composante X du vecteur orientation.
  • up_y - [REAL] - composante Y du vecteur orientation.
  • up_z - [REAL] - composante Z du vecteur orientation.
Exemple
HYP_Camera.SetViewParams( "main_cam", -30.0, 100.0, 400.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
...

SetFarPlane

SetFarPlane permet de changer la distance du plan de clipping lointain de la camera. Cette distance est relative à la position de la caméra.
Syntaxe
HYP_Camera.SetFarPlane( camera_name, far );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • far - [REAL] - distance du plan de clipping lointain.
Exemple
HYP_Camera.SetFarPlane( "main_cam", 1000.0 );
...

SetNearPlane

SetNearPlane permet de changer la distance du plan de clipping proche de la camera. Cette distance est relative à la position de la caméra.
Syntaxe
HYP_Camera.SetNearPlane( camera_name, near );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • near - [REAL] - distance du plan de clipping lointain.
Exemple
HYP_Camera.SetNearPlane( "main_cam", 1.0 );
HYP_Camera.SetFarPlane( "main_cam", 1000.0 );

GetFarPlane

GetFarPlane permet de récupérer la distance du plan de clipping lointain de la camera. Cette distance est relative à la position de la caméra.
Syntaxe
far = HYP_Camera.GetFarPlane( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • far - [REAL] - distance du plan de clipping lointain.
Exemple
far = HYP_Camera.GetFarPlane( "main_cam" );
...

GetNearPlane

GetNearPlane permet de récupérer la distance du plan de clipping proche de la camera. Cette distance est relative à la position de la caméra.
Syntaxe
near = HYP_Camera.GetNearPlane( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • near - [REAL] - distance du plan de clipping lointain.

Enable

Enable permet d'activer la caméra passée en paramètre.
Syntaxe
HYP_Camera.Enable( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.

Disable

Disable permet de désactiver la caméra passée en paramètre.
Syntaxe
HYP_Camera.Disable( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.

SetFOV

SetFOV permet de changer la valeur de l'angle de vision (le FOV) de la caméra passée en paramètre.
Syntaxe
HYP_Camera.SetFOV( name, fov );
  • name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • fov - [REAL] - valeur du Field Of View ou angle d'ouverture de la caméra en degrés.
Exemple
HYP_Camera.SetFOV( "main_cam", 130.0 );
...

GetFOV

GetFOV permet de récupérer la valeur de l'angle de vision (le FOV) de la caméra passée en paramètre.
Syntaxe
fov = HYP_Camera.GetFOV( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • fov - [REAL] - valeur du Field Of View ou angle d'ouverture de la caméra en degrés.

SetPosition

SetPosition permet de changer la position de la caméra passée en paramètre.
Syntaxe
HYP_Camera.SetPosition( camera_name, x, y, z );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • x - [REAL] - position en X.
  • y - [REAL] - position en Y.
  • z - [REAL] - position en Z.
Exemple
HYP_Camera.SetPosition( "main_cam", 50.0, -60.0, 200.0 );
...

GetPosition

GetPosition permet de récupérer la position de la caméra passée en paramètre.
Syntaxe
x, y, z = HYP_Camera.GetPosition( camera_name );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • x - [REAL] - position en X.
  • y - [REAL] - position en Y.
  • z - [REAL] - position en Z.
Exemple
pos_x, pos_y, pos_z = GetPosition( "main_cam" );
...

MakeScreenshot

MakeScreenshot permet de faire une capture d'écran de la frame courante. Cette capture d'écran est sauvegardé dans le réperoire spécifié le soit dans fichier de configuration d'Hyperion soit par SetDirForScreenshots(). Cette fonction ne prend aucun paramètre et ne retourne rien. Pour l'instant, elle crée uniquement des images au format jpeg.

Le nom du fichier image suit la syntaxe: dir/img_xxxxxx.jpg où dir est le répertoire de sauvegarde et xxxxxx est le numéro du compteur de frame.
Syntaxe
HYP_Camera.MakeScreenshot();
Exemple
HYP_Camera.SetScreenshotsDirectory( "screenshots" );
HYP_Camera.MakeScreenshot();

SetScreenshotsDirectory

SetScreenshotsDirectory permet de spécifier le répertoire de sauvegarde des screenshots.
Syntaxe
HYP_Camera.SetScreenshotsDirectory( dirname );
  • dirname - [STR255] - nom du répertoire où seront enregistrées les captures d'écran.

SetTarget

SetTarget permet de changer l'objet cible de la caméra.
Syntaxe
HYP_Camera.SetTarget( camera_name, target_name|target_id );
  • camera_name - [STR127] - nom de la caméra comme spécifié dans le script XML par l'attribut name.
  • target_name|target_id - [STR127 | INTEGER] - objet cible de la caméra.
Exemple
HYP_Camera.SetTarget( "Main_Camera", "myGizmo" );
...
Remarque
Pour ne plus mettre de cible à la caméra, il suffit de passer "NULL" pour le nom de l'objet cible:
HYP_Camera.SetTarget( "Main_Camera", "NULL" );

GetNumCameras

GetNumCameras retourne le nombre de caméras contenu dans la liste des caméras de la scène à un instant donné.
Syntaxe
n = HYP_Camera.GetNumCameras();
  • n - [INTEGER] - nombre de caméras dans la scène.

GetIdByIndex

GetIdByIndex permet de connaitre l'identifiant d'une caméra connaissant sa position dans la liste des caméras de la scène.
Syntaxe
id = HYP_Camera.GetIdByIndex( index );
  • index - [INTEGER] - index de la caméra dans la liste des caméras de la scène.
  • id - [INTEGER] - identificateur de la caméra.

GetNameByIndex

GetNameByIndex permet de connaitre le nom d'une caméra connaissant sa position dans la liste des caméras de la scène.
Syntaxe
name = HYP_Camera.GetNameByIndex( index );
  • index - [INTEGER] - index de la caméra dans la liste des caméras de la scène.
  • name - [STR64] - nom de la caméra.

GetId

GetId permet de connaitre l'identifiant d'une caméra connaissant son nom.
Syntaxe
id = HYP_Camera.GetId( name );
  • name - [STR64] - nom de la caméra.
  • id - [INTEGER] - identificateur de la caméra.

GetName

GetName permet de connaitre le nom d'une caméra connaissant son identifiant.
Syntaxe
name = HYP_Camera.GetName( id );
  • id - [INTEGER] - identificateur de la caméra.
  • name - [STR64] - nom de la caméra.

GetProjectionMatrix

GetProjectionMatrix retourne la matrice de projection courante de la caméra. Cette matrice utilise les conventions OpenGL:
| m0   m4    m8    m12 |
| m1   m5    m9    m13 |
| m2   m6    m10   m14 |
| m3   m7    m11   m15 |
Syntaxe
m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 = HYP_Camera.GetProjectionMatrix( name|id );
  • name - [STR127] - nom de la caméra.
  • id - [INTEGER] - identifiant de la caméra.

GetViewMatrix

GetViewMatrix retourne la matrice de vue courante de la caméra. Cette matrice utilise les conventions OpenGL:
| m0   m4    m8    m12 |
| m1   m5    m9    m13 |
| m2   m6    m10   m14 |
| m3   m7    m11   m15 |
Syntaxe
m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 = HYP_Camera.GetViewMatrix( name|id );
  • name - [STR127] - nom de la caméra.
  • id - [INTEGER] - identifiant de la caméra.

SetViewport

SetViewport change le viewport de la camera.
Syntaxe
HYP_Camera.SetViewport( name|id, offset_x, offset_y, width, height );
  • name - [STR127] - nom de la caméra.
  • id - [INTEGER] - identifiant de la caméra.
  • offset_x, offset_y - [INTEGER] - décalage en x et y du viewport. Valeurs par défaut: 0.
  • width, height - [INTEGER] - largeur et hauteur du viewport.

GetViewport

GetViewport retourne le viewport de la camera.
Syntaxe
offset_x, offset_y, width, height = HYP_Camera.GetViewport( name|id );
  • name - [STR127] - nom de la caméra.
  • id - [INTEGER] - identifiant de la caméra.
  • offset_x, offset_y - [INTEGER] - décalage en x et y du viewport. Valeurs par défaut: 0.
  • width, height - [INTEGER] - largeur et hauteur du viewport.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de gestion des Courbes

API Hyperion/LUA: Librairie de gestion des Courbes

HYP_Curve est la librairie de la host API LUA responsable de la gestion des courbes. Ces fonctions permettent d'initialiser et de modifier les propriétés d'un objet curve (position des points, couleur).
HYP_Curve.GetNumPoints
HYP_Curve.GetValue
HYP_Curve.SetColor
HYP_Curve.SetValue

GetValue

GetValue permet de récupérer les coordonnées d'un point particulier de la courbe.
Syntaxe
x, y, z = HYP_Curve.GetValue( curve_name, index );
  • curve_name - [STR127] - nom de la courbe comme définit dans le script XML par l'attribut name.
  • index - [INTEGER] - index du point dont on veut connaître la valeur. L'index est compris entre 0 et HYP_Curve.GetNumPoints()-1.
  • x - [REAL] - valeur de la coordonnée X du point.
  • y - [REAL] - valeur de la coordonnée Y du point.
  • z - [REAL] - valeur de la coordonnée Z du point.

SetValue

SetValue permet de fixer la valeur des coordonnées d'un point particulier de la courbe.
Syntaxe
HYP_Curve.SetValue( curve_name, index, x, y, z );
  • curve_name - [STR127] - nom de la courbe comme définit dans le script XML par l'attribut name.
  • index - [INTEGER] - index du point dont on veut changer la valeur. L'index est compris entre 0 et HYP_Curve.GetNumPoints()-1.
  • x - [REAL] - valeur de la coordonnée X du point.
  • y - [REAL] - valeur de la coordonnée Y du point.
  • z - [REAL] - valeur de la coordonnée Z du point.

GetNumPoints

GetNumPoints permet de récupérer le nombre de points d'une courbe. Ce nombre a été initialisé dans le script XML principal au niveau du noeud curve.
Syntaxe
num_points = HYP_Curve.GetNumPoints( curve_name );
  • curve_name - [STR127] - nom de la courbe comme définit dans le script XML par l'attribut name.
  • num_points - [INTEGER] - nombre de points de la courbe.

SetColor

SetColor permet de changer la couleur de rendu de la courbe. Par défaut, la valeur de la couleur de rendu est verte (0.0, 1.0, 0.0).
Syntaxe
HYP_Curve.SetColor( curve_name, r, b, b );
  • curve_name - [STR127] - nom de la courbe comme définit dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - valeur de la composante rouge de la couleur.
  • g - [CLAMPED_REAL] - valeur de la composante verte de la couleur.
  • b - [CLAMPED_REAL] - valeur de la composante bleue de la couleur.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de Debug

API Hyperion/LUA: Librairie de Debug

La librairie HYP_Debug gère les fonctions de debug. Ces fonctions de deboguage permettent d'écrire des infos de deboguage (aussi appelées traces) dans le fichier de log d'Hyperion. A chaque lancement d'Hyperion, un fichier de log est créé à la racine d'Hyperion, et porte le nom de hyperion_0001.log:
<->[NORMAL]#Mon Oct 18 09:55:49 2004#oZone3D Engine is started up with OpenGL Rendering Core.#
<->[NORMAL]#Mon Oct 18 09:55:49 2004#oZone3DEngine::startup(): oZone3D Engine Version 2.40 started up ok.#
<->[NORMAL]#Mon Oct 18 09:55:49 2004#Hyperion 0.9.0 started up ok.#
<->[NORMAL]#Mon Oct 18 09:57:28 2004#oZone3DEngine::shutdown(): oZone3D Engine shutted down ok.#
Dans ce fichier sont consignées toutes les erreurs, tous les warnings ou comportements étranges. Le développeur Hyperion peut aussi s'en servir pour y inscrire des traces de debug de ses scripts LUA.
HYP_Debug.Trace
Une autre façon de suivre le deboguage est d'ouvir la fenêtre Output Debug, depuis le menu "Tools". Le résultat de chaque appel à la fonction HYP_Trace() est envoyé vers cette fenêtre. C'est un moyen plus pratique pour les sessions de debug LUA:

Trace

Trace permet d'écrire une chaîne de caractères dans le fichier de log d'Hyperion ou dans la fenêtre de debug.
Syntaxe
HYP_Debug.Trace( string );
  • string - [STR2047] - chaîne de caractères.
Exemple
-- test de HYP_Trace.
HYP_Debug.Trace( "ceci est une chaine ecrite avec LUA!" );

local debug_str = "Voici une autre chaine. Elapsed time=" .. HYP_GetElapsedTime();
HYP_Debug.Trace( local debug_str );

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie d'export

API Hyperion/LUA: Librairie d'export

Ces fonctions permettent d'exporter la scène sous forme de script pour un moteur de rendu externe (POVRay, YafRay).
HYP_Export.HYP_ExportSceneForRenderer

ExportSceneForRenderer

ExportSceneForRenderer permet d'exporter la frame courante du point de vue de la caméra sous la forme d'un script à destination de moteurs de rendu externes comme POVRay ou encore YafRay. Le type de script généré est dépendant des plugins d'export chargé au lancement d'Hyperion. Par défaut les plugins d'export pour POVRay et YafRay sont disponibles (o3_plugin_raytracer_POVRAY.o3p et o3_plugin_raytracer_YAFRAY.o3p)

Ces plugins d'export vers les raytracers sont encore en version experimentale. Certaines fonctionnalités ne sont pas encore prises en compte: les transparences, les réflexions ou les réfractions pour ne citer que les plus importantes.
Syntaxe
HYP_Export.ExportSceneForRenderer( [plugin_name] );
  • plugin_name - [STR127] - nom du plugin d'export. Ce nom est optionnel. Si le nom n'est pas précisé, le premier plugin chargé sera utilisé. Les noms des plugins sont les suivants:
    • >"o3PluginRaytracerPOVRAY": plugin POVRay
    • >"o3PluginRaytracerYAFRAY": plugin YafRay

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Fonctions générales

API Hyperion/LUA: fonctions générales

Ces fonctions ne sont pas propres à la 3D et offrent des services variés: temps écoulé, affichage de boîte de dialogue, ouverture de page html, etc.
HYP_DrawText
HYP_GetElapsedTime
HYP_GetElapsedTimeSeconds
HYP_GetElapsedTimeMilliSeconds
HYP_GetElapsedTimeMicroSeconds
HYP_GetTimeStep
HYP_GetBaseDir
HYP_GetHyperionDir
HYP_MsgBox
HYP_OpenHTML
HYP_StopApp
HYP_Wait
HYP_GetGCModelString
HYP_GetGCVendorString
HYP_IsATI
HYP_IsNVIDIA
HYP_Project3DTo2D
HYP_Project2DTo3D

HYP_DrawText

HYP_DrawText permet d'afficher du texte depuis un script LUA. Le système de coordonnées pour la position du début du texte est celui de l'écran: le point (0, 0) représente le coin supérieur gauche de la fenêtre 3D.
Syntaxe
HYP_DrawText( x, y, r, g, b, text );
  • x - [INTEGER] - position en X du début du texte.
  • y - [INTEGER] - position en Y du début du texte.
  • r - [CLAMPED_REAL] - composante rouge de la couleur du texte.
  • g - [CLAMPED_REAL] - composante verte de la couleur du texte.
  • b - [CLAMPED_REAL] - composante bleue de la couleur du texte.
  • text - [STR255] - texte à afficher.
Exemple
-- test de HYP_GetElapsedTime.
str = "Time: " .. HYP_GetElapsedTime() .. " ms";
HYP_DrawText( 10, 100, 1.0, 1.0, 1.0, str );

HYP_GetElapsedTime

HYP_GetElapsedTime permet de récupérer le temps écoulé en millisecondes depuis le début du script XML Hyperion.
Syntaxe
elapsed_time_milli_sec = HYP_GetElapsedTime();

HYP_GetElapsedTimeSeconds

HYP_GetElapsedTimeSeconds permet de récupérer le temps écoulé en secondes depuis le début du script XML Hyperion.
Syntax
elapsed_time_sec = HYP_GetElapsedTimeSeconds();

HYP_GetElapsedTimeMilliSeconds

HYP_GetElapsedTimeMilliSeconds permet de récupérer le temps écoulé en millisecondes depuis le début du script XML Hyperion.
Syntax
elapsed_time_milli_sec = HYP_GetElapsedTimeMilliSeconds();

HYP_GetElapsedTimeMicroSeconds

HYP_GetElapsedTimeMicroSeconds permet de récupérer le temps écoulé en microsecondes depuis le début du script XML Hyperion.
Syntax
elapsed_time_micro_sec = HYP_GetElapsedTimeMicroSeconds();

HYP_GetTimeStep

HYP_GetTimeStep permet de récupérer le temps écoulé en secondes entre 2 frames consécutives. Pratique pour obtenir un pas temporel pour les simulations de physique.
Syntax
time_step = HYP_GetTimeStep();

HYP_Wait

HYP_Wait permet de faire une pose dont la durée est exprimée en millisecondes.
Syntaxe
HYP_Wait( delay );
  • delay - [INTEGER] - delai en milli-secondes
Exemple
-- test de HYP_Wait.
-- Pause de 1 seconde:
HYP_Wait( 1000 );
...

HYP_MsgBox

HYP_MsgBox permet d'afficher une boîte de dialogue avec un message. Cette fonction admet deux formes:
  • la première affiche la boîte avec un titre et un texte
  • la seconde affiche seulement le texte avec un titre par défaut qui est "Hyperion Info".
Syntaxe
HYP_MsgBox( title, text );
HYP_MsgBox( text );
  • title - [STR255] - titre de la boîte de dialogue.
  • text - [STR2047] - texte de la boîte de dialogue.
Exemple
-- test de HYP_MsgBox.
text = "Picked Object Name = " .. HYP_GetScenePickedObjectName();
HYP_MsgBox( "Scene Picking", text );
...

HYP_OpenHTML

HYP_OpenHTML permet d'ouvrir une page HTML locale ou sur internet. Cette fonction possède deux formes:
  • soit il y a un argument: c'est directement l'URL (adresse internet) a ouvrir en utilisant le navigateur par défaut.
  • soit il y a deux arguments: le premier indique l'emplacement du navigateur, et le second celui de l'URL.
Actuellement dans la forme à un seul argument, seuls les navigateurs IExplorer et FireFox sont supportés.
Syntaxe
HYP_OpenHTML( url );
HYP_OpenHTML( browser, url );
  • url - [STR255] - URL
  • browser - [STR255] - emplacement du navigateur.
Exemple
-- test de HYP_OpenHTML.
HYP_OpenHTML( "http://www.google.fr" );

-- test de HYP_OpenHTML.
HYP_OpenHTML( "C:\\Program Files\\mozilla firefox\\firefox.exe", "http://www.mooter.com" );
HYP_OpenHTML( "C:\\Program Files\\Internet Explorer\\iexplore.exe", "http://www.mooter.com" );

...

HYP_StopApp

HYP_StopApp permet d'arrêter le script en cours et de quitter Hyperion.
Syntaxe
HYP_StopApp();
Exemple
-- test de HYP_StopApp.
HYP_StopApp();

HYP_GetBaseDir

HYP_GetBaseDir permet de récupérer le répertoire de base du script XML principal de la démo. Cette fonction est utile pour spécifier le chemin d'accès à un fichier dans les scripts LUA.
Syntaxe
base_dir = HYP_GetBaseDir();
  • base_dir - [STR255] - répertoire de base.
Exemple
file = io.open( HYP_GetBaseDir() .. "/data/squelette.can", "r");

HYP_GetHyperionDir

HYP_GetHyperionDir permet de récupérer le répertoire de base d'Hyperion. Cette fonction est utile pour spécifier le chemin d'accès au fichier hyperion_lua_host_api_defines.lua par exemple.
Syntaxe
base_dir = HYP_GetHyperionDir();
  • base_dir - [STR255] - base directory.
Exemple
dofile( HYP_GetHyperionDir() .. "/hyperion_lua_host_api_defines.lua" );

HYP_GetGCModelString

HYP_GetGCModelString permet de récupérer le nom du modèle de la carte graphique. Pour nVidia, la chaîne de caractères ressemblera à "GeForce 7800 GT/PCI/SSE2" et pour ATI, elle ressemblera à "RADEON X700 x86/MMX/3DNow!/SSE2".
Syntaxe
gc_model = HYP_GetGCModelString();
  • gc_model - [STR127] - modèle de la carte graphique.

HYP_GetGCVendorString

HYP_GetGCVendorString permet de récupérer le nom du fabricant du chipset de la carte graphique. Pour nVidia la chaîne de caractères ressemblera à "NVIDIA Corporation" et pour ATI elle ressemblera à "ATI Technologies Inc".
Syntaxe
vendor = HYP_GetGCVendorString();
  • vendor - [STR127] - nom du fabricant.

HYP_IsATI

HYP_IsATI permet de tester si le chipset graphique vient d'ATI.
Syntaxe
result = HYP_IsATI();
  • result - [INTEGER] - 1 si ATI sinon 0.

HYP_IsNVIDIA

HYP_IsNVIDIA permet de tester si le chipset graphique vient de nVidia.
Syntaxe
result = HYP_IsNVIDIA();
  • result - [INTEGER] - 1 si nVidia sinon 0.

HYP_Project3DTo2D

HYP_Project3DTo2D projette un point 3D en coodonnées du monde en un point 2D en coordonnées d'écran. Le repère de l'écran est comme suit:
+Y
|
|
|
|
+------------ +X
0,0
Syntaxe
screen_x, screen_y = HYP_Project3DTo2D( pos_x, pos_y, pos_z );
  • pos_x, pos_y, pos_z - [REAL] - position 3D en coodonnées du monde.
  • screen_x, screen_y - [INTEGER] - position 2D en coordonnées d'écran.

HYP_Project2DTo3D

HYP_Project2DTo3D projette un point 2D en coordonnées d'écran en un point 3D en coodonnées du monde. Le repère de l'écran est comme suit:
+Y
|
|
|
|
+------------ +X
0,0
Syntaxe
pos_x, pos_y, pos_z = HYP_Project2DTo3D( screen_x, screen_y );
  • pos_x, pos_y, pos_z - [REAL] - position 3D en coodonnées du monde.
  • screen_x, screen_y - [INTEGER] - position 2D en coordonnées d'écran.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des HUDs

API Hyperion/LUA: Librairie de manipulation des HUDs

La librairie HYP_Hud offre des fonctionnalités générales sur les HUDs de la scène.
HYP_Hud.DoFadeInOut
HYP_Hud.ProgressiveDisplay
HYP_Hud.ProgressiveUnDisplayWithStretch
HYP_Hud.GetVertexColor
HYP_Hud.GetVertexPosition
HYP_Hud.SetVertexColor
HYP_Hud.SetVertexPosition
HYP_Hud.SetSize
HYP_Hud.GetSize
HYP_Hud.PushVertices
HYP_Hud.PopVertices
HYP_Hud.SetVertexTexCoord
HYP_Hud.GetVertexTexCoord

DoFadeInOut

DoFadeInOut permet de créer un effet de fade-in / fade-out afin de faciliter les transitions dans une scène.
Syntaxe
HYP_Hud.DoFadeInOut( name, time );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • time - [INTEGER] - durée en millisecondes du fade-in et du fade-out.

SetVertexPosition

SetVertexPosition permet de changer la position d'un des 4 vertices du HUD.

Pour rappel, les 4 vertices d'un HUD sont répartis comme suit:
2 +----------------------+ 3
  |                      |
  |                      |
  |                      |
  |                      |
  |                      |
0 +----------------------+ 1
Syntaxe
HYP_Hud.SetVertexPosition( name, index, x, y, z );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • index - [REAL] - index du vertex. Valeur comprise entre 0 et 3.
  • x - [REAL] - coordonnée en X du vertex.
  • y - [REAL] - coordonnée en Y du vertex.
  • z - [REAL] - coordonnée en Z du vertex.

GetVertexPosition

GetVertexPosition permet de récupérer la position d'un des 4 vertices du HUD.
Syntaxe
x, y, z = HYP_Hud.GetVertexPosition( name, index );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • index - [REAL] - index du vertex. Valeur comprise entre 0 et 3.
  • x - [REAL] - coordonnée en X du vertex.
  • y - [REAL] - coordonnée en Y du vertex.
  • z - [REAL] - coordonnée en Z du vertex.

SetVertexColor

SetVertexColor permet de changer la couleur de chacun des 4 vertices composants le HUD.

Pour rappel, les 4 vertices d'un HUD sont répartis comme suit:
2 +----------------------+ 3
  |                      |
  |                      |
  |                      |
  |                      |
  |                      |
0 +----------------------+ 1
Syntaxe
HYP_Hud.SetVertexColor( name, vertex_index, r, g, b, a );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • index - [REAL] - index du vertex. Valeur comprise entre 0 et 3.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetVertexColor

GetVertexColor permet de récupérer la couleur de chacun des 4 vertices composants le HUD.
Syntaxe
r, g, b, a = HYP_Hud.GetVertexColor( name, vertex_index );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • index - [REAL] - index du vertex. Valeur comprise entre 0 et 3.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

ProgressiveDisplay

ProgressiveDisplay permet de faire apparaître progressivement un HUD dont le render_state a été préalablement mis à FALSE.
Syntaxe
HYP_Hud.ProgressiveDisplay( name, delay );
  • name - [STR127] - chaîne de caractères représentant le nom du hud spécifié dans le script XML par l'attribut name.
  • delay - [INTEGER] - delai d'apparition en millisecondes.

ProgressiveUnDisplayWithStretch

ProgressiveUnDisplayWithStretch permet de faire disparaître progressivement un HUD dont le render_state a été préalablement mis à TRUE.
Syntaxe
HYP_Hud.ProgressiveUnDisplayWithStretch( name|id, delay, stretch_mode );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • delay - [INTEGER] - delai de disparition en millisecondes.
  • stretch_mode - [INTEGER] - mode de disparition par étirement. Les valeurs suivantes sont acceptées:
    • 0: aucun étirement, disparition normale.
    • 1: étirement horizontal.
    • 2: étirement vertical.
Exemple
NO_STRETCH = 0;
HORIZONTAL_STRETCH = 1;
VERTICAL_STRETCH = 2;
HYP_Hud.ProgressiveDisplay( "hud_dream", 1000 );
HYP_Hud.ProgressiveUnDisplayWithStretch( "hud_hyperion", 1000, HORIZONTAL_STRETCH );
HYP_ParticleSystem.Enable( "particle_system_1" );

SetSize

SetSize permet de changer les dimensions d'un HUD.
Syntaxe
HYP_Hud.SetSize( name|id, w, h );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • w - [REAL] - largeur en X du HUD.
  • h - [REAL] - hauteur en Y du HUD.

GetSize

GetSize permet de récupérer les dimensions d'un HUD.
Syntaxe
w, h = HYP_Hud.GetSize( name|id, w, h );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • w - [REAL] - largeur en X du HUD.
  • h - [REAL] - hauteur en Y du HUD.

PushVertices

PushVertices permet de sauvegarder les 4 vertices d'un HUD dans un registre interne. Un appel à permettra de les PopVertices plus tard.
Syntaxe
HYP_Hud.PushVertices( name|id, [vertex_attrib] );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • vertex_attrib - [INTEGER] - permet de spécifier quels attributs de vertex sont à pusher:
    • VERTEX_ATTRIB_POSITION = 1
    • VERTEX_ATTRIB_NORMAL = 2
    • VERTEX_ATTRIB_UVMAP = 4
    • VERTEX_ATTRIB_COLOR = 8
    • VERTEX_ATTRIB_ALL = 15 (valeur par défaut)

PopVertices

PopVertices permet de restaurer les 4 vertices d'un HUD sauvegardés par PushVertices.
Syntaxe
HYP_Hud.PopVertices( name|id, [vertex_attrib] );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • vertex_attrib - [INTEGER] - permet de spécifier quels attributs de vertex sont à poper:
    • VERTEX_ATTRIB_POSITION = 1
    • VERTEX_ATTRIB_NORMAL = 2
    • VERTEX_ATTRIB_UVMAP = 4
    • VERTEX_ATTRIB_COLOR = 8
    • VERTEX_ATTRIB_ALL = 15 (valeur par défaut)

SetVertexTexCoord

SetVertexTexCoord permet de changer les coordonnées de texture des vertices d'un HUD.
Syntaxe
HYP_Hud.SetVertexTexCoord( name|id, vertex, u, v, tu );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • vertex - [INTEGER] - index du vertex. Valeur comprise entre 0 et 3.
  • u - [REAL] - coordonnée u de texture.
  • v - [REAL] - coordonnée v de texture.
  • tu - [INTEGER] - unité de texture. Valeur comprise entre 0 et 7.

GetVertexTexCoord

GetVertexTexCoord permet de récupérer les coordonnées de texture des vertices d'un HUD.
Syntaxe
u, v = HYP_Hud.GetVertexTexCoord( name|id, vertex, tu );
  • id - [INTEGER] - identificateur du hud.
  • name - [STR64] - nom du hud.
  • vertex - [INTEGER] - index du vertex. Valeur comprise entre 0 et 3.
  • tu - [INTEGER] - unité de texture. Valeur comprise entre 0 et 7.
  • u - [REAL] - coordonnée u de texture.
  • v - [REAL] - coordonnée v de texture.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de gestion des entrées utilisateur

API Hyperion/LUA: Librairie de gestion des entrées utilisateur

La librairie HYP_Input permet de controller les entrées utilisateur par le clavier, la souris ou encore le joystick.
HYP_Input.DisableDefaultKeyboardFunctionalities
HYP_Input.EnableDefaultKeyboardFunctionalities
HYP_Input.GetJoystickButtonState
HYP_Input.GetJoystickPosition
HYP_Input.GetKeyboardLayout
HYP_Input.GetMouseButtonState
HYP_Input.GetMousePos
HYP_Input.GetMouseWheelDelta
HYP_Input.HideMouseCursor
HYP_Input.IsKeyboardKeyPressed
HYP_Input.IsJoystickEnabled
HYP_Input.ShowMouseCursor
HYP_Input.SetDefaultInputManagementState
HYP_Input.GetDefaultInputManagementState

GetJoystickButtonState

GetJoystickButtonState permet de savoir si un bouton du joystick a été pressé. Actuellement Hyperion ne supporte que les 4 premiers boutons des joysticks.
Syntaxe
state = HYP_Input.GetJoystickButtonState( joy_id, button );
  • joy_id - [INTEGER] - spécifie le joystick à tester: le 1 ou le 2.
  • button - [INTEGER] - spécifie le bouton à tester: 0, 1, 2 ou 3.
  • state - [INTEGER] - state vaut 1 si le bouton a été pressé sinon 0.

GetJoystickPosition

GetJoystickPosition permet de récupérer la position sur l'axe des X et Y du joystick.
Syntaxe
x, y = HYP_Input.GetJoystickPosition( joy_id );
  • joy_id - [INTEGER] - spécifie le joystick à tester: le 1 ou le 2.
  • x - [INTEGER] - position du joystick en X.
  • y - [INTEGER] - position du joystick en Y.

IsJoystickEnabled

IsJoystickEnabled permet de vérifier qu'un joystick particulier a été correctement initialisé. Actuellement Hyperion ne supporte que 2 joysticks.
Syntaxe
state = HYP_Input.IsJoystickEnabled( joy_id );
  • joy_id - [INTEGER] - spécifie le joystick à tester: le 1 ou le 2.
  • state - [INTEGER] - state vaut 1 si le joystick a été correctement initialisé sinon 0.

GetMouseButtonState

GetMouseButtonState permet de récupérer la position du curseur de la souris en coordonnées d'écran (la coordonnée (0, 0) se situe dans le coin supérieur gauche de l'écran).
Syntaxe
state = HYP_Input.GetMouseButtonState( button );
  • button - [INTEGER] - spécifie le bouton de la souris à tester: 1 (gauche) ou 2 (droit).
  • state - [INTEGER] - state vaut 1 si le bouton est pressé ou 0 dans le cas contraire.
Exemple
is_pressed = HYP_Input.GetMouseButtonState( 1 );
if(is_pressed==1) then
    -- Fire...
end

GetMousePos

GetMousePos permet de récupérer la position du curseur de la souris en coordonnées d'écran (la coordonnée (0, 0) se situe dans le coin supérieur gauche de l'écran).
Syntaxe
x, y = HYP_Input.GetMousePos();

GetMouseWheelDelta

GetMouseWheelDelta permet de récupérer le delta de la molette. Ce delta peut être positif ou négatif.
Syntaxe
delta = HYP_Input.GetMouseWheelDelta();

HideMouseCursor

HideMouseCursor permet de cacher le curseur de la souris.
Syntaxe
HYP_Input.HideMouseCursor();

ShowMouseCursor

ShowMouseCursor permet de montrer le curseur de la souris.
Syntaxe
HYP_Input.ShowMouseCursor();

EnableDefaultKeyboardFunctionalities

EnableDefaultKeyboardFunctionalities permet d'activer les fonctions standard du clavier définies dans Hyperion.

Fonctionnalités indépendentes du clavier:
  • [UP]: camera forward
  • [DOWN]: camera backward
  • [LEFT]: camera left strafe
  • [RIGHT]: camera right strafe

Fonctionnalités dépendentes du clavier (suisse, français ou anglais):
  • Clavier avec un layout suisse
    • [W]: camera forward
    • [S]: camera backward
    • [A]: camera left strafe
    • [D]: camera right strafe
  • Clavier avec un layout français ou anglais (USA)
    • [Z]: camera forward
    • [S]: camera backward
    • [Q]: camera left strafe
    • [D]: camera right strafe
Syntaxe
HYP_Input.EnableDefaultKeyboardFunctionalities();

DisableDefaultKeyboardFunctionalities

DisableDefaultKeyboardFunctionalities permet de désactiver les fonctions standard du clavier définies dans Hyperion pour les remplacer par celles de l'utilisateur.
Syntaxe
HYP_Input.DisableDefaultKeyboardFunctionalities();

IsKeyboardKeyPressed

IsKeyboardKeyPressed permet de connaître l'état d'une touche lors de la frame courante.
Syntaxe
is_pressed = HYP_Input.IsKeyboardKeyPressed( key_id );
  • key_id - [INTEGER] - spécifie la touche par un identificateur entier. La liste des identificateurs est donnée ci-dessous. Vous pouvez aussi employer l'utilitaire Hyperion_Keycodes.exe qui vous donnera directement le code numérique d'une touche particulière.
  • is_pressed - [INTEGER] - is_pressed vaut 1 si la touche en question a été pressée sinon 0.
Exemple
is_pressed = HYP_Input.IsKeyboardKeyPressed(  );
if(is_pressed==1) then
    -- Do something...
end

Liste des principaux codes clavier:
HYP_KEY_LBUTTON = 1;
HYP_KEY_RBUTTON = 2;
HYP_KEY_MBUTTON = 4;

HYP_KEY_TAB = 9;
HYP_KEY_ENTER = 13;
HYP_KEY_SHIFT = 16;
HYP_KEY_CTRL = 17;
HYP_KEY_SPACE = 32;
HYP_KEY_PAGE_UP = 33;
HYP_KEY_PAGE_DOWN = 34;
HYP_KEY_END = 35;
HYP_KEY_HOME = 36;
HYP_KEY_LEFT = 37;
HYP_KEY_UP = 38;
HYP_KEY_RIGHT = 39;
HYP_KEY_DOWN = 40;
HYP_KEY_INSERT = 45;
HYP_KEY_DELETE = 46;

HYP_KEY_A = 65;
HYP_KEY_B = 66;
HYP_KEY_C = 67;
HYP_KEY_D = 68;
HYP_KEY_E = 69;
HYP_KEY_F = 70;
HYP_KEY_G = 71;
HYP_KEY_H = 72;
HYP_KEY_I = 73;
HYP_KEY_J = 74;
HYP_KEY_K = 75;
HYP_KEY_L = 76;
HYP_KEY_M = 77;
HYP_KEY_N = 78;
HYP_KEY_O = 79;
HYP_KEY_P = 80;
HYP_KEY_Q = 81;
HYP_KEY_R = 82;
HYP_KEY_S = 83;
HYP_KEY_T = 84;
HYP_KEY_U = 85;
HYP_KEY_V = 86;
HYP_KEY_W = 87;
HYP_KEY_X = 88;
HYP_KEY_Y = 89;
HYP_KEY_Z = 90;

HYP_KEY_NUMPAD_0 = 96;
HYP_KEY_NUMPAD_1 = 97;
HYP_KEY_NUMPAD_2 = 98;
HYP_KEY_NUMPAD_3 = 99;
HYP_KEY_NUMPAD_4 = 100;
HYP_KEY_NUMPAD_5 = 101;
HYP_KEY_NUMPAD_6 = 102;
HYP_KEY_NUMPAD_7 = 103;
HYP_KEY_NUMPAD_8 = 104;
HYP_KEY_NUMPAD_9 = 105;

HYP_KEY_MULT = 106;
HYP_KEY_ADD = 107;
HYP_KEY_SUBTRACT = 109;
HYP_KEY_DECIMAL = 110;
HYP_KEY_DIVIDE = 111;

HYP_KEY_F1 = 112;
HYP_KEY_F2 = 113;
HYP_KEY_F3 = 114;
HYP_KEY_F4 = 115;
HYP_KEY_F5 = 116;
HYP_KEY_F6 = 117;
HYP_KEY_F7 = 118;
HYP_KEY_F8 = 119;
HYP_KEY_F9 = 120;
HYP_KEY_F10 = 121;
HYP_KEY_F11 = 122;
HYP_KEY_F12 = 123;

GetKeyboardLayout

GetKeyboardLayout retourne le type de layout utilisé pour le mapping des touches du clavier.
Syntaxe
layout = HYP_Input.GetKeyboardLayout();
  • layout - [INTEGER] - type du mapping:
    • 1 : clavier suisse
    • 2 : clavier américain
    • 3 : clavier français

SetDefaultInputManagementState

SetDefaultInputManagementState permet d'activer ou de désactiver la gestion par défaut des entrées utilisateurs (clavier, souris). Il est conseillé de désactiver totalement la gestion par défaut d'Hyperion dans les cas ou vous souhaitez avoir un contrôle total sur le positionnement et l'orientation de la caméra.
Syntaxe
HYP_Input.SetDefaultInputManagementState( state );
  • state - [INTEGER] - TRUE=1 pour activer ou FALSE=0 pour désactiver.

GetDefaultInputManagementState

GetDefaultInputManagementState permet de connaitre l'état de la gestion par défaut des entrées utilisateurs (clavier, souris).
Syntaxe
state = HYP_Input.GetDefaultInputManagementState();
  • state - [INTEGER] - TRUE=1 pour état activé ou FALSE=0 pour état désactivé.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des lumières

API Hyperion/LUA: Librairie de manipulation des lumières

La librairie HYP_Lighting effectue des opérations générales sur les lumières de la scène.
HYP_Lighting.GetAmbient
HYP_Lighting.GetDiffuse
HYP_Lighting.GetSpecular
HYP_Lighting.SetAmbient
HYP_Lighting.SetDiffuse
HYP_Lighting.SetSpecular
HYP_Lighting.SetConstantAttFactor
HYP_Lighting.SetLinearAttFactor
HYP_Lighting.SetQuadraticAttFactor
HYP_Lighting.Create
HYP_Lighting.Destroy
HYP_Lighting.SetType
HYP_Lighting.SetSpotCutOff
HYP_Lighting.GetSpotCutOff
HYP_Lighting.GetNumLights
HYP_Lighting.GetIdByIndex
HYP_Lighting.GetNameByIndex
HYP_Lighting.GetId
HYP_Lighting.GetName

SetAmbient

SetAmbient permet de changer la valeur de la composante ambiante de la lumière passée en paramètre.
Syntaxe
HYP_Lighting.SetAmbient( name, r, g, b );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetDiffuse

SetDiffuse permet de changer la valeur de la composante diffuse de la lumière passée en paramètre.
Syntaxe
HYP_Lighting.SetDiffuse( name, r, g, b );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetSpecular

SetSpecular permet de changer la valeur de la composante spéculaire de la lumière passée en paramètre.
Syntaxe
HYP_Lighting.SetSpecular( name, r, g, b );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetAmbient

GetAmbient permet de récupérer la valeur de la composante ambiante de la lumière passée en paramètre.
Syntaxe
 r, g, b = HYP_Lighting.GetAmbient( name );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.

GetDiffuse

GetDiffuse permet de récupérer la valeur de la composante diffuse de la lumière passée en paramètre.
Syntaxe
 r, g, b = HYP_Lighting.GetDiffuse( name );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.

GetSpecular

GetSpecular permet de récupérer la valeur de la composante spéculaire de la lumière passée en paramètre.
Syntaxe
 r, g, b = HYP_Lighting.GetSpecular( name );
  • name - [STR127] - nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.

SetConstantAttFactor

SetConstantAttFactor permet de changer la valeur du facteur constant d'atténuation de la lumière avec la distance au vertex en cours de traitement.
Syntaxe
HYP_Lighting.SetConstantAttFactor( name, f );
  • name - [STR127] - le nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • f - [REAL] - facteur d'atténuation constant - Valeur par défaut: 1.0.

SetLinearAttFactor

SetLinearAttFactor permet de changer la valeur du facteur linéaire d'atténuation de la lumière avec la distance au vertex en cours de traitement.
Syntaxe
HYP_Lighting.SetLinearAttFactor( name, f );
  • name - [STR127] - le nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • f - [REAL] - facteur d'atténuation linéaire - Valeur par défaut: 0.0.

SetQuadraticAttFactor

SetQuadraticAttFactor permet de changer la valeur du facteur quadratique d'atténuation de la lumière avec la distance au vertex en cours de traitement.
Syntaxe
HYP_Lighting.SetQuadraticAttFactor( name, f );
  • name - [STR127] - le nom de la lumière comme spécifié dans le script XML par l'attribut name.
  • f - [REAL] - facteur d'atténuation quadratique - Valeur par défaut: 0.0.

Create

Create permet de créer une lumière dynamique.
Syntaxe
id = HYP_Lighting.Create( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la lumière. Optionnel.
  • id - [INTEGER] - identifiant numérique de la lumière créée.

Destroy

Destroy permet de détruire une lumière dynamique.
Syntaxe
HYP_Lighting.Destroy( name|id );
  • name - [STR127] - chaîne de caractères représentant le nom de la lumière.
  • id - [INTEGER] - identifiant numérique de la lumière.

SetType

SetType permet de fixer le type d'une lumière dynamique.
Syntaxe
HYP_Lighting.SetType( name|id, type );
  • name - [STR127] - chaîne de caractères représentant le nom de la lumière. Optionnel.
  • id - [INTEGER] - identifiant numérique de la lumière créée.
  • type - [INTEGER] - type de la lumière: POINT=1, SPOT=2 ou DIRECTIONAL=3.

SetSpotCutOff

SetSpotCutOff permet de fixer l'angle d'ouverture du cône de lumière dans le cas d'une lumière de type SPOT.
Syntaxe
HYP_Lighting.SetSpotCutOff( name|id, angle );
  • name - [STR127] - chaîne de caractères représentant le nom de la lumière. Optionnel.
  • id - [INTEGER] - identifiant numérique de la lumière créée.
  • angle - [REAL] - angle en degrés de l'ouverture du cône de lumiére.

GetSpotCutOff

GetSpotCutOff permet de récupérer l'angle d'ouverture du cône de lumière dans le cas d'une lumière de type SPOT.
Syntaxe
angle = HYP_Lighting.GetSpotCutOff( name|id );
  • name - [STR127] - chaîne de caractères représentant le nom de la lumière. Optionnel.
  • id - [INTEGER] - identifiant numérique de la lumière créée.
  • angle - [REAL] - angle en degrés de l'ouverture du cône de lumiére.

GetNumLights

GetNumLights retourne le nombre de lumières dynamiques contenu dans la liste des lumières de la scène à un instant donné.
Syntaxe
n = HYP_Lighting.GetNumLights();
  • n - [INTEGER] - nombre de lumières dans la scène.

GetIdByIndex

GetIdByIndex permet de connaitre l'identifiant d'une lumière connaissant sa position dans la liste des lumières de la scène.
Syntaxe
id = HYP_Lighting.GetIdByIndex( index );
  • index - [INTEGER] - index de la lumière dans la liste des lumières de la scène.
  • id - [INTEGER] - identificateur de la lumière.

GetNameByIndex

GetNameByIndex permet de connaitre le nom d'une lumière connaissant sa position dans la liste des lumières de la scène.
Syntaxe
name = HYP_Lighting.GetNameByIndex( index );
  • index - [INTEGER] - index de la lumière dans la liste des lumières de la scène.
  • name - [STR64] - nom de la lumière.

GetId

GetId permet de connaitre l'identifiant d'une lumière connaissant son nom.
Syntaxe
id = HYP_Lighting.GetId( name );
  • name - [STR64] - nom de la lumière.
  • id - [INTEGER] - identificateur de la lumière.

GetName

GetName permet de connaitre le nom d'une lumière connaissant son identifiant.
Syntaxe
name = HYP_Lighting.GetName( id );
  • id - [INTEGER] - identificateur de la lumière.
  • name - [STR64] - nom de la lumière.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des matériaux

API Hyperion/LUA: Librairie de manipulation des matériaux

La librairie HYP_Material effectue des opérations générales sur les matériaux de la scène.
HYP_Material.Create
HYP_Material.Destroy
HYP_Material.SetAmbient
HYP_Material.SetDiffuse
HYP_Material.SetDynamicFriction
HYP_Material.SetResilience
HYP_Material.SetSelfIllumination
HYP_Material.SetSpecular
HYP_Material.SetSpecularExp
HYP_Material.SetStaticFriction
HYP_Material.GetNumMaterials
HYP_Material.GetIdByIndex
HYP_Material.GetNameByIndex
HYP_Material.GetId
HYP_Material.GetName
HYP_Material.AttachTexture
HYP_Material.DetachTexture
HYP_Material.SetShaderProgram
HYP_Material.SetShaderProgramForAmbientPass

Create

Create permet de créer un nouveau matériau.
Syntaxe
id = HYP_Material.Create( name );
  • name - [STR64] - nom à assigner au nouveau matériau.
  • id - [INTEGER] - identifiant numérique représentant le matériau.

Destroy

Destroy permet de détruire un matériau.
Syntaxe
id = HYP_Material.Destroy( name );
  • name - [STR64] - nom du matériau.
  • id - [INTEGER] - identifiant numérique représentant le matériau.

SetDiffuse

SetDiffuse permet de changer la valeur du coefficient de réflexion diffus du matériau passé en paramètre.
Syntaxe
HYP_Material.SetDiffuse( name | id, r, g, b, a );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetAmbient

SetAmbient permet de changer la valeur du coefficient de réflexion ambiant du matériau passé en paramètre.
Syntaxe
HYP_Material.SetAmbient( name | id, r, g, b, a );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetSpecular

SetSpecular permet de changer la valeur du coefficient de réflexion spéculaire du matériau passé en paramètre.
Syntaxe
HYP_Material.SetSpecular( name | id, r, g, b, a );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetSpecularExp

SetSpecularExp permet de changer la valeur du coefficient exponentiel de réflexion spéculaire du matériau passé en paramètre.
Syntaxe
HYP_Material.SetSpecularExp( name | id, exp );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • exp - [REAL] - coefficient exponentiel spéculaire.

SetSelfIllumination

SetSelfIllumination permet de changer la valeur du coefficient d'auto-illumination du matériau passé en paramètre.
Syntaxe
HYP_Material.SetSelfIllumination( name | id, r, g, b, a );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetResilience

SetResilience permet de changer le coefficient de rebond du matériau.
Syntaxe
HYP_Material.SetResilience( name | id, resilience );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • resilience - [REAL] - coefficient de rebond du matériau.
Remarque
Cette fonction ne prend effet que si le moteur physique (NovodeX Physics Engine) a été activé au niveau de la scène.

SetStaticFriction

SetStaticFriction permet de changer le coefficient de friction statique du matériau.
Syntaxe
HYP_Material.SetStaticFriction( name | id, friction );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • friction - [REAL] - coefficient de friction du matériau.
Remarque
Cette fonction ne prend effet que si le moteur physique (NovodeX Physics Engine) a été activé au niveau de la scène.

SetDynamicFriction

SetDynamicFriction permet de changer le coefficient de friction dynamique du matériau.
Syntaxe
HYP_Material.SetDynamicFriction( name | id, friction );
  • name - [STR64] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique représentant le matériau.
  • friction - [REAL] - coefficient de friction du matériau.
Remarque
Cette fonction ne prend effet que si le moteur physique (NovodeX Physics Engine) a été activé au niveau de la scène.

GetNumMaterials

GetNumMaterials retourne le nombre de materiaux contenu dans la liste des matrériaux la scène à un instant donné.
Syntaxe
n = HYP_Material.GetNumMaterials();
  • n - [INTEGER] - nombre de matériaux dans la scène.

GetIdByIndex

GetIdByIndex permet de connaitre l'identifiant d'un matériau connaissant sa position dans la liste des matériaux de la scène.
Syntaxe
id = HYP_Material.GetIdByIndex( index );
  • index - [INTEGER] - index du materiau dans la liste des materiaux de la scène.
  • id - [INTEGER] - identificateur du matériau.

GetNameByIndex

GetNameByIndex permet de connaitre le nom d'un matériau connaissant sa position dans la liste des matériaux de la scène.
Syntaxe
name = HYP_Material.GetNameByIndex( index );
  • index - [INTEGER] - index du materiau dans la liste des materiaux de la scène.
  • name - [STR64] - nom du matériau.

GetId

GetId permet de connaitre l'identifiant d'un matériau connaissant son nom.
Syntaxe
id = HYP_Material.GetId( name );
  • name - [STR64] - nom du matériau.
  • id - [INTEGER] - identificateur du matériau.

GetName

GetName permet de connaitre le nom d'un matériau connaissant son identifiant.
Syntaxe
name = HYP_Material.GetName( id );
  • id - [INTEGER] - identificateur du matériau.
  • name - [STR64] - nom du matériau.

AttachTexture

AttachTexture permet d'attacher une texture à un matériau.
Syntaxe
HYP_Material.AttachTexture( mat_name|mat_id, tex_name|tex_id, tu );
  • mat_name - [STR64] - nom du matériau.
  • mat_id - [INTEGER] - identificateur du matériau.
  • tex_name - [STR128] - nom de la texture.
  • tex_id - [INTEGER] - identificateur de la texture.
  • tu - [INTEGER] - unité de texture sur laquelle activer la texture. Valeur comprise entre 0 et 7.

DetachTexture

DetachTexture permet de détacher une texture d'un matériau.
Syntaxe
HYP_Material.DetachTexture( mat_name|mat_id, tex_name|tex_id, tu );
  • mat_name - [STR64] - nom du matériau.
  • mat_id - [INTEGER] - identificateur du matériau.
  • tex_name - [STR128] - nom de la texture.
  • tex_id - [INTEGER] - identificateur de la texture.
  • tu - [INTEGER] - unité de texture sur laquelle activer la texture. Valeur comprise entre 0 et 7.

SetShaderProgram

SetShaderProgram permet d'attacher un shader GLSL à un matériau.
Syntaxe
HYP_Material.SetShaderProgram( mat_name|mat_id, shader_name|shader_id );
  • mat_name - [STR64] - nom du matériau.
  • mat_id - [INTEGER] - identificateur du matériau.
  • shader_name - [STR128] - nom du shader.
  • shader_id - [INTEGER] - identificateur du shader.

SetShaderProgramForAmbientPass

SetShaderProgramForAmbientPass permet d'attacher un shader GLSL à un matériau. Ce shader sera utilisé pour le rendu de l'objet lors de la passe ambiante imposée par l'algorithme des ombres volumiques.
Syntaxe
HYP_Material.SetShaderProgramForAmbientPass( mat_name|mat_id, shader_name|shader_id );
  • mat_name - [STR64] - nom du matériau.
  • mat_id - [INTEGER] - identificateur du matériau.
  • shader_name - [STR128] - nom du shader.
  • shader_id - [INTEGER] - identificateur du shader.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des meshes

API Hyperion/LUA: Librairie de manipulation des meshes

La librairie HYP_Mesh effectue des opérations générales sur les meshes de la scène.
HYP_Mesh.CastRay
HYP_Mesh.CopyVerticesList
HYP_Mesh.CreateBox
HYP_Mesh.CreatePlane
HYP_Mesh.CreateSphere
HYP_Mesh.CreateTorus
HYP_Mesh.DoTweening
HYP_Mesh.FlipNormals
HYP_Mesh.GetElevation
HYP_Mesh.GetFaceIndexes
HYP_Mesh.GetFaceNormal
HYP_Mesh.GetNumFaces
HYP_Mesh.GetNumPlaneSegments
HYP_Mesh.GetNumVertices
HYP_Mesh.GetVertexAttrib
HYP_Mesh.GetVertexColor
HYP_Mesh.GetVertexNormal
HYP_Mesh.GetVertexPosition
HYP_Mesh.GetVertexUVCoords
HYP_Mesh.PopVerticesList
HYP_Mesh.PushVerticesList
HYP_Mesh.ScaleVertices
HYP_Mesh.SetTexCoordsOffset
HYP_Mesh.SetTexCoordsTiling
HYP_Mesh.SetPivotPosition
HYP_Mesh.SetPivotOrientation
HYP_Mesh.SetVertexAttrib
HYP_Mesh.SetVertexColor
HYP_Mesh.SetVerticesColor
HYP_Mesh.SetVertexNormal
HYP_Mesh.SetVertexPosition
HYP_Mesh.SetVertexUVCoords
HYP_Mesh.UpdateAllNormals
HYP_Mesh.UpdateFaceNormalField
HYP_Mesh.UpdateVertexNormalField
HYP_Mesh.VBQuad_AddQuad
HYP_Mesh.VBQuad_SetQuadVertexPosition
HYP_Mesh.VBQuad_GetQuadVertexPosition
HYP_Mesh.VBQuad_SetQuadVertexColor
HYP_Mesh.VBQuad_GetQuadVertexColor
HYP_Mesh.VBQuad_SortFacesInCameraSpace
HYP_Mesh.Destroy
HYP_Mesh.GetFaceCenterPosition

CopyVerticesList

CopyVerticesList permet de copier la liste complète des vertices d'un mesh source vers un mesh destination.
Syntaxe
HYP_Mesh.CopyVerticesList( src_mesh_name| src_mesh_id, dst_mesh_name| dst_mesh_id );
  • src_mesh_name - [STR127] - nom du mesh source comme spécifié dans le script XML par l'attribut name.
  • src_mesh_id - [INTEGER] - identifiant du mesh source.
  • dst_mesh_name - [STR127] - nom du mesh destination comme spécifié dans le script XML par l'attribut name.
  • dst_mesh_id - [INTEGER] - identifiant du mesh destination.

SetCloningMode

SetCloningMode permet de spécifier la façon dont un mesh est cloné.
Syntaxe
HYP_Mesh.SetCloningMode( mesh_name| mesh_id, options );
  • mesh_name - [STR127] - nom du mesh à cloner comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh à cloner.
  • options - [INTEGER] - type de clonage:
    • le nouveau clone contient sa propre version des vertices: MESH_CLONING_NOT_SHARE_MESHDATA = 1 - valeur par défaut.
    • le nouveau clone partage les vertices avec le mesh de base: MESH_CLONING_SHARE_MESHDATA = 2.

FlipNormals

FlipNormals permet d'inverser le sens des normales d'un mesh.
Syntaxe
HYP_Mesh.FlipNormals( mesh_name| mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

GetNumFaces

GetNumFaces permet de récupérer le nombre de faces d'un mesh.
Syntaxe
num_faces = HYP_Mesh.GetNumFaces( mesh_name| mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • num_faces - [INTEGER] - nombre de faces du mesh.

GetFaceIndexes

GetFaceIndexes permet de récupérer les indexes des vertices d'une face particulière du mesh. Les meshes manipulés dans Hyperion possèdent des faces triangulaires donc chaque face possède 3 indexes. Chacun de ces indexes peut ensuite être utilisé dans les fonction Set/GetVertex_...() pour accéder et modifier les vertices de la face.
Syntaxe
a, b, c = HYP_Mesh.GetFaceIndexes( mesh_name| mesh_id, face_index );
a, b, c = HYP_Mesh.GetFaceIndexes_Fast( mesh_name| mesh_id, face_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • face_index - [INTEGER] - index de la face. cet index doit être compris entre 0 et HYP_Mesh.GetNumFaces()-1.
  • a, b, c - [INTEGER] - indexes des 3 vertices composants la face.
Remarque
GetFaceIndexes_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetFaceNormal

GetFaceNormal permet de récupérer le vecteur normal d'une face particulière d'un mesh. Le vecteur normal est exprimé dans le repère local du modèle.
Syntax
x, y, z = HYP_Mesh.GetFaceNormal( mesh_name| mesh_id, face_index );
x, y, z = HYP_Mesh.GetFaceNormal_Fast( mesh_name| mesh_id, face_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • face_index - [INTEGER] - index de la face. cet index doit être compris entre 0 et HYP_Mesh.GetNumFaces()-1.
  • x, y, z - [REAL] - coordonnées du vecteur normal.
Remarque
GetFaceNormal_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetElevation

GetElevation permet de récupérer la hauteur (y) et l'index (dans la liste des faces) du triangle d'un mesh se situant juste en dessous et à la verticale de la caméra active. Cette fonction permet à la caméra de suivre le relief d'un terrain par exemple.

Cette fonction effectue un lancer de rayon dont l'origine est la position de la caméra et la direction le vecteur <0.0, -1.0, 0.0>. La valeur y_out retournée par cette fonction est la valeur de la coordonnée y au point de collision entre le rayon et le triangle du mesh.
Syntaxe
y_out, face_index = HYP_Mesh.GetElevation( mesh_name| mesh_id, cam_x, cam_y, cam_z );
  • mesh_name - [STR127] - nom du merh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • cam_x - [REAL] - position en X de la camera active.
  • cam_y - [REAL] - position en Y de la camera active.
  • cam_z - [REAL] - position en Z de la camera active.
  • y_out - [REAL] - hauteur en Y du triangle détecté sous la camera.
  • face_index - [INTEGER] - index de la face courante sous la camera.
Exemple
local face;
local cam_x;
local cam_y;
local cam_z;
cam_x, cam_y, cam_z = HYP_Camera.GetPosition( "Main_Camera" );
local mesh_elevation = HYP_Mesh.GetElevation( "myTerrain", cam_x, cam_y, cam_z );
cam_y, face = mesh_elevation + 30.0;
HYP_Camera.SetPosition( "Main_Camera", cam_x, cam_y, cam_z );

CastRay

CastRay permet de lancer un rayon (orig + t*dir) et de récupérer le résultat de la collision avec le mesh. Si aucune collision n'est détectée, le temps de collision est fixé à 99999999.0.

Syntax
x, y, z, face, time = HYP_Mesh.CastRay( mesh_name| mesh_id, orig_x, orig_y, orig_z, dir_x, dir_y, dir_z );
  • mesh_name - [STR127] - nom du merh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • orig_x - [REAL] - coordonnée X de la position d'origine du rayon.
  • orig_y - [REAL] - coordonnée Y de la position d'origine du rayon.
  • orig_z - [REAL] - coordonnée Z de la position d'origine du rayon.
  • dir_x - [REAL] - coordonnée X du vecteur direction du rayon.
  • dir_y - [REAL] - coordonnée Y du vecteur direction du rayon.
  • dir_z - [REAL] - coordonnée Z du vecteur direction du rayon.
  • x - [REAL] - position en X du point de collision avec le mesh.
  • y - [REAL] - position en Y du point de collision avec le mesh.
  • z - [REAL] - position en Z du point de collision avec le mesh.
  • face - [INTEGER] - index de la face de collision.
  • time - [INTEGER] - temps de collision.

DoTweening

DoTweening permet de morpher (transformer progressivement) un mesh tween entre un mesh de début (start mesh) et un mesh de fin (end mesh). Le morphing est linéaire entre les 2 meshes. Les meshes doivent avoir la même topologie (même nombre de vertices et de faces). Cette fonction est utilisée dans l'animation de personnages par keyframes.
Syntaxe
HYP_Mesh.DoTweening( tween_mesh_name| tween_mesh_id, start_mesh_name| start_mesh_id, end_mesh_name| end_mesh_id, time );
  • tween_mesh_name - [STR127] - nom du mesh tween (venant du terme anglais between) comme spécifié dans le script XML par l'attribut name.
  • tween_mesh_id - [INTEGER] - identifiant du mesh tween.
  • start_mesh_name - [STR127] - nom du mesh start comme spécifié dans le script XML par l'attribut name.
  • start_mesh_id - [INTEGER] - identifiant du mesh start.
  • end_mesh_name - [STR127] - nom du mesh end comme spécifié dans le script XML par l'attribut name.
  • end_mesh_id - [INTEGER] - identifiant du mesh end.
  • time - [REAL] - valeur du paramètre de morphing (ou blending) spécifiant un état de transformation précis entre le mesh start et end. Le paramètre time doit être compris entre 0.0 et 1.0 (0.0 cooresponf au mesh start et 1.0 correspond au mesh end).
Remarque
Cette fonction interpole la position et la normale de chaque vertex.

SetVertexNormal

SetVertexNormal permet de changer la valeur du vecteur normal associé à un vertex particulier.
Syntaxe
HYP_Mesh.SetVertexNormal( mesh_name| mesh_id, vertex_index, nx, ny, nz );
HYP_Mesh.SetVertexNormal_Fast( mesh_name| mesh_id, vertex_index, nx, ny, nz );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex compris entre 0 et HYP_GetMeshVerticesNumber()-1.
  • nx - [REAL] - nouvelle valeur de la coordonnée X de la normale.
  • ny - [REAL] - nouvelle valeur de la coordonnée Y de la normale.
  • nz - [REAL] - nouvelle valeur de la coordonnée Z de la normale.
Exemple
local vec = {x=0.0, y=1.0, z=0.0};
local vi = 0;
local max_vertices = HYP_Mesh.GetNumVertices("mySphere");
while(vi<max_vertices) do
    HYP_Mesh.SetVertexNormal( "mySphere", vi, vec.x, vec.y, vec.z );
    vi = vi + 1;
end
Remarque
Pour que les calculs d'éclairage soient corrects, n'oubliez pas de normaliser le vecteur normal (longueur du vecteur = 1.0).

SetVertexNormal_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetVertexNormal

GetVertexNormal permet de récupérer la valeur du vecteur normal associé à un vertex particulier.
Syntaxe
nx, ny, nz = HYP_Mesh.GetVertexNormal( mesh_name| mesh_id, vertex_index );
nx, ny, nz = HYP_Mesh.GetVertexNormal_Fast( mesh_name| mesh_id, vertex_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex compris entre 0 et HYP_GetMeshVerticesNumber()-1.
  • nx - [REAL] - nouvelle valeur de la coordonnée X de la normale.
  • ny - [REAL] - nouvelle valeur de la coordonnée Y de la normale.
  • nz - [REAL] - nouvelle valeur de la coordonnée Z de la normale.
Remarque
GetVertexNormal_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetVertexColor

GetVertexColor permet de récupérer la valeur de la couleur associée à un vertex particulier.
Syntaxe
r, g, b, a = HYP_Mesh.GetVertexColor( mesh_name| mesh_id, vertex_index );
r, g, b, a = HYP_Mesh.GetVertexColor_Fast( mesh_name| mesh_id, vertex_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex compris entre 0 et HYP_GetMeshVerticesNumber()-1.
  • r - [CLAMPED_REAL] - valeur de la composante rouge.
  • g - [CLAMPED_REAL] - valeur de la composante verte.
  • b - [CLAMPED_REAL] - valeur de la composante bleue.
  • a - [CLAMPED_REAL] - valeur de la composante alpha.
Remarque
GetVertexColor_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetVertexUVCoords

GetVertexUVCoords permet de récupérer la valeur des coordonnées de texture associée à un vertex particulier et pour une unité de texture donnée.
Syntaxe
u, v = HYP_Mesh.GetVertexUVCoords( mesh_name| mesh_id, vertex_index, texture_unit );
u, v = HYP_Mesh.GetVertexUVCoords_Fast( mesh_name| mesh_id, vertex_index, texture_unit );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex compris entre 0 et HYP_GetMeshVerticesNumber()-1.
  • texture_unit - [INTEGER] - unité de texture comprise entre 0 et 7.
  • u - [REAL] - valeur de la composante u de la coordonnée de texture.
  • v - [REAL] - valeur de la composante v de la coordonnée de texture.
Remarque
GetVertexUVCoords_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

SetVertexUVCoords

SetVertexUVCoords permet de changer la valeur des coordonnées de textures d'un vertex particulier d'un mesh.
Syntaxe
HYP_Mesh.SetVertexUVCoords( mesh_name|mesh_id, vertex_index, texture_unit, new_u, new_v );
HYP_Mesh.SetVertexUVCoords_Fast( mesh_name|mesh_id, vertex_index, texture_unit, new_u, new_v );
  • mesh_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex en commençant à partir de 0 pour le premier index.
  • texture_unit - [INTEGER] - numéro de l'unité de texture (Texture Unit) compris entre 0 et 7. En pratique, seules les unités 0 et 1 sont utilisées dans le cas du multitexturing à 2 layers.
  • new_u - [REAL] - nouvelle valeur du facteur de tiling de la coordonnée u de texture.
  • new_v - [REAL] - nouvelle valeur du facteur de tiling de la coordonnée v de texture.
Remarque
SetVertexUVCoords_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

SetPivotPosition

SetPivotPosition permet de changer la position du pivot (ou repère local) du mesh sans changer la position des vertices.
Syntaxe
HYP_Mesh.SetPivotPosition( mesh_name| mesh_id, new_x, new_y, new_z );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • new_x - [REAL] - nouvelle position X du pivot.
  • new_y - [REAL] - nouvelle position Y du pivot.
  • new_z - [REAL] - nouvelle position Z du pivot.

SetPivotOrientation

SetPivotOrientation permet de changer la position du pivot (ou repère local) du mesh sans changer la position des vertices.
Syntaxe
HYP_Mesh.SetPivotOrientation( mesh_name| mesh_id, angle, axe_x, axe_y, axe_z );
ou
HYP_Mesh.SetPivotOrientation( mesh_name| mesh_id, pitch, yaw, roll );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe définit par les valeurs X, Y et Z suivantes.
  • axe_x - [REAL] - coordonnée X de l'axe de rotation.
  • axe_y - [REAL] - coordonnée Y de l'axe de rotation.
  • axe_z - [REAL] - coordonnée Z de l'axe de rotation.
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X.
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y.
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z.

SetVerticesColor

SetVerticesColor permet de changer la couleur de tous les vertices d'un mesh.
Syntaxe
HYP_Mesh.SetVerticesColor( mesh_name|mesh_id, new_r, new_g, new_b, new_a );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • new_r - [CLAMPED_REAL] - composante rouge de la couleur des vertices.
  • new_g - [CLAMPED_REAL] - composante verte de la couleur des vertices.
  • new_b - [CLAMPED_REAL] - composante bleue de la couleur des vertices.
  • new_a - [CLAMPED_REAL] - composante alpha de la couleur des vertices.

GetNumVertices

GetNumVertices permet de récupérer le nombre de vertices d'un mesh.
Syntaxe
n = HYP_Mesh.GetNumVertices( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

GetVertexPosition

GetVertexPosition permet de récupérer la position d'un vertex particulier d'un mesh.
Syntaxe
x, y, z = HYP_Mesh.GetVertexPosition( mesh_name|mesh_id, vertex_index );
x, y, z = HYP_Mesh.GetVertexPosition_Fast( mesh_name|mesh_id, vertex_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex en commençant à partir de 0 pour le premier index.
  • x - [REAL] - position en X du vertex.
  • y - [REAL] - position en Y du vertex.
  • z - [REAL] - position en Z du vertex.
Exemple
elapsed_time = HYP_GetElapsedTime()/1000

vertexAttribPush = 1
vertexAttribPop = 2

HYP_Mesh.PopVerticesList("water", vertexAttribPop )
HYP_Mesh.PushVerticesList("water", vertexAttribPush )

nXSeg, nYSeg = HYP_Mesh.GetNumPlaneSegments("water")

nVertsX = nXSeg + 1
nVertsY = nYSeg + 1

do
    x = 0
    y = 0
    offset = 0
    xpos, ypos, zpos = 0, 0, 0
    k = 0
    speed = 4.0

    while( y<nVertsY ) do

        x=0
        while( x<nVertsX ) do

            offset = y*nVertsX + x
            xpos, ypos, zpos = HYP_Mesh.GetVertexPosition( "water", offset )

            c = ( x/nVertsX) + 0.1;
            k = 0.5 * ( math.sin(x + elapsed_time*speed) + math.cos(y + elapsed_time*speed) );
            ypos = k

            HYP_Mesh.SetVertexPosition( "water", offset, xpos, ypos, zpos )
            x = x + 1
        end

        y = y  + 1
    end

    HYP_Mesh.UpdateAllNormals( "water" )

end
Remarque
GetVertexPosition_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

PushVerticesList

PushVerticesList permet de sauvegarder les vertices actuels du mesh avant modification. La fonction HYP_PopMeshVerticesList permettra de les restaurer.
Syntaxe
HYP_Mesh.PushVerticesList( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

PopVerticesList

PopVerticesList permet de restaurer les vertices du mesh ayant été sauvegardés avec HYP_PushMeshVerticesList.
Syntaxe
HYP_Mesh.PopVerticesList( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

GetNumPlaneSegments

GetNumPlaneSegments permet de récupérer le nombre de segments d'un mesh plane comme initialisé dans le script XML.
Syntaxe
nXSegs, nYSegs = HYP_Mesh.GetNumPlaneSegments( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • nXSegs - [INTEGER] - nombre de segments dans la largeur.
  • nYSegs - [INTEGER] - nombre de segments dans la hauteur.

UpdateAllNormals

UpdateAllNormals permet de recalculer le vecteur normal à chaque vertex après modification. Ceci est fondamental pour les calculs d'éclairage.
Syntaxe
HYP_Mesh.UpdateAllNormals( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

UpdateVertexNormalField

UpdateVertexNormalField permet de recalculer le champ de vecteurs normaux des vertices.
Syntaxe
HYP_Mesh.UpdateVertexNormalField( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

UpdateFaceNormalField

UpdateFaceNormalField permet de recalculer le champ de vecteurs normaux des faces.
Syntaxe
HYP_Mesh.UpdateFaceNormalField( mesh_name|mesh_id );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.

SetVertexPosition

SetVertexPosition permet de changer la position d'un vertex particulier d'un mesh.
Syntaxe
HYP_Mesh.SetVertexPosition( mesh_name|mesh_id, vertex_index, new_x, new_y, new_z );
HYP_Mesh.SetVertexPosition_Fast( mesh_name|mesh_id, vertex_index, new_x, new_y, new_z );
  • mesh_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex en commençant à partir de 0 pour le premier index.
  • new_x - [REAL] - nouvelle position en X du vertex.
  • new_y - [REAL] - nouvelle position en Y du vertex.
  • new_z - [REAL] - nouvelle position en Z du vertex.
Remarque
SetVertexPosition_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

SetVertexColor

SetVertexColor permet de changer la couleur d'un vertex particulier d'un mesh.
Syntaxe
HYP_Mesh.SetVertexColor( mesh_name|mesh_id, vertex_index, new_r, new_g, new_b, new_a );
HYP_Mesh.SetVertexColor_Fast( mesh_name|mesh_id, vertex_index, new_r, new_g, new_b, new_a );
  • mesh_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex en commençant à partir de 0 pour le premier index.
  • new_r - [CLAMPED_REAL] - nouvelle valeur de la composante rouge de la couleur du vertex.
  • new_g - [CLAMPED_REAL] - nouvelle valeur de la composante verte de la couleur du vertex.
  • new_b - [CLAMPED_REAL] - nouvelle valeur de la composante bleue de la couleur du vertex.
  • new_a - [CLAMPED_REAL] - nouvelle valeur de la composante alpha de la couleur du vertex.
Remarque
SetVertexColor_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

SetTexCoordsTiling

SetTexCoordsTiling permet de changer la valeur du facteur multiplicateur des coordonnées de textures de tous les vertices d'un mesh. Par défaut le tiling vaut 1.0.
Syntaxe
HYP_Mesh.SetTexCoordsTiling( mesh_name|mesh_id, tu, tile_u, tile_v );
  • mesh_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • tu - [INTEGER] - numéro de l'unité de texture (Texture Unit). En pratique, seules les unités 0 et 1 sont utilisées dans le cas du multitexturing à 2 layers.
  • tile_u - [REAL] - tiling à appliquer aux coordonnées u de texture.
  • tile_v - [REAL] - tiling à appliquer aux coordonnées v de texture.

SetTexCoordsOffset

SetTexCoordsOffset permet de changer la valeur de l'offset des coordonnées de textures de tous les vertices d'un mesh. Par défaut cet offset vaut 0.0.
Syntaxe
HYP_Mesh.SetTexCoordsOffset( mesh_name|mesh_id, tu, offset_u, offset_v );
  • mesh_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • tu - [INTEGER] - numéro de l'unité de texture (Texture Unit). En pratique, seules les unités 0 et 1 sont utilisées dans le cas du multitexturing à 2 layers.
  • offset_u - [REAL] - offset à appliquer aux coordonnées u de texture.
  • offset_v - [REAL] - offset à appliquer aux coordonnées v de texture.

ScaleVertices

ScaleVertices permet d'appliquer un facteur d'échelle aux vertices du mesh. La position d'origine des vertices est automatiquement sauvée ce qui fait qu'en passant un facteur de 1.0, les vertices reprennent leur position d'origine.
Syntaxe
HYP_Mesh.ScaleVertices( mesh_name|mesh_id, scale_factor_x, scale_factor_y, scale_factor_z );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • scale_factor_x - [REAL] - facteur d'échelle en X du vertex.
  • scale_factor_y - [REAL] - facteur d'échelle en Y du vertex.
  • scale_factor_z - [REAL] - facteur d'échelle en Z du vertex.

SetVertexAttrib

SetVertexAttrib permet de modifier le vecteur 4D assicié à chacun des 5 attributs de vertex. Par défaut les 2 premiers attributs de vertex sont initilisés par oZone3D à la construction du mesh et représentent les vecteurs de l'espace tangent de chaque vertex (tangent: 1 et binormal: 2).
Syntaxe
HYP_Mesh.SetVertexAttrib( mesh_name|mesh_id, vertex_index, vertex_attrib, x, y, z, w );
HYP_Mesh.SetVertexAttrib_Fast( mesh_name|mesh_id, vertex_index, vertex_attrib, x, y, z, w );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribur name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex de 0 a n-1 vertices.
  • vertex_attrib - [INTEGER] - numéro d'attribut du vertex de 1 à 5.
  • x - [REAL] - composante X du vecteur 4D de l'attribut.
  • y - [REAL] - composante Y du vecteur 4D de l'attribut.
  • z - [REAL] - composante Z du vecteur 4D de l'attribut.
  • w - [REAL] - composante W du vecteur 4D de l'attribut.
Remarque
SetVertexAttrib_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

GetVertexAttrib

GetVertexAttrib permet d'obtenir le vecteur 4D assicié à chacun des 5 attributs de vertex.
Syntaxe
x, y, z, w = HYP_Mesh.GetVertexAttrib( mesh_name|mesh_id, vertex_index, vertex_attrib );
x, y, z, w = HYP_Mesh.GetVertexAttrib_Fast( mesh_name|mesh_id, vertex_index, vertex_attrib );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribur name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • vertex_index - [INTEGER] - index du vertex de 0 a n-1 vertices.
  • vertex_attrib - [INTEGER] - numéro d'attribut du vertex de 1 à 5.
  • x - [REAL] - composante X du vecteur 4D de l'attribut.
  • y - [REAL] - composante Y du vecteur 4D de l'attribut.
  • z - [REAL] - composante Z du vecteur 4D de l'attribut.
  • w - [REAL] - composante W du vecteur 4D de l'attribut.
Remarque
GetVertexAttrib_Fast est une version plus rapide mais qui ne contrôle pas la validité des paramètres d'entrée.

VBQuad_AddQuad

VBQuad_AddQuad permet d'ajouter un quad à un mesh de type VB_QUAD.
Syntaxe
HYP_Mesh.VBQuad_AddQuad( quad_name|quad_id, mesh_name| mesh_id );
  • quad_name - [STR127] - nom de la primitive quad comme spécifié dans le script XML par l'attribut name.
  • quad_id - [INTEGER] - identifiant de la primitive de type QUAD.
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh retourné par HYP_Mesh.Clone(), ou HYP_Model.GetSubMeshByName() ou HYP_Model.GetFirstSubMesh().
Exemple
local i = 0;
while(i<1000) do
    local id_quad = HYP_Primitive.CloneQuad("masterQuad");
    HYP_Mesh.VBQuad_AddQuad( id_quad, "grassVertexBufferMesh" );
    i = i + 1;
end

VBQuad_SetQuadVertexPosition

VBQuad_SetQuadVertexPosition permet de modifier la position d'un des 4 vertices d'un quad particulier d'un VB_Quad.
Syntaxe
HYP_Mesh.VBQuad_SetQuadVertexPosition( mesh_id, quad_index, vertex_index, x, y, z  );
  • mesh_id - [INTEGER] - identifiant du mesh vb_quad.
  • quad_index - [INTEGER] - index du quad dans le VB_Quad. Le premier quad est indexé par zéro.
  • vertex_index - [INTEGER] - index du vertex dans le quad. 0<=vertex_index<=3.
  • x, y, z - [REAL] - nouvelle position 3D du vertex.
Remarque
Pour des questions de rapidité, cette fonction ne vérifie pas la validité des paramètres d'entrée.

VBQuad_GetQuadVertexPosition

VBQuad_GetQuadVertexPosition permet de récupérer la position d'un des 4 vertices d'un quad particulier d'un VB_Quad.
Syntaxe
x, y, z = HYP_Mesh.VBQuad_GetQuadVertexPosition( mesh_id, quad_index, vertex_index );
  • mesh_id - [INTEGER] - identifiant du mesh vb_quad.
  • quad_index - [INTEGER] - index du quad dans le VB_Quad. Le premier quad est indexé par zéro.
  • vertex_index - [INTEGER] - index du vertex dans le quad. 0<=vertex_index<=3.
  • x, y, z - [REAL] - position 3D du vertex.
Remarque
Pour des questions de rapidité, cette fonction ne vérifie pas la validité des paramètres d'entrée.

VBQuad_SetQuadVertexColor

VBQuad_SetQuadVertexColor permet de modifier la couleur d'un des 4 vertices d'un quad particulier d'un VB_Quad.
Syntaxe
HYP_Mesh.VBQuad_SetQuadVertexColor( mesh_id, quad_index, vertex_index, r, g, b, a  );
  • mesh_id - [INTEGER] - identifiant du mesh vb_quad.
  • quad_index - [INTEGER] - index du quad dans le VB_Quad. Le premier quad est indexé par zéro.
  • vertex_index - [INTEGER] - index du vertex dans le quad. 0<=vertex_index<=3.
  • r, g, b, a - [REAL] - nouvelle couleur RGBA du vertex.
Remarque
Pour des questions de rapidité, cette fonction ne vérifie pas la validité des paramètres d'entrée.

VBQuad_GetQuadVertexColor

VBQuad_GetQuadVertexColor permet de modifier la couleur d'un des 4 vertices d'un quad particulier d'un VB_Quad.
Syntaxe
r, g, b, a = HYP_Mesh.VBQuad_GetQuadVertexColor( mesh_id, quad_index, vertex_index );
  • mesh_id - [INTEGER] - identifiant du mesh vb_quad.
  • quad_index - [INTEGER] - index du quad dans le VB_Quad. Le premier quad est indexé par zéro.
  • vertex_index - [INTEGER] - index du vertex dans le quad. 0<=vertex_index<=3.
  • r, g, b, a - [REAL] - couleur RGBA du vertex.
Remarque
Pour des questions de rapidité, cette fonction ne vérifie pas la validité des paramètres d'entrée.

CreateSphere

CreateSphere permet de créer un mesh de type SPHERE.
Syntaxe
id = HYP_Mesh.CreateSphere( name, radius, stacks, slices );
  • name - [STR127] - nom à donner au mesh.
  • radius - [REAL] - rayon de la sphère
  • stacks - [INTEGER] - nombre de divisions verticales
  • slices - [INTEGER] - nombre de divisions horizontales
  • id - [INTEGER] - identifiant du nouveau mesh créé.

CreateTorus

CreateTorus permet de créer un mesh de type TORUS.
Syntaxe
id = HYP_Mesh.CreateTorus( name, radius, slices, section_radius );
  • name - [STR127] - nom à donner au mesh.
  • radius - [REAL] - grand rayon du torus
  • slices - [INTEGER] - nombre de divisions horizontales
  • section_radius - [REAL] - petit rayon du torus
  • id - [INTEGER] - identifiant du nouveau mesh créé.

CreateBox

CreateBox permet de créer un mesh de type BOX.
Syntax
id = HYP_Mesh.CreateBox( name, width, height, depth, w_segs, h_segs, d_segs );
  • name - [STR127] - nom à donner au mesh.
  • width - [REAL] - largeur (X) de la boîte
  • height - [REAL] - hauteur (Y) de la boîte
  • depth - [REAL] - profondeur (Z) de la boîte
  • w_segs - [INTEGER] - nombre de segments en X
  • h_segs - [INTEGER] - nombre de segments en Y
  • d_segs - [INTEGER] - nombre de segments en Z
  • id - [INTEGER] - identifiant du nouveau mesh créé.

CreatePlane

CreatePlane permet de créer un mesh de type PLANE.
Syntax
id = HYP_Mesh.CreatePlane( name, width, height, w_segs, h_segs );
  • name - [STR127] - nom à donner au mesh.
  • width - [REAL] - largeur (X) du plan
  • height - [REAL] - hauteur (Z) du plan
  • w_segs - [INTEGER] - nombre de segments en X
  • h_segs - [INTEGER] - nombre de segments en Z
  • id - [INTEGER] - identifiant du nouveau mesh créé.

Destroy

Destroy permet de détruire un mesh créé avec une des fonctions de création de mesh.
Syntax
HYP_Mesh.Destroy( name|id );
  • name - [STR127] - nom du mesh.
  • id - [INTEGER] - identifiant du mesh.

GetFaceCenterPosition

GetFaceCenterPosition permet de récupérer la position du centre d'une face particulière d'un mesh.
Syntax
x, y, z = HYP_Mesh.GetFaceCenterPosition( mesh_name| mesh_id, face_index );
  • mesh_name - [STR127] - nom du mesh comme spécifié dans le script XML par l'attribut name.
  • mesh_id - [INTEGER] - identifiant du mesh.
  • face_index - [INTEGER] - index de la face. cet index doit être compris entre 0 et HYP_Mesh.GetNumFaces()-1.
  • x, y, z - [REAL] - coordonnées de la position.

VBQuad_SortFacesInCameraSpace

VBQuad_SortFacesInCameraSpace effectue un tri des faces du vbquad dans l'expace de la camera.
Syntax
HYP_Mesh.VBQuad_SortFacesInCameraSpace( vbquad_id, camera_id, order );
  • vbquad_id - [INTEGER] - identifiant du vbquad.
  • camera_id - [INTEGER] - identifiant de la camera.
  • order - [INTEGER] - ordre de tri des faces:
    • FRONT_TO_BACK = 0
    • BACK_TO_FRONT = 1

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des meshes

API Hyperion/LUA: fonctions de manipulation des meshes et des modèles

La librairie HYP_Model effectue des opérations générales sur les modèles de la scène.
HYP_Model.GetFirstSubMesh
HYP_Model.GetSubMeshByName
HYP_Model.Load
HYP_Model.LoadAmbientOcclusionMap
HYP_Model.ScaleVertices
HYP_Model.Save
HYP_Model.SetVerticesColor
HYP_Model.SetCloningMode
HYP_Model.GetNumFaces
HYP_Model.GetNumVertices

SetCloningMode

SetCloningMode permet de spécifier la façon dont les sous meshes d'un modèle sont clonés.
Syntaxe
HYP_Model.SetCloningMode( model_name| model_id, options );
  • model_name - [STR127] - nom du modèle à cloner comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant du modèle à cloner.
  • options - [INTEGER] - type de clonage:
    • le nouveau clone contient sa propre version des vertices: MESH_CLONING_NOT_SHARE_MESHDATA = 1 - valeur par défaut.
    • le nouveau clone partage les vertices avec le mesh de base: MESH_CLONING_SHARE_MESHDATA = 2.

GetSubMeshByName

GetSubMeshByName permet de récupérer l'identifiant d'un sous-mesh d'un modèle. Cette fonction est utile pour accéder un un sous mesh qui n'est pas déclaré dans le script XML principal.
Syntaxe
mesh_id = HYP_Model.GetSubMeshByName( model_name| model_id, sub_mesh_name );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant numérique de l'objet.
  • sub_mesh_name - [STR127] - nom du sous mesh dont on veut connaître l'identifiant
  • mesh_id - [INTEGER] - identifiant du sous-mesh.
Exemple
head_mesh_id = HYP_Model.GetSubMeshByName( "human", "head" );
HYP_Object.SetRoll(head_mesh_id, 30.0 );

GetFirstSubMesh

GetFirstSubMesh permet de récupérer l'identifiant du premier sous mesh d'un modèle.
Syntaxe
mesh_id = HYP_Model.GetFirstSubMesh( model_name| model_id );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant numérique de l'objet.
  • mesh_id - [INTEGER] - identifiant du sous-mesh.
Exemple
local id = HYP_Model.GetFirstSubMesh( "human" );
HYP_Object.SetRoll(head_mesh_id, 30.0 );

SetVerticesColor

SetVerticesColor permet de changer la couleur de tous les vertices de tous les sous meshes d'un modèle.
Syntaxe
HYP_Model.SetVerticesColor( model_name|model_id, new_r, new_g, new_b, new_a );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant numérique de l'objet.
  • new_r - [CLAMPED_REAL] - composante rouge de la couleur des vertices.
  • new_g - [CLAMPED_REAL] - composante verte de la couleur des vertices.
  • new_b - [CLAMPED_REAL] - composante bleue de la couleur des vertices.
  • new_a - [CLAMPED_REAL] - composante alpha de la couleur des vertices.

ScaleVertices

ScaleVertices permet d'appliquer un facteur d'échelle aux vertices de chacun des sous-meshes du modèle. La position d'origine des vertices est automatiquement sauvée ce qui fait qu'en passant un facteur de 1.0, les vertices reprennent leur position d'origine.
Syntaxe
HYP_Model.ScaleVertices( model_name|model_id, scale_factor_x, scale_factor_y, scale_factor_z );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant numérique de l'objet.
  • scale_factor_x - [REAL] - facteur d'échelle en X du vertex.
  • scale_factor_y - [REAL] - facteur d'échelle en Y du vertex.
  • scale_factor_z - [REAL] - facteur d'échelle en Z du vertex.

Load

Load permet de charger un modèle 3D (*.3DS, *.ASE, *.FBX, *.OBJ, *.O3MDL, ... ) et de l'ajouter automatiquement à l'arbre de la scène.
Syntaxe
model_id = HYP_Model.Load( filename, loading_options );
  • filename - [STR255] - chemin d'accès relatif au fichier du modèle à charger.
  • loading_options - [ENUM] - combinaison des options suivantes.
    • MODEL_LOADING_OPTION_LOAD_TEXTURE = 1
    • MODEL_LOADING_OPTION_TEX_RGB_BYTE = 2
    • MODEL_LOADING_OPTION_COMPUTE_VERTEX_NORMALS = 4
    • MODEL_LOADING_OPTION_DEFAULT = 7 (MODEL_LOADING_OPTION_LOAD_TEXTURE + MODEL_LOADING_OPTION_TEX_RGB_BYTE + MODEL_LOADING_OPTION_COMPUTE_VERTEX_NORMALS)
    • MODEL_LOADING_OPTION_TEX_RGBA_FLOAT = 8
    • MODEL_LOADING_OPTION_TEX_COMPRESSION = 16
    • MODEL_LOADING_OPTION_LOAD_BUMP_MAP_DOT3 = 32
    • MODEL_LOADING_OPTION_COMPUTE_TANGENT_SPACE_VECTORS = 64
    • MODEL_LOADING_OPTION_GEN_MIPMAP = 128
    • MODEL_LOADING_OPTION_DESTROY_PIXMAP_BUFFERS_AFTER_UPLOAD = 256
  • model_id - [INTEGER] - identifiant du modèle.
Exemple
teapot_id = HYP_Model.Load( "teapot.3ds", MODEL_LOADING_OPTION_LOAD_TEXTURE + MODEL_LOADING_OPTION_TEX_RGBA_FLOAT);
HYP_Object.SetPosition(teapot_id, 0.0, 50.0, -20.0 );
end

Save

Save permet de sauver un modèle au format O3MDL.
Syntaxe
HYP_Model.Save( model_name|model_id, filename );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant du modèle.
  • filename - [STR255] - chemin d'accès relatif au fichier du modèle à sauvegarder.

LoadAmbientOcclusionMap

LoadAmbientOcclusionMap permet de charger un fichier contenant les données d'ambient occlusion afin de faire du Ambient Occlusion Lighting. Ce fichier XML, appelé occlusion map, contient pour chaque vertex de chaque sous mesh, les valeurs du bent_normal vecteur ainsi que le terme d'occlusion.

La création de l'occlusion map est une étape offline étant donné les temps de calculs (plusieurs heures). A ce titre, Hyperion est livré avec l'utilitaire AOTPP.exe, en ligne de commande, qui permet de générer cette map d'occlusion.
Syntaxe
HYP_Model.LoadAmbientOcclusionMap( model_name|model_id, filename );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant du modèle.
  • filename - [STR255] - chemin d'accès relatif à l'occlusion map.

GetNumFaces

GetNumFaces permet de récupérer le nombre de faces triangulaires de tous les sous meshes.
Syntax
nfaces = HYP_Model.GetNumFaces( model_name| model_id );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant du modèle.
  • nfaces - [INTEGER] - nombre de faces

GetNumVertices

GetNumVertices permet de récupérer le nombre de vertices de tous les sous meshes.
Syntax
nverts = HYP_Model.GetNumVertices( model_name| model_id );
  • model_name - [STR127] - nom du modèle comme spécifié dans le script XML par l'attribut name.
  • model_id - [INTEGER] - identifiant du modèle.
  • nverts - [INTEGER] - nombre de vertices.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des motion-paths

API Hyperion/LUA: fonctions de manipulation des motion-paths

La librairie HYP_MotionPath effectue des opérations générales sur les motion-paths.
HYP_MotionPath.GetValueByTime
HYP_MotionPath.GetObjectCurrentTime
HYP_MotionPath.Attach

Attach

Attach permet d'attacher un motion-path à un objet (modèle, mesh, lumière, gizmo, caméra).
Syntaxe
HYP_MotionPath.Attach( object_name, motion_path_name, time_offset, time_step );
  • object_name - [STR127] - nom de l'objet auquel on souhaite attacher le motion-path.
  • motion_path_name - [STR127] - nom du motion path.
  • time_offset - [CLAMPED_REAL] - valeur initiale de l'offset temporel. Mettre 0.0 pour commencer au début du motion-path. La valeur 1.0 correspond à la fin du motion-path.
  • time_step - [CLAMPED_REAL] - valeur del'increment temporel le long du motion-path. A chaque frame, l'objet se déplace de time_step sur le motion-path.
Exemple
-- test de HYP_SetMotionPath.
HYP_MotionPath.Attach( "light01", "main_motion_path", 0.0, 0.0001 );
Remarque
Pour détacher un motion-path d'un objet, il suffit de passer la chaîne de caractères "NULL" à la place du nom du motion-path.
HYP_SetMotionPath( "light01", "NULL", 0.0 );

GetValueByTime

GetValueByTime permet de récupérer la position 3D d'un point sur le motion-path pour un temp t normalisé (compris entre 0.0 et 1.0).

Cette fonction est pratique car il n'est pas nécessaire d'attacher un motion-path à un objet pour que ce dernier se déplace le long du motion-path. Il suffit de déclarer un node motion_path dans le script XML pour que n'importe quel objet dont on peut changer la position spatiale (via LUA) puisse en profiter.
Syntaxe
x, y, z = HYP_MotionPath.GetValueByTime( motion_path_name, time );
  • motion_path_name - [STR127] - nom du motion path.
  • time - [CLAMPED_REAL] - valeur du temps. 0.0 correspond au début du motion-path et 1.0 à la fin.
  • x - [REAL] - coordonnée X de la position
  • y - [REAL] - coordonnée Y de la position
  • z - [REAL] - coordonnée Z de la position
Exemple
time = 0.26;
x, y, z = HYP_MotionPath.GetValueByTime( "main_motion_path", time );

GetObjectCurrentTime

GetObjectCurrentTime permet de récupérer la position courante temporelle d'un objet sur un motion-path. Cette fonction est utile pour savoir par exemple la fin de la trajectoire lorsqu'un motion path a été attché à l'objet.
Syntaxe
time = HYP_MotionPath.GetObjectCurrentTime( object_name );
  • object_name - [STR127] - nom de l'objet.
  • time - [CLAMPED_REAL] - valeur du temps. 0.0 correspond au début du motion-path et 1.0 à la fin.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des objets

API Hyperion/LUA: fonctions de manipulation des objets

La librairie HYP_Object est responsable de toutes les opérations de base sur les objets de la scène.
HYP_Object.AbsoluteToLocal
HYP_Object.AddChild
HYP_Object.AttachTexture
HYP_Object.AverageNormals
HYP_Object.Check_AABB_Collision
HYP_Object.Check_BS_Collision
HYP_Object.ClearAllMaterials
HYP_Object.Clone
HYP_Object.DetachAllTextures
HYP_Object.DetachTexture
HYP_Object.DisplayBoundingVolume
HYP_Object.DisplayTripod
HYP_Object.FreeAllTextures
HYP_Object.GetBoundingVolumeAbsoluteCenter
HYP_Object.GetAbsolutePosition
HYP_Object.GetAbsoluteTransformMatrix
HYP_Object.GetAbsolute_X_Axis
HYP_Object.GetAbsolute_Y_Axis
HYP_Object.GetAbsolute_Z_Axis
HYP_Object.GetActiveState
HYP_Object.GetChild
HYP_Object.GetChildByIndex
HYP_Object.GetDepthBufferState
HYP_Object.GetDirection
HYP_Object.GetDistanceBetween
HYP_Object.GetIdFromName
HYP_Object.GetNameFromId
HYP_Object.GetNumChildren
HYP_Object.GetPosition
HYP_Object.GetRenderState
HYP_Object.GetSize
HYP_Object.GetPickingState
HYP_Object.GetUpdateTripodDirectionState
HYP_Object.PopTripod
HYP_Object.PushTripod
HYP_Object.RemoveChild
HYP_Object.RemoveSeam
HYP_Object.ResetTripod
HYP_Object.RotateObject
HYP_Object.SetAlphaMappedState
HYP_Object.SetActiveState
HYP_Object.SetDepthBufferState
HYP_Object.SetDepthBufferWritingState
HYP_Object.SetDirection
HYP_Object.SetLightingState
HYP_Object.SetMaterial
HYP_Object.SetNormalizationState
HYP_Object.SetOrientation
HYP_Object.SetPitch
HYP_Object.SetPolygonMode
HYP_Object.SetPosition
HYP_Object.SetRenderState
HYP_Object.SetRoll
HYP_Object.SetScale
HYP_Object.SetPickingState
HYP_Object.SetShadowCasterState
HYP_Object.SetTexturingState
HYP_Object.SetUpdateTripodDirectionState
HYP_Object.SetVBOState
HYP_Object.SetYaw
HYP_Object.Translate
HYP_Object.UpdateGeometryData
HYP_Object.UpdateTripod
HYP_Object.Render
HYP_Object.Update
HYP_Object.SetUpdateState
HYP_Object.GetUpdateState
HYP_Object.GetLightingState
HYP_Object.GetTexturingState
HYP_Object.SetBlendingState
HYP_Object.GetBlendingState
HYP_Object.SetBlendingFactors
HYP_Object.GetBlendingFactors
HYP_Object.SetBackFaceCullingState
HYP_Object.GetBackFaceCullingState
HYP_Object.SetColor
HYP_Object.SetLineWidth
HYP_Object.ComputeNormals
HYP_Object.ComputeTangentSpace
HYP_Object.AverageNormals

GetNameFromId

GetNameFromId permet de récupérer l'identifiant numérique d'un objet à partir de son nom. Cette fonction retourne la chaîne "_NULL_" si l'identifiant n'est pas valide.
Syntaxe
object_name = HYP_Object.GetNameFromId( object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

GetIdFromName

GetIdFromName permet de récupérer le nom d'un objet à partir de son identifiant numérique. Cette fonction retourne la chaîne -1 si le nom n'est pas valide.
Syntaxe
object_id = HYP_Object.GetIdFromName( object_name );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

DisplayTripod

DisplayTripod active ou désactive l'affichage du repère local (ou tripode ou pivot) de l'objet.
Syntaxe
HYP_Object.DisplayTripod( object_name|object_id, state );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - activation: 1 (TRUE)- désactivation: 0 (FALSE).

ResetTripod

ResetTripod permet de réinitialiser le tripode d'un objet. Le tripode d'un objet est équivalent à son repère local, c'est à dire une structure de données qui contient toutes les informations sur les transformations de l'objet (position et orientation). L'initialisation du tripod remet la position à <0.0, 0.0, 0.0> et annule l'orientation.
Syntaxe
HYP_Object.ResetTripod( object_name|object_id );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

UpdateTripod

UpdateTripod permet de mettre à jour le tripode d'un objet. Le tripode d'un objet est équivalent à son repère local, c'est à dire une structure de données qui contient toutes les informations sur les transformations de l'objet (position et orientation). La mise à jour d'un tripode peut être nécéssaire pour obtenir par exemple la position absolue d'un objet. La fonction HYP_Object.SetPosition() ne modifie que la position relative de l'objet. Si cet objet est dans une hiérarchie complexe, seule la fonction HYP_Object.GetAbsolutePosition() permet d'obtenir sa position par rapport au repère du monde. En temps normal, le tripode est updaté une fois par frame mais si dans un script LUA vous changer sa position relative et que vous ayiez besoin ensuite de sa position absolue, un appel à HYP_Object.UpdateTripod() est nécéssaire.
Syntaxe
HYP_Object.UpdateTripod( object_name|object_id );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

SetMaterial

SetMaterial permet d'attacher un matériau à un objet. Il est conseillé d'appeller la fonction HYP_Object.ClearAllMaterials() avant afin d'initialiser correctement la liste interne des matériaux de l'objet.
Syntaxe
HYP_Object.SetMaterial( object_name|object_id, material_name|material_id );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • material_name - [STR127] - nom du matériau comme spécifié dans le script XML par l'attribut name.
  • material_id - [INTEGER] - identifiant numérique du marériau.

ClearAllMaterials

ClearAllMaterials permet de supprimer tous les matériaux d'un objet. Après avoir appelé cette fonction, il faut obligatoirement attacher au moins un matériau à l'objet faute de quoi le rendu ne se fera pas correctement.
Syntaxe
HYP_Object.ClearAllMaterials( object_name|object_id );
  • object_name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

GetChild

GetChild permet de récupérer un enfant dans la hiérarchie d'un objet parent. En cas de succès, la fonction retourne l'identifiant de l'enfant sinon elle retourne -1.
Syntaxe
id_child = HYP_Object.GetChild( parent_name| parent_id, child_name );
  • parent_name - [STR127] - nom de l'objet parent comme spécifié dans le script XML par l'attribut name.
  • parent_id - [INTEGER] - identifiant numérique de l'objet parent.
  • child_name - [STR127] - nom de l'objet enfant dont on veut connaître l'identifiant.
  • id_child - [INTEGER] - identifiant numérique de l'enfant.
Remarque
Cette fonction effectue une recherche complète dans la hierarchie du parent, quelque soit la profondeur de la hiérarchie.

GetNumChildren

GetNumChildren permet de récupérer le nombre d'enfants directs d'un objet parent. Le nombre d'enfants directs d'un objet correspond au nombre d'enfants dans le premier niveau de hiérarchie. En cas de succès, la fonction retourne l'identifiant de l'enfant sinon elle retourne -1.
Syntaxe
num_children = HYP_Object.GetNumChildren( parent_name| parent_id );
  • parent_name - [STR127] - nom de l'objet parent comme spécifié dans le script XML par l'attribut name.
  • parent_id - [INTEGER] - identifiant numérique de l'objet parent.
  • num_children - [INTEGER] - nombre d'enfants directs.

GetChildByIndex

GetChildByIndex permet de récupérer un enfant direct (premier niveau de hiérarchie) d'un objet parent. En cas de succès, la fonction retourne l'identifiant de l'enfant sinon elle retourne -1.
Syntaxe
id_child = HYP_Object.GetChildByIndex( parent_name| parent_id, index );
  • parent_name - [STR127] - nom de l'objet parent comme spécifié dans le script XML par l'attribut name.
  • parent_id - [INTEGER] - identifiant numérique de l'objet parent.
  • index - [INTEGER] - identifiant numérique de l'objet enfant.
  • id_child - [INTEGER] - identifiant numérique de l'enfant.
Exemple
function processChildren( parent )
    local num_children = HYP_Object.GetNumChildren( parent );
    local i=0;
    while(i<num_children) do
        id_child = HYP_Object.GetChildByIndex( parent, i );
        DoSomethingWithChild();
        processChildren( id_child );
        i = i + 1;
    end
end

processChildren( "humanModel" );

Clone

Clone permet de cloner un objet de la scène 3D.
Syntaxe
id_clone = HYP_Object.Clone( master_object_name| master_object_id, new_object_name );
  • master_object_name - [STR127] - nom de l'objet à cloner comme spécifié dans le script XML par l'attribut name.
  • master_object_id - [INTEGER] - identifiant numérique de l'objet à cloner.
  • new_object_name - [STR127] - nom à donner au nouvel objet issu du clonage. Ce paramètre est optionnel.
  • id_clone - [INTEGER] - identifiant numérique du clone.
Exemple
local i=0;
while(i<10) do
    id_clone = HYP_Object.Clone( "myMasterSphere" );
    HYP_Object.SetPosition( id_clone,  i*20.0, 0.0, 0.0 );
    i = i + 1;
end
Remarque
La fonction Clone() ne s'applique qu'aux objets suivants:
  • MESH
  • MODEL
  • QUAD (primitive)
  • BOX (primitive)
  • SPHERE (primitive)

SetDepthBufferState

SetDepthBufferState permet d'activer ou de désactiver le test de profondeur ou depth test (z-buffer) pour le rendu de l'objet. Le z-buffer est fondamental pour assurer un rendu correct des polygones formant un objet 3D.
Syntaxe
HYP_Object.SetDepthBufferState( name| id, state );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - activation TRUE(1) ou désactivation FALSE (0).

GetDepthBufferState

GetDepthBufferState permet de connaître l'état d'activation du test de profondeur ou depth test (z-buffer) pour le rendu de l'objet.
Syntaxe
state = HYP_Object.SetDepthBufferState( name| id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - activation TRUE(1) ou désactivation FALSE (0).

SetVBOState

SetVBOState permet d'activer ou de désactiver les Vertex Buffer Object (VBO) pour un mesh ou modèle particulier. HYP_SetVBOState n'aura de l'effet que si la carte graphique surpporte les vbo. Vous pouvez utiliser l'utilitaire HardwareInfos, disponible sur le site http://www.ozone3d.net, pour effectuer ce test.
Syntaxe
HYP_Object.SetVBOState( name| id, state );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - active (1) ou désactive (0) l'usage des vbo.

RemoveSeam

RemoveSeam permet de supprimer la jointure (aussi appelée couture) disgrâcieuse qui apparaît à la surface de certains meshes et modèles.
Syntaxe
HYP_Object.RemoveSeam( name| id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.

AverageNormals

AverageNormals effectue un moyennage des normales des vertices d'un objet. Même effet que HYP_RemoveSeam.
Syntaxe
HYP_Object.AverageNormals( name| id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.

SetShadowCasterState

SetShadowCasterState permet d'activer ou de désactiver la projection d'ombre volumique pour le mesh ou modèle passé en paramètre.
Syntaxe
HYP_Object.SetShadowCasterState( name|id, state );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - TRUE (1): activation - FALSE (0): désactivation.
Exemple
TRUE = 1;
HYP_Object.SetShadowCasterState( "mySphere", TRUE );

SetRenderState

SetRenderState permet d'activer ou de désactiver le rendu d'un objet.
Syntaxe
HYP_Object.SetRenderState( name | id, state );
  • name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - TRUE (1): activation - FALSE (0): désactivation.
Exemple
TRUE = 1;
FALSE = 0;
HYP_Object.SetRenderState( "mySphere1", FALSE );
HYP_Object.SetRenderState( "mySphere2", TRUE );

GetRenderState

GetRenderState permet de récupérer l'état de rendu d'un objet.
Syntaxe
state = HYP_Object.GetRenderState( name | id );
  • name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [BOOLEAN] - TRUE (1): activation - FALSE (0): désactivation.
Exemple
TRUE = 1;
FALSE = 0;
if( HYP_Object.GetRenderState("mySphere1")==FALSE ) then
    HYP_Object.SetRenderState("mySphere1", TRUE);
end

SetActiveState

SetActiveState permet de contrôler l'état actif d'un objet. Au niveau du moteur oZone3D, un objet dispose de 3 états fondamentaux: les états ACTIVE, UPDATE et RENDER. Une version très simplifée de l'algorithme de gestion des états est le suivant:
function MainEgineLoop()
    do_some_stuffs();

    if( object.active_state==TRUE ) then

        if( object.update_state==TRUE ) then
            object.update();
        end

        if( object.render_state==TRUE ) then
            object.render();
        end
    end

    do_some_stuffs();
end
D'après ce code, on voit que si un objet possède l'etat RENDER à false, il ne sera pas rendu mais il sera toujours updaté. Par contre il son état ACTIVE est à false, il ne sera plus rendu ni updaté.
Syntaxe
HYP_Object.SetActiveState( name | id, state );
  • name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - active (1) ou désactive (0) l'état.

GetActiveState

GetActiveState permet de récupérer l'état actif d'un objet.
Syntaxe
state = HYP_Object.GetActiveState( name | id );
  • name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - état actif (1) ou désactif (0).

DisplayBoundingVolume

DisplayBoundingVolume récupère la position absolue du pivot ou repère local de l'objet. La position absolue est la position par rapport au repère du monde (repère universel).
Syntaxe
HYP_Object.DisplayBoundingVolume( name | id, shape, state );
  • name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • shape - [INTEGER] - forme du volume englobant à afficher: BOX (1) ou SPHERE (2).
  • state - [INTEGER] - active (1) ou désactive (0) l'affichage du volume englobant.

GetAbsolutePosition

GetAbsolutePosition récupère la position absolue du pivot ou repère local de l'objet. La position absolue est la position par rapport au repère du monde (repère universel).

GetAbsolutePosition devient indispensable lorsque l'on est amené à effectuer des opérations sur les hierachies.
Syntaxe
x, y, z = HYP_Object.GetAbsolutePosition( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • x - [REAL] - coordonnée en X.
  • y - [REAL] - coordonnée en Y.
  • z - [REAL] - coordonnée en Z.

GetAbsoluteTransformMatrix

GetAbsoluteTransformMatrix récupère la matrice de transformation absolue du pivot ou repère local de l'objet. La matrice de transformation absolue exprime la transformation du pivot de l'objet par rapport au repère du monde (repère universel). La matrice de transformation absolue est une matrice carrée 4x4 organisée comme suit:
|x'|   | m0   m4    m8    m12 |   |x|
|y'| = | m1   m5    m9    m13 | * |y|
|z'|   | m2   m6    m10   m14 |   |z|
|1 |   | m3   m7    m11   m15 |   |1|

        --    --    --    --
         X     Y     Z    Position
        axis  axis  axis
A titre d'exemple, la position absolue est donnée par le triplet {m12, m13, m14}.

Le moteur oZone3D utilise des vecteurs colonnes et la multiplication des matrices de droite à gauche. C'est la convention standard en OpenGL.
Syntaxe
m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 = HYP_Object.GetAbsoluteTransformMatrix( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • m0 à m15 - [REAL] - les 16 éléments de la matrice 4x4.

GetSize

GetSize retourne les dimensions de la boîte englobante (bounding box) de l'objet.
Syntaxe
w, h, d = HYP_Object.GetSize( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • w - [REAL] - largeur (axe des X)
  • h - [REAL] - hauteur (axe des Y)
  • d - [REAL] - profondeur (axe des Z)

GetBoundingVolumeAbsoluteCenter

GetBoundingVolumeAbsoluteCenter retourne la position absolue du centre de la boîte englobante (bounding box) de l'objet.
Syntaxe
x, y, z = HYP_Object.GetBoundingVolumeAbsoluteCenter( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • x - [REAL] - coordonnée en X
  • y - [REAL] - coordonnée en Y
  • z - [REAL] - coordonnée en Z

Translate

Translate effectue une translation de l'objet.
Syntaxe
HYP_Object.Translate( object_name|id, dx, dy, dz, transform_space );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • dx - [REAL] - translation en X.
  • dy - [REAL] - translation en Y.
  • dz - [REAL] - translation en Z.
  • transform_space - [INTEGER] - indique l'espace (ou repère) par rapport auquel on effectue la transformation:
    • 1 (TRANSFORM_SPACE_PARENT): effectue la transformation (rotation) par rapport au repère du parent.
    • 2 (TRANSFORM_SPACE_WORLD): effectue la transformation (rotation) par rapport au repère du monde.
    • 3 (TRANSFORM_SPACE_LOCAL): effectue la transformation (rotation) par rapport au repère local de l'objet.
Exemple
TRANSFORM_SPACE_WORLD = 2;
HYP_Object.Translate( "mesh_sphere", 0.0, 20.0, 0.0, TRANSFORM_SPACE_WORLD );

Rotate

Rotate effectue une rotation de l'objet.
Syntaxe
HYP_Object.Rotate( object_name|id, angle, x, y, z, transform_space );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • angle - [REAL] - angle de rotation en degrés.
  • x - [REAL] - composante X de l'axe de rotation.
  • y - [REAL] - composante Y de l'axe de rotation.
  • z - [REAL] - composante Z de l'axe de rotation.
  • transform_space - [INTEGER] - indique l'espace (ou repère) par rapport auquel on effectue la transformation:
    • 1 (TRANSFORM_SPACE_PARENT): effectue la transformation (rotation) par rapport au repère du parent.
    • 2 (TRANSFORM_SPACE_WORLD): effectue la transformation (rotation) par rapport au repère du monde.
    • 3 (TRANSFORM_SPACE_LOCAL): effectue la transformation (rotation) par rapport au repère local de l'objet.
Exemple
TRANSFORM_SPACE_PARENT = 1;
HYP_Object.Rotate( "myModel", 90.0, 0.0, 0.0, 1.0, TRANSFORM_SPACE_PARENT );

Check_AABB_Collision

Check_AABB_Collision permet de tester la collision entre 2 objets à partir de leur boîte englobante (Axis Aligned Bounding Box). La fonction retourne 1 en cas de collision et 0 dans le cas contraire.
Syntaxe
res = HYP_Object.Check_AABB_Collision( object_1_name|id1, object_2_name|id2 );
  • object_1_name - [STR127] - chaîne de caractères représentant le nom du premier objet comme spécifié dans le script XML par l'attribut name.
  • id1 - [INTEGER] - identifiant numérique du premier objet.
  • object_2_name - [STR127] - chaîne de caractères représentant le nom du second objet comme spécifié dans le script XML par l'attribut name.
  • id2 - [INTEGER] - identifiant numérique du second objet.
Exemple
res = HYP_Object.Check_AABB_Collision( "myObject1", "myObject2" );
if(res==1) then
    -- Collision: do something...
end

Check_BS_Collision

Check_BS_Collision permet de tester la collision entre 2 objets à partir de leur sphère englobante (Bounding Sphere). La fonction retourne 1 en cas de collision et 0 dans le cas contraire.
Syntaxe
res = HYP_Object.Check_BS_Collision( object_1_name|id1, object_2_name|id2 );
  • object_1_name - [STR127] - chaîne de caractères représentant le nom du premier objet comme spécifié dans le script XML par l'attribut name.
  • id1 - [INTEGER] - identifiant numérique du premier objet.
  • object_2_name - [STR127] - chaîne de caractères représentant le nom du second objet comme spécifié dans le script XML par l'attribut name.
  • id2 - [INTEGER] - identifiant numérique du second objet.
Exemple
res = HYP_Object.Check_BS_Collision( "myObject1", "myObject2" );
if(res==1) then
    -- Collision: do something...
end

SetDirection

SetDirection permet de changer la direction d'un objet en orientant l'axe des Z du repère local de l'objet.
Syntaxe
HYP_Object.SetDirection( object_name|id, new_x, new_y, new_z );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • new_x - [REAL] - coordonnée en X du vecteur direction.
  • new_y - [REAL] - coordonnée en Y du vecteur direction.
  • new_z - [REAL] - coordonnée en Z du vecteur direction.

GetDirection

GetDirection permet de récupéere le vecteur direction de l'objet. Ce vecteur est égale à l'axe des Z du repère local de l'objet.
Syntaxe
new_x, new_y, new_z = HYP_Object.GetDirection( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • new_x - [REAL] - coordonnée en X du vecteur direction.
  • new_y - [REAL] - coordonnée en Y du vecteur direction.
  • new_z - [REAL] - coordonnée en Z du vecteur direction.

SetUpdateTripodDirectionState

SetUpdateTripodDirectionState permet d'active ou de désactiver l'auto-update de la direction du tripode d'un objet. Cela evite d'avoir a calculer soi-même le vecteur direction et d'appeler la fonction SetDirection(). La direction du tripode est calculée en faisant la différence entre la position courante de l'objet et sa position à la frame précédente.
Syntaxe
HYP_Object.SetUpdateTripodDirectionState( object_name|id, state );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - active (1) ou désactive (0) l'auto-update.

GetUpdateTripodDirectionState

GetUpdateTripodDirectionState permet de récupérer l'état de l'auto-update de la direction du tripode d'un objet.
Syntaxe
state = HYP_Object.GetUpdateTripodDirectionState( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - active (1) ou désactive (0) l'auto-update.

SetPosition

SetPosition permet de changer la position d'un objet. Un objet peut être spécifié soit par son nom soit par son identifiant numérique.
Syntaxe
HYP_Object.SetPosition( object_name|id, new_x, new_y, new_z );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • new_x - [REAL] - Nouvelle position en X de l'objet.
  • new_y - [REAL] - Nouvelle position en Y de l'objet.
  • new_z - [REAL] - Nouvelle position en Z de l'objet.

SetOrientation

SetOrientation initialise l'orientation du tripode (axes locaux) de l'objet.
Syntaxe
HYP_Object.SetOrientation( object_name|id, angle, x, y, z );
ou
HYP_Object.SetOrientation( object_name|id, pitch, yaw, roll );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • angle - [REAL] - angle de rotation en degrés.
  • x - [REAL] - coordonnée en X de l'axe de rotation.
  • y - [REAL] - coordonnée en Y de l'axe de rotation.
  • z - [REAL] - coordonnée en Z de l'axe de rotation.
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X.
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y.
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z.

SetPitch

SetPitch effectue une rotation de l'objet autour de l'axe des X.
Syntaxe
HYP_Object.SetPitch( object_name|id, pitch, transform_space );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • pitch - [REAL] - angle de rotation autour de l'axe des X en degrés.
  • transform_space - [INTEGER] - indique l'espace (ou repère) par rapport auquel on effectue la transformation:
    • 1 (TRANSFORM_SPACE_PARENT): effectue la transformation (rotation) par rapport au repère du parent.
    • 2 (TRANSFORM_SPACE_WORLD): effectue la transformation (rotation) par rapport au repère du monde.
    • 3 (TRANSFORM_SPACE_LOCAL): effectue la transformation (rotation) par rapport au repère local de l'objet.

SetYaw

SetYaw effectue une rotation de l'objet autour de l'axe des Y.
Syntaxe
HYP_Object.SetYaw( object_name|id, yaw, transform_space );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • yaw - [REAL] - angle de rotation autour de l'axe des Y en degrés.
  • transform_space - [INTEGER] - indique l'espace (ou repère) par rapport auquel on effectue la transformation:
    • 1 (TRANSFORM_SPACE_PARENT): effectue la transformation (rotation) par rapport au repère du parent.
    • 2 (TRANSFORM_SPACE_WORLD): effectue la transformation (rotation) par rapport au repère du monde.
    • 3 (TRANSFORM_SPACE_LOCAL): effectue la transformation (rotation) par rapport au repère local de l'objet.

SetRoll

SetRoll effectue une rotation de l'objet autour de l'axe des Z.
Syntaxe
HYP_Object.SetRoll( object_name|id, roll, transform_space );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • roll - [REAL] - angle de rotation autour de l'axe des Z en degrés.
  • transform_space - [INTEGER] - indique l'espace (ou repère) par rapport auquel on effectue la transformation:
    • 1 (TRANSFORM_SPACE_PARENT): effectue la transformation (rotation) par rapport au repère du parent.
    • 2 (TRANSFORM_SPACE_WORLD): effectue la transformation (rotation) par rapport au repère du monde.
    • 3 (TRANSFORM_SPACE_LOCAL): effectue la transformation (rotation) par rapport au repère local de l'objet.

GetPosition

GetPosition permet de récupérer la position d'un objet.
Syntaxe
vx, vy, vz = HYP_Object.GetPosition( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • vx [REAL] - position en X de l'objet.
  • vy [REAL] - position en Y de l'objet.
  • vz [REAL] - position en Z de l'objet.

GetAbsolute_X_Axis

GetAbsolute_X_Axis permet de récupérer le vecteur X du repère local (tripode) de l'objet.
Syntaxe
x, y, z = HYP_Object.GetAbsolute_X_Axis( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • x - [REAL] - coordonnée X du vecteur unitaire le long de l'axe des X du repère de la scène.
  • y - [REAL] - coordonnée Y du vecteur unitaire le long de l'axe des Y du repère de la scène.
  • z - [REAL] - coordonnée Z du vecteur unitaire le long de l'axe des Z du repère de la scène.
Exemple
x_axis, y_axis, z_axis = HYP_Object.GetAbsolute_X_Axis( "myPlane" );

GetAbsolute_Y_Axis

GetAbsolute_Y_Axis permet de récupérer le vecteur Y du repère local (tripode) de l'objet.
Syntaxe
x, y, z = HYP_Object.GetAbsolute_Y_Axis( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • x - [REAL] - coordonnée X du vecteur unitaire le long de l'axe des X du repère de la scène.
  • y - [REAL] - coordonnée Y du vecteur unitaire le long de l'axe des Y du repère de la scène.
  • z - [REAL] - coordonnée Z du vecteur unitaire le long de l'axe des Z du repère de la scène.
Exemple
x_axis, y_axis, z_axis = HYP_Object.GetAbsolute_Y_Axis( "myPlane" );

GetAbsolute_Z_Axis

GetAbsolute_Z_Axis permet de récupérer le vecteur Z du repère local (tripode) de l'objet.
Syntaxe
x, y, z = HYP_Object.GetAbsolute_Z_Axis( object_name|id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • x - [REAL] - coordonnée X du vecteur unitaire le long de l'axe des X du repère de la scène.
  • y - [REAL] - coordonnée Y du vecteur unitaire le long de l'axe des Y du repère de la scène.
  • z - [REAL] - coordonnée Z du vecteur unitaire le long de l'axe des Z du repère de la scène.
Exemple
x_axis, y_axis, z_axis = HYP_Object.GetAbsolute_Z_Axis( "myPlane" );

SetPolygonMode

SetPolygonMode permet d'afficher les faces de l'objet (en général un mesh) en mode plein (ou solide).
Syntaxe
HYP_Object.SetPolygonMode( object_name|id, mode );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • mode - [INTEGER] - mode de rendu des polygones: WIREFRAME (1) ou SOLID (2).
Exemple
WIREFRAME = 1;
HYP_Object.SetPolygonMode( "mySphere", WIREFRAME );

SetLightingState

SetLightingState permet d'activer les calculs d'éclairage pour l'objet passé en paramètre.
Syntaxe
HYP_Object.SetLightingState( object_name|object_id, state );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - TRUE (1): activation - FALSE (0): désactivation.
Exemple
HYP_Object.SetLightingState( "mySphere", 1 );

SetNormalizationState

SetNormalizationState permet d'activer la normalization automatique des normales des vertices de l'objet. La normalisation est principalement utilisée après une mise à l'échelle de la matrice de transformation de l'objet (fonction ScaleObject()). La normalisation peut entrainer des baisse de performances, alors il faut la desactiver dès qu'elle n'est plus nécessaire.
Syntaxe
HYP_Object.SetNormalizationState( object_name|object_id, state );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - TRUE (1): activation - FALSE (0): désactivation.

SetTexturingState

SetTexturingState permet d'activer l'application de texture pour l'objet passé en paramètre.
Syntaxe
HYP_Object.SetTexturingState( object_name|object_id, state );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • state - [INTEGER] - TRUE (1): activation - FALSE (0): désactivation.

FreeAllTextures

FreeAllTextures permet de détacher toutes les textures d'un objet et de les détruire (la destruction se fera à condition qu'elles ne soient pas utilisées par d'autres objets). SetTexturingState() est implicitement appelé pour cet objet avec l'état FALSE.
Syntaxe
HYP_Object.FreeAllTextures( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

DetachAllTextures

DetachAllTextures permet de détacher toutes les textures d'un objet. Les textures sont laissées résidentes en mémoire pour une utilisation ultérieure. SetTexturingState() est implicitement appelé pour cet objet avec l'état FALSE.
Syntaxe
HYP_Object.DetachAllTextures( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

AttachTexture

AttachTexture permet d'attacher une texture à un objet (en général un mesh) sur une unité de texture précise et sur un matériau précis.
Syntaxe
HYP_Object.AttachTexture( object_name|object_id, texture_name, material_name, texture_unit );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • texture_name - [STR127] - chaîne de caractères représentant le nom de la texture comme spécifié dans le script XML par l'attribut name du node texture.
  • material_name - [STR127] - chaîne de caractères représentant le nom du matériau comme spécifié dans le script XML par l'attribut name du node material.
  • texture_unit - [INTEGER] - valeur entière représentant le numéro de l'unité de texture sur laquelle attacher la texture. La première unité de texture porte le numéro 0, la seconde 1, et ainsi de suite jusqu'au nombre max d'unités de texture supportés par le hardware graphique.
Exemple
HYP_Object.AttachTexture( "myComplexModel", "wood_tex", "wood_mat", 0 );

DetachTexture

DetachTexture permet de détacher une texture d'un objet (en général un mesh) pour une unité de texture précise et pour un matériau précis.
Syntaxe
HYP_Object.DetachTexture( object_name|object_id, texture_name, material_name, texture_unit );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • texture_name - [STR127] - chaîne de caractères représentant le nom de la texture comme spécifié dans le script XML par l'attribut name du node texture.
  • material_name - [STR127] - chaîne de caractères représentant le nom du matériau comme spécifié dans le script XML par l'attribut name du node material.
  • texture_unit - [INTEGER] - valeur entière représentant le numéro de l'unité de texture sur laquelle attacher la texture. La première unité de texture porte le numéro 0, la seconde 1, et ainsi de suite jusqu'au nombre max d'unités de texture supportés par le hardware graphique.
Exemple
HYP_Object.DetachTexture( "myComplexModel", "wood_tex", 0, "wood_mat" );

AddChild

AddChild permet d'ajouter un objet en tant qu'enfant à un objet parent.
Syntaxe
HYP_Object.AddChild( parent_name|parent_id, child_name|child_id );
  • parent_name - [STR127] - chaîne de caractères représentant le nom de l'objet parent comme spécifié dans le script XML par l'attribut name.
  • parentt_id - [INTEGER] - identifiant de l'objet parent.
  • child_name - [STR127] - chaîne de caractères représentant le nom de l'objet enfant comme spécifié dans le script XML par l'attribut name.
  • child_id - [INTEGER] - identifiant de l'objet enfant.
Exemple
HYP_Object.AddChild( "Main_Gizmo", "Sphere_Model" );

RemoveChild

RemoveChild permet d'enlever un objet d'un objet parent.
Syntaxe
HYP_Object.RemoveChild( parent_name|parent_id, child_name|child_id );
  • parent_name - [STR127] - chaîne de caractères représentant le nom de l'objet parent comme spécifié dans le script XML par l'attribut name.
  • parent_id - [INTEGER] - identifiant de l'objet parent.
  • child_name - [STR127] - chaîne de caractères représentant le nom de l'objet enfant comme spécifié dans le script XML par l'attribut name.
  • child_id - [INTEGER] - identifiant de l'objet enfant.
Exemple
HYP_Object.RemoveChild( "Main_Gizmo", "Sphere_Model" );

GetDistanceBetween

GetDistanceBetween permet d'obtenir la distance entre les tripodes de 2 objets.
Syntaxe
distance = HYP_Object.GetDistanceBetween( object_name_1|object_1_id, object_name_2|object_2_id );
  • object_1_name - [STR127] - chaîne de caractères représentant le nom du premier objet comme spécifié dans le script XML par l'attribut name.
  • object_1_id - [INTEGER] - identifiant du premier objet.
  • object_2_name - [STR127] - chaîne de caractères représentant le nom du second objet comme spécifié dans le script XML par l'attribut name.
  • object_2_id - [INTEGER] - identifiant du second objet.
Exemple
dist = HYP_Object.GetDistanceBetween( "fly_camera", "SphereModel" );
if dist<200.0 then
    -- Do something...
end

SetScale

SetScale permet d'appliquer un facteur d'échelle à la matrice interne de transformation de l'objet au même titre que HYP_Object.SetPitch() ou HYP_Object.SetPosition(). Si l'objet est éclairé, il est important de renormaliser les normales aprés coup en appelant HYP_Object.SetNormalizationState().
Syntaxe
HYP_Object.SetScale( object_name|object_id, scale_x, scale_y, scale_z );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • scale_x - [REAL] - facteur d'échelle en X.
  • scale_y - [REAL] - facteur d'échelle en Y.
  • scale_z - [REAL] - facteur d'échelle en Z.
Exemple
HYP_Object.SetScale( "mySphere", 0.8, 0.8, 0.8 );
HYP_Object.SetNormalizationState("mySphere", 1);

PushTripod

PushTripod permet de sauvegarder dans un registre interne à l'objet son tripode. Un appel plus tard à PopTripod() permettra de restorer le tripode à sa valeur d'origine.
Syntaxe
HYP_Object.PushTripod( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

PopTripod

PopTripod est la fonction duale de HYP_PushTripod(): elle permet de restorer le tripode d'un objet qui a été préalablement sauvegardé par un appel à HYP_PushTripod().
Syntaxe
HYP_Object.PopTripod( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant numérique de l'objet.

UpdateGeometryData

UpdateGeometryData permet de mettre à jour les structures internes d'un objet après avoir effectué des modifications sur sa géométrie. Cette fonction est surtout utilisée avec des meshes.
Syntaxe
HYP_Object.UpdateGeometryData( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

SetRelativeTransformMatrix

SetRelativeTransformMatrix permet de mettre à jour la matrice de transformation relative d'un objet. Cette matrice suit les conventions OpenGL: vecteurs colonnes et multiplication des matrices de droite à gauche. Dans l'étape finale du pipeline de transformation, cette matrice sera concaténée avec celles de la hiérarchie de l'objet pour former la matrice de transformation absolue.
|x'|   | m0   m4    m8    m12 |   |x|
|y'| = | m1   m5    m9    m13 | * |y|
|z'|   | m2   m6    m10   m14 |   |z|
|1 |   | m3   m7    m11   m15 |   |1|

        --    --    --    --
         X     Y     Z    Position
        axis  axis  axis
Syntaxe
HYP_Object.SetRelativeTransformMatrix( object_name | object_id, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • m0 à m15 - [REAL] - les 16 éléments de la matrice 4x4.

Render

Render permet d'effectuer le rendu d'un objet.
Syntaxe
HYP_Object.Render( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

Update

Update permet d'effectuer la mise à jour d'un objet. Parmi les mises à jour que comprend cette phase, on peut citer la mise à jour des matrices de transformation internes, le calcul des normales et la la mise à jour du shader interne de gestion du rendu (lighting, texturing, blending, etc.).
Syntaxe
HYP_Object.Update( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

SetUpdateState

SetUpdateState active ou désactive l'update d'un objet.
Syntaxe
HYP_Object.SetUpdateState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetUpdateState

GetUpdateState récupère l'état d'update d'un objet.
Syntaxe
state = HYP_Object.GetUpdateState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetLightingState

GetLightingState permet de savoir si les calculs d'éclairage sont activés pour cet objet.
Syntaxe
state = HYP_Object.GetLightingState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetTexturingState

GetTexturingState permet de savoir si l'application de texture est activé pour cet objet.
Syntaxe
state = HYP_Object.GetTexturingState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

SetBlendingState

SetBlendingState active ou désactive le blending des couleurs d'un objet.
Syntaxe
HYP_Object.SetBlendingState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetBlendingState

GetBlendingState permet de savoir si le blending est activé pour cet objet.
Syntaxe
state = HYP_Object.GetBlendingState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

SetBlendingFactors

SetBlendingFactors permet de changer les facteurs de blending source et destination d'un objet.
Syntaxe
HYP_Object.SetBlendingFactors( object_name | object_id, sf, df );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • sf - [INTEGER] - facteur de blending source.
  • df - [INTEGER] - facteur de blending destination.
Les facteurs de blending sont les suivants:
  • BLENDING_FACTOR_ZERO = 0;
  • BLENDING_FACTOR_ONE = 1;
  • BLENDING_FACTOR_SRC_ALPHA = 2;
  • BLENDING_FACTOR_ONE_MINUS_DST_ALPHA = 3;
  • BLENDING_FACTOR_ONE_MINUS_DST_COLOR = 4;
  • BLENDING_FACTOR_ONE_MINUS_SRC_ALPHA = 5;
  • BLENDING_FACTOR_DST_COLOR = 6;
  • BLENDING_FACTOR_DST_ALPHA = 7;
  • BLENDING_FACTOR_SRC_COLOR = 8;
  • BLENDING_FACTOR_ONE_MINUS_SRC_COLOR = 9;

GetBlendingFactors

GetBlendingFactors permet de récupérer les facteurs de blending source et destination d'un objet.
Syntaxe
sf, df = HYP_Object.GetBlendingFactors( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • sf - [INTEGER] - facteur de blending source (voir SetBlendingFactors).
  • df - [INTEGER] - facteur de blending destination (voir SetBlendingFactors).

SetBackFaceCullingState

SetBackFaceCullingState active ou désactive le rendu des faces arrières des polygones d'un objet.
Syntaxe
HYP_Object.SetBackFaceCullingState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetBackFaceCullingState

GetBackFaceCullingState permet de savoir si le rendu des faces arrières des polygones est activé pour cet objet.
Syntaxe
state = HYP_Object.GetBackFaceCullingState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

SetColor

SetColor permet de changer la couleur d'un objet. Cette couleur n'est utilisé que lorsque le calcul d'éclairage est désactivé. Cette fonction est surtout utile pour spécifier la couleur d'une primitive.
Syntaxe
HYP_Object.SetColor( object_name | object_id, r, g, b, a );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetLineWidth

SetLineWidth permet de changer l'épaisseur de rendu d'une ligne. Valable pour les rendus en fil de fer.
Syntaxe
HYP_Object.SetLineWidth( object_name | object_id, width );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • width - [REAL] - epaisseur de la ligne

SetPickingState

SetPickingState active ou désactive la prise en compte de cet object lors d'un picking.
Syntaxe
HYP_Object.SetPickingState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

GetPickingState

GetPickingState retourne l'état de picking.
Syntaxe
state = HYP_Object.GetPickingState( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

AbsoluteToLocal

AbsoluteToLocal permet de transformer un jeu de coordonnées absolues en coordonnées locales.
Syntaxe
loc_x, loc_y, loc_z = HYP_Object.AbsoluteToLocal( object_name | object_id, abs_x, abs_y, abs_z );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • abs_x, abs_y, abs_z - [REAL] - coordonnées dans le repère absolu (repère du monde).
  • loc_x, loc_y, loc_z - [REAL] - coordonnées dans le repère local de l'objet.

SetAlphaMappedState

SetAlphaMappedState permet d'ajouter un objet dans une liste speciale d'objets qui seront triés dans l'espace de la camera avant d'être rendus. Le rendu de cette liste s'effectue après les objets opaques.
Syntaxe
HYP_Object.SetAlphaMappedState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

SetDepthBufferWritingState

SetDepthBufferWritingState permet d'activer oude désactiver les écritures dans le z-buffer.
Syntaxe
HYP_Object.SetDepthBufferWritingState( object_name | object_id, state );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.
  • state - [INTEGER] - 1 (activation) ou 0 (désactivation).

ComputeNormals

ComputeNormals permet de calculer les normales des vertices.
Syntaxe
HYP_Object.ComputeNormals( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

ComputeTangentSpace

ComputeTangentSpace permet de calculer les vecteurs normaux de l'espace tangent de chaque vertex. Utile pour le bump mapping.
Syntaxe
HYP_Object.ComputeTangentSpace( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

AverageNormals

AverageNormals permet de moyenner les normales des vertices.
Syntaxe
HYP_Object.AverageNormals( object_name | object_id );
  • object_id - [INTEGER] - identifiant numérique de l'objet.
  • object_name - [STR127] - nom de l'objet.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des systèmes de particules

API Hyperion/LUA: fonctions de manipulation des systèmes de particules

La librairie HYP_ParticleSystem permet d'agir sur les différents systèmes de particules créés dans le script XML.
HYP_ParticleSystem.DisableEmitterEmission
HYP_ParticleSystem.SetEmitterSpawnVecMax
HYP_ParticleSystem.SetEmitterSpawnVecMin
HYP_ParticleSystem.Disable
HYP_ParticleSystem.EnableEmitterEmission
HYP_ParticleSystem.Enable
HYP_ParticleSystem.SetEmitterMasterObject

SetEmitterSpawnVecMax

SetEmitterSpawnVecMax permet de spécifier la valeur maximale du vecteur qui contrôle le cône d'émission des particules. Cette fonction est utilisable avec un émetteur de type POINT ou LINE.
Syntaxe
HYP_ParticleSystem.SetEmitterSpawnVecMax( emitter_name, spawn_x, spawn_y, spawn_z );
  • emitter_name - [STR127] - nom de l'émetteur de particules comme spécifié dans le script XML par l'attribut name.
  • spawn_x - [REAL] - coordonnée X du spawn vecteur.
  • spawn_y - [REAL] - coordonnée Y du spawn vecteur.
  • spawn_z - [REAL] - coordonnée Z du spawn vecteur.
Exemple
...
-- Cone d'émission centré en Y.
HYP_ParticleSystem.SetEmitterSpawnVecMax( "pointEmitter", 0.2, 1.0, 0.2 );
HYP_ParticleSystem.SetEmitterSpawnVecMin( "pointEmitter", -0.2, 0.2, -0.2 );
...

SetEmitterSpawnVecMin

SetEmitterSpawnVecMin permet de spécifier la valeur minimale du vecteur qui contrôle le cône d'émission des particules. Cette fonction est utilisable avec un émetteur de type POINT ou LINE.
Syntaxe
HYP_ParticleSystem.SetEmitterSpawnVecMin( emitter_name, spawn_x, spawn_y, spawn_z );
  • emitter_name - [STR127] - nom de l'émetteur de particules comme spécifié dans le script XML par l'attribut name.
  • spawn_x - [REAL] - coordonnée X du spawn vecteur.
  • spawn_y - [REAL] - coordonnée Y du spawn vecteur.
  • spawn_z - [REAL] - coordonnée Z du spawn vecteur.
Exemple
...
-- Cone d'émission centré en Y.
HYP_ParticleSystem.SetEmitterSpawnVecMaxs( "pointEmitter", 0.2, 1.0, 0.2 );
HYP_ParticleSystem.SetEmitterSpawnVecMin( "pointEmitter", -0.2, 0.2, -0.2 );
...

Enable

Enable permet d'activer le système de particules passé en paramètre.
Syntaxe
HYP_ParticleSystem.Enable( name );
  • name - [STR127] - nom du système de particules comme spécifié dans le script XML par l'attribut name.

Disable

HYP_Disable permet de désactiver le système de particules passé en paramètre.
Syntaxe
HYP_ParticleSystem.Disable( name );
  • name - [STR127] - nom du système de particules comme spécifié dans le script XML par l'attribut name.
Remarques
La désactivation d'un système de particules entraîne la disparition instantanée de toutes les particules affichées à l'écran. Voir DisableEmitterEmission pour arrêter la création de nouvelles particules sans faire disparaîtres les particules déjà créées.

EnableEmitterEmission

EnableEmitterEmission permet d'activer la création de nouvelles particules pour un émetteur donné.
Syntaxe
HYP_ParticleSystem.EnableEmitterEmission( name );
  • name - [STR127] - nom de l'émetteur de particules comme spécifié dans le script XML par l'attribut name.

DisableEmitterEmission

DisableEmitterEmission permet d'arrêter la création de nouvelles particules sans faire disparaîtres les particules déjà créées.
Syntaxe
HYP_ParticleSystem.DisableEmitterEmission( name );
  • name - [STR127] - nom de l'émetteur de particules comme spécifié dans le script XML par l'attribut name.

SetEmitterMasterObject

SetEmitterMasterObject permet de spécifier le l'objet maître pour un émetteur de particules. L'objet maître est l'objet qui pemet d'initialiser les particules et c'est principalement sa forme qui est importante (point, disque, ligne, mesh).
Syntaxe
HYP_ParticleSystem.SetEmitterMasterObject( emitter_name, master_object_name );
  • emitter_name - [STR127] - nom du système de particules comme spécifié dans le script XML par l'attribut name.
  • master_object_name - [STR127] - nom de l'objet maître comme spécifié dans le script XML par l'attribut name.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation du moteur physique

API Hyperion/LUA: fonctions de manipulation du moteur physique

La librairie HYP_Nx_Physics permet d'interagir sur les objets et le moteur physique. Le moteur physique dont il est question est le NovodeX Physics Engine. Pour plus d'information: http://www.novodex.com.

Toutes les fonctions ayant un rapport avec le NovodeX Engine sont préfixées par HYP_Nx_ où Nx est l'abréviation de NovodeX.

Au niveau du NovodeX Engine, les objets de la scène sont appelés acteurs. Donc pour rester cohérent avec le NovodeX Engine, les fonctions manipulants des objets oZone3D remplacent le terme object par celui d'actor.
HYP_Nx_Physics.SetSceneGravity
HYP_Nx_Physics.GetSceneGravity
HYP_Nx_Physics.SetActorLinearVelocity
HYP_Nx_Physics.GetActorLinearVelocity
HYP_Nx_Physics.SetActorLinearDamping
HYP_Nx_Physics.GetActorLinearDamping
HYP_Nx_Physics.SetActorAngularVelocity
HYP_Nx_Physics.GetActorAngularVelocity
HYP_Nx_Physics.SetActorAngularDamping
HYP_Nx_Physics.GetActorAngularDamping
HYP_Nx_Physics.SetActorMass
HYP_Nx_Physics.GetActorMass
HYP_Nx_Physics.SetActorGlobalPosition
HYP_Nx_Physics.GetActorGlobalPosition
HYP_Nx_Physics.SetActorGlobalOrientation
HYP_Nx_Physics.AddForceToActor
HYP_Nx_Physics.AddTorqueToActor
HYP_Nx_Physics.SetActorSleepLinearVelocity
HYP_Nx_Physics.GetActorSleepLinearVelocity
HYP_Nx_Physics.SetActorSleepAngularVelocity
HYP_Nx_Physics.GetActorSleepAngularVelocity
HYP_Nx_Physics.ForceActorToSleep
HYP_Nx_Physics.WakeUpActor
HYP_Nx_Physics.IsActorSleeping
HYP_Nx_Physics.AddBoxActorToScene
HYP_Nx_Physics.AddSphereActorToScene
HYP_Nx_Physics.RemoveActorFromScene
HYP_Nx_Physics.GetActorCollisionState
HYP_Nx_Physics.SetPhysicsEnginePauseSimultationState
HYP_Nx_Physics.SetActorKinematicState
HYP_Nx_Physics.GetActorKinematicState
HYP_Nx_Physics.SetActorInertiaTensor
HYP_Nx_Physics.GetActorInertiaTensor

SetSceneGravity

SetSceneGravity permet de changer le vecteur gravité de la scène. Par defaut, la gravité de la scène vaut <0.0, -9.81, 0.0> ce qui correspond à la gravité terrestre.
Syntaxe
HYP_Nx_Physics.SetSceneGravity( x, y, z );
  • x - [REAL] - coordonnée en X du vecteur gravité.
  • y - [REAL] - coordonnée en Y du vecteur gravité.
  • z - [REAL] - coordonnée en Z du vecteur gravité.

GetSceneGravity

GetSceneGravity permet de récupérer le vecteur gravité de la scène.
Syntaxe
x, y, z = HYP_Nx_Physics.GetSceneGravity();
  • x - [REAL] - coordonnée en X du vecteur gravité.
  • y - [REAL] - coordonnée en Y du vecteur gravité.
  • z - [REAL] - coordonnée en Z du vecteur gravité.

SetActorLinearVelocity

SetActorLinearVelocity permet de changer la vitesse linéaire d'un objet.
Syntaxe
HYP_Nx_Physics.SetActorLinearVelocity( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur vitesse.
  • y - [REAL] - coordonnée en Y du vecteur vitesse.
  • z - [REAL] - coordonnée en Z du vecteur vitesse.

GetActorLinearVelocity

GetActorLinearVelocity permet de récupérer la vitesse linéaire d'un objet.
Syntaxe
x, y, z = HYP_Nx_Physics.GetActorLinearVelocity( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur vitesse.
  • y - [REAL] - coordonnée en Y du vecteur vitesse.
  • z - [REAL] - coordonnée en Z du vecteur vitesse.

SetActorLinearDamping

SetActorLinearDamping permet de changer le facteur d'amortissement de la vitesse linéaire d'un objet. Ce facteur correspond aux différentes pertes d'énergie qui diminuent la vitesse.
Syntaxe
HYP_Nx_.SetActorLinearDamping( name | id, d );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • d - [REAL] - facteur d'amortissement.

GetActorLinearDamping

GetActorLinearDamping permet de récupérer le facteur d'amortissement de la vitesse linéaire d'un objet.
Syntaxe
d = HYP_Nx_Physics.GetActorLinearDamping( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • d - [REAL] - facteur d'amortissement.

SetActorAngularVelocity

SetActorAngularVelocity permet de changer la vitesse angulaire d'un objet.
Syntaxe
HYP_Nx_Physics.SetActorAngularVelocity( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur vitesse.
  • y - [REAL] - coordonnée en Y du vecteur vitesse.
  • z - [REAL] - coordonnée en Z du vecteur vitesse.

GetActorAngularVelocity

GetActorAngularVelocity permet de récupérer la vitesse angulaire d'un objet.
Syntaxe
x, y, z = HYP_Nx_Physics.GetActorAngularVelocity( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur vitesse.
  • y - [REAL] - coordonnée en Y du vecteur vitesse.
  • z - [REAL] - coordonnée en Z du vecteur vitesse.

SetActorAngularDamping

SetActorAngularDamping permet de changer le facteur d'amortissement de la vitesse agulaire d'un objet. Ce facteur correspond aux différentes pertes d'énergie qui diminuent la vitesse.
Syntaxe
HYP_Nx_Physics.SetActorAngularDamping( name | id, d );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • d - [REAL] - facteur d'amortissement.

GetActorAngularDamping

GetActorAngularDamping permet de récupérer le facteur d'amortissement de la vitesse angulaire d'un objet.
Syntaxe
d = HYP_Nx_Physics.GetActorAngularDamping( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • d - [REAL] - facteur d'amortissement.

SetActorMass

SetActorMass permet de changer la masse d'un objet.
Syntaxe
HYP_Nx_Physics.SetActorMass( name | id, m );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • m - [REAL] - masse.

GetActorMass

GetActorMass permet de changer la masse d'un objet.
Syntaxe
m = HYP_Nx_Physics.GetActorMass( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • m - [REAL] - masse.

SetActorGlobalPosition

SetActorGlobalPosition permet de changer la position absolue (par rapport au repère du monde) d'un objet.
Syntaxe
HYP_Nx_Physics.SetActorGlobalPosition( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X de la position.
  • y - [REAL] - coordonnée en Y de la position.
  • z - [REAL] - coordonnée en Z de la position.

GetActorGlobalPosition

GetActorGlobalPosition permet de récupérer la position absolue d'un objet.
Syntaxe
x, y, z = HYP_Nx_Physics.GetActorGlobalPosition( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X de la position.
  • y - [REAL] - coordonnée en Y de la position.
  • z - [REAL] - coordonnée en Z de la position.

SetActorGlobalOrientation

SetActorGlobalOrientation permet de changer l'orientation absolue d'un objet.
Syntaxe
HYP_Nx_Physics.SetActorGlobalOrientation( name | id, angle, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • angle - [REAL] - angle de rotation autour de l'axe définit par x, y et z.
  • x - [REAL] - coordonnée en X de l'axe de rotation.
  • y - [REAL] - coordonnée en Y de l'axe de rotation.
  • z - [REAL] - coordonnée en Z de l'axe de rotation.

AddForceToActor

AddForceToActor permet d'appliquer une force (mouvement linéaire) à un objet.
Syntaxe
HYP_Nx_Physics.AddForceToActor( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur force.
  • y - [REAL] - coordonnée en Y du vecteur force.
  • z - [REAL] - coordonnée en Z du vecteur force.

AddTorqueToActor

AddTorqueToActor permet d'appliquer un couple (mouvement de rotation) à un objet.
Syntaxe
HYP_Nx_Physics.AddTorqueToActor( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur couple.
  • y - [REAL] - coordonnée en Y du vecteur couple.
  • z - [REAL] - coordonnée en Z du vecteur couple.

SetActorSleepLinearVelocity

SetActorSleepLinearVelocity permet de changer le seuil de vitesse linéaire d'entrée en sommeil d'un objet. Lorsque la vitesse de l'objet descend en dessous de ce seuil, l'acteur (ou objet) n'est plus pris en compte dans le moteur physique ce qui a pour principal effet d'economiser des resources de calcul. Une fois mis en sommeil, un acteur peut être réveillé par le moteur physique (en cas de collision par exemple) ou par appel de la fonction HYP_Nx_WakeUpActor().
Syntaxe
HYP_Nx_Physics.SetActorSleepLinearVelocity( name | id, threshold );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • threshold - [REAL] - seuil.

GetActorSleepLinearVelocity

GetActorSleepLinearVelocity permet de récupérer le seuil de vitesse linéaire d'entrée en sommeil d'un objet.
Syntaxe
threshold = HYP_Nx_Physics.GetActorSleepLinearVelocity( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • threshold - [REAL] - seuil.

SetActorSleepAngularVelocity

SetActorSleepAngularVelocity permet de changer le seuil de vitesse angulaire d'entrée en sommeil d'un objet. Lorsque la vitesse de l'objet descend en dessous de ce seuil, l'acteur (ou objet) n'est plus pris en compte dans le moteur physique ce qui a pour principal effet d'economiser des resources de calcul. Une fois mis en sommeil, un acteur peut être réveillé par le moteur physique (en cas de collision par exemple) ou par appel de la fonction HYP_Nx_WakeUpActor().
Syntaxe
HYP_Nx_Physics.SetActorSleepAngularVelocity( name | id, threshold );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • threshold - [REAL] - seuil.

GetActorSleepAngularVelocity

GetActorSleepAngularVelocity permet de récupérer le seuil de vitesse angulaire d'entrée en sommeil d'un objet.
Syntaxe
threshold = HYP_Nx_Physics.GetActorSleepAngularVelocity( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • threshold - [REAL] - seuil.

ForceActorToSleep

ForceActorToSleep force un acteur à entrer en sommeil.
Syntaxe
HYP_Nx_Physics.ForceActorToSleep( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.

HYP_Nx_WakeUpActor

HYP_Nx_WakeUpActor reveille un acteur.
Syntaxe
HYP_Nx_Physics.WakeUpActor( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.

IsActorSleeping

IsActorSleeping recupère l'état de sommeil d'un acteur.
Syntaxe
state = HYP_Nx_Physics.IsActorSleeping( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • state - [INTEGER] - 1: l'acteur dort - 0: l'acteur est réveillé.

AddBoxActorToScene

AddBoxActorToScene permet d'ajouter un acteur, dont le volume englobant est une boîte, à la scène du moteur physique.
Syntaxe
HYP_Nx_Physics.AddBoxActorToScene( name|id, actor_type, [density] );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • actor_type - [INTEGER] - type de l'acteur:
    • ACTOR_STATIC: 1
    • ACTOR_DYNAMIC: 2
    • ACTOR_KINEMATIC: 4
  • density - [REAL] - densité volumique. Par défaut cette valeur est de 10.0.

AddSphereActorToScene

AddSphereActorToScene permet d'ajouter un acteur, dont le volume englobant est une sphère, à la scène du moteur physique.
Syntaxe
HYP_Nx_Physics.AddSphereActorToScene( name|id, actor_type, [density] );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • actor_type - [INTEGER] - type de l'acteur:
    • ACTOR_STATIC: 1
    • ACTOR_DYNAMIC: 2
    • ACTOR_KINEMATIC: 4
  • density - [REAL] - densité volumique. Par défaut cette valeur est de 10.0.

RemoveActorFromScene

RemoveActorFromScene permet de retirer de la scène du moteur physique un acteur.
Syntaxe
HYP_Nx_Physics.RemoveActorFromScene( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.

GetActorCollisionState

GetActorCollisionState permet de savoir si un acteur est entré en collision pour la frame courante.
Syntaxe
state = HYP_Nx_Physics.GetActorCollisionState( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • state - [BOOLEAN] - état de collision - 1: collision - 0: pas de collision.

SetPhysicsEnginePauseSimultationState

SetPhysicsEnginePauseSimultationState permet de mettre en pause (ou suspendre) la simulation physique. Pratique par exemple pour analyser finement le déroulement d'une collision.
Syntaxe
HYP_Nx_Physics.SetPhysicsEnginePauseSimultationState( state );
  • state - [BOOLEAN] - 1: pause - 0: pas de pause.

SetActorKinematicState

SetActorKinematicState permet de passer un acteur de l'état dynamique à l'état cinématique et vice-versa. Un acteur cinématique peut appliquer des forces des acteurs dynamiques. Par contre un acteur dynamique ne peut pas appliquer une force à un acteur cinématique. Un acteur cinématique est pratique par exemple pour simuler une personne qui agit avec son environnement mais qui ne subit pas de forces extérieures (genre First Person Shooter).
Syntaxe
HYP_Nx_Physics.SetActorKinematicState( name | id, state );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • state - [BOOLEAN] - état cinématique - 1: vrai - 0: faux.

GetActorKinematicState

GetActorKinematicState permet de connaître l'état cinématique d'un acteur.
Syntaxe
state = HYP_Nx_Physics.GetActorKinematicState( name | id );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • state - [BOOLEAN] - état cinématique - 1: vrai - 0: faux.

SetActorInertiaTensor

SetActorInertiaTensor permet de spécifier le tenseur d'inertie d'un objet.
Syntaxe
HYP_Nx_Physics.AddTorqueToActor( name | id, x, y, z );
  • name - [STR127] - nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant de l'objet issu par exemple d'une fonction de clonage.
  • x - [REAL] - coordonnée en X du vecteur couple.
  • y - [REAL] - coordonnée en Y du vecteur couple.
  • z - [REAL] - coordonnée en Z du vecteur couple.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie Sonore

API Hyperion/LUA: Playlist

La libraire HYP_Playlist permet de gérer plusieurs soundtracks (ajout / suppression / lecture des pistes audio un peu comme les playlists de winamp ;) ).
HYP_Playlist.Create
HYP_Playlist.Destroy
HYP_Playlist.AddTrack
HYP_Playlist.RemoveTrack
HYP_Playlist.SetCurrentTrack
HYP_Playlist.GetCurrentTrackId
HYP_Playlist.GetCurrentTrackName
HYP_Playlist.Play
HYP_Playlist.Stop
HYP_Playlist.SetOptions

Create

Create permet de créer une nouvelle playlist.
Syntaxe
id = HYP_Playlist.Create( name );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist nouvellement créée.

Destroy

Destroy permet de détruire une playlist.
Syntaxe
HYP_Playlist.Destroy( name|id );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.

AddTrack

AddTrack permet d'ajouter une piste audio à une playlist.
Syntaxe
id_st = HYP_Playlist.AddTrack( name|id, soundtrack_name|soundtrack_id  );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • soundtrack_name - [STR127] - nom du soudtrack. Ce nom peut être aussi le chemin d'accès relatif au fichier audio.
  • soundtrack_id - [INTEGER] - identificateur du soudtrack. Ce dernier peut avoir été chargé soit dans le code XML soit par la fonction HYP_Sound.Load().
  • id_st - [INTEGER] - identificateur du soudtrack nouvellement ajouté.
Exemple
id_pl = HYP_Playlist.Create( "myCoolPlaylist" );
id_st1 = HYP_Playlist.AddTrack( id_pl, "data/mp3/first.mp3"  );
id_st2 = HYP_Playlist.AddTrack( id_pl, "data/mp3/second.mp3"  );
HYP_Playlist.Play( id_pl );

RemoveTrack

RemoveTrack permet de retirer une piste audio d'une playlist.
Syntaxe
HYP_Playlist.RemoveTrack( name|id, soundtrack_name|soundtrack_id  );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • soundtrack_name - [STR127] - nom du soudtrack.
  • soundtrack_id - [INTEGER] - identificateur du soudtrack.

SetCurrentTrack

SetCurrentTrack permet de changer de piste audio pour la lecture.
Syntaxe
HYP_Playlist.SetCurrentTrack( name|id, soundtrack_name|soundtrack_id  );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • soundtrack_name - [STR127] - nom du soudtrack.
  • soundtrack_id - [INTEGER] - identificateur du soudtrack.

GetCurrentTrackId

GetCurrentTrackId permet de récupérer l'identificateur de la piste audio en cours de lecture.
Syntaxe
id_st = HYP_Playlist.GetCurrentTrackId( name|id );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • id_st - [INTEGER] - identificateur du soudtrack.

GetCurrentTrackName

GetCurrentTrackName permet de récupérer le nom de la piste audio en cours de lecture.
Syntaxe
name_st = HYP_Playlist.GetCurrentTrackName( name|id );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • name_st - [INTEGER] - nom du soudtrack.

Play

Play permet de demarrer la lecture des pistes audio de la playlist.
Syntaxe
HYP_Playlist.Play( name|id );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.

Stop

Stop permet de stopper la lecture des pistes audio de la playlist.
Syntaxe
HYP_Playlist.Stop( name|id );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
SetOptions

SetOptions

SetOptions permet de changer le mode de fonctionnement de la playlist.
Syntaxe
HYP_Playlist.SetOptions( name|id, options );
  • name - [STR127] - nom de la playlist.
  • id - [INTEGER] - identificateur de la playlist.
  • options - [INTEGER] - options de la playlist:
    • PLAYLIST_TRACKS_MANAGEMENT_OFF = 1
    • PLAYLIST_TRACKS_MANAGEMENT_ON = 2
    • PLAYLIST_LOOP_ON = 3
    • PLAYLIST_LOOP_OFF = 4
    • PLAYLIST_DISPLAY_CUR_TRACK_NAME_ON = 6
    • PLAYLIST_DISPLAY_CUR_TRACK_NAME_OFF = 7
    • PLAYLIST_ENABLED = 8
    • PLAYLIST_DISABLED = 9
    Ces options ne posent pas de problème sauf pour PLAYLIST_TRACKS_MANAGEMENT_ON/PLAYLIST_TRACKS_MANAGEMENT_OFF. PLAYLIST_TRACKS_MANAGEMENT_ON laisse Hyperion gérer l'enchainement des différentes pistes audio. C'est la valeur par défaut. PLAYLIST_TRACKS_MANAGEMENT_OFF implique ensuite d'utiliser HYP_Sound.IsTrackFinished() et d'autres fonctions de la HYP_Sound lib pour gérer soi même la lecture des pistes audio.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des primitives

API Hyperion/LUA: fonctions de manipulation des primitives

La librairie HYP_Primitive effectue des opérations générales sur les primitives.
HYP_Primitive.SetBoxSize
HYP_Primitive.SetBoxVertexPosition
HYP_Primitive.GetBoxVertexPosition
HYP_Primitive.SetBoxVertexColor
HYP_Primitive.GetBoxVertexColor
HYP_Primitive.PushBoxVertices
HYP_Primitive.PopBoxVertices
HYP_Primitive.SetQuadVertexPosition
HYP_Primitive.GetQuadVertexPosition
HYP_Primitive.SetQuadVertexColor
HYP_Primitive.GetQuadVertexColor
HYP_Primitive.CreateLine
HYP_Primitive.SetLineVertexPosition
HYP_Primitive.GetLineVertexPosition
HYP_Primitive.SetLineVertexColor
HYP_Primitive.GetLineVertexColor
HYP_Primitive.CreateBox
HYP_Primitive.SetBoxVertexTexCoords
HYP_Primitive.GetBoxVertexTexCoords
HYP_Primitive.CreateQuad
HYP_Primitive.SetQuadVertexTexCoords
HYP_Primitive.GetQuadVertexTexCoords
HYP_Primitive.CreateTriangle
HYP_Primitive.SetTriangleVertexPosition
HYP_Primitive.GetTriangleVertexPosition
HYP_Primitive.SetTriangleVertexColor
HYP_Primitive.GetTriangleVertexColor
HYP_Primitive.SetTriangleVertexTexCoords
HYP_Primitive.GetTriangleVertexTexCoords
HYP_Primitive.CreateDisc
HYP_Primitive.SetDiscParams
HYP_Primitive.GetDiscParams
HYP_Primitive.CreateSphere
HYP_Primitive.SetSphereParams
HYP_Primitive.GetSphereParams
HYP_Primitive.Destroy

SetBoxSize

SetBoxSize permet de changer les dimensions d'une primitive de type BOX.
Syntaxe
HYP_Primitive.SetBoxSize( name | id, w, h, d );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • w - [REAL] - largeur (width).
  • h - [REAL] - hauteur (height).
  • d - [REAL] - profondeur (depth).

PushBoxVertices

PushBoxVertices permet de sauvegarder les 8 vertices de la primitive box avant de leur appliquer des transformations. Dans la version actuelle, la pile de sauvegarde ne possède qu'un niveau. Donc le deuxième appel à HYP_PrimitiveBoxPushVertices() restera sans effet.
Syntaxe
HYP_Primitive.PushBoxVertices( name | id );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
Exemple
-- On commence par restaurer les vertices.
--
HYP_Primitive.PopBoxVertices( "myBox" );

-- On les sauvegarde.
--
HYP_Primitive.PushBoxVertices( "myBox" );

-- Effectuer les transformations:
index=0;
x=0.0;
y=15.0;
z=10.0;
HYP_Primitive.SetBoxVertexPosition("myBox", index, x, y, z );

PopBoxVertices

BoxPopVertices permet de restaurer les 8 vertices de la primitive box après leur avoir appliqué des transformations. Dans la version actuelle, la pile de sauvegarde ne possède qu'un niveau. Donc le deuxième appel à HYP_PrimitiveBoxPopVertices() restera sans effet.
Syntaxe
HYP_Primitive.PopBoxVertices( name | id );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.

SetBoxVertexPosition

SetBoxVertexPosition permet de changer la position d'un vertex particulier d'une primitive de type BOX.
Syntaxe
HYP_Primitive.SetBoxVertexPosition( name | id, index, x, y, z );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 7.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.

GetBoxVertexPosition

GetBoxVertexPosition permet de récupérer la position d'un vertex particulier d'une primitive de type BOX.
Syntaxe
x, y, z = HYP_Primitive.GetBoxVertexPosition( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 7.
  • x - [REAL] - coordonnée en X.
  • y - [REAL] - coordonnée en Y.
  • z - [REAL] - coordonnée en Z.

SetBoxVertexColor

SetBoxVertexColor permet de changer la couleur d'un vertex particulier d'une primitive de type BOX.
Syntaxe
HYP_Primitive.SetBoxVertexColor( name | id, index, r, g, b, a );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 7.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetBoxVertexColor

GetBoxVertexColor permet de récupérer la couleur d'un vertex particulier d'une primitive de type BOX.
Syntaxe
r, g, b, a = HYP_Primitive.GetBoxVertexColor( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 7.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetQuadVertexPosition

SetQuadVertexPosition permet de changer la position d'un vertex particulier d'une primitive de type QUAD.
Syntaxe
HYP_Primitive.SetQuadVertexPosition( name | id, index, x, y, z );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 4.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.

GetQuadVertexPosition

GetQuadVertexPosition permet de récupérer la position d'un vertex particulier d'une primitive de type QUAD.
Syntaxe
x, y, z = HYP_Primitive.GetQuadVertexPosition( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 4.
  • x - [REAL] - coordonnée en X.
  • y - [REAL] - coordonnée en Y.
  • z - [REAL] - coordonnée en Z.

SetQuadVertexColor

SetQuadVertexColor permet de changer la couleur d'un vertex particulier d'une primitive de type QUAD.
Syntaxe
HYP_Primitive.SetQuadVertexColor( name | id, index, r, g, b, a );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 4.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetQuadVertexColor

GetQuadVertexColor permet de récupérer la couleur d'un vertex particulier d'une primitive de type QUAD.
Syntaxe
r, g, b, a = HYP_Primitive.GetQuadVertexColor( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive spécifié dans le script XML par l'attribut name.
  • id - [INTEGER] - identifiant numérique de l'objet.
  • index - [INTEGER] - index du vertex à changer. Valeur comprise entre 0 et 4.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

CreateLine

CreateLine permet de créer une primitive ligne.
Syntaxe
id = HYP_Primitive.CreateLine( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetLineVertexPosition

SetLineVertexPosition permet de changer la position d'un des deux vertices d'une primitive ligne.
Syntaxe
HYP_Primitive.SetLineVertexPosition( name | id, index, x, y, z );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 ou 1.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.

GetLineVertexPosition

GetLineVertexPosition permet de récupérer la position d'un des deux vertices d'une primitive ligne.
Syntaxe
x, y, z = HYP_Primitive.GetLineVertexPosition( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 ou 1.
  • x - [REAL] - coordonnée en X.
  • y - [REAL] - coordonnée en Y.
  • z - [REAL] - coordonnée en Z.

SetLineVertexColor

SetLineVertexColor permet de changer la couleur des vertices d'une primitive de type LINE.
Syntaxe
HYP_Primitive.SetLineVertexColor( name | id, index, r, g, b, a );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 ou 1.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetLineVertexColor

GetLineVertexColor permet de récupérer la couleur d'un des deux vertices d'une primitive de type LINE.
Syntaxe
r, g, b, a = HYP_Primitive.GetLineVertexColor( name | id, index );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 ou 1.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

CreateBox

CreateBox permet de créer une primitive BOX.
Syntaxe
id = HYP_Primitive.CreateBox( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetBoxVertexTexCoords

SetBoxVertexTexCoords permet de changer les coordonnées de texture u et v des vertices d'une primitive de type BOX.
Syntaxe
HYP_Primitive.SetBoxVertexTexCoords( name | id, index, texture_unit, u, v );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 8.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

GetBoxVertexTexCoords

GetBoxVertexTexCoords permet de récupérer les coordonnées de texture u et v des vertices d'une primitive de type BOX.
Syntaxe
u, v = HYP_Primitive.GetBoxVertexTexCoords( name | id, index, texture_unit );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 8.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

CreateQuad

CreateQuad permet de créer une primitive QUAD.
Syntaxe
id = HYP_Primitive.CreateQuad( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetQuadVertexTexCoords

SetQuadVertexTexCoords permet de changer les coordonnées de texture u et v des vertices d'une primitive de type QUAD.
Syntaxe
HYP_Primitive.SetQuadVertexTexCoords( name | id, index, texture_unit, u, v );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 4.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

GetQuadVertexTexCoords

GetQuadVertexTexCoords permet de récupérer les coordonnées de texture u et v des vertices d'une primitive de type BOX.
Syntaxe
u, v = HYP_Primitive.GetQuadVertexTexCoords( name | id, index, texture_unit );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 4.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

CreateTriangle

CreateTriangle permet de créer une primitive TRIANGLE.
Syntaxe
id = HYP_Primitive.CreateTriangle( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetTriangleVertexTexCoords

SetTriangleVertexTexCoords permet de changer les coordonnées de texture u et v des vertices d'une primitive de type TRIANGLE.
Syntaxe
HYP_Primitive.SetTriangleVertexTexCoords( name | id, index, texture_unit, u, v );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 3.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

GetTriangleVertexTexCoords

GetTriangleVertexTexCoords permet de récupérer les coordonnées de texture u et v des vertices d'une primitive de type TRIANGLE.
Syntaxe
u, v = HYP_Primitive.GetTriangleVertexTexCoords( name | id, index, texture_unit );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex. Valeur: 0 à 2.
  • texture_unit - [INTEGER] - unité de texture. Valeur: 0 à 8.
  • u - [REAL] - nouvelle coordonnée u.
  • v - [REAL] - nouvelle coordonnée v.

SetTriangleVertexPosition

SetTriangleVertexPosition permet de changer la position des vertices d'une primitive de type TRIANGLE.
Syntaxe
HYP_Primitive.SetTriangleVertexPosition( name | id, index, x, y, z );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 à 2.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.

GetTriangleVertexPosition

GetTriangleVertexPosition permet de récupérer la position des vertices d'une primitive de type TRIANGLE.
Syntaxe
x, y, z = HYP_Primitive.GetTriangleVertexPosition( name | id, index );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 à 2.
  • x - [REAL] - coordonnée en X.
  • y - [REAL] - coordonnée en Y.
  • z - [REAL] - coordonnée en Z.

SetTriangleVertexColor

SetTriangleVertexColor permet de changer la couleur des vertices d'une primitive de type TRIANGLE.
Syntaxe
HYP_Primitive.SetTriangleVertexColor( name | id, index, r, g, b, a );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 à 2.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

GetTriangleVertexColor

GetTriangleVertexColor permet de récupérer la couleur des vertices d'une primitive de type TRIANGLE.
Syntaxe
r, g, b, a = HYP_Primitive.GetTriangleVertexColor( name | id, index );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • index - [INTEGER] - index du vertex à changer. Valeur: 0 à 2.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

CreateDisc

CreateDisc permet de créer une primitive DISC.
Syntaxe
id = HYP_Primitive.CreateDisc( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetDiscParams

SetDiscParams permet de changer les paramètres d'une primitive de type DISC.
Syntaxe
HYP_Primitive.SetDiscParams( name | id, inner_radius, outer_radius, num_sides );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • inner_radius - [REAL] - rayon interieur du disque.
  • outer_radius - [REAL] - rayon extérieur du disque.
  • num_sides - [INTEGER] - nombre de segments formant le contour du disque.

GetDiscParams

GetDiscParams permet de récupérer les paramètres d'une primitive de type DISC.
Syntaxe
inner_radius, outer_radius, num_sides = HYP_Primitive.GetDiscParams( name | id );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • inner_radius - [REAL] - rayon interieur du disque.
  • outer_radius - [REAL] - rayon extérieur du disque.
  • num_sides - [INTEGER] - nombre de segments formant le contour du disque.

CreateSphere

CreateSphere permet de créer une primitive SPHERE.
Syntaxe
id = HYP_Primitive.CreateSphere( [name] );
  • name - [STR127] - chaîne de caractères représentant le nom de la primitive. Optionnel.
  • id - [INTEGER] - identifiant numérique de la primitive créée.

SetSphereParams

SetSphereParams permet de changer les paramètres d'une primitive de type SPHERE.
Syntaxe
HYP_Primitive.SetSphereParams( name | id, inner_radius, outer_radius, num_slices );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • inner_radius - [REAL] - rayon interieur de la sphère.
  • outer_radius - [REAL] - rayon extérieur de la sphère.
  • num_slices - [INTEGER] - nombre de disques composants la sphère.

GetSphereParams

GetSphereParams permet de récupérer les paramètres d'une primitive de type SPHERE.
Syntaxe
inner_radius, outer_radius, num_sides = HYP_Primitive.GetSphereParams( name | id );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.
  • inner_radius - [REAL] - rayon interieur de la sphère.
  • outer_radius - [REAL] - rayon extérieur de la sphère.
  • num_slices - [INTEGER] - nombre de disques composants la sphère.

Destroy

Destroy permet de détuire une primitive quelconque créée statiquement dans le code XML ou dynamiquement dans le code LUA.
Syntaxe
HYP_Primitive.Destroy( name | id );
  • name - [STR127] - nom de la primitive.
  • id - [INTEGER] - identifiant numérique de la primitive.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des projectors

API Hyperion/LUA: fonctions de manipulation des projectors

La librairie HYP_Projector effectue des opérations générales sur les projectors.
HYP_Projector.Enable
HYP_Projector.Disable
HYP_Projector.SetPosition
HYP_Projector.SetOrientation

SetPosition

SetPosition permet de spécifier une nouvelle position au projecteur.
Syntaxe
HYP_Projector.SetPosition( projo_name, x, y, z );
  • projo_name - [STR127] - chaîne de caractères représentant le nom du projecteur que l'on souhaite activer comme spécifié dans le script XML par l'attribut name.
  • x - [REAL] - coordonnée en X de la position.
  • y - [REAL] - coordonnée en Y de la position.
  • z - [REAL] - coordonnée en Z de la position.

SetOrientation

SetOrientation permet de spécifier une nouvelle orientation au projecteur.
Syntaxe
HYP_Projector.SetOrientation( projo_name, pitch, yaw, roll );
ou
HYP_Projector.SetOrientation( projo_name, angle, x, y, z );
  • projo_name - [STR127] - chaîne de caractères représentant le nom du projecteur que l'on souhaite activer comme spécifié dans le script XML par l'attribut name.
  • pitch - [REAL] - angle de rotation en degrés autour de l'axe des X.
  • yaw - [REAL] - angle de rotation en degrés autour de l'axe des Y.
  • roll - [REAL] - angle de rotation en degrés autour de l'axe des Z.
  • angle - [REAL] - angle de rotation en degrés autour de l'axe spécifié par le vecteur x, y, z.
  • x - [REAL] - coordonnée en X de l'axe de rotation.
  • y - [REAL] - coordonnée en Y de l'axe de rotation.
  • z - [REAL] - coordonnée en Z de l'axe de rotation.

Enable

Enable permet d'activer un projecteur.
Syntaxe
HYP_Projector.Enable( projo_name );
  • projo_name - [STR127] - chaîne de caractères représentant le nom du projecteur que l'on souhaite activer comme spécifié dans le script XML par l'attribut name.

Disable

Disable permet de désactiver un projecteur.
Syntaxe
HYP_Projector.Disable( projo_name );
  • projo_name - [STR127] - chaîne de caractères représentant le nom du projecteur que l'on souhaite activer comme spécifié dans le script XML par l'attribut name.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation de la scène

API Hyperion/LUA: fonctions de manipulation de la scène

La librairie HYP_Scene effectue des opérations générales sur la scène.
HYP_Scene.ActiveBkgImage
HYP_Scene.SetBackgroundColor
HYP_Scene.EnableFog
HYP_Scene.DisableFog
HYP_Scene.Render
HYP_Scene.SetRenderTarget
HYP_Scene.SetRenderTargetTexture
HYP_Scene.AddObject
HYP_Scene.DisableGroup
HYP_Scene.EnableGroup
HYP_Scene.RemoveObject

HYP_Scene.PickMesh
HYP_Scene.FboGetDefault
HYP_Scene.FboBind
HYP_Scene.FboSetRenderDestination
HYP_Scene.FboAttachTexture
HYP_Scene.FboAllocReadBufferRgba32f
HYP_Scene.FboFreeReadBufferRgba32f
HYP_Scene.FboGetValueReadBufferRgba32f
HYP_Scene.NvSliGetNumGpus
HYP_Scene.NvSliSetState
HYP_Scene.NvSliGetState
HYP_Scene.NvSliSetMode
HYP_Scene.NvSliGetMode
HYP_Scene.GetRayOriginAndDirection
HYP_Scene.LoadXml

NvSliGetNumGpus

NvSliGetNumGpus permet de connaitre le nombre de GPUs en SLI.
Syntaxe
num_sli_gpus = HYP_Scene.NvSliGetNumGpus();
  • num_sli_gpus - [INTEGER] - nombre de GPUs en SLI.

NvSliSetState

NvSliSetState permet d'activer ou de désactiver le mode SLI des cartes nVidia.
Syntaxe
HYP_Scene.NvSliSetState( state );
  • state - [INTEGER] - active (1) ou désactive (0) le SLI.

NvSliGetState

NvSliGetState permet de récupérer l'état actif ou non du mode SLI des cartes nVidia.
Syntaxe
state = HYP_Scene.NvSliGetState();
  • state - [INTEGER] - SLI activé (1) ou désactivé (0).

NvSliSetMode

NvSliSetMode permet de régler le mode de rendu des frames lorsque le SLI est activé.
Syntaxe
HYP_Scene.NvSliSetMode( mode );
  • mode - [INTEGER] - mode de rendu des frames. Les valeurs suivantes sont acceptées:
    • 0 (AUTO_SELECT)
    • 1 (AFR)
    • 2 (SFR)
    • 4 (COMPATIBILITY)

NvSliGetMode

NvSliGetMode permet de connaître le mode actuel de rendu des frames lorsque le SLI est activé.
Syntaxe
mode = HYP_Scene.NvSliGetMode();
  • mode - [INTEGER] - mode de rendu des frames. Les valeurs suivantes sont acceptées:
    • 0 (AUTO_SELECT)
    • 1 (AFR)
    • 2 (SFR)
    • 4 (COMPATIBILITY)

FboGetDefault

FboGetDefault permet de récupérer l'identifiant numérique du FBO créé par défaut dans Hyperion.
Syntaxe
fbo = HYP_Scene.FboGetDefault();
  • fbo - [INTEGER] - identifiant numerique du FBO par défaut. Si fbo vaut 0, alors la carte graphique ne supporte pas les FBO (Frame Buffer Object).

FboBind

FboBind permet d'activer le FBO spécifié. Ce FBO remplacera le frame buffer courant pour toutes les opérations de lecture et d'ecriture dans les différents buffers (color, depth et stencil).
Syntaxe
HYP_Scene.FboBind( fbo );
  • fbo - [INTEGER] - identifiant numerique du FBO à activer. Si fbo vaut 0, alors le frame buffer de base est activé (affichage à l'ecran).

FboSetRenderDestination

FboSetRenderDestination permet de spécifier quel buffer de couleur du FBO couramment activé servira pour les opérations d'ecriture.
Syntaxe
HYP_Scene.FboSetRenderDestination( buffer );
  • buffer - [INTEGER] - identifiant numerique du buffer de couleur:
    • FBO_COLOR_ATTACHMENT0 = 0 - valeur part défaut
    • FBO_COLOR_ATTACHMENT1 = 1
    • FBO_COLOR_ATTACHMENT2 = 2
    • FBO_COLOR_ATTACHMENT3 = 3
Exemple
fbo = HYP_Scene.FboGetDefault();
HYP_Scene.FboBind( fbo );
FBO_COLOR_ATTACHMENT1 = 1;
HYP_Scene.FboSetRenderDestination( FBO_COLOR_ATTACHMENT1 );
HYP_Scene.FboBind( 0 );

FboAttachTexture

FboAttachTexture permet de spécifier une texture à attacher au FBO actif.
Syntaxe
HYP_Scene.FboAttachTexture( texture_name | tid, attach_point );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numerique de la texture.
  • attach_point - [INTEGER] - identifiant numerique du point d'attache de la texture dans le FBO:
    • FBO_COLOR_ATTACHMENT0 = 0
    • FBO_COLOR_ATTACHMENT1 = 1
    • FBO_COLOR_ATTACHMENT2 = 2
    • FBO_COLOR_ATTACHMENT3 = 3
Exemple
fbo = HYP_Scene.FboGetDefault();
HYP_Scene.FboBind( fbo );
FBO_COLOR_ATTACHMENT0 = 0;
HYP_Scene.FboAttachTexture( "my_rtt_tex", FBO_COLOR_ATTACHMENT0 );
HYP_Scene.FboBind( 0 );

FboAllocReadBufferRgba32f

FboAllocReadBufferRgba32f alloue la mémoire et y stocke les données d'un des buffers de couleur du FBO actif.
Syntaxe
HYP_Scene.FboAllocReadBufferRgba32f( buffer_source, w, h );
  • buffer_source - [INTEGER] - identifiant numerique du buffer source dans le FBO:
    • FBO_COLOR_ATTACHMENT0 = 0
    • FBO_COLOR_ATTACHMENT1 = 1
    • FBO_COLOR_ATTACHMENT2 = 2
    • FBO_COLOR_ATTACHMENT3 = 3
  • w - [INTEGER] - largeur du buffer. Correspond à la largeur de la texture qui y est attachée.
  • h - [INTEGER] - hauteur du buffer. Correspond à la largeur de la texture qui y est attachée.

FboFreeReadBufferRgba32f

FboFreeReadBufferRgba32f permet de libérer la mémoire précédemment allouée par FboAllocReadBufferRgba32f().
Syntaxe
HYP_Scene.FboFreeReadBufferRgba32f();

FboGetValueReadBufferRgba32f

FboGetValueReadBufferRgba32f lit les données dans le buffer alloué et initialisé par FboAllocReadBufferRgba32f().
Syntaxe
r, g, b, a = HYP_Scene.FboGetValueReadBufferRgba32f( offset );
  • offset - [INTEGER] - offset dans le buffer de la donnée à lire. L'offset est compris entre 0 et texture_width*texture_height.
  • r - [REAL] - valeur de la donnée contenue dans la composante rouge au format IEEE 754 32 bits sur nVidia et 24 bits sur ATI.
  • g - [REAL] - valeur de la donnée contenue dans la composante verte au format IEEE 754 32 bits sur nVidia et 24 bits sur ATI.
  • b - [REAL] - valeur de la donnée contenue dans la composante bleua au format IEEE 754 32 bits sur nVidia et 24 bits sur ATI.
  • a - [REAL] - valeur de la donnée contenue dans la composante alpha au format IEEE 754 32 bits sur nVidia et 24 bits sur ATI.
Exemple
-- Active Hyperion default frame buffer.
--
fbo = HYP_Scene.FboGetDefault();
HYP_Scene.FboBind( fbo );

--
-- Do here some code to update color buffer 0.
--

-- Alloc memory for reading.
--
FBO_COLOR_ATTACHMENT0 = 0;
w = 256;
h = 256;
HYP_Scene.FboAllocReadBufferRgba32f( FBO_COLOR_ATTACHMENT0, w, h );

-- Read color buffer 0.
--
offset = 0;
size = tex_width * tex_height;

while( offset < size ) do
    r, g, b, a = HYP_Scene.FboGetValueReadBufferRgba32f( offset );
    --
    -- Do here something with r, g, b and a.
    --
    offset = offset + 1;
end

-- Free memory
--
HYP_Scene.FboFreeReadBufferRgba32f();

-- Restore window frame buffer.
--
HYP_Scene.FboBind( 0 );

PickMesh

PickMesh permet de faire du picking de mesh c'est à dire de récupérer l'identifiant du premier se trouvant sous le curseur de la souris. Dans le cas de la fonction HYP_PickMesh(), l'identifiant du mesh est simplement le nom du mesh.
Syntaxe
mesh_name = HYP_Scene.PickMesh();
  • mesh_name - [STR127] - nom du mesh sélectionné. Si aucun mesh n'est sélectionné, HYP_PickMesh retourne la chaine vide "".

AddObject

AddObject permet d'ajouter à l'arbre de scène un objet crée dans un script lua (par HYP_Object.Clone ou une autre fonction).
Syntaxe
HYP_Scene.AddObject( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant de l'objet retourné par les fonctions telles que HYP_CloneModel().
Remarque
La fonction HYP_Object.Clone() ajoute automatiquement le clone dans la scène.

RemoveObject

RemoveObject permet d'ôter de l'arbre de scène un objet. Cet objet peut ensuite être ajouter en tant qu'enfant à un autre objet avec HYP_Object.AddChild().
Syntaxe
HYP_Scene.RemoveObject( object_name|object_id );
  • object_name - [STR127] - chaîne de caractères représentant le nom de l'objet comme spécifié dans le script XML par l'attribut name.
  • object_id - [INTEGER] - identifiant de l'objet retourné par les fonctions telles que HYP_CloneModel().

EnableGroup

EnableGroup permet d'activer tous les objets appartenant à un groupe.
Syntaxe
HYP_Scene.EnableGroup( group_name );
  • group_name - [STR127] - chaîne de caractères représentant le nom du groupe comme spécifié dans le script XML par l'attribut group dans noeuds (audio, mesh, primitive, ...).
Exemple
HYP_Scene.EnableGroup( "objects_room1" );

DisableGroup

DisableGroup permet de désactiver tous les objets appartenant à un groupe.
Syntaxe
HYP_Scene.DisableGroup( group_name );
  • group_name - [STR127] - chaîne de caractères représentant le nom du groupe comme spécifié dans le script XML par l'attribut group dans noeuds (audio, mesh, primitive, ...).

Render

Render permet d'effectuer un rendu de la scene dans la cible spécifiée par la fonction HYP_Scene.SetRenderTarget().
Syntaxe
HYP_Scene.Render();
Exemple
-- Render to texture example:
--
RENDER_TARGET_COLOR_BUFFER = 1;
RENDER_TARGET_TEXTURE = 2;
HYP_Scene.SetRenderTarget( RENDER_TARGET_TEXTURE );
HYP_Scene.SetRenderTargetTexture( "myRTT_Tex" );
HYP_Scene.Render();

-- Restore default render target.
--
HYP_Scene.SetRenderTarget( RENDER_TARGET_COLOR_BUFFER );

SetRenderTarget

SetRenderTarget permet de changer la couleur de fond de la scène 3D.
Syntaxe
HYP_Scene.SetRenderTarget( target );
  • target - [INTEGER] - destination du rendu de la scène:
    • target=1 : rendu dans le color-buffer (valeur par défaut)
    • target=2 : rendu dans dans une texture 2D. Dans ce cas, la texture 2D doit être spécifiée par la fonction SetRenderTargetTexture().

SetRenderTargetTexture

SetRenderTargetTexture permet de spécifier la texture dans laquelle sera rendu la scène lorsque HYP_Scene.SetRenderTarget() est appellée avec target=2.
Syntaxe
HYP_Scene.SetRenderTargetTexture( texture_name );
  • texture_name - [STR127] - nom de la texture comme spécifié par l'attribut name dans le script XML.

SetBackgroundColor

SetBackgroundColor permet de changer la couleur de fond de la scène 3D.
Syntaxe
HYP_Scene.SetBackgroundColor( r, g, b );
  • r - [CLAMPED_REAL] - composante rouge de la couleur. Valeur réelle comprise entre 0.0 et 1.0.
  • g - [CLAMPED_REAL] - composante verte de la couleur. Valeur réelle comprise entre 0.0 et 1.0.
  • b - [CLAMPED_REAL] - composante bleue de la couleur. Valeur réelle comprise entre 0.0 et 1.0.
Exemple
HYP_Scene.SetBackgroundColor( 0.2, 0.2, 0.3 );

ActiveBkgImage

ActiveBkgImage permet d'activer une image de fond parmi celles qui ont été chargées dans le noeud scene par l'instruction scene_background_image.
Syntaxe
HYP_Scene.ActiveBkgImage( index );
  • index - [INTEGER] - idex de l'image de fond à activer. La première image possède l'index 0 et la dernière l'index N-1 (Nmax=100).
Exemple
-- Activation de la 3eme image.
HYP_Scene.ActiveBkgImage( 2 );

EnableFog

EnableFog permet d'activer le brouillard. Les paramètres du brouillard doivent au préalable avoir été initialisés dans le noeud scene (voir fog).
Syntaxe
HYP_Scene.EnableFog();

DisableFog

DisableFog permet de désactiver le brouillard.
Syntaxe
HYP_Scene.DisableFog();

GetRayOriginAndDirection

GetRayOriginAndDirection retourne le rayon lancé dans la scène depuis une position sur l'écran. Le repère écran est le suivant:
+Y
|
|
|
|
+------------ +X
0,0
Syntaxe
ray_orig_x, ray_orig_y, ray_orig_z, ray_dir_x, ray_dir_y, ray_dir_z = HYP_Scene.GetRayOriginAndDirection( screen_x, screen_y );
  • screen_x et screen_y - [INTEGER] - position en coordonnées d'écran.
  • ray_orig_x, ray_orig_y, ray_orig_z - [REAL] - position d'origine du rayon dans la scène.
  • ray_dir_x, ray_dir_y, ray_dir_z - [REAL] - direction du rayon dans la scène.

LoadXml

LoadXml permet de charger un nouveau fichier de scène xml. Utile pour couper une démo en plusieurs parties ou pour enchainer plusieurs demos.
Syntaxe
HYP_Scene.LoadXml( filename );
  • filename - [STR255] - nom du fichier xml relatif au script courant.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des scripts

API Hyperion/LUA: Fonctions de manipulation des scripts

La librairie HYP_Script permet de piloter le lancement, l'activation ou la désactivation de scripts autonomes. Un script est autonome s'il a été créé, dans le code source XML, avec un noeud <script>.
HYP_Script.Exec
HYP_Script.Enable
HYP_Script.Disable

Exec

Exec permet de lancer l'exécution d'un autre script.
Syntaxe
HYP_Script.Exec( name );
  • name - [STR127] - nom du script comme spécifié dans le script XML par l'attribut name.

Enable

Enable permet d'activer un script qui à été précédement désactivé avec la fonction HYP_Script.Disable().
Syntaxe
HYP_Script.Enable( name );
  • name - [STR127] - nom du script comme spécifié dans le script XML par l'attribut name.

Disable

Disable permet de désactiver (ou de suspendre) un script en cours de fonctionnement et possédant un run_mode fixé à EXECUTE_EACH_FRAME.
Syntaxe
HYP_Script.Disable( script_name );
  • name - [STR127] - nom du script comme spécifié dans le script XML par l'attribut name.

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des shaders programmables

API Hyperion/LUA: fonctions de manipulation des shaders programmables

La librairie HYP_GPUShader assure a gestion des vertex et pixel shaders (shaders programmables).
HYP_GPUShader.Activate
HYP_GPUShader.Desactivate

HYP_GPUShader.SetConstant_1i
HYP_GPUShader.SetConstant_2i
HYP_GPUShader.SetConstant_3i
HYP_GPUShader.SetConstant_4i

HYP_GPUShader.AllocArray_1iv
HYP_GPUShader.SetArrayElement_1iv
HYP_GPUShader.AllocArray_2iv
HYP_GPUShader.SetArrayElement_2iv
HYP_GPUShader.AllocArray_3iv
HYP_GPUShader.SetArrayElement_3iv
HYP_GPUShader.AllocArray_4iv
HYP_GPUShader.SetArrayElement_4iv

HYP_GPUShader.SetConstant_1f
HYP_GPUShader.SetConstant_2f
HYP_GPUShader.SetConstant_3f
HYP_GPUShader.SetConstant_4f

HYP_GPUShader.AllocArray_1fv
HYP_GPUShader.SetArrayElement_1fv
HYP_GPUShader.AllocArray_2fv
HYP_GPUShader.SetArrayElement_2fv
HYP_GPUShader.AllocArray_3fv
HYP_GPUShader.SetArrayElement_3fv
HYP_GPUShader.AllocArray_4fv
HYP_GPUShader.SetArrayElement_4fv

HYP_GPUShader.SetConstant_4x4f

SetConstant_{1|2|3|4}i

SetConstant_{1|2|3|4}i permet de créer ou de mettre à jour une variable uniforme de type vecteur {1|2|3|4}D entier. Le nom de cette variable uniforme doit exister dans le code source du shader.
Syntaxe
HYP_GPUShader.SetConstant_1i( shader_name, uniform_name, x );
HYP_GPUShader.SetConstant_2i( shader_name, uniform_name, x, y );
HYP_GPUShader.SetConstant_3i( shader_name, uniform_name, x, y, z );
HYP_GPUShader.SetConstant_4i( shader_name, uniform_name, x, y, z, w );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • x, y, z, w - [INTEGER] - valeur des composantes de la variable uniforme.
Exemple
HYP_GPUShader.SetConstant_1i( "skin_shader", "skin_type", 3 );

SetConstant_{1|2|3|4}f

SetConstant_{1|2|3|4}f permet de créer ou de mettre à jour une variable uniforme de type vecteur {1|2|3|4}D réel. Le nom de cette variable uniforme doit exister dans le code source du shader.
Syntaxe
HYP_GPUShader.SetConstant_1f( shader_name, uniform_name, x );
HYP_GPUShader.SetConstant_2f( shader_name, uniform_name, x, y );
HYP_GPUShader.SetConstant_3f( shader_name, uniform_name, x, y, z );
HYP_GPUShader.SetConstant_4f( shader_name, uniform_name, x, y, z, w );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • x, y, z, w - [REAL] - valeur des composantes de la variable uniforme.
Exemple
HYP_GPUShader.SetConstant_1f( "skin_shader", "opacity", 0.74 );

SetConstant_4x4f

SetConstant_4x4f permet de passer au shader une constante de type matrice 4x4. Le nom de la constante doit exister dans le code source du shader. Cette matrice respecte la convention OpenGL (matrice colonne - vecteurs colonnes):
|x'|   | m_0  m_4  m_8   m_12 |   |x|
|y'| = | m_1  m_5  m_9   m_13 | * |y|
|z'|   | m_2  m_6  m_10  m_14 |   |z|
|1 |   | m_3  m_7  m_11  m_15 |   |1|

        <--> <-->  <-->  <-->
         X     Y     Z   Position
        axis  axis  axis
Syntaxe
HYP_GPUShader.SetConstant_4x4f( shader_name, constant_name, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 );
  • shader_name - [STR127] - chaîne de caractères représentant le nom du shader auquel on passe la constante.
  • constant_name - [STR64] - chaîne de caractères représentant le nom de la constante.
  • m0 à m15 - [REAL] - coefficients de la matrice 4x4.

Activate

Activate permet d'activer un gpu shader. Tous ce qui sera rendu par la suite utilisera ce shader. Activate est à utiliser pour créer dynamiquement des variables uniforms.
Syntaxe
HYP_GPUShader.Activate( shader_name );
  • shader_name - [STR127] - nom du shader.
Exemple
-- Activate the shader.
//
HYP_GPUShader.Activate( "myShader" );

-- Set the color map.
--
HYP_GPUShader.SetConstant_1i( "myShader", "colorMap", 0 );

-- We have finish so we can desactivate the shader.
--
HYP_GPUShader.Desactivate( "myShader" );

Desactivate

Desactivate permet de désactiver un gpu shader précédemment activé par Activate.
Syntaxe
HYP_GPUShader.Desactivate( shader_name );
  • shader_name - [STR127] - nom du shader.

AllocArray_{1|2|3|4}iv

AllocArray_{1|2|3|4}iv permet d'allouer un tableau de vecteurs {1|2|3|4}D d'entiers afin de créer une variable de type uniform array.
Syntaxe
HYP_GPUShader.AllocArray_1iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_2iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_3iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_4iv( shader_name, uniform_name, count );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • count - [INTEGER] - nombre de vecteurs du tableau.
Exemple
HYP_GPUShader.AllocArray_1iv( "convolutionShader", "kernel", 9 );

SetArrayElement_{1|2|3|4}iv

SetArrayElement_{1|2|3|4}iv permet d'initialiser un élément d'un uniform array.
Syntaxe
HYP_GPUShader.SetArrayElement_1iv( shader_name, uniform_name, index, x );
HYP_GPUShader.SetArrayElement_2iv( shader_name, uniform_name, index, x, y );
HYP_GPUShader.SetArrayElement_3iv( shader_name, uniform_name, index, x, y, z );
HYP_GPUShader.SetArrayElement_4iv( shader_name, uniform_name, index, x, y, z, w );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • index - [INTEGER] - index de l'élément dans le tableau.
  • x, y, z, w - [INTEGER] - valeur du vecteur élément.
Exemple
HYP_GPUShader.AllocArray_1iv( "convolutionShader", "kernel", 9 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 0, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 1, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 2, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 3, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 4, 4.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 5, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 6, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 7, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 8, 1.0 );

AllocArray_{1|2|3|4}fv

AllocArray_{1|2|3|4}fv permet d'allouer un tableau de vecteurs {1|2|3|4}D de réels afin de créer une variable de type uniform array.
Syntaxe
HYP_GPUShader.AllocArray_1fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_2fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_3fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_4fv( shader_name, uniform_name, count );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • count - [INTEGER] - nombre de vecteurs du tableau.
Exemple
HYP_GPUShader.AllocArray_2fv( "convolutionShader", "offset", 9 );

SetArrayElement_{1|2|3|4}fv

SetArrayElement_{1|2|3|4}fv permet d'initialiser un élément d'un uniform array.
Syntaxe
HYP_GPUShader.SetArrayElement_1fv( shader_name, uniform_name, index, x );
HYP_GPUShader.SetArrayElement_2fv( shader_name, uniform_name, index, x, y );
HYP_GPUShader.SetArrayElement_3fv( shader_name, uniform_name, index, x, y, z );
HYP_GPUShader.SetArrayElement_4fv( shader_name, uniform_name, index, x, y, z, w );
  • shader_name - [STR127] - le nom du shader.
  • uniform_name - [STR64] - nom de la variable uniforme.
  • index - [INTEGER] - index de l'élément dans le tableau.
  • x, y, z, w - [REAL] - valeur du vecteur élément.
Exemple
HYP_GPUShader.AllocArray_2fv( "convolutionShader", "offset", 9 );

local image_width = 0.0;
local image_height = 0.0;

image_width, image_height = HYP_Texture.GetDimensions( "wallpaper" );

local step_w = 1.0/image_width;
local step_h = 1.0/image_height;

HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 0, -step_w, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 1, 0.0, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 2, step_w, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 3, -step_w, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 4, 0.0, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 5, step_w, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 6, -step_w, step_h);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 7, 0.0, step_h);
HYP_GPUShader.SetArrayElement_2fv("convolutionShader", "offset", 8, step_w, step_h);

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Fonctions de manipulation des skyboxes

API Hyperion/LUA: fonctions de manipulation des skyboxes

Ces fonctions effectuent des opérations générales sur les skyboxes.
HYP_SetActiveSkybox

HYP_SetActiveSkybox

HYP_SetActiveSkybox permet d'activer une skybox. Toutes les autres skyboxes seront alors désactivées automatiquement.
Syntaxe
HYP_SetActiveSkybox( name );
  • name
    Chaîne de caractères représentant le nom de la skybox comme spécifié dans le script XML par skybox_name. Longueur max: 127 caractères.
Exemple
-- test de HYP_SetActiveSkybox.
HYP_SetActiveSkybox( "mountains" );

Hyperion - Guide de Référence
Copyright (C)2004-2005 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des textures

API Hyperion/LUA: fonctions de manipulation des textures

La librairie HYP_Texture effectue des opérations générales sur les textures.
HYP_Texture.SetAddressingMode
HYP_Texture.SetFilteringAnisotropicValue
HYP_Texture.SetFilteringMode
HYP_Texture.SetFunction
HYP_Texture.Save
HYP_Texture.LoadTex2D
HYP_Texture.LoadTex2DAvi
HYP_Texture.Create
HYP_Texture.Destroy
HYP_Texture.SetName
HYP_Texture.SetValueTex1DByteRgb
HYP_Texture.SetValueTex1DFloatRgba
HYP_Texture.SetValueTex2DByteRgb
HYP_Texture.SetValueTex2DFloatRgba
HYP_Texture.GetValueTex1DByteRgb
HYP_Texture.GetValueTex1DFloatRgba
HYP_Texture.GetValueTex2DByteRgb
HYP_Texture.GetValueTex2DFloatRgba
HYP_Texture.GetDimensions
HYP_Texture.SetTransformMatrix
HYP_Texture.GetTransformMatrix
HYP_Texture.PlayStopAVI
HYP_Texture.GetAVINumFrames
HYP_Texture.GetAVIMpf
HYP_Texture.GetAVICurrentTime
HYP_Texture.SetAVICurrentFrame
HYP_Texture.GetAVICurrentFrame
HYP_Texture.GetIdFromName

GetDimensions

GetDimensions permet de récupérer les dimensions d'une texture.
Syntaxe
w, h, d = HYP_Texture.GetDimensions( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • w - [INTEGER] - largeur de la texture.
  • h - [INTEGER] - hauteur de la texture.
  • d - [INTEGER] - profondeur de la texture.

LoadTex2D

LoadTex2D permet de charger une texture 2D depuis le disque dur.
Syntaxe
tid = HYP_Texture.LoadTex2D( filename, pixel_format, compresss );
  • filename - [STR255] - nom du fichier de texture en adressage relatif par rapport au script XML principal.
  • pixel_format - [INTEGER] - format de pixel de la texture:
    • RGBA_FLOAT_PIXEL_FORMAT = 1;
    • RGB_BYTE_PIXEL_FORMAT = 2;
    • RGBA_32F_PIXEL_FORMAT = 4;
  • compress - [INTEGER] - active (1) ou désactive (0) la compression de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture créée.
Exemple
RGB_BYTE_PIXEL_FORMAT = 2;
tid = HYP_Texture.LoadTex2D("data/textures/wood.jpg", RGB_BYTE_PIXEL_FORMAT, 0 );

LoadTex2DAvi

LoadTex2DAvi permet de charger une texture animée de type fichier vidéo AVI.
Syntaxe
tid = HYP_Texture.LoadTex2DAvi( avi_filename );
  • avi_filename - [STR255] - nom du fichier de texture en adressage relatif par rapport au script XML principal.
  • tid - [INTEGER] - identifiant numérique de la texture créée.
Exemple
tid = HYP_Texture.LoadTex2DAvi("data/animated_textures/water.avi" );

Create

Create permet de charger une texture 2D depuis le disque dur.
Syntaxe
tid = HYP_Texture.Create( type, pixel_format, w, h, d );
  • type - [INTEGER] - type de la texture:
    • TEXTURE_1D = 1;
    • TEXTURE_2D = 2;
    • TEXTURE_RECTANGLE_2D = 4;
  • pixel_format - [INTEGER] - format de pixel de la texture:
    • RGBA_FLOAT_PIXEL_FORMAT = 1;
    • RGB_BYTE_PIXEL_FORMAT = 2;
    • RGBA_32F_PIXEL_FORMAT = 4;
  • w - [INTEGER] - largeur de la texture (pour texture 1D / 2D et RECT_2D).
  • h - [INTEGER] - hauteur de la texture (pour texture 2D et RECT_2D).
  • d - [INTEGER] - profondeur de la texture (pour texture 3D - non implémenté).
  • tid - [INTEGER] - identifiant numérique de la texture créée.
Exemple
TEXTURE_1D = 1;
RGBA_FLOAT_PIXEL_FORMAT = 1;
tid = HYP_Texture.Create( TEXTURE_1D, RGBA_FLOAT_PIXEL_FORMAT, 256, 0, 0 );

Destroy

Destroy permet de détruire une texture créée avec Create() ou LoadTex2D(). Destroy ne peut pas détruire une texture créée statiquement dans le script XML.
Syntaxe
HYP_Texture.Destroy( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.

SetName

SetName permet de renommer une texture.
Syntaxe
HYP_Texture.SetName( old_name | tid, new_name );
  • old_name - [STR127] - ancien nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • new_name - [STR127] - nouveau nom de la texture.

GetIdFromName

GetIdFromName permet de récupérer l'identifant numérique de la texture à partir de son nom.
Syntaxe
tid = HYP_Texture.GetIdFromName( texture_name );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.

SetValueTex1DByteRgb

SetValueTex1DByteRgb permet de modifier les données (texels) d'une texture 1D avec un format de pixel RGB_BYTE.
Syntaxe
HYP_Texture.SetValueTex1DByteRgb( texure_name | tid, offset, r, g, b );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel à modifier. Valeur compise entre 0 et texture_width.
  • r - [INTEGER] - valeur de la composante rouge - [0 - 255].
  • g - [INTEGER] - valeur de la composante verte - [0 - 255].
  • b - [INTEGER] - valeur de la composante bleue - [0 - 255].

GetValueTex1DByteRgb

GetValueTex1DByteRgb permet de récupérer les données (texels) d'une texture 1D avec un format de pixel RGB_BYTE.
Syntaxe
r, g, b = HYP_Texture.GetValueTex1DByteRgb( texure_name | tid, offset );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel. Valeur compise entre 0 et texture_width.
  • r - [INTEGER] - valeur de la composante rouge - [0 - 255].
  • g - [INTEGER] - valeur de la composante verte - [0 - 255].
  • b - [INTEGER] - valeur de la composante bleue - [0 - 255].

SetValueTex1DFloatRgba

SetValueTex1DFloatRgba permet de modifier les données (texels) d'une texture 1D avec un format de pixel RGBA_FLOAT ou RGBA_32F.
Syntaxe
HYP_Texture.SetValueTex1DFloatRgba( texure_name | tid, offset, r, g, b, a );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel à modifier. Valeur compise entre 0 et texture_width.
  • r - [REAL] - valeur de la composante rouge.
  • g - [REAL] - valeur de la composante verte.
  • b - [REAL] - valeur de la composante bleue.
  • a - [REAL] - valeur de la composante alpha.

GetValueTex1DFloatRgba

GetValueTex1DFloatRgba permet de récupérer les données (texels) d'une texture 1D avec un format de pixel RGBA_FLOAT ou RGBA_32F.
Syntaxe
r, g, b, a = HYP_Texture.GetValueTex1DFloatRgba( texure_name | tid, offset );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel. Valeur compise entre 0 et texture_width.
  • r - [REAL] - valeur de la composante rouge.
  • g - [REAL] - valeur de la composante verte.
  • b - [REAL] - valeur de la composante bleue.
  • a - [REAL] - valeur de la composante alpha.

SetValueTex2DByteRgb

SetValueTex2DByteRgb permet de modifier les données (texels) d'une texture 2D avec un format de pixel RGB_BYTE.
Syntaxe
HYP_Texture.SetValueTex2DByteRgb( texure_name | tid, offset, r, g, b );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel à modifier. Valeur compise entre 0 et texture_width*texture_height.
  • r - [INTEGER] - valeur de la composante rouge - [0 - 255].
  • g - [INTEGER] - valeur de la composante verte - [0 - 255].
  • b - [INTEGER] - valeur de la composante bleue - [0 - 255].

GetValueTex2DByteRgb

GetValueTex2DByteRgb permet de modifier les données (texels) d'une texture 2D avec un format de pixel RGB_BYTE.
Syntaxe
r, g, b = HYP_Texture.GetValueTex2DByteRgb( texure_name | tid, offset );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du texel. Valeur compise entre 0 et texture_width*texture_height.
  • r - [INTEGER] - valeur de la composante rouge - [0 - 255].
  • g - [INTEGER] - valeur de la composante verte - [0 - 255].
  • b - [INTEGER] - valeur de la composante bleue - [0 - 255].

SetValueTex2DFloatRgba

SetValueTex2DFloatRgba permet de modifier les données (texels) d'une texture 2D avec un format de pixel RGBA_FLOAT ou RGBA_32F.
Syntaxe
HYP_Texture.SetValueTex2DFloatRgba( texure_name | tid, offset, r, g, b, a );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du textel à modifier. Valeur compise entre 0 et texture_width*texture_height.
  • r - [REAL] - valeur de la composante rouge.
  • g - [REAL] - valeur de la composante verte.
  • b - [REAL] - valeur de la composante bleue.
  • a - [REAL] - valeur de la composante alpha.

GetValueTex2DFloatRgba

GetValueTex2DFloatRgba permet de modifier les données (texels) d'une texture 2D avec un format de pixel RGBA_FLOAT ou RGBA_32F.
Syntaxe
r, g, b, a = HYP_Texture.GetValueTex2DFloatRgba( texure_name | tid, offset );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • offset - [INTEGER] - localisation du textel. Valeur compise entre 0 et texture_width*texture_height.
  • r - [REAL] - valeur de la composante rouge.
  • g - [REAL] - valeur de la composante verte.
  • b - [REAL] - valeur de la composante bleue.
  • a - [REAL] - valeur de la composante alpha.

SetAddressingMode

SetAddressingMode permet de changer le mode d'adressage de la texture. Voir texture_addressing_mode pour plus de détails.
Syntaxe
HYP_Texture.SetAddressingMode( texture_name | tid, tam );
  • texture_name - [STR127] - nom de la texture comme spécifié dans le script XML par l'attribut name.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • tam - [INTEGER] - mode d'adressage. Les valeurs suivantes sont acceptées:
    • 0 pour WRAP
    • 1 pour MIRROR
    • 2 pour CLAMP
Exemple
MIRROR = 1;
HYP_Texture.SetAddressingMode("base_map_tex", MIRROR );

SetFilteringAnisotropicValue

SetFilteringAnisotropicValue permet de changer le facteur de filtrage anisotropique de la texture. Voir texture_filtering_anisotropic_value pour plus de détails.
Syntaxe
HYP_Texture.SetFilteringAnisotropicValue( texture_name | tid, val );
  • texture_name - [STR127] - nom de la texture comme spécifié dans le script XML par l'attribut name.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • val - [REAL] - valeur du filtrage anisotropique.
Exemple
HYP_Texture.SetFilteringAnisotropicValue("base_map_tex", 8.0 );

SetFilteringMode

SetFilteringMode permet de changer le mode de filtrage de la texture. Voir texture_filtering_mode pour plus de détails.
Syntaxe
HYP_Texture.SetFilteringMode( texture_name | tid, filter_type );
  • texture_name - [STR127] - nom de la texture comme spécifié dans le script XML par l'attribut name.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • filter_mode - [INTEGER] - mode de filtrage. Les valeurs suivantes sont acceptées:
    • 0 pour NONE
    • 1 pour LINEAR
    • 2 pour TRILINEAR
Exemple
TRILINEAR = 2;
HYP_Texture.SetFilteringMode("base_map_tex", TRILINEAR );
HYP_Texture.SetFilteringAnisotropicValue("base_map_tex", 10.0 );

SetFunction

SetFunction permet de changer la fonction de texture. Voir texture_function pour plus de détails.
Syntaxe
HYP_Texture.SetFunction( texture_name | tid, texture_function );
  • texture_name - [STR127] - nom de la texture comme spécifié dans le script XML par l'attribut name.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • texture_function - [INTEGER] - fonction de texture. Les valeurs suivantes sont acceptées:
    • 0 pour MODULATE
    • 1 pour REPLACE
    • 2 pour ADD
    • 3 pour ADD_SIGNED
    • 4 pour SUB
Exemple
TFUNC_MODULATE = 0;
HYP_Texture.SetFunction( "base_map_tex", TFUNC_MODULATE );

Save

Save permet de sauvegarder la texture sur le disque dur.
Syntaxe
HYP_Texture.Save( texture_name | tid, [filename] );
  • texture_name - [STR127] - nom de la texture comme spécifié dans le script XML par l'attribut name.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • filename - [STR255] - nom du fichier de texture. Ce paramètre est optionnel. Si il est omis, la texture sera enregistrée avec le nom suivant: texture_output_xxx.jpg où xxx est une valeur numérique qui s'incrémente à chaque appel de la fonction Save().

SetTransformMatrix

SetTransformMatrix permet de mettre à jour la matrice de transformation des coordonnées de texture. Cette matrice suit les conventions OpenGL: vecteurs colonnes et multiplication des matrices de droite à gauche.
|x'|   | m0   m4    m8    m12 |   |x|
|y'| = | m1   m5    m9    m13 | * |y|
|z'|   | m2   m6    m10   m14 |   |z|
|1 |   | m3   m7    m11   m15 |   |1|

        --    --    --    --
         X     Y     Z    Position
        axis  axis  axis
Syntaxe
HYP_Texture.SetTransformMatrix( tex_name | tex_id, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 );
  • tex_name - [STR127] - nom de la texture.
  • tex_id - [INTEGER] - identifiant numérique de la texture.
  • m0 à m15 - [REAL] - les 16 éléments de la matrice 4x4.

GetTransformMatrix

GetTransformMatrix permet de récupérer la matrice de transformation des coordonnées de texture. Cette matrice suit les conventions OpenGL: vecteurs colonnes et multiplication des matrices de droite à gauche.
|x'|   | m0   m4    m8    m12 |   |x|
|y'| = | m1   m5    m9    m13 | * |y|
|z'|   | m2   m6    m10   m14 |   |z|
|1 |   | m3   m7    m11   m15 |   |1|

        --    --    --    --
         X     Y     Z    Position
        axis  axis  axis
Syntaxe
m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 = HYP_Texture.GetTransformMatrix( tex_name | tex_id );
  • tex_name - [STR127] - nom de la texture.
  • tex_id - [INTEGER] - identifiant numérique de la texture.
  • m0 à m15 - [REAL] - les 16 éléments de la matrice 4x4.

PlayStopAVI

PlayStopAVI permet de jouer ou de stopper un AVI.
Syntaxe
HYP_Texture.PlayStopAVI( texture_name | tid, state );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • state - [INTEGER] - 1 pour jouer et 0 pour stopper.

GetAVINumFrames

GetAVINumFrames permet de récupérer le nombre de frames d'une texture animée AVI.
Syntaxe
nFrames = HYP_Texture.GetAVINumFrames( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • nFrames - [INTEGER] - nombre de frames.

GetAVIMpf

GetAVIMpf permet de récupérer le nombre de millisecondes par frame d'une texture animée AVI.
Syntaxe
mpf = HYP_Texture.GetAVIMpf( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • mpf - [INTEGER] - millisecondes par frame.

GetAVICurrentTime

GetAVICurrentTime permet de récupérer la position temporelle courante d'une texture animée AVI.
Syntaxe
cur_time = HYP_Texture.GetAVICurrentTime( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • cur_time - [INTEGER] - position temporelle courante en millisecondes.

SetAVICurrentFrame

SetAVICurrentFrame permet de modifier la position courante d'une texture animée AVI.
Syntaxe
HYP_Texture.SetAVICurrentFrame( texture_name | tid, frame );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • frame - [INTEGER] - nouvelle position courante.

GetAVICurrentFrame

GetAVICurrentFrame permet de récupérer la frame courante d'une texture animée AVI.
Syntaxe
frame = HYP_Texture.GetAVICurrentFrame( texture_name | tid );
  • texture_name - [STR127] - nom de la texture.
  • tid - [INTEGER] - identifiant numérique de la texture.
  • frame - [INTEGER] - position courante.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved


Hyperion Guide du Dévelopeur - API Hyperion/LUA: Librairie de manipulation des vertex pool

API Hyperion/LUA: fonctions de manipulation des vertex pool

La librairie HYP_VertexPool permet de gérer les vertex pool. Un vertex pool est un objet qui permet de gérer un grand nombre de vertices indépendants les uns des autres. Chaque vertex peut avoir une position dans l'espace ainsi qu'une couleur. En présence d'une texture, les vertices sont rendus en mode point sprite. Le mode point sprite est une fonctionnalité de la carte 3D qui permet de créer un quad texturé et billboardé à partir d'un simple vertex. En somme, le vertex pool peut être vu comme l'outil de base pour vous permettre de créer votre propre système de particules. Un des intérets du vertex pool est sa rapidité de rendu.
HYP_VertexPool.Create
HYP_VertexPool.Destroy
HYP_VertexPool.SetVertexPosition
HYP_VertexPool.GetVertexPosition
HYP_VertexPool.SetVertexColor
HYP_VertexPool.GetVertexColor
HYP_VertexPool.SetVerticesColor
HYP_VertexPool.SetVerticesSize
HYP_VertexPool.SetPointSpriteDistAtt
HYP_VertexPool.SetUseOfVertexRenderingState
HYP_VertexPool.SetVertexRenderingState

Create

Create permet de créer un vertex pool.
Syntaxe
id_vp = HYP_VertexPool.Create( num_vertices, [name] );
  • num_vertices - [INTEGER] - nombre de vertices du vertex pool.
  • name - [STR127] - nom à donner au vertex pool. Optionnel.

Destroy

Destroy permet de détuire un vertex pool créé avec Create().
Syntaxe
HYP_VertexPool.Destroy( name | id );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.

SetVertexPosition

SetVertexPosition permet de changer la position d'un vertex particulier du vertex pool.
Syntaxe
HYP_VertexPool.SetVertexPosition( name | id, vertex_index, x, y, z );
HYP_VertexPool.SetVertexPosition_Fast( name | id, vertex_index, x, y, z );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.
Remarques
Pour des raisons de rapidité, SetVertexPosition_Fast ne contrôle pas la validité des paramètres d'entrée.

GetVertexPosition

GetVertexPosition permet de récupérer la position d'un vertex particulier du vertex pool.
Syntaxe
x, y, z = HYP_VertexPool.GetVertexPosition( name | id, vertex_index );
x, y, z = HYP_VertexPool.GetVertexPosition_Fast( name | id, vertex_index );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • x - [REAL] - nouvelle coordonnée en X.
  • y - [REAL] - nouvelle coordonnée en Y.
  • z - [REAL] - nouvelle coordonnée en Z.
Remarques
Pour des raisons de rapidité, GetVertexPosition_Fast ne contrôle pas la validité des paramètres d'entrée.

SetVertexColor

SetVertexColor permet de changer la couleur d'un vertex particulier du vertex pool.
Syntaxe
HYP_VertexPool.SetVertexColor( name | id, vertex_index, r, g, b, a );
HYP_VertexPool.SetVertexColor_Fast( name | id, vertex_index, r, g, b, a );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.
Remarques
Pour des raisons de rapidité, SetVertexColor_Fast ne contrôle pas la validité des paramètres d'entrée.

GetVertexColor

GetVertexColor permet de récupérer la couleur d'un vertex particulier du vertex pool.
Syntaxe
r, g, b, a = HYP_VertexPool.GetVertexColor( name | id, vertex_index );
r, g, b, a = HYP_VertexPool.GetVertexColor_Fast( name | id, vertex_index );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.
Remarques
Pour des raisons de rapidité, GetVertexColor_Fast ne contrôle pas la validité des paramètres d'entrée.

SetVerticesColor

SetVerticesColor permet de changer la couleur de tous les vertices du vertex pool.
Syntaxe
HYP_VertexPool.SetVerticesColor( name | id, r, g, b, a );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • r - [CLAMPED_REAL] - composante rouge de la couleur.
  • g - [CLAMPED_REAL] - composante verte de la couleur.
  • b - [CLAMPED_REAL] - composante bleue de la couleur.
  • a - [CLAMPED_REAL] - composante alpha de la couleur.

SetVerticesSize

SetVerticesSize permet de changer la taille de tous les vertices du vertex pool. Attention: si vous attachez une texture au vertex pool, les vertices du pool sont rendus en mode point sprite. Dans ce cas la taille maximale est dépendente du hardware graphique. Sur nVidia, la taille max est de 63.5.
Syntaxe
HYP_VertexPool.SetVerticesSize( name | id, size );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • size - [REAL] - taille des vertices.

SetPointSpriteDistAtt

SetPointSpriteDistAtt permet de changer les coefficients du facteur d'atténuation de la taille des vertices avec la distance. Ce facteur est exprimé par 3 valeurs {a, b, c}:
                            1
    dist_atten(d) = -------------------
                    a + b * d + c * d^2
où d est la distance de la camera, positionné en {0, 0, 0, 1} (coordonnées de l'oeil) au vertex. Par défaut, {a, b, c} valent {0.0, 0.01, 0.0002}.
Syntaxe
HYP_VertexPool.SetPointSpriteDistAtt( name | id, a, b, c );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • a - [REAL] - facteur d'atténuation constant.
  • b - [REAL] - facteur d'atténuation linéaire.
  • c - [REAL] - facteur d'atténuation quadratique.

SetVertexRenderingState

SetVertexRenderingState permet de désactiver ou d'activer le rendu d'un vertex particulier.
Syntaxe
HYP_VertexPool.SetVertexRenderingState( name|id, vertex_index, state );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • state - [INTEGER] - active le rendu si 1 ou le désactive si 0.

GetVertexRenderingState

GetVertexRenderingState permet de connaître l'état de rendu d'un vertex particulier.
Syntaxe
state = HYP_VertexPool.GetVertexRenderingState( name|id, vertex_index );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
  • state - [INTEGER] - rendu activé si 1 ou désactivé si 0.

SetUseOfVertexRenderingState

SetUseOfVertexRenderingState permet de désactiver ou d'activer le mode gestion de rendu par vertex (fonctions SetVertexRenderingState et GetVertexRenderingState). En effet, le mode de rendu par vertex implique des calculs supplémentaires qui peuvent être couteux en présence d'un grand nombre de particules.
Par défaut, la gestion est désactivée.
Syntaxe
HYP_VertexPool.SetUseOfVertexRenderingState( name|id, state );
  • name - [STR127] - nom du vertex pool.
  • id - [INTEGER] - identifiant numérique du vertex pool.
  • state - [INTEGER] - active si 1 ou désactive si 0.

Hyperion - Guide de Référence
Copyright (C)2004-2006 The oZone3D Team - All rights reserved