Aller au contenu principal

Objets et scènes

Tout, dans votre projet, se construit à partir de deux idées : des choses faites de composants, et des scènes qui décident quand ces choses apparaissent. Cette page traite des deux.

« Objet » et « entity », c'est la même chose

L'éditeur les appelle des objets, parce que c'est à cela qu'ils ressemblent à l'écran. Le moteur et l'API de script les appellent des entities. Il n'y a aucune différence — cette page dit entity là où la distinction avec les composants compte, et objet partout ailleurs.

Deux relations, et ce ne sont pas les mêmes

Presque tous les malentendus sur ce moteur viennent de la confusion entre deux choses qui ressemblent toutes deux à « dedans ».

Une entity est FAITE DE composants. Les composants ne sont pas des enfants — ce sont les parties qui décident de ce que l'entity est. Un de chaque sorte, au plus.

Entity  "Lampe"
├── Meta son nom, si elle est activée, si elle est visible
├── Transform où elle est, comment elle est tournée, sa taille
├── Model quel modèle 3D dessiner
└── Events ce à quoi elle réagit

Une entity peut CONTENIR d'autres entities. Ce sont des enfants, et ce sont des entities à part entière — chacune avec ses propres composants.

Entity  "Lampe"
└── Entity "Ampoule" ← une entity distincte…
├── Transform ← …avec ses propres composants
└── Light

Mises ensemble, une vraie scène ressemble à ceci — les composants à gauche de chaque entity, les enfants en retrait dessous :

Entity  "Salon"       ◆ Anchor          ← celle-ci est une SCÈNE : elle a une ancre

├── Entity "Lampe" ◆ Transform ◆ Model ◆ Events
│ └── Entity "Ampoule" ◆ Transform ◆ Light

└── Entity "Table" ◆ Transform ◆ Model ◆ RigidBody ◆ Collider

Tout sur cette image est la même sorte de chose : une entity. Ce qui fait de l'une une scène, de l'autre une lampe et de la troisième un corps physique, ce sont seulement les composants qu'elles portent.

Pourquoi cela compte en pratique

Déplacer la lampe déplace l'ampoule, parce que l'ampoule est dedans. Retirer le composant de modèle de la lampe ne retire pas l'ampoule — ça, c'est de la composition, pas du contenu.

Si vous vous surprenez à demander « est-ce que ceci doit être un composant ou un objet enfant ? », la réponse est : un composant quand c'est un aspect de cette chose, un enfant quand c'est une chose distincte qui doit se déplacer avec elle.

Une entity est ce que disent ses composants

Il n'y a pas de menu de types d'objets à choisir. Vous construisez ce dont vous avez besoin en combinant des composants :

Donnez à une entity……et vous obtenez
une géométrie + un matériauune forme visible
une référence de modèleun modèle 3D importé
un composant de lumièreune lumière
un composant de texteun texte
un corps rigide + un colliderquelque chose que la physique peut déplacer
une ancreune scène
un script ou un patchquelque chose qui a un comportement

Disons que vous voulez une balle qui rebondit. Commencez par une sphère et un matériau — vous la voyez. Ajoutez un corps rigide et un collider : elle tombe et rebondit. Ajoutez un script : elle fait quelque chose en atterrissant. Chaque composant ajoute une capacité, et le retirer la reprend.

Les trois formes que vous croiserez

Le même modèle d'entity produit trois choses qui semblent différentes et ne le sont pas :

Ce que c'estAN'a pas
Une scèneune ancre, et des enfantsun transform
Un objet ordinaireun transform, plus ce dont il a besoinune ancre
Un comportement au niveau du spaceun script ou un patch, et aucun parenttransform, ancre

Une scène n'a pas de transform parce qu'elle n'a nulle part où être : sa position vient de la chose réelle à laquelle elle est ancrée. Un porteur au niveau du space n'en a pas parce qu'il n'est pas dans le monde du tout — c'est juste de la logique qui continue de tourner.

Un composant de chaque type par entity

Besoin de trois matériaux sur un modèle ? Utilisez les slots de son unique composant de matériau. Besoin de deux de n'importe quoi d'autre ? Utilisez des entities enfants — une lampe à deux ampoules est une entity lampe avec deux enfants.

Chaque entity a aussi un nom (par lequel vous la trouvez) et un parent.

Activé et visible ne sont pas la même chose

Ces deux-là se ressemblent dans l'inspecteur et se comportent de façon totalement différente.

Désactivé retire l'entity de l'expérience en cours. Pas dessinée, pas cliquable, scripts arrêtés, événements muets. Comme si elle n'était pas là.

Invisible l'empêche seulement d'être dessinée et touchée. Elle est toujours là : les scripts tournent, la physique continue d'entrer en collision.

Donc : un mur invisible qui bloque quand même le joueur ? Invisible. Une récompense qui apparaît plus tard ? Désactivée jusqu'à ce que vous en ayez besoin.

Parents et enfants

Les entities forment un arbre. Déplacez un parent et ses enfants suivent, en conservant leur position relative — c'est ainsi qu'on construit tout ce qui a des pièces. Une carrosserie avec quatre roues parentées se déplace comme une seule voiture.

Une entity sans parent se trouve à la racine de sa scène.

Supprimer un objet supprime tout ce qu'il contient

Les enfants partent aussi, et leurs enfants. Sortez-en un d'abord si vous voulez le garder.

Vous ne pouvez pas faire d'une entity l'enfant de son propre descendant — l'éditeur refuse plutôt que d'emmêler l'arbre.

Scènes et ancres

Une scène est une entity portant une ancre, et l'ancre répond à une seule question : quand ceci doit-il apparaître ?

AncreVotre scène apparaît quand…
imagela caméra reconnaît une image imprimée
qrun QR code est scanné
geole visiteur se trouve à un endroit
faceun visage est détecté
surfacele visiteur la pose sur un sol, un mur, un plafond, une table
panoramaun environnement à 360° s'ouvre
3dtout de suite — une scène 3D normale, sans AR
Le VPS n'est pas une ancre à part

Se positionner par rapport à une carte scannée d'un lieu réel est une option de l'ancre surface, pas un type distinct. Mettez en place une scène surface, puis activez le VPS.

Plusieurs scènes, un seul marqueur

Les scènes partageant le même déclencheur (la même image, le même QR code, le même lieu) forment un groupe, et une seule scène du groupe s'affiche à la fois.

C'est ainsi qu'une histoire fonctionne : la même affiche ouvre le premier chapitre, et plus tard le deuxième, parce que vous avez changé quelle scène du groupe est active.

L'apparition et la disparition à la détection ne sont qu'une paire d'événements que l'éditeur met en place pour vous (on-detect affiche, on-lost masque). Ce sont des événements ordinaires, donc vous pouvez les changer — par exemple pour garder le contenu à l'écran après que le marqueur a quitté le cadre, ce que les visiteurs préfèrent généralement à un contenu qui disparaît au moindre tremblement de main.

Les scènes surface ont trois réglages distincts

On les confond souvent, alors les voici côte à côte :

  • Quelles surfaces accepter — sol, mur, plafond, table.
  • Comment le contenu est placé — automatiquement sur une surface détectée, ou là où le visiteur appuie.
  • Quel moteur de suivi — pertinent uniquement sur le web ; les applications natives utilisent toujours celui de la plateforme.

Un comportement qui survit à une scène

Donnez à une entity un comportement et aucun parent, et elle cesse d'appartenir à une seule scène : elle appartient à tout le space. Elle continue de tourner pendant que les scènes vont et viennent, et elle entend chaque événement où qu'il se produise.

C'est là que vivent un compteur de points, un contrôleur global ou « se souvenir de ce que le visiteur a choisi ». Un script à l'intérieur d'une scène s'arrête à l'instant où cette scène s'arrête.

Comment l'éditeur étiquette les objets

Vous verrez des étiquettes comme model, primitive, text. L'éditeur les déduit de ce que porte l'objet, dans cet ordre :

référence de splat            → splat
model + skinning → animated model
model → static model
video → video ← vérifié avant la géométrie
text → text
audio → audio
light → light
geometry → primitive
tout le reste → object

Cela explique une petite surprise : un plan qui joue une vidéo est étiqueté video, pas primitive. Cela explique aussi pourquoi matériau et géométrie ne sont modifiables que sur les primitives et les modèles statiques.


Suite : Composants — ce que chacun contrôle vraiment.