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
Irrlicht schön aber zu blöd?!
Irrlicht schön aber zu blöd?!
Zuletzt geändert von Artus am 04.12.2006 18:17, insgesamt 1-mal geändert.
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.
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.

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
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^^
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]
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;
}
};
Naja sinnvoll wäre es, mal die IEventReceiver zu sehen, dann weiß man ja, wie das Teil benutzt wird...

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
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.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 :
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.
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
^^
@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
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 !).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?
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.