Aktuelle Zeit: 23.12.2024, 16:27

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [.Net Cp] Irrlicht In Windows Form
BeitragVerfasst: 25.05.2008, 11:31 
Offline
Benutzeravatar

Registriert: 28.06.2007, 18:26
Beiträge: 54
Wohnort: München
Irrlicht in Windows Form

Bild

Ein ä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.

Bild

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

_________________
XtremBit.kilu.de
Bild


Zuletzt geändert von thuglife am 17.03.2009, 19:27, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
BeitragVerfasst: 26.05.2008, 13:29 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Hi, also als erstes Danke fürs tut. War sehr anfängerfreundlich, gut zu verstehen, und man konnte alles durch deine Zusammenfassungen kontrollieren. Ein erstklassiges Tutorial, wie ich finde (eines der besten die ich von der anfängerfreundlichkeit bisher gesehen hab xD)




edit: ups mir ist jetzt erst aufgefallen das mein anderer beitrag verschoben wurde :P Sry was ich das hier schreibe xD aber diesmal hab ich ja auch nen kommentar mit drin :P So ich kopier die frage mal raus xD


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de