160 likes | 244 Views
Systemprogrammierung. << Realisierung eines 3D-Spiels mittels >> << Lightwave3D und Java3D >>. Projektgruppe : Alexander Schesler, Hristo Matev. Spielbeschreibung. Erstellung eines virtuellen 3D- Raums mit Hindernissen Roboter bewachen eine Waffe
E N D
Systemprogrammierung << Realisierung eines 3D-Spiels mittels >> << Lightwave3D und Java3D >> Projektgruppe: Alexander Schesler, Hristo Matev
Spielbeschreibung • Erstellung eines virtuellen 3D- Raums mit Hindernissen • Roboter bewachen eine Waffe • Spieler versucht diese zu finden und unschädlich zu machen • Spiel ist beendet, wenn Waffe unschädlich ist, oder Spieler vom Wachroboter erfasst
Aufgabenbereich • Raummodellierung • Texturierung des virtuellen 3D- Raums • Wachrobotersteuerung ( Computerseite ) • Sounds im Spiel • Spielschwierigkeitsgrade • Netzwerkspiel / „Multiplayer“ , „Client“ -Teil • Optimierung der Szene • Schluss-Video mit LW
Raummodellierung 1 • 4 Wände - die Grenzen des Spielfeldes • 4 Wände - die Seitehintergrund • eine Untergrundfläche - Boden • 8 flache Flächen - Hindernisse • ein Gebäude - Hindernis • eine Kugel - Sonne mit Lichteffekten
Raummodellierung 2 • Flächen-Objekte: QuadArray qa = new QuadArray(4, QuadArray.COORDINATES ); qa.setCoordinate (0, new Point3f (-100.0f, -3.0f, -100.0f )); qa.setCoordinate (1, new Point3f (-100.0f, -3.0f, 100.0f )); qa.setCoordinate (2, new Point3f (100.0f, -3.0f, 100.0f )); qa.setCoordinate (3, new Point3f (100.0f, -3.0f, -100.0f )); • Sonne-Objekt: Sphere sp = new Sphere (1.4f, Sphere.GENERATE_NORMALS | Sphere.ENABLE_APPEARANCE_MODIFY,a); PointLight pl = new PointLight (bound, lPos); Appearance a = new Appearance (); Material mat = new Material ();
Texturierung des 3D- Raums QuadArray qa = new QuadArray(4, QuadArray.TEXTURE_COORDINATE_2); qa.setTextureCoordinate (0,new Point2f (0.0f, 1.0f)); qa.setTextureCoordinate (1,new Point2f (0.0f, 0.0f)); qa.setTextureCoordinate (2,new Point2f (1.0f, 0.0f)); qa.setTextureCoordinate (3,new Point2f (1.0f, 1.0f)); • 2D Texturen für alle Flächen-Objekte:
Wachrobotersteuerung 1 • Steuerung durch Fuzzy-Regler FS Wissensbasis Wissensbasis Lingw. Variablen und Terme z.B Abstand Fuzzy-Regeln: if .... then.... x1 x2 x3 Fuzzy- fizierung Fuzzy- Inferenz Defuzzy- fizierung Y
Wachrobotersteuerung 2 • Regler Komponente
Wachrobotersteuerung 3 • Implementierung private native double getFuzzyAnswer (String f, double [] p); System.loadLibrary (libName); rotAngle = (new FuzzyAnswer ().getFuzzyAnswer (fisModule, distace)) target.getTransform (targetTransform); rotateRob.rotY (Math.toRadians (rotAngle)); targetTransform.mul (rotateRob); target.setTransform (targetTransform);
„Sounds“ im Spiel • BacktroundSound • PointSound • ConeSound • Soundspace BackgroundSound bgSound = new BackgroundSound(); MediaContainer mc = new MediaContainer (); mc.setURLString (fileName); mc.setCacheEnable (true); bgSound.setEnable (true);
Spielschwierigkeitsgrade • Bewegungsgeschwindigkeit der Roboter • Fuzzy-Regler • Anzahl Roboter switch (severity) { case 1: rotAngle = myFis.getAngle (dist, fisModule2); speedRobo = speed = (Math.abs (r.nextInt () % 100)); nRobo = 6; break; ... }
Virtual Universe View BG Locale BG BG BG BG BG createScenePlay createSceneLand createSceneBgWalls createSceneSound createSceneSun TG TG TG TG Siehe unten tgLand (Grundfläche) tgBgWalls (Seitenhintergrund) tgSound (Hintergrundmusik) tgSun (Kugel mit Licht) S S S S S Background Sound SoundScape Point Light Ambient Light sLand sWall1 sWall1 sWall1 sWall1 bSound sScape pl bSound Sphere Szenegraph 1
Virtual Universe Locale BG createScenePlay ... TG TG TG TG TG tgBg (Hintergrund) tgRobot (Roboter) tgObstacle (Hindernisse) tgBuild (Gebäude) tgWalls (Spiel- grenzen) S S S S S S S S S S S sRobot (Roboter -Objekt) sO1 sO2 sO3 sO4 sO5 sO6 sO7 sO8 sBuild (Gebäude -Objekt) sWalls Szenegraph 2
Klassendiagramm Behavior {abstact} Applet {abstact} MediaContainer BackgroundSound AuralAttributes Enthält main () PlayGround MySound PickObstacle TerrainFileReader Thread QuadArray FuzzyAnswer MyLight MyShapes Schnittstelle zu c-Dateien (dll) MyIntro MyFiles
Schluss-Video mit LW • Textszene • Raumszene • Terrainszene • Weltraumszene
Aufgabenteil Szene Frame /s Gesamtzeit / h # Frames Gesamtzeit / h Animation 90,6 Textszene 3 300 0,25 Programm 61,2 Dokumentation 15,0 Raumszene 45 1501 18,75 166,8 Terrainszene 150 1971 82,0 Weltraumszene 180 800 40,0 141,0 Entwicklungszeit Rendering - Zeit