Laden...

[Tutorial] Irrlicht - erste Schritte

Erstellt von S.H.-Teichhof vor 17 Jahren Letzter Beitrag vor 16 Jahren 65.232 Views
S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 17 Jahren
[Tutorial] Irrlicht - erste Schritte

Tutorial Teil 1: Hallo Word

In diesem Teil wird behandelt werden:
1.) die Einstellungen der IDE zur Verwendung der Irrlicht Engine behandeln.
2.) die Grundlagen der Verwendung der Irrlicht Engine

1.)Vorbereitung der IDE

Um die Irrlicht Engine in Ihrem Programm zu Verwenden müssen sie zuerst eine Referenz auf die irrlicht Dll (Irrlicht.NET.dll)Setzen. Bei dieser Gelegenheit stellen Sie auch sicher, dass (Irrlicht.dll) sich im gleichen Verzeichnis befindet

2.)Das erste Beispiel Hallo World

Nun zum Eigentlichen Programm.


using System;
using Irrlicht;
using Irrlicht.Video;
using Irrlicht.Core;
using Irrlicht.Scene;


namespace HelloWorld
{
  class Example
  {
   [STAThread]
   static void Main(string[] args)
   {
     // Initialisieren der Engine
     IrrlichtDevice device = new IrrlichtDevice(DriverType.OPENGL);
     device.WindowCaption = "Irrlicht.NET C# example 01 - Hello World"; 
   
     // Laden der Sydney Textur
     ITexture texSydney = 
        device.VideoDriver.GetTexture(@"sydney.bmp");
     
     // Lädt den Animierten mesh von Sydney
     Irrlicht.Scene.IAnimatedMesh mesh = 
       device.SceneManager.GetMesh(@"sydney.md2");

// Fügt eine vom User kontrollierte Kamera und einen animierten mesh in die Szene 
     ICameraSceneNode cam = 
        device.SceneManager.AddCameraSceneNodeFPS(null, 100, 100, -1);
     cam.Position = new Vector3D(20,0,-50);

     ISceneNode node = 
       device.SceneManager.AddAnimatedMeshSceneNode(mesh, null, -1);
     node.SetMaterialTexture(0, texSydney);
     node.SetMaterialFlag(MaterialFlag.LIGHTING, false);

     // Versteckt den Mauszeiger
     device.CursorControl.Visible = false;
     
     // Startend den drawing loop
     int fps = 0;
     while(device.Run())
     {
       if (device.WindowActive)
       {
          device.VideoDriver.BeginScene(
             true, true, new Color(0,100,100,100));

          device.SceneManager.DrawAll();

          device.VideoDriver.EndScene();
          
          // Anzeige der Fps
          if (fps != device.VideoDriver.FPS)
          {
            fps = device.VideoDriver.FPS;
            device.WindowCaption = 
                "Irrlicht.NET C# example 01 - Hello World [" + 
                device.VideoDriver.Name + "] fps:" + fps; 
          }
       }
     } // Ende des drawing loop
   } // Ende main()
  } // Ende class
} // Ende namespace

Das Beispiel zeigt wie die grundlegenden Funktionen der Irrlicht Engine zu verwenden sind.
Es lädt ein md2 file, fügt eine Textur hinzu und zeigt eine animation. Dem Benutzer ist es des weitern möglich mit Hilfe der Tastatur und der Maus um die Objekte Herum zu Fliegen

Häufig Auftretende Probleme
• Wenn der Compiler angibt das 'Irrlicht' nicht gefunden werden kann Fügen sie eine Referenz auf Irrlicht.NET.dll ein
• Wenn es Colmpilieren ohne Probleme Funktioniert, aber das Programm eine Exzeption wie diese wirft: "An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module. Additional information: File or assembly name Irrlicht.NET, or one of its dependencies, was not found."
fehlt die Irrlicht.DLL. Kopiere Sie diese in ein Verzeichnis in dem die IDE Sie finden kann und wo die Irrlicht.NET.Dll ebenso vorhanden ist.

Nächster Teil: [mehrteiliges Tutorial] Irrlicht

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 17 Jahren

Das Model und das SDK Findet ihr unter http://irrlicht.sourceforge.net/downloads.html

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

13 Beiträge seit 2006
vor 17 Jahren

Hey danke dafür, hört sich echt interessant an die Engine!
Gibt das ein längeres Tutorial?

P.S. Meinst du das ist im Smalltalk-Forum richtig aufgehoben?

[Edit] Ich seh grad dass die Tutorials ja alle auf der Seite drauf sind 🙂

S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 17 Jahren

dieses ja aber in Englisch und das 2. an dem ich gerade arbeite ist nur in C++ Verfügbar also macht die arbeit doch sinn.

p.s Ich habe vor alle 14 C++ Tuturials nach C# zu portieren und in Deutsch zu übersetzen

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

13 Beiträge seit 2006
vor 17 Jahren

oh ok 😁
Danke für die Mühe, ich freu ich mich schon auf die Fortsetzung!

S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 17 Jahren
[Tutorial] Movment mit irrlicht

Tutorial 2.Quake3Map

Dieses Tutorial Zeigt:

  1. wie dem Benutzer das auswählen eines Video Treibers Gestaltet wird
  2. wie eine Quake 3 Map in die Engine geladen wird.
  3. wie eine vom Benutzer Gesteuerte Kamera erzeugt wird
  4. Der Drawing Loop

Bitte Beachten: Sie Sollten mit den Grundlagen der Engine Vertraut sein. Dazu Bitte 1. Hallo World durcharbeiten.
**

  1. Auswahl des Video Treibers**
    Der zu Verwendente Video Treiber wirb Bei der Irrlicht Engine durch ein Objekt des Typs Irrlicht.Video.DriverType Abgebildet dabei stehen Folgende Möglichkeiten zur Auswahl:
    OPENGL
    DIRECT3D9
    DIRECT3D8
    SOFTWARE2
    SOFTWARE
    NULL_DRIVER

Dem Benutzer Bieten wir Diese Möglichkeiten auf der Konsole an.

 
			Console.Write("Please select the driver you want for this example:\n"+
			             " (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.5\n"+
			             " (d) Software Renderer\n (e) Apfelbaum Software Renderer\n"+
			             " (f) NullDevice\n (otherKey) exit\n\n");

 

Werten Seine Eingabe mit Hilfe von Console.ReadKey().KeyChar und einer switch Anweisung aus und Speichern sie in das Objekt driverType das wir vorher angelegt haben.

 
			switch(Console.ReadKey().KeyChar)
			{
				case('a'):
					{
						driverType = Irrlicht.Video.DriverType.DIRECT3D9;
						break;
					}
					
				case ('b'):
					{
						driverType = Irrlicht.Video.DriverType.DIRECT3D8;
						break;
					}
				case ('c'):
					{
						driverType = Irrlicht.Video.DriverType.OPENGL;
						break;
					}
				case ('d'):
					{
						driverType = Irrlicht.Video.DriverType.SOFTWARE;
						break;
					}
				case ('e'):
					{
						driverType = Irrlicht.Video.DriverType.SOFTWARE2;
						break;
					}
				case ('f'):
					{
						driverType = Irrlicht.Video.DriverType.NULL_DRIVER;
						break;
					}
				default:
					{
						return ;
					}
			}
 

Nun Erzeugen wir unser Irrlicht.IrrlichtDevice

 
Irrlicht.IrrlichtDevice device = new IrrlichtDevice(driverType);
 

Und Prüfen ob die Erzeugung Erfolgreich war

 
			if (device == null)
			{
				return;
			}
 

**
2. Laden des Map Files **
nun Laden wir das mapfile in unser device FileSystem dies machen wir per

device.FileSystem.AddZipFileArchive("map-20kdm2.pk3");

Dies können wir tun da pk3 Dateien „nur“ zip Dateien Sind..
Jetzt noch die Eigentliche Map(20kdm2.bsp) in einen Irrlicht.Scene.IAnimatedMesh Laden und Überprüfen ob das Laden Erfolgreich war.

 
Irrlicht.Scene.IAnimatedMesh mesh = device.SceneManager.GetMesh("20kdm2.bsp");
			if (mesh == null)
			{
				return;
			}
 

**
3.Die Benutzer gesteuerte Kamera**
Nun Fügen wir noch eine Benutzergesteuerte Kamera zu unserer Szene

 
ICameraSceneNode cam = device.SceneManager.AddCameraSceneNodeFPS(null, 100, 100, -1);
 

Und Setzen Ihre Position Auf einen Startpunkt Innerhalb unserer Welt

 
	cam.Position = new Vector3D(1395,142,1326);
	 

**
4. Der drawing loop**
Jetzt Brauchen wir nur noch unseren Drawing Loop.

 
			while(device.Run())
			{
				if (device.WindowActive)
				{
				
					device.VideoDriver.BeginScene(true, true, new Color(0,100,100,100));

					device.SceneManager.DrawAll();
					
					

					device.VideoDriver.EndScene();


					if (fps != device.VideoDriver.FPS)
					{
						fps = device.VideoDriver.FPS;
						device.WindowCaption = "Irrlicht.NET C# example 01 - Hello World ["+
							device.VideoDriver.Name + "] fps:" + fps;
					}
				}
			}
 

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 17 Jahren

So und hier noch die komplette Code Datei

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

5.657 Beiträge seit 2006
vor 17 Jahren

Ein wirklich interessantes Thema! Ich freue mich, daß du dir die Mühe gemacht hast, die Tutorials zu übersetzen! Das Hello World Beispiel hab ich schon auf der Irrlicht Homepage gefunden - und es hat auf Anhieb funktioniert, sogar mit eigenen Modellen.

Ich würde mich über weitere Beiträge sehr freuen! Am meisten würden mich (und viele andere sich auch) Themen interessieren, wie Shader oder das Scene-Management in Irrlicht. Z.b. wie man vorhandene fx-Shader oder Szenen mit mehreren Objekten aus einem Grafikprogramm wie 3ds max in Irrlicht integrieren kann. Leider gibt es da bisher noch sehr wenig Infos dazu, vor allem in C#.

Viele Grüße,
Christian

Weeks of programming can save you hours of planning

D
32 Beiträge seit 2005
vor 17 Jahren

Wenn es jemanden interessieren Würde:

Hier sind fast alle Tutorials auf der Irrlichthomepage in .Net Sprachen portiert.

Ist aber englisch.

P
8 Beiträge seit 2006
vor 16 Jahren

die Seite gibts nicht mehr...
Hat vll von euch jemand alle tutorials in c#?

5.657 Beiträge seit 2006
vor 16 Jahren

nee, seit meinem letzten Beitrag hab ich mir meine eigene 3D-Engine gebaut...

aber hier ist die Irrlicht Webseite: http://irrlicht.sourceforge.net/

Weeks of programming can save you hours of planning

R
206 Beiträge seit 2007
vor 16 Jahren

Geht das hier noch weiter? Is ja schon ziemlich altes Thema...

D
209 Beiträge seit 2007
vor 16 Jahren

Würde mich auch freuen wenns noch weiter geht.
Habe das gerade erst entdeckt u. habe schonmal einen Blick auf Irrlicht geworfen, ich werd mir das auf jeden Fall mal genauer ansehen.

S.H.-Teichhof Themenstarter:in
1.549 Beiträge seit 2004
vor 16 Jahren

Die ANpassung der ersten 2 Teile an den Neuen .Net Warpper ist in Arbeit und ich hoffe das ich so in 14 Tagen ein weiteres Teil Ferig Habe (Steck grade über beide Ohren in Arbeit)

Wir Arbeiten eigendlich nicht wir nehmen nur das geld