Les ensembles 3D sont des éléments de code qui peuvent être insérés dans la scène à la place d'objets 3D. Ils sont utilisés lorsque l'on souhaite obtenir des éléments composites complexes qui forment une unité et qui doivent réagir comme un modèle unique. Les ensembles 3D peuvent contenir des éléments d'interaction, des animations et des clips audio. En outre, les ensembles 3D peuvent également interagir avec d'autres éléments dans une scène.
Exemple :
Les ensembles 3D sont créés avec AFRAME (https://aframe.io) dans le composant neo-code. En plus de toutes les possibilités offertes par AFRAME, de nombreux autres composants fournis par vrdoro peuvent être utilisés.
L'UI avec laquelle les éléments peuvent être adaptés peut être configurée par un attribut EditorConfig ou EditorConfigGlobal à chaque balise a-entity.
La syntaxe de l'EditorConfig est très vaste et est expliquée à l'aide d'exemples.
nom
: nom du composant néo-codeenabled
: Active/désactive le composantcode
: sélecteur sur le bloc de code à exécuter (optionnel)params
: noms des paramètres p0-p14 dans l'ordre séquentielp0…
: valeur du paramètre correspondantcodeRunDelay
: délai d'exécution du bloc de codeupdateShadowMap
: Active/désactive une mise à jour de la shadowMap après l'exécution du bloc de code
Le type de paramètre par défaut est Chaîne
. L'analyse syntaxique automatique a lieu dans les cas suivants :
Booléen
Number
Vector2
Vector3
Tableau
La syntaxe suivante s'applique :
editorConfig[Global]=`AttributeControl|[AttributeControl]*`
Attributs=Domaine de valeurs
ou ComponentName=Property:Domaine de valeurs
de~à
ou bool
ou color
ou select
Les contrôles définis par editorConfigGlobal sont affichés dans la section supérieure 'Paramètres de la scène' de l'interface utilisateur du Room Viewer. Les valeurs editorConfig sont affichées pour chaque élément de la pièce sous Éléments de la pièce.
Les valeurs pour les propriétés telles que Position ou Color sont des valeurs pour les attributs d'entité correspondants. Les attributs peuvent également être des composants qui possèdent à leur tour des attributs. Ceux-ci sont alors appelés (voir les documents AFRAME) Properties. Par exemple, le composant material
(défini comme attribut d'une a-entity
) a les propriétés src
et color
.
Grâce aux indications editorConfig, les valeurs configurables et les domaines de valeurs sont en général traités de la même manière pour les attributs et les propriétés. Ainsi, par exemple, une sélection de couleurs sur un a-plane
avec color=color
ou à la material
-avec material=color:color
peut être sélectionnée.
Dans la suite du texte, on parle généralement d'attributs, mais en règle générale, les déclarations s'appliquent également aux propriétés de composants.
Il existe différents types de valeurs d'attributs :
Les valeurs numériques sont configurées à l'aide d'un curseur. La syntaxe est la suivante :
Nom de l'attribut=minValeur~maxValeur(pasLargeur)
La valeur min et la valeur max peuvent également être des vecteurs, donc par ex.Nom d'attribut=minValeur_x minValeur_y minValeur_z~minValeur_x minValeur_y minValeur_z
minValeur et maxValeur peuvent aussi être représentées par -
peuvent être remplacées, ce qui signifie illimité.
Si minValue et maxValue sont égales (pour les vecteurs, la paire respective), alors aucune sélection n'est possible et la valeur est fixe.
Si la valeur max (impossible pour les vecteurs) est suivie d'une valeur numérique entre parenthèses, cela indique l'incrément. Ainsi, par exemple, signifie count=1~10(1)
que seuls les nombres entiers compris entre 1 et 10 sont possibles.
Les valeurs de vérité (True ou False) peuvent être définies par la spécification de bool
comme valeur.
Exemple :
editorConfig=`visible=bool`.
Une case à cocher s'affiche alors dans l'IU.
Les valeurs de couleur peuvent être modifiées en indiquant color
comme valeur.
Exemple : la couleur :
editorConfig=`backgroundcolor=color`.
Un élément de sélection de couleur est alors affiché dans l'UI.
Une liste de sélection peut être créée en indiquant les valeurs entre crochets, séparées par une virgule.
Exemple :
animation=dur :[20000,10000,5000]
animation=dur:[20000~slow,10000~normal*,5000~fast]
Un élément de sélection de couleur est alors affiché dans l'UI.
Les labels pour les éléments UI peuvent être ajoutés après la propriété, séparés par un tilde ('~'). Les labels sont alors indiqués en anglais. Si le dictionnaire contient une traduction pour le label, le mot est alors traduit dans la langue correspondante. Pour les mots séparés par un trait de soulignement ('_'), les différents mots sont traduits séparément et le trait de soulignement est remplacé par un espace.
Exemple : functionName~Info:bouton~show
Les noms des labels, s'ils ne sont pas explicitement indiqués, résultent des noms d'attributs indiqués dans l'editorConfig.
La formation des clés suit les règles suivantes (dans les exemples, la clé est indiquée en gras après le ':') :
light=intensity:0~2
→ clé = light-intensity
Si la plage de valeurs est un vecteur (par exemple pour position ou material.repeat), la clé est suivie d'un '-' suivi de x
(y
,…) est ajouté à la clé afin de pouvoir adresser et contrôler les valeurs individuellement.
Le room viewer vérifie pour chaque étiquette (getTranslationForKey(key)
) s'il peut en trouver une traduction. Il existe deux catégories de traductions :
Le contrôle est effectué dans l'ordre spécifié. Cela signifie que la traduction des étiquettes de contrôle standard ne peut pas être écrasée par les traductions des éléments.
Note : Les clés de traduction (comme pour ember-intl) doivent être utilisées en respectant la casse.
Les caractères précédés d'un trait de soulignement “_” sont supprimés lors de la recherche d'une traduction. Le trait de soulignement est remplacé par un espace. Cela permet de ne traduire que la première chaîne de caractères.
Exemples (chaîne de caractères) :
La clé est d'abord vérifiée dans son intégralité (sans la partie située après “_”), puis raccourcie à partir de la fin jusqu'à “-” pour former une nouvelle clé à vérifier.
Exemple :
sun-position-x
Si une traduction est trouvée, elle est utilisée. Sinon, c'est sun-position
qui est utilisé.sun-position
Si une traduction est trouvée, elle sera utilisée. Elle est complétée par le suffixe manquant (x
) pour lequel une traduction est également recherchée.Note : Il n'est actuellement pas possible d'ajouter des traductions dans le Visualiseur. Toutefois, les clés existantes peuvent être utilisées.
wallFlip
scale
⇒ échelle dans la plage par défaut de '0 0 0~2 2 2
'
scale=0.5 0.5 0.5~2 2 2
'0.5 0.5 0.5~2 2 2
' peut également être écrite comme '0.5~2
'.scale=0~2
scale|position=0 2
colour=colour;
position=0~2|lumière=intensité:0~2;couleur:coloriage
Exemple pour contrôler plusieurs valeurs simultanément (commenté dans le code avec 'alias list') :
editorConfig=“scale[scale.x,scale.y,scale.z]~size=1~20”
.
Exemples de changement de matériaux avec le composant modeleffects
:
modeleffects=“materials : Material001~facade={'couleur':'#FFF'},Material002~frame={'couleur':'#FFF'},Material006~glass={'opacité':0.5}”“
.modeleffects=“materials : Material.015={'emissiveIntensity':0.6|'emissive':'#FF8'}”
.