2009-06-04 7 views
3

Je veux dire «cadre de référence sans restriction» ou «sous-environnements indépendants liés à l'espace», mais je ne pense pas que ce soit juste. Imaginez deux longs vaisseaux cylindriques flottant l'un à côté de l'autre sur un plan horizontal de même orientation. Chaque navire a son propre ensemble de salles et de couloirs dans lesquels les joueurs se déplacent librement dans un environnement à la première personne. Regardant à travers les fenêtres, l'équipage de chaque navire peut sourire et saluer l'équipage de l'autre navire.Quel est le nom et l'implémentation la plus courante de cette propriété des moteurs graphiques 3D?

Le premier navire tire ses propulseurs et déplace sous le deuxième navire. Les deux navires accostent et le sas s'ouvre. L'équipage du premier navire doit maintenant monter jusqu'à dans le deuxième navire. Le sas se ferme et les navires se détachent.

Le premier navire se déplace à nouveau, mais cette fois il accoste au-dessus du le deuxième navire. Le sas s'ouvre et cette fois l'équipage du premier navire doit se déplacer vers le deuxième navire.

Chaque navire est un environnement 3D autonome qui interagit avec d'autres environnements autonomes dans un environnement global plus vaste.

Je vois deux implémentations possibles.

1) Le "déménageur". Chaque vaisseau exerce une force sur chaque objet à l'intérieur de celui-ci. Lorsque le premier navire se déplace par rapport au deuxième navire, ce mouvement est transmis à l'équipage pour changer sa position spatiale globale. Cela semble computationnellement coûteux ...

2) Le "faker". Les fenêtres de chaque vaisseau affichent des résultats simulés à partir d'un espace global virtuel, mais les vaisseaux et leurs contenus ne bougent pas vraiment les uns par rapport aux autres. La connexion entre les navires est un portail dynamique qui relie les deux "chambres" du navire à la bonne orientation.

Quel est le nom de cette propriété et où puis-je trouver des exemples dans des moteurs 3D réels?

Répondre

7

De nombreux moteurs 3D traitent cela au moyen d'un scene graph. Dans la plupart des graphiques de scène, vous aurez des «nœuds» parents qui contiennent chacun des enfants, dans ce cas, chaque navire serait un nœud, et les personnes, les pièces, les meubles, etc. à l'intérieur du navire sont des enfants.

Les positions des enfants sont spécifiées par rapport à leurs parents. Il est donc trivial de «déplacer» le vaisseau, puisque vous déplacez le vaisseau et que les enfants le suivent (sans changer de position, pour ce qui les concerne).

Dans votre exemple, les sections Haut et Bas devraient simplement être déplacées vers le haut ou le bas. À un moment donné, lorsque vous franchissez le sas, vous déplacez l'enfant d'un parent (navire) au parent suivant (autre navire) et changez sa position (par exemple: du bas du navire1 à 0,0 , -20 au "haut" du navire 2 à 0,0,20, etc.). Le OpenSceneGraph Quick Start Guide a une bonne discussion de ce concept.


Edit:

En outre connexe, de nombreux moteurs 3D orientés jeu, tels que Ogre, fournit aussi des moyens de manutention personnalisés space partitioning dans leurs graphiques de la scène. Par exemple, Ogre, sorti de la boîte, vous permet d'utiliser des partitions Bsp et Octree pour la scène, ce qui permet de gérer une personne dans un vaisseau ne voyant pas (et plus important encore, ne tentant même pas de rendre) le second vaisseau S'il y a un mur sur le chemin, etc. Pour des choses comme votre exemple, utiliser l'espace de parition pour trier est vital si vous voulez garder un taux de framerate élevé avec des scènes complexes.

1

Je ne peux pas vous donner le nom exact de ceci, mais je pense qu'il serait très facile à implémenter avec openGL - quand vous dessinez chaque vaisseau spatial, vous traduiriez ce vaisseau spatial à la position correcte dans le monde 3d. Ensuite, lorsque vous dessinez tous les objets à l'intérieur de ce vaisseau, ne réinitialisez pas votre matrice du monde - gardez la même traduction, et tout sera dessiné par rapport à la position du vaisseau.

3

Extension de la réponse de Reed. Voici un extrait d'un vieux Unreal Technology Feature list.

technologie graphique scène dynamique

scène graphique dynamique (DSG) la technologie est une extension naturelle de la technologie de portail. Un graphe de scène dynamique se compose d'un nœud racine, correspondant à l'environnement immédiat du joueur, et d'un arbre hiérarchique de nœuds enfants. Chaque nœud DSG a une transformation de système de coordonnées, un volume d'écrêtage et un autre état de rendu qui lui est associé. Le moteur de rendu d'Unreal construit à la volée un graphe de scène dynamique au fur et à mesure que chaque image est rendue. De nouveaux nœuds de graphe de scène sont générés lorsque la visibilité du spectateur se propage vers l'extérieur à travers les portails. nœuds du graphe de scène sont les éléments de base de nombreux effets réalistes et des effets spéciaux, tels que:

  • surfaces de miroir.
  • Matériaux semi-réfléchissants, tels que les surfaces en marbre qui réfléchissent partiellement la lumière.
  • Effets de portail "warp" non euclidiens, redirectables pour voir les téléporteurs.
  • Voir à travers les fenêtres dans une zone de ciel infini dans laquelle un ciel, des planètes, des montagnes et d'autres objets sont construits.
  • Les ciels et les arrière-plans avec des systèmes de coordonnées indépendants pour la translation et la rotation indépendantes.

La force de rendu DSG est que tous les effets de nœud sont entièrement interopérables. Par exemple, une fois qu'un noeud DSG miroir est défini, les miroirs sont automatiquement pris en charge de manière récursive (pour les effets de type hall-of-mirror); les miroirs fonctionnent avec le ciel; les miroirs fonctionnent avec les portails Warp; Les portails warp fonctionnent avec le ciel, etc.

La technologie de graphe de scène dynamique d'Unreal est un élément de base qui sera étendu dans les futures versions de la technologie pour incorporer des effets de nouvelle génération tels que voir entre les niveaux, voir sur plusieurs serveurs sur le Internet, et l'eau réfractive.

Questions connexes