Utilisation d'animesh
Un animesh est une fonctionnalité qui permet à des objets indépendants d'utiliser des maillages avec rigging et des animations, comme on peut le faire avec des avatars mesh. Cela signifie que vous pouvez désormais avoir des animaux, des véhicules, des éléments de décor et d'autres objets animés.
Où et avec quoi utiliser un animesh ?
- Coté serveur, les animeshes sont fonctionnels depuis la version 0.9.1 d'OpenSimulator.
- Coté client, Animesh fonctionne avec un viewer (navigateur 3D) récent, depuis Firestorm v 6.0.2.56680.
Quoi de neuf avec animesh ?
Fabriquer et défaire des animeshes
Un viewer qui supporte les animeshs présente une nouvelle fonctionnalité dans l'interface utilisateur de l'éditeur d'objet.
Si vous faites un clic droit sur un objet et choisissez "edit", vous verrez apparaître une boîte de dialogue pour éditer l'objet. Dans l'onglet "Features", une nouvelle case à cocher "Animated Mesh" a été ajoutée. Si l'objet est un maillage avec rigging, vous pouvez utiliser la case à cocher pour le transformer en un objet animé avec son propre squelette.
Il y a quelques restrictions :
- vous devez avoir le droit de modifier cet objet,
- il ne doit pas dépasser la limite maximale du nombre de triangles pour les objets animesh, et
- vous devez être dans une région où l'animation est possible.
Si l'une de ces conditions n'est pas remplie, la case à cocher ne sera pas activée.
Animation d'objets animesh
Quand un objet devient potentiellement animé, il ne fait rien tout de suite. Vous devez lancer des animations sur l'objet. Pour ce faire, il suffit :
- d'ajouter une ou plusieurs animations à l'inventaire de l'objet (en utilisant l'onglet Contenu),
- puis d'exécuter un script qui lance les animations.
Sur l'image, vous pouvez voir que l'objet animesh contient une animation et dispose d'un script qui peut l'exécuter.
Animesh ajoute trois nouvelles fonctions LSL qui peuvent être utilisées pour lancer ou arrêter des animations, ou pour vérifier qu'elles sont en cours d'exécution. Ces fonctions sont :
- llStartObjectAnimation qui commence une animation pour l'objet qui contient le script.
- llStopObjectAnimation qui arrête une animation pour l'objet qui contient le script.
- llGetObjectAnimationNames( ) qui retourne la liste des animations jouées dans l'objet qui contient le script.
- integer osClearObjectAnimations() qui efface toutes les animations sur la prim, et renvoie le nombre d'animations en cours. (Ajouté dans OpenSim 0.9.2.0 )
Des détails et des exemples sur la façon d'utiliser ces fonctions sont donnés sur ces pages wiki.
Position et orientation d'Animesh
Un mesh statique classique a une position définie lorsqu'il est rezzé, et une orientation définie lorsqu'il est créé. Un animesh a toujours une position de base définie , mais le mesh affiché est montré à un endroit déterminé par son squelette animé sous-jacent. De ce fait, l'emplacement visuel d'un objet animé jouant une animation peut être quelque peu décalé de sa position "réelle" pour des raisons de physique et de script. Le squelette est positionné par rapport à l'objet original comme suit :
- La position de l'objet est utilisée localiser l'articulation racine du squelette.
- L'orientation de l'objet correspond à l'orientation de l'objet racine. Si l'objet racine est un mesh, la matrice de forme associée sera utilisée.
- Le fait de jouer des animations peut modifier davantage la position et l'orientation visuelles en animant l'articulation du bassin.
Il en résulte que les animeshs seront normalement orientés avec leur axe X local vers l'avant. Les meshs statique ne sont pas nécessairement créés dans cette orientation, de sorte qu'il peut y avoir un changement d'orientation lorsque l'objet devient un animesh. Cependant, si l'objet racine d'un ensemble lié avec animesh est un mesh, la matrice de forme associée sera également utilisée. Cela signifie que si vous voulez que votre objet soit orienté par rapport à la représentation statique du mesh, vous pouvez utiliser un mesh racine animesh. Si vous voulez que votre objet ait une orientation standard X-forward, vous pouvez utiliser un objet racine non mesh (par exemple, une simple amorce invisible) et ensuite aligner vos objets meshs enfants par rapport à cela.
La position et l'orientation réelles d'un objet animé peuvent être modifiées à l'aide des commandes d'édition standard (clic droit sur l'objet et sélection de l'édition). Des changements d'échelle peuvent également être effectués, mais ils n'ont aucun effet sur le squelette et ne sont donc pas reflétés dans l'affichage du mesh.
Contraintes de position et d'échelle
Il y a certaines contraintes sur l'échelle et le positionnement des animeshs. Elles visent à maintenir la cohérence avec les limites d'autres types d'objets du monde (comme les prims conventionnelles), et à rendre le comportement plus prévisible.
- Il y a une limite d'échelle de 64 m pour les animeshs. Les objets dépassant ce seuil seront réduits de manière à ce que leur boîte englobante calculée ne dépasse pas 64 m.
- Il y a une limite de 3m de décalage pour les animeshs. Le décalage est la distance entre l'emplacement "officiel" de l'objet statique et la boîte de délimitation de l'animesh tel qu'il est affiché. L'emplacement d'affichage des animeshs sera contraint pour ne pas dépasser cette limite.
Ces contraintes sont basées sur une boîte de délimitation générée en temps réel pour les maillages avec rigging, de sorte qu'elles peuvent être déclenchées à certains moments et pas à d'autres en fonction des animations jouées. Pour des raisons de performance, la boîte n'est pas mise à jour pour chaque image, de sorte que les contraintes peuvent être légèrement en retard par rapport à l'apparence du moment.
Suggestions pour la création d'Animesh
Les animesh n'ont pas d'attachements comme les avatars. Pour combiner plusieurs meshs dans un seul animesh, vous devez les relier ensemble en un seul objet lié. Si vous liez plusieurs meshs, les meshs sources originaux et les représentations physiques correspondantes peuvent être dispersés en plusieurs endroits. Tous les meshs s'afficheront toujours sur un seul squelette, avec une orientation comme indiqué ci-dessus. La pratique recommandée pour l'instant est d'avoir une amorce racine qui n'est pas un mesh avec rigging, et d'associer toute représentation physique à cette amorce racine. Les meshs avec rigging seraient alors des enfants non physiques de cette racine.
Notez également que comme les meshs avec rigging des avatars, les meshs avec rigging des animesh sont non physiques. Le processus d'animation n'affecte que la façon dont les choses s'affichent sur le viewer, donc si vous voulez avoir une forme physique qui s'aligne avec votre animesh, vous devrez gérer le positionnement et les animations en conséquence.
Attachement animesh
Les animesh peuvent également être des attachements de votre avatar. Comme un attachement statique classique, un attachement animesh se déplacera avec le point d'attachement sélectionné sur votre avatar, comme par exemple votre épaule droite ou votre main gauche. Les attachements animesh peuvent ensuite lancer des animations, qui peuvent modifier leur position apparente par rapport à leur point d'attache (par exemple, si l'articulation du bassin fait partie de l'animation).
Comme les attachements statiques, les attachements d'animesh peuvent être repositionnés en utilisant les commandes d'édition. Un changement de position ou une rotation déplace l'attachement par rapport à son point d'attache.
Actuellement, vous pouvez avoir au maximum une pièce jointe animesh à la fois.
Les états du squelette de l'animesh et la personnalisation
Les avatars peuvent être largement personnalisés grâce à des curseurs. Les os du squelette d'un avatar sont positionnés et mis à l'échelle en fonction de ces paramètres de configuration, qui sont pour la plupart stockés dans la forme de l'avatar à porter.
Actuellement, les animesh ne supportent pas ce type de personnalisation ; ils n'ont pas de forme portable, il n'y a donc aucun moyen de faire le même type de modification du squelette pour eux. Les positions et les échelles des os pour un animesh sont simplement initialisées à partir des paramètres par défaut des os (définis dans certains fichiers de configuration qui font partie de l'installation du viewer - avatar_skeleton.xml et avatar_lad.xml). Ces positions et échelles d'os par défaut peuvent être remplacées dans les meshs téléchargés, en utilisant les valeurs définies lors de la création des maillages. Il s'agit du même mécanisme de positionnement des articulations que les meshs avec rigging peuvent utiliser pour personnaliser la silhouette d'un avatar.
Nous savons qu'il y a beaucoup d'intérêt à soutenir une personnalisation plus poussée des animeshs, et nous espérons aborder ce sujet dans un projet ultérieur.
Nouveaux affichages et mise à jour
Des affichages supplémentaires sont disponibles pour vous aider à voir l'état des objets animesh :
- Dans le menu Advanced, l'option Performance tools->Show avatar complexity information vous permet de voir le coût de complexité calculé pour les avatars. Des informations supplémentaires ont été ajoutées à cet affichage, qui fonctionne désormais également pour les objets animesh.
Ici, vous pouvez voir l'affichage mis à jour, appliqué à un objet animesh. VisTris est le nombre de triangles actuellement affichés associés à l'objet, basé sur les LOD affichés (niveaux de détail) pour les primitives qui le composent. EstMaxTris est une estimation du nombre de triangles pour les LOD les plus complexes de l'objet ; c'est le nombre utilisé pour déterminer si un objet dépasse la limite de complexité du nombre de triangles pour les objets animesh.
L'affichage de la complexité ne fonctionne que pour les avatars et les objets animesh indépendants. Les objets animesh attachés ont leur complexité ajoutée à l'avatar auquel ils sont attachés, donc ils ne sont pas présentés avec un affichage de complexité propre.
- Un autre affichage mis à jour est Develop->Render Metadata->Collision skeleton. Il affichera les volumes de collision pour les objets animesh ainsi que les avatars, les objets animesh étant affichés dans une couleur différente :
Ici, l'avatar a un squelette bleu, et l'animesh a un squelette rouge.
- Develop->Render Metadata->Joints montrera les os standards dans le squelette des avatars et des objets animesh.
Les deux affichages des métadonnées de rendu ont un impact significatif sur les performances, la plupart du temps, vous ne voudrez donc probablement pas les activer.
Scripts
Script de base
<source lang="lsl"> /*Ajouter une animation dans le contenu de l'animesh avec ce script*/ default {
state_entry() { string anim = llGetInventoryName (INVENTORY_ANIMATION, 0); llStartObjectAnimation(anim); }
} </source>
FAQ
Que se passe-t-il si mon viewer ne prend pas en charge les animehs ?
Si vous visitez une région avec des animeshs avec un viewer qui ne supporte pas cette fonctionnalité, vous verrez les objets animés comme des objets statiques non animés, et les pièces jointes animées comme des maillages avec rigging sur l'avatar hôte.
Que se passe-t-il si je visite des régions qui ne supportent pas les animeshs et que j'essaie d'utiliser du contenu animé ?
Si vous rencontrez une région, qui ne prend pas en charge les animeshs, les objets animesh ne fonctionneront pas. Une fois que vous revenez dans une région animesh, vous devrez peut-être réinitialiser le script pour qu'il fonctionne à nouveau.
Quelle est la différence entre un attachement animesh et un attachement de mesh avec rigging ? Quand dois-je utiliser l'un ou l'autre ?
Les attachements animesh ont un squelette complet qui leur est propre, de sorte qu'ils peuvent se déplacer de manière totalement indépendante de votre avatar. Par exemple, une fée animesh pourrait battre ses propres ailes séparément de celles de votre avatar (cela signifie également que les animations entre les objets animesh et votre propre avatar peuvent ne pas être complètement synchronisées, puisqu'elles sont animées indépendamment). Un attachement animesh peut également devenir un objet indépendant s'il est détaché. Les attachement de base en mesh utilisent le squelette de votre avatar, donc si elles veulent animer une partie de votre avatar, elles doivent coopérer avec d'autres pièces jointes. Dans certains cas, vous pouvez utiliser soit un attachement animé, soit un mesh avec rigging : si l'objet utilise des articulations qui ne sont pas utilisées pour autre chose, par exemple, il anime les os des ailes d'un avatar qui n'a pas d'ailes, alors cela peut être mis en œuvre en utilisant soit un attachement de mesh avec rigging standard, soit un attachement animesh.
Existe-t-il des restrictions sur le contenu des animeshs ?
Les limites actuelles sont destinées à aider à gérer les coûts de performance associés aux objets animesh :
- Les objets Animesh ont une limite de complexité basée sur le nombre de triangles. Actuellement, un objet animesh peut avoir au maximum 100 000 triangles dans sa LOD la plus détaillée. Cette limite de 100 000 est basée sur le nombre estimé de triangles, de sorte que le nombre réel de triangles peut souvent être un peu plus élevé.