GLBasic forum

Other languages => GLBasic - de => Topic started by: x-tra on 2008-Jun-07

Title: entity system funktionsweise?
Post by: x-tra on 2008-Jun-07
ich hab mir mal den code davon angesehen, und da sind ein haufen code usw. drin, von denen ich nix verstehe.

kann mir jemand das erklären, um vielleicht selbst etwas erweitern, bzw. befehle selbst schreiben zu können?
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-07
Glaube nein, wenn du von Martix und Co keine Ahnung hast wirds eh schwer.
Gibt aber schöne Tutorials darüber im Netz, musst du halt nach Matrix für OpenGL suchen :)
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-07
sowas hab ich befürchtet, hoffe ich finde da ein leicht verständliches bzw. gut erklärendes tut.

mal schauen, aber was über matrix zu lernen kann ja nie schaden.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-07
so siehts mal aus !
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-07
ja aber ich denke sowas
Code (glbasic) Select
X_SPOT_LT iLight, o.color, o.Mg[12], o.Mg[13], o.Mg[14], _
o.Mg[0], o.Mg[1], o.Mg[2], o.cutoff


ist dann schon sehr glb spezifisch, oder?

und mir geht es ja allg. darum die einzelnen befehle da zu verstehen, bzw. überhaupt zu wissen was sie bedeuten, da das ja sicher glb eigene sind.

so eine referenz dazu wäre toll.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-07
Er hat ja die Funktionsweise dazu geschrieben, am Code selber versteh ich nicht immer alles :)
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-08
Naja, die Referenz für die X_ Befehle gibt's ja. Und die Matrix ist halt pro Entity die Rotation/Verschiebung/Skalierung von dem Gerät.
Wenn Du was einbauen willst, dann sag was Du brauchst.
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-08
hab ich bei den 3D snippets getan.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-08
Pivots will er .


Quasi ein neuer Origin des Objectes um das es sicht dreht, und anheftet.
Aber so das es selber noch drehbar bleibt.
Ohne Entitysystem bekomm ich es hin. Zwar nicht sehr schön programmiert, aber immerhin läufts!  :booze:
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-08
es soll aber eine eigenständige entität bleiben, damit ich das jeweilige pivot auch als parent für mehrere andere entities nutzen kann.

also eigentlich würde ein unsichtbarer x_dot ja schon reichen als entity, oder?
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-08
Jungs, alles super Ideen. Aber: Kann man nicht einfach die Grafiken/Modelle so machen, dass der Pivot Punkt da ist, wo man in braucht?
Das kostet alles Zeit, Zeit, Zeit!
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-08
Ja schon, NUR, wenn man jedesmal 20 verschiedene Modele laden/erstellen muss die sich um eine Achse drehen(Mit bestimmten Abstand) aber im Prinzip das gleiche Model ist, ist ja auch irgendwie to much...

Da sind die Pivots halt spitze ;)
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-08
kann man nicht einfach eine entity erstellen, ohne dass es sich dabei um licht kamera oder ein modell handelt.

also keine größe hat, sondern nur eben ein (null)punkt mit x,y,z koordinate?

oder eben eine minikleine kugel erstellen, die unsichtbar ist, und als standard pivot genutzt wird?

ohne pivots wirds schwer.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-08
Brauchst du net, im Prinzip brauchst du nur einen Vertex ;) also x;y;z Koordinate
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-08
der hat ja auch eine ausrichtung, oder? (so bisschen was lernt man ja inzwischen doch dazu)

ich habe aber keine ahnung, wie man so eine funktion schreibt.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-08
Ruhig bleiben und abwarten ;)
Wenn mir Gernot mit der Rotation hilf, bau ichs im ES ein .
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-08
cool super, na da bastel ich derweil noch bisschen an meinem level.
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-08
Genau das ;)
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-09
Neee... ich kapier's net. Wo gibt es eine Situation, wo man so was braucht!?
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-09
stell dir nen sonnensystem vor, nur ohne sonne.

alles bewegt sich um einen virtuellen punkt.

achja, ich habe mal in c3d eine tolle smooth cameraführung gemacht, wäre ohne virtuelle pivots so nicht möglich gewesen.

ich hab das jetzt so gelöst, dass ich als pivot eine grüne kugel nehme, aber das ist keine endlösung.

ein unsichtbares objekt, was aber ganz normal als entity rotiert/bewegt/parented/usw. werden kann würde schon reichen.

ich würd auch selber solch eine funktion machen, wenn ich wüßte wie man so ein objekt unsichtbar macht.

[edit] schau mal in dein postfach hier, vielleicht hilft es ja, oder eben mal bei bb3d, auch wenns wehtut, aber die befehle die es bei bb3d und cobra3d gibt, haben schon ihre berechtigung.
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-10
Ja, und jetzt machst Du einen Plateten "Sonne" und machts den 0,0,0 Punkt da, wo sich das Teil rum dreht.
Mal im Ernst - ist das ein Real-Life Szenario? Soll wegen so einem Sonnensystem die ganze Engine langsam werden?

Bitte, bitte, bitte aufhören zu meckern und endlich mal was damit machen! Ich mach da gerne weiter, aber nicht, wenn jeder nur meckert statt endlich mal was damit zu machen.
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-10
@gernot:
Code (glbasic) Select
Ein Drehpunkt (pivot entity) ist ein unsichtbares Objekt in der 3D-Welt. Es wird hauptsächlich als Parent für andere Objekte benutzt. Danach können mit diesem Objekt viele hinzugefügte Objekte gedreht (Zentrum der Rotation) oder verschoben werden.

Alleine um eine Kameraführung relativ einfach umzusetzen.....

Wie gesagt, ein Pivot ist einfach nur ein unsichtbares objekt mit koordinaten und ausrichtung, ich denke, das kostet kaum rechenleistung.es ist nur ein unsichtbares objekt, denn abhängigkeiten werden simple mittels parent gelöst.

ich bau schon mit dem Entity System, aber als pivot habe ich im moment eine normale kugel als mesh geladen, das ist nur nicht der bringer, weil sichtbar.

[edit speziell für gernot]  stell dir eine camera vor, die als parent ein modell hat, sagen wir player a.nun folgt diese camera natürlich player a und soll, egal ob movement oder rotation, alles dem player a nachmachen, was an und für sich schon quatsch ist, da der player dann bei einer rotation der camera als folge einer rotation von player a, sich ebenfalls dreht und das um die eigene achse, ebenso wie player a, und somit player a aus dem sichtfeld von der camera wäre.

mittels zweier pivots kann ich eine super kameraführung bauen, die a) einfach zu verstehen ist b) auf herkömmlichem weg entweder garnicht, da entitysystem unvollständig, oder völlig umständlich ohne entitysystem zu programmieren wäre.

gib mir eine funktion, die ein unsichtbares objekt(vektor bspweise) mit koordinaten und ausrichtung (wie ein geladenes .ddd objekt mit dem ES ansprechbar(movement/rotation/parent), und ich beweise dir wie nützlich sowas sein kann.


schau:http://www.glbasic.com/forum/index.php?topic=1200.msg7334#msg7334

P.S. Für Entityparent(habs noch nich probiert): Das child objekt soll movement und rotation ebenso wie das parent um die eigene achse vollziehen. das ist wichtig. dazu pivots und es wäre perfekt(welche natürlich den selben parentsabhängigkeiten unterliegen wie andere entityobjekte auch)
Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-10
Oder du machst das ParentModel auf Scale 0.00000000001 ;)
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-10
wenn das so klein ginge? lol    :good:   :zzz:

nein mal im ernst, gernot hat ja gesagt, wenn ich was brauche fürs ES, soll ich es sagen, was ich nun schon mehrfach getan hab, wie du weißt.

aber es wird halt meiner meinung nach zu oft in frage gestellt, und so ein objekt ist ja denk ich mal nicht soooo schwer.

man kann schon ein wenig die lust daran verlieren, wenn das bei jeder ES erweiterung so wird.

Nun, am liebsten würd ich das ES selber machen, wenn ich genug kenntnisse hätte.

@schranz0r: hast du dein eigenes ES noch, vieleicht kann ich ja was draus lernen.

Ich werd heut nacht eine befehlsreferenz für gernot anfangen, um so ziemlich alles was man so brauchen könnte aufzulisten.Werden dann sehen, was er davon hält, oder ermöglichen wird.


Title: Re: entity system funktionsweise?
Post by: Schranz0r on 2008-Jun-10
Ne leider nicht mehr  =(

Aber jetzt mal ein Sau dummer einfall von mir:

Das Newton basiert ja auf einem "Entitysystem" wenn man da jetzt ein schickes Leichteres drum rum bauen würde, wärs doch auch spitze!
Und man hätte automatisch eine Physik dabei :)

Und Externe Drehpunkte gibts da auch ! (Siehe: NewtonConstraintCreateHinge : pivotPt[], pinDir[], child, parent )
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-10
tja eindeutig ein fall für gernot.
ich kapier das ja mit mg[12]  usw noch nichtmal, was die zahlen weiß ich, aber wie das mit den matrizen funktioniert eben nicht.

nunja, wir werden sehen, ich nehm erstmal ne andere sprache für mein spiel und setz das dann nach glb um wenn das system einigermaßen läuft.
Title: Re: entity system funktionsweise?
Post by: BumbleBee on 2008-Jun-10
Quote from: Gernot Frisch
Bitte, bitte, bitte aufhören zu meckern und endlich mal was damit machen! Ich mach da gerne weiter, aber nicht, wenn jeder nur meckert statt endlich mal was damit zu machen.
Genau meine Meinung. :)

Quote from: Heiko
nunja, wir werden sehen, ich nehm erstmal ne andere sprache

Ich glaub du wolltest schreiben:

nunja, wir werden sehen, ich nehm erstmal Blitz3D :P ;)

Cheers
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-10
Nein nehm ich nicht....... :nana:

Ich würd was dafür geben, wenn ich das Entity System selber proggen könnte, aber dafür reicht es nicht ganz bei mir.


ich mach eine befehlsreferenz als vorschlag für gernot, weil das mit dem erstmal probieren ist so eine sache, denn das tue ich ja, aber ein auto fährt auch nur schlecht auf 3 Rädern.
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-10
Mach was mit dem EntitySystem, und dann - wenn Du ein Problem hast - komm her.
Die Kamera pack ich per Parent-Referenz an den Spieler. Siehe Demo dazu. Das ist genau das, was Du brauchst.

OK, Ich kann diese doofen Pivots schon einbauen. Das ist nur ein X_MULTMATRIX mehr.
Die Matrix erstellt man genauso wie die vom Objekt, nur halt mit anderen Vorzeichen. Aber das sind massen an neuen Befehlen, die eigentlich keiner braucht.
Title: Re: entity system funktionsweise?
Post by: x-tra on 2008-Jun-17
das prinzip von den matrizen hab ich nun schon fast verstanden, könntest du den teil

Code (glbasic) Select
FUNCTION EntityUpdateMatrix: e AS T3DEntity, only_glob
LOCAL sa,sb,sc, ca,cb,cc
LOCAL sacb, cacb
IF only_glob = FALSE
    ca       = COS(-e.rx);
    sa       = SIN(-e.rx);
    sb       = COS(e.ry);
    cb       = SIN(e.ry);
    cc       = COS(-e.rz);
    sc       = SIN(-e.rz);

sacb=sa*cb
cacb=ca*cb

    e.M[0]  =   sb * cc
    e.M[1]  =  -sb * sc
    e.M[2]  =  -cb

    e.M[4]  = -sacb * cc + ca * sc
    e.M[5]  =  sacb * sc + ca * cc
    e.M[6]  =  -sa * sb

    e.M[8]  =  cacb * cc + sa * sc
    e.M[9]  = -cacb * sc + sa * cc
    e.M[10] =   ca * sb

e.M[12]= e.x
e.M[13]= e.y
e.M[14]= e.z
    e.M[15]= 1
    ENDIF

IF e.parent=-1
e.Mg[] = e.M[]
ELSE
EntMultMatrix4x4(e.Mg[], g3DObj[e.parent].Mg[], e.M[])
ENDIF

// If you have childs, update their global matrix, too
FOREACH c IN e.childs[]
EntityUpdateMatrix(g3DObj[c], TRUE)
NEXT
ENDFUNCTION


wenn du mal zeit hast, genauer erklären, wäre echt nett, aber die befehle, die ich dir geschickt habe, gehen natürlich vor.
aber so lern ich das wenigstens vollständig.
Title: Re: entity system funktionsweise?
Post by: Kitty Hello on 2008-Jun-17
Die Funktion erstellt aus den 3 Drehwinkeln und der Verschiebung eine Matrix. Hat das Entity einen Parent, wird mit dessen globaler Matrix multipliziert. Wenn das Entity noch Kinder hat, werden die Kinder-Matritzen rekursiv neu berechnet.