Irrlicht in Windows FormEin änliches Tutorial gibt es auch in Englisch
(Hier)Doch ich werde es etwas anders erklären, aber das Endergebnis ist normalerweise immer gleich
Erstellt unter Visual (Studio)(C# Express) Edition ein neues
Windows Form Anwendungs Projekt.
Wichtig !!! Ich empfehle die .net 2.0 API um Fehler zu vermeiden.
Öffnet dann die jeweilige WindowsForm Klasse(Form1.cs)
Fügt ab besten ganz oben folgende Using Direktive ein
Bzw. so sollte es ganz oben ausschauen.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IrrlichtNETCP;
namespace TutorialWinForm // Dein Namespace
{
.....
Jetzt brauchen wir ein Ereignis un zwar das "shown" Ereignis.
Hier wieder sehr wichtig
bitte benutzt das Shown Ereignis nicht
Load oder Loading oder bitte nicht beim Initialisieren, denn dann würde
Die Anwendung hängen bleiben so lange die While schleife läuft.
Ok jetzt fügt ihr das in den Shown Ereignis mit ein.
Code:
private void Form1_Shown(object sender, EventArgs e)
{
CreateV3DView(); // Das hier
}
Ok jetzt sollte unser gesamt code so aussehen.
Code:
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IrrlichtNETCP;
namespace TutorialWinForm // Dein Namespace
{
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
CreateV3DView(); // Das hier
}
}
}
Um mehr Übersicht zu kriegen fügt unter dem Shown ereigniss folgende variablen hinzu. (Vorerst Deklariert)
Code:
private void Form1_Shown(object sender, EventArgs e)
{
CreateV3DView(); // Das hier
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Unter dem Shown Ereignis
static IrrlichtDevice IDevice;
static SceneManager SManager;
static VideoDriver VDriver;
static SceneNode SkyBox;
static CameraSceneNode CameraSN;
static SceneNode ExampleCube;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
Ich habe die variablen mit static Deklariert damit ich z.B auch mit anderen WindowsForm Klassen
damit kommunizieren kann.
So jetzt fangen wir richtig an...
Wir erstellen folgenden Code.
Code:
private void CreateV3DView()
{
IDevice = new IrrlichtDevice(DriverType.Direct3D8,new Dimension2D(1000, 1000), 8, false, false, false, false, XTabPageV3D.Handle); // XTabPageV3D erklärung unten.
Wir haben jetzt IDevice Definiert. Wer das nicht kennt sollte in Tutorial 1 nachschlagen.
Hier möchte nur eins erklären,
XTabPageV3D.Handle.
XTabPageV3D ist mein Tabpage das man oben im Screenshot erkennen kann.
XTabPageV3D.Handle bedeut in dem falle wo Irrlicht das Direct3D produziert (Das were unser Tabpage).
Ok jetzt Definieren wir noch SceneManger, VideoDriver(Mehr dazu in Tutorial 1), und SceneRoot.
Code:
SManager = IDevice.SceneManager;
VDriver = IDevice.VideoDriver;
SceneNode SceneRoot = SManager.RootSceneNode;
Um dem Beispiel Anwendung den Richtigen "Oh" Effekt zu verleihen Definiere ich noch mein SkyBox
Code:
SkyBox = SManager.AddSkyBoxSceneNode(SceneRoot,
new Texture[] {
VDriver.GetTexture("irrlicht2_up.jpg"),
VDriver.GetTexture("irrlicht2_dn.jpg"),
VDriver.GetTexture("irrlicht2_lf.jpg"),
VDriver.GetTexture("irrlicht2_rt.jpg"),
VDriver.GetTexture("irrlicht2_ft.jpg"),
VDriver.GetTexture("irrlicht2_bk.jpg")
}, -1);
So, jetzt fehlt uns noch eine Camera.
Hier werde ich CameraSN Definieren.
Ich benutze sehr oft die Maya Camera auch hier, aber das bleibt euch überlassen.
Code:
CameraSN = SManager.AddCameraSceneNodeMaya(CameraSN, 200, 200, 200, 4);
Jetzt wird die Variable ExampleCube Definiert.
ExampleCube ist in diesem Beispiel eine 3D Box.
Code:
ExampleCube = SManager.AddCubeSceneNode(10, SManager.RootSceneNode, -1);
ExampleCube.SetMaterialFlag(MaterialFlag.Lighting, false); // Damit man später die Textur erkennen kann
ExampleCube.Position = new Vector3D(22, 22, 22); // Position
Jetzt kommen wir langsam zum Ende.
jetzt fügen wir nur noch die while schleife ein. In dem Alles Gezeichnet wird, wie z.B. unser SkyBox.
Wer mehr zu der While schleife erfahren will sollte hier nach gucken.Zitat:
while (IDevice.Run())
{
VDriver.BeginScene(true, true, new IrrlichtNETCP.Color());
SManager.DrawAll();
VDriver.EndScene();
}
return;
Das war es eigentlich [Fasst] aber ich habe den Ganzen Code noch mal zusamen gefasst.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IrrlichtNETCP;
namespace TutorialWinForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
CreateV3DView();
}
static IrrlichtDevice IDevice;
static SceneManager SManager;
static VideoDriver VDriver;
static SceneNode SkyBox;
static CameraSceneNode CameraSN;
static SceneNode ExampleCube;
private void CreateV3DView()
{
IDevice = new IrrlichtDevice(DriverType.Direct3D8,new Dimension2D(1000, 1000), 8, false, false, false, false, XTabPageV3D.Handle);
SManager = IDevice.SceneManager;
VDriver = IDevice.VideoDriver;
SceneNode SceneRoot = SManager.RootSceneNode;
SkyBox = SManager.AddSkyBoxSceneNode(SceneRoot,
new Texture[] {
VDriver.GetTexture("irrlicht2_up.jpg"),
VDriver.GetTexture("irrlicht2_dn.jpg"),
VDriver.GetTexture("irrlicht2_lf.jpg"),
VDriver.GetTexture("irrlicht2_rt.jpg"),
VDriver.GetTexture("irrlicht2_ft.jpg"),
VDriver.GetTexture("irrlicht2_bk.jpg")
}, -1);
CameraSN = SManager.AddCameraSceneNodeMaya(CameraSN, 200, 200, 200, 4);
ExampleCube = SManager.AddCubeSceneNode(10, SManager.RootSceneNode, -1);
ExampleCube.SetMaterialFlag(MaterialFlag.Lighting, false);
ExampleCube.Position = new Vector3D(22, 22, 22);
while (IDevice.Run())
{
VDriver.BeginScene(true, true, new IrrlichtNETCP.Color());
SManager.DrawAll();
VDriver.EndScene();
}
return;
}// CreateV3DView() ende
}// Klasse Ende
}// Namespace Ende
Wenn ihr Fehler entdeckt bitte ich um ein kleinen Bescheid.
Über Kommentare würde ich mehr sehr freuen.
Grüße thuglife
xtrembit.kilu.de