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 »)

Image non disponible

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 :

Image non disponible

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.

Image non disponible

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 :

Image non disponible

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

Image non disponible

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

Image non disponible

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.

Image non disponible

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

Image non disponible

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 :

Image non disponible

Et…

Image non disponible

… 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 :

Image non disponible

Les composants disponibles pour une entité :

Image non disponible

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 :

Image non disponible

Diagramme d'héritage de VisBaseEntity_cl :

Image non disponible

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