Irrlicht schön aber zu blöd?!

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Irrlicht schön aber zu blöd?!

Beitrag von Artus »

Hi Leute,

also, da vor kurzem irrlicht 1.2 herrausgekommen ist habe ich mal wieder etwas damit rumgespielt ^^ naja halt in c++ aber is ja auch für pb. Jetzt hab ich mal ne frage: findet ihr das nich auch blöd das die mashes und anderen dinge gleich angezeigt werden sobald man se geladen hat? ich mein es währe übersichtlicher und doch sicher geschickter währe es wie die sprites in pb das in jedem cyclus ein befehl kommt das es zeichnen soll?!

mfg artus
Zuletzt geändert von Artus am 04.12.2006 18:17, insgesamt 1-mal geändert.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich hab zwar noch nie was mit 3D-Engines gemacht, aber ich würde mal vermuten, daß das doch in sämtlichen 3D-Engines so gehandhabt wird?

Der Grundgedanke ist doch der, eine 3D-Welt im Speicher zu haben, in der alle Meshes einmal "angemeldet" werden, sodaß sie sich in der 3D-Welt befinden. Dann macht Deine Kamera den Rest, die bewegt sich durch die 3D-Welt und anhand ihrer Position entscheidet Deine Grafikkarte letztendlich, was gezeichnet wird und was nicht. So wie im echten Leben halt auch - stell Dir vor, wie das ist, wenn Du einen Film drehst. Die Welt existiert, die Personen bewegen sich zwar aber sie sind immer anwesend. Und mit Deiner Kamera bewegst Du Dich in dieser Welt und diese generiert pro Sekunde 25 Bilder.

Ich wüßte ehrlich gesagt auch nicht, warum es cool wäre, pro Schleifendurchlauf zu sagen, was gemalt werden soll und was nicht.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

HideEntity gibt's aber schon , gell
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Beitrag von Artus »

es geht ja auch darum das alles unübersichtlich is zb:

zb: die Keyboardabfrage wird auch nich in der hauptschleife gemacht, ka warum und wo die dann getestet wird :

(hoffe ihr kennt euch bisl in c++ aus^^

Code: Alles auswählen

class MyEventReceiver : public IEventReceiver
{
public:
       
	virtual bool OnEvent(SEvent event)
	{
	    if (!Device)
		   return false;
		  
          
        if (KeyBoard.KeyState[(int)Keys.Up] && KeyBoard.KeyState[(int)Keys.Left])
            {
               	core::vector3df v = ManNode->getPosition();
                 	v.X += 3.0f;
                    ManNode->setPosition(v);
            }
            
            
            
		if (event.EventType == irr::EET_KEY_INPUT_EVENT)
		{
			switch(event.KeyInput.Key)
			{
			case KEY_ESCAPE:
            {
                 Device->closeDevice();
                return true;
            }
             
            case KEY_KEY_D:
            {
                 	core::vector3df v = ManNode->getPosition();
                 	v.X += 3.0f;
                    ManNode->setPosition(v);
            return true;
            }   
            case KEY_KEY_A:
            {
                 	core::vector3df v = ManNode->getPosition();
                 	v.X -= 3.0f;
                    ManNode->setPosition(v);
            return true;
            }  
                 case  irr::KEY_KEY_W:
            {
                 	core::vector3df v = ManNode->getPosition();
                 	v.Z += 3.0f;
                    ManNode->setPosition(v);
            return true;
            }   
            case KEY_KEY_S:
            {
                 	core::vector3df v = ManNode->getPosition();
                 	v.Z -= 3.0f;
                    ManNode->setPosition(v);
            return true;
            }  
            
             case KEY_KEY_O:
            {
				DayLiht(true);
				return true;
            }  
               case KEY_KEY_P:
            {
				DayLiht(false);
				return true;
            }  
            
            
            
			}
		}

		return false;
	}
};

und noch viele andere dinge wo man die übersicht verliert man weis nich mehr genau was nun da is was nnich da die zum größten teils alle nich mehr sichtbar aufgerufen werden.[/code]
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja sinnvoll wäre es, mal die IEventReceiver zu sehen, dann weiß man ja, wie das Teil benutzt wird...
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag von neotoma »

Artus hat geschrieben:es geht ja auch darum das alles unübersichtlich is zb:

zb: die Keyboardabfrage wird auch nich in der hauptschleife gemacht, ka warum und wo die dann getestet wird :
Du könntest alternativ auch den IrrlichWrapper benutzen. Aber um Deine Frage zu beantworten - das macht die IrrlichtEngine. Schade ist das von hause aus nur ein EventReceiver möglich ist. Bzw. wäre es manchmal interessant wenn man sich für verschiedene events registrieren könnte. Das wäre aber wieder ein Overhead in Irrlicht. So muss man das halt selber handhaben.
Den IrrlichtWrapper schwenke (schöne Wort... ;-() ich gerade auf Irrlicht 1.2.
Ich denke das der Wrapper für Dich 'einen Tick' einfacher ist. Dort kannst Du auch die Event-Abfrage in die Hauptschleife packen.

Grundsätzlich ist eine 3D-Engine keine einfache Scahe. Viele haben sich schon daran versucht, aber es gibt nur wenig gute. Die gesamte Komplexität zu beherrschen ist nicht trivial. Daher muss man sich schon Zeit nehmen um sich einzuarbeiten. Ich denke immer die beste Methode ist ein kleines Projekt mit erreichbaren Zeil anfanegen, und so nach und nach hinter die Funktion der jeweiligen Engine zu blicken.
(Und wenn Du Irrlich komplex und unübersichtlich findest, solltest Du Dir niemals den Ogre antun.... ;-) )

Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Beitrag von Artus »

naja die sache is die ich komme recht gut mit der engine zurecht, nur stimmt was mit der Tasteneingabe nich -.- das hackt voll als ob er blos alle 2 sec oder so testet -.- und gibt es nich zu wenig collisionsabfragen triangle in triangle fehlt glaub ich da gibt es blos ellypse in triangle. naja

@neothama: sag mal dein Wrapper, beinhaltet der nur ein paar befehle oder alle? und is da eine Enleitung dabei wie man es in PB anwendet? ach und gibts im wrapper auch die Befehle für parallex bzw bump mapping? ^^

mfg Arthur :bluescreen: ^^
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag von neotoma »

Artus hat geschrieben: @neothama: sag mal dein Wrapper, beinhaltet der nur ein paar befehle oder alle? und is da eine Enleitung dabei wie man es in PB anwendet? ach und gibts im wrapper auch die Befehle für parallex bzw bump mapping?
Der Wrapper beinhaltet nicht alle Befehle, da ich ja die Objekte bzw. die Aufrufe an den Objekten mappen muss. Dafür vereinfacht er einige sachen. Besonders wichtig ist mir, das ich damit schneller Arbeiten kann, als mit C++. Und zwar weil ich für einfache Tests nicht ein Projekt aufsetzen muss. Und es ist eine Doku dabei, die jedoch nicht soooo ausführlich ist. Dafür sind eine ganze Menge Beispiele enthalten (im nächsten Release über 30 !).
Und für Parallax und Bump-Mapping gibt es auch in Irrlicht keine Befehle. Aber Du kannst wie in Irrlicht die Material-Typen und Flags setzen. Du kannst ab dem nächsten Release (was sich durch Irrlicht 1.2 etwas verspätet) auch Shader einsetzen.

Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Antworten