Project Anarchy : entités, mesh statiques et composants

Mike Fleischauer

Traducteur

Alexandre Laurent

Ce tutoriel présente l'exportation de mesh et explique la différence entre entité et mesh statique.

Commentez

- Titre : Project Anarchy : entités, mesh statiques et composants

- Auteur : Mike Fleischauer

- Traducteur : Alexandre Laurent

- Parution : 10 septembre 2013

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Mike Fleischauer. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Navigation

- II. Introduction

- III. Exporter un fichier VMESH

- IV. Créer une instance de mesh statique

- V. Mesh contre modèle, quelle est la différence ?

- VI. Composants

- VII. Remerciements

- Navigation

Navigation

Tutoriel précédent : votre premier modèle 3D

Sommaire

Tutoriel suivant : Entrées utilisateur - première partie

II - Introduction

Dans le tutoriel précédent, nous avons vu comment exporter un modèle de 3DS Max vers vForge. Cette fois, nous allons regarder l'exportation d'un mesh, puis découvrir la différence entre les entités (« entities ») et les mesh statiques. Comme le titre le suggère, les composants (« components ») jouent un grand rôle dans cette différence !

Nous allons donc voir dans ce tutoriel :

- l'exportation d'un fichier VMESH depuis Max ;

- les différences des systèmes de coordonnées ;

- la création d'un mesh statique dans vForge ;

- les différences entre les entités et mesh statique, et lequel utiliser selon les cas.

III - Exporter un fichier VMESH

Tout d'abord, apprenons à exporter un fichier VMESH depuis 3DS Max. Nous allons utiliser le modèle de caisse que nous avons créé précédemment, mais vous pouvez utiliser n'importe quel autre objet. Chargez-le dans 3DS Max et sélectionnez Fichier (« File ») → Exporter (« Export »)

Une fois encore, je sauvegarde le fichier à la racine du projet (MyFirstObject, voir les tutoriels précédents). Assurez-vous que vous avez choisi Sauvegarder en tant que (« Save as type ») VMESH puis cliquez sur Sauvegarder (« Save »).

Ensuite, une série d'options vous sera présentée :

J'ai mis en avant les deux paramètres les plus importants à connaître. Le premier est le multiplicateur scalaire. La valeur d'une unité peut être définie dans la plupart des applications de modélisation. Par contre, dans vForge, 1 unité représente 1 cm. Donc si vous avez modélisé votre caisse avec une taille de 2 x 2 x 2, cela représente 2 cm x 2 cm x 2 cm, ou autrement dit, quelque chose de vraiment petit. Pour rendre les choses encore plus confuses, dans Havok Physics 1 représente 1 mètre ! C'est pourquoi lors de l'exportation, nous redimensionnons avec un facteur de 100, afin que notre cube d'une taille de 2 x 2 x 2 dans 3DS Max devienne un cube de 2 m x 2 m x 2 m dans vForge. Bien sûr, vous pouvez toujours définir 3DS Max pour travailler en centimètres si vous le désirez. Finalement, notez le répertoire des textures dans lequel nous les exportons.

Une fois prêt, cliquez sur OK.

Votre modèle nouvellement exporté s'affichera dans le visualiseur de modèle. Vous pouvez naviguer en utilisant les touches WASD et regarder autour avec la souris. Il y a de grandes chances que la camera soit trop proche de l'objet lors du chargement.

Appuyez sur Échap pour fermer le visualiseur. Si vous ne souhaitez plus le voir apparaître, décochez Visualiser après l'exportation (« Preview after Export »). La présence d'une option pour voir rapidement le rendu de vos objets dans le moteur peut être incroyablement pratique, mais peut aussi être énervante.

IV - Créer une instance de mesh statique

Vous avez maintenant un fichier VMESH sur lequel travailler. Créez-en un dans votre scène. Dans votre projet, glissez une instance de mesh statique (« Static Mesh Instance ») dans la vue moteur :

Allez dans les propriétés et cherchez le nom du fichier du mesh (« MeshFileName ») :

Sélectionnez l'objet mesh nouvellement créé :

Donc, votre scène doit maintenant contenir une entité et un mesh statique si vous avez repris le projet du tutoriel précédent, comme ceci.

Mais, il devrait y avoir comme un problème dans votre scène…

Voyez, lors de l'exportation du mesh statique, nous avons appliqué une conversion de centimètres vers mètres, alors que nous ne l'avons pas fait lors de l'exportation de notre modèle. Cela peut être facilement corrigé dans vForge. Une fois la caisse entité sélectionnée, allez dans les propriétés et cherchez les propriétés de redimensionnement (« Scaling ») et modifiez-les à 100 :

Et…

… c'est beaucoup mieux.

Donc, maintenant nous avons deux caisses, l'une est un MODÈLE attaché à une entité, l'autre un vMESH attaché à un mesh statique. Quelle est donc la différence ? Bonne question !

V - Mesh contre modèle, quelle est la différence ?

En un mot, le poids. Mais cela n'a rien à voir avec la masse. Un mesh statique est beaucoup plus léger en termes de calculs qu'un modèle. Un mesh statique est juste affiché dans la scène. L'objet sera solide et vous ne pourrez pas le traverser, mais il ne bougera pas en conséquence … c'est exactement ce que le nom suggère… statique. Il ne bouge pas, il n'est pas animé, il est simplement là… c'est tout. Le bon coté est que le mesh statique demande beaucoup moins de puissance de calcul pour sa gestion, et, car il est statique, de nombreuses optimisations peuvent être effectuées par le moteur.

Un modèle est au contraire beaucoup plus coûteux qu'un VMESH. Un modèle peut contenir beaucoup plus d'informations, incluant évidemment les animations. Une entité permet beaucoup de possibilités qu'une instance de mesh statique. De plus, il y a les composants… nous allons les voir dans quelques instants. Les composants apportent une grande différence.

Donc, quand doit-on utiliser l'un et l'autre ? Si cela fait partie du monde et ne nécessite pas de bouger ou ne nécessite pas de composant additionnel alors utilisez un mesh statique. Sinon, utilisez un modèle. Préférez les mesh statiques autant que possible pour ne pas perdre en performance.

VI - Composants

Les composants sont la base d'un grand nombre de fonctionnalités de Project Anarchy et la différence dans les options entre un mesh statique et une entité est très sévère, voyez par vous-même :

Les composants disponibles pour un mesh statique :

Les composants disponibles pour une entité :

Donc, si vous souhaitez utiliser votre objet 3D associé à une physique avancée, comme un personnage jouable ou un comportement Havok (« Havok Behavior », etc., vous devez utiliser une entité.

Il y a un dernier point apportant quelques confusions, que vous pouvez complètement ignorer pour le moment. Jusqu'à présent, j'ai utilisé les termes Vmesh → instance de mesh statique et modèle → entité. Il est néanmoins possible qu'une entité se réfère à un mesh statique, mais pas l'inverse. Encore une fois, si ce n'est pas clair… ignorez-le !

Du point de vue du code, un mesh statique est un VStaticMeshInstance_cl, alors qu'une entité est un VisBaseEntity_cl. Comme vous pouvez le voir dans ces diagrammes d'héritage, VStaticMeshInstance est plus « simple ».

Diagramme d'héritage de VStaticMeshInstance_cl :

Diagramme d'héritage de VisBaseEntity_cl :

L'héritage de VisObject3D_cl est absolument critique. Cette classe contient les fonctions indispensables pour le déplacement telles que GetPosition(), IncOrientation(), etc. Soit tout le code nécessaire pour positionner et déplacer un objet dans un monde 3D. C'est aussi la classe activant les options d'appartenance et de liaison les plus avancées disponibles pour une entité et d'autres classes héritant de VisObject3D_cl.

Vous avez un objet 3D qui ne bouge pas et ne change pas ? Vous souhaitez sûrement l'exporter en VMESH et en faire une instance de mesh statique. Sinon, exportez-le comme un modèle et implémentez-le sous la forme d'une entité.

VII - Remerciements

Cet article est une traduction autorisée de l'article paru sur Game From Scratch. Je remercie chaleureusement Mike de nous avoir permis de le traduire.

Merci à Winjerome pour sa relecture lors de la traduction de cet article, ainsi qu'à ALT pour sa relecture orthographique.

Navigation

Tutoriel précédent : votre premier modèle 3D

Sommaire

Tutoriel suivant : Entrées utilisateur - première partie