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?
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 :)
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.
so siehts mal aus !
ja aber ich denke sowas 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.
Er hat ja die Funktionsweise dazu geschrieben, am Code selber versteh ich nicht immer alles :)
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.
hab ich bei den 3D snippets getan.
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:
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?
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!
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 ;)
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.
Brauchst du net, im Prinzip brauchst du nur einen Vertex ;) also x;y;z Koordinate
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.
Ruhig bleiben und abwarten ;)
Wenn mir Gernot mit der Rotation hilf, bau ichs im ES ein .
cool super, na da bastel ich derweil noch bisschen an meinem level.
Genau das ;)
Neee... ich kapier's net. Wo gibt es eine Situation, wo man so was braucht!?
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.
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.
@gernot: 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)
Oder du machst das ParentModel auf Scale 0.00000000001 ;)
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.
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 )
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.
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
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.
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.
das prinzip von den matrizen hab ich nun schon fast verstanden, könntest du den teil
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.
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.