Ich erstelle ein 3D-Weltraumspiel mit Ogre3D für Grafiken mit C ++ und eine der Funktionen besteht darin, frei im Raumschiff-Interieur herumlaufen zu können, aber ich bin nicht sicher, wie ich es implementieren soll. Folgendes kann ich mir bisher vorstellen:
- Ein einzelnes Modell des Raumschiffs, dessen Innenraum ebenfalls modelliert, aber irgendwie doppelseitig und doppelt normiert ist? Nicht sicher, ob dies möglich ist!
- Zwei Modelle, eines des Raumschiffs außen und eines des Innenraums mit umgedrehten Normalen, wenn im Spiel das Innenmodell innerhalb des Raumschiffnetzes platziert wird, aber das wäre nicht sehr flexibel (unterschiedliche Raumschiffgrößen, Rumpfdicke usw.)
- Bei zwei Modellen wird der Bildschirm ausgeblendet, wenn ein Spieler das Raumschiff betritt, und seine Ansicht wird auf das Innenmodell umgeschaltet, in dem die Fenster Live-Render-Texturen ihres jeweiligen Platzes auf dem äußeren Teil des Raumschiffs sind. Dies wäre jedoch nicht sehr optimiert ( Rendern auf mehrere Texturen) und hätte nicht die Gameplay-Ästhetik, das Schiff reibungslos zu betreten oder zu verlassen (möglicherweise durch Explosion)
Also, GameDev, wie würden Sie das angehen?
c++
game-mechanics
ogre
jshxe
quelle
quelle
Antworten:
Die erste Option ist, was ich verwenden würde. Ein Modell für alles. Es ist durchaus möglich, ein Modell innen und außen zu haben. Genauso wie es möglich ist, konkave Formen zu haben. Es gibt keine doppelten Normalen oder doppelseitigen Gesichter. Stellen Sie sich so eine Scheibe aus einem beschissenen Schiff vor:
(Ich habe keine Ahnung, warum der Boden nicht flach ist, das habe ich erst gemerkt, nachdem ich ihn gepostet habe ...)
Schwarze Linien sind Gesichter, rote Linien sind Normalen. Die Oberflächen wickeln sich um. Dies ermöglicht es Ihnen, unterschiedliche Rumpfdicken zu haben, wodurch Innenräume blockiert werden, in denen sich die Motoren befinden. Die Türen lassen sich leicht als separate Teile platzieren (da Sie sie wahrscheinlich trotzdem bewegen möchten).
quelle