3D Entity System [DE]

Previous topic - Next topic

x-tra

ich weiß nicht, ob ich da was falsch verstehe, aber wenn ich den origin verschiebe, kann ich ja das objekt nicht mehr um die eigene achse drehen.

createpivot()   oder createentity()   oder wie auch immer, ein pivot.ddd kugelmodell mit 1,1,1 größe standard laden, und eben durchsichtig müsste es sein.

ich hab das mit einer blauen kugel gemacht, funktionierte.

im prinzip ist es ja nur ein weiteres objekt nur eben unsichtbar.

ansonsten wie jedes andere entity zu handhaben......

müsste doch funktionieren, oder?

Schranz0r

du wiederholst dich immer Heiko :)
Sag ja warte ab ich/Gernot mach das dann schon.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

#167
ich weiß, bin ungeduldig....... ;/

is halt sonntag heut, is langweilig..........sry




[edit] wie kann man im ES eigentlich den alphamode für ein entity setzen, hab doch da was von t.alpha gelesen gestern.

        eine idee hab ich noch, man kann doch eine funktion entitycreatepivot erstellen mit x_dot und irgendwie muss man das doch unsichtbar hinkriegen, da      würde ja schonmal helfen, oder?

Schranz0r

Wie bist du den drauf.... :noggin:

Jetzt haste es schon zum 5 Mal gesagt  :S
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

#169
einfach zuviel kaffee.................................... 3. Kanne heut.

hab mit ac3d nen poly aus zwei punkten gemacht, gespeichert, und nutz das als pivot, mal schauen, besser als nix.


ich werd den ersten level heut nacht mit cobra3d coden und später dann die syntax umschreiben, wenn ich meinen pivot hier hab.lol

da kann ich wenigstens schon testen....

Schranz0r

Tip von mir:

Lass den Kaffee weg... wenn ich ehrlich bin, ich hab auf besoffen getippt  ;/ :booze:
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

Nöööö, aber schau mal an meinen posts wieviel ich letzte nacht geschlafen hab.....

Ich probier schon die ganze Zeit und dann der Kaffee dazu, da wäre mir besoffen lieber.

BumbleBee

Quote from: Heiko
  ein knuffiges Jump´n Run solls werden, a´la Rayman oder so.

Das klingt schon mal super. :good:

Quote from: Heiko
und dann der Kaffee dazu, da wäre mir besoffen lieber.

Tu halt was hochprozentiges in den Kaffee rein sonst hast du mich bald eingeholt mit posts.  :booze:  Also ich persönlich trink lieber nix alkoholisches mehr vorm PC. Einmal reicht.  =D

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Kitty Hello

Update: EntityCreatePivot als neuer Befehl.

Moru

Is this the final version of the entity system or is anyone working to expand this? I'm not totaly sure I understood all the german text about entity systems :-)

x-tra

#175
Ich hab einen neuen Befehl erstellt

EntityPointTo(startentity, targetentity)

Die Anweisung EntityPointTo dreht ein Quell-Objekt so, dass es danach direkt auf ein Ziel-Objekt zeigt. Bei der Drehung werden nur die Pitch- und Yaw-Winkel geändert. Roll-Winkel wird nicht geändert.wäre aber optional sicher denkbar.

Funktioniert glaube ich noch nicht richtig, lasse mir da aber gern helfen.

Ja, dreht sich irgendwie immer um Z-Achse, so wie ich es sehe.

Dreht sich und dreht sich und dreht sich.

Naja Gernot oder Schranz0r sind ja die Genies hier.

Also ich versteh das jetzt nicht, das klappt nicht mit der rotation.
daher hier mal gepackt für euch, is aber nix dolles nur zum probieren.
ich seh nicht, wo der fehler liegt, hab schon alles probiert.

Es hat definitiv etwas mit
Code (glbasic) Select
EntityUpdateMatrix(g3DObj[handle], FALSE)

zu tun, denn bei diesem aufruf kommt der fehler.

Hab mir die winkel noch mit print anzeigen lassen, die können auch nicht stimmen, ist irgendwie der wurm drin.

Gernot, wenn du ein paar minuten zeit hast......büdde

weil so langsam steig ich dahinter, so langsam.

http://www.zshare.net/download/134760628b87db91/

Könnt ihr mir helfen, ich weiß wie matrizen wärs sicher besser und schneller, aber dafür reicht es "noch" nicht aus.

Code (glbasic) Select
FUNCTION EntityPointTo: handle, target
LOCAL hx,hy,hz,tx,ty,tz,xangle,yangle

    hx = g3DObj[handle].x    //
    hy = g3DObj[handle].y    // Koordinaten Start Entity
    hz = g3DObj[handle].z    //

    tx = g3DObj[target].x    //
    ty = g3DObj[target].y    // Koordinaten Ziel Entity
    tz = g3DObj[target].z    //

    xangle = MOD((ATAN( (ty-hy),  SQR((tx-hx)*(tx-hx) + (tz-hz)*(tz-hz) ) )+360),360)
    yangle = MOD((ATAN(tz-hz, tx-hx)+360),360) 
   
    EntityRotate(handle, xangle, yangle, 0 )
ENDFUNCTION



oder so

Code (glbasic) Select
FUNCTION EntityPointTo: handle, target
LOCAL hx,hy,hz,tx,ty,tz,xangle,yangle

    hx = g3DObj[handle].x    //
    hy = g3DObj[handle].y    // Koordinaten Start Entity
    hz = g3DObj[handle].z    //

    tx = g3DObj[target].x    //
    ty = g3DObj[target].y    // Koordinaten Ziel Entity
    tz = g3DObj[target].z    //

    xangle = MOD((ATAN( (ty-hy),  SQR((tx-hx)*(tx-hx) + (tz-hz)*(tz-hz) ) )+360),360)
    yangle = MOD((ATAN(tz-hz, tx-hx)+360),360)

    INC g3DObj[handle].rx,xangle
    INC g3DObj[handle].ry,yangle
    //INC g3DObj[handle].rz,0
   
   
    EntityUpdateMatrix(g3DObj[handle], FALSE)
ENDFUNCTION


Man kann das ganze natürlich ohne den ganzen variablen schreiben, aber der Übersicht halber....


[edit] ich konnte nicht schlafen, daher nochmal neuer code, diesmal ganz simpel, müsste eigentlich zeigen, dass die funktion richtig ist, aber geht trotzdem nicht, was mach ich bloss falsch?

Code (glbasic) Select
FUNCTION EntityPointTo: handle, target
LOCAL x,y,z,xdiff,ydiff,zdiff,xangle,yangle,dist

    x = EntityGetX(target)    //
    y = EntityGetY(target)    // Koordinaten target Entity
    z = EntityGetZ(target)   //

    xdiff = EntityGetX(handle)-x //
    ydiff = EntityGetY(handle)-y // Entfernungen
    zdiff = EntityGetZ(handle)-z //
   
    dist=SQR((xdiff*xdiff)+(zdiff*zdiff))
    xangle=MOD((ATAN(ydiff,dist)+360),360)
    yangle=MOD((ATAN(xdiff,-zdiff)+360),360)
   
    EntityRotate(handle, xangle, yangle, 0)
   
ENDFUNCTION



EntityRotate() bzw. deren unterbau ist glaub ich dafür verantwortlich.Ich hab den eindruck, da haut was nicht hin.Bitte schau mal, wollte es nicht extra unter Fehlermelder posten, da ich nicht weiß, obs das auch ist, aber Schranz0r hatte ja damit auch schon seine Probleme.

Ich hab den fehler glaub ich gefunden, ich überleg mir was, denn es liegt an EntityRotate, dieser Befehl muss abgeändert werden, ich lass mir was einfallen.

weil es von winkelrotationen mehrere varianten gibt, d.h. rotation wie es jetzt ist, winkel um xyz erhöhen, dann entity absolut auf einen winkel setzen(wichtig) und beides noch entweder parentabhänig, falls parent vorhanden, sowie global, also winkel zur 3D Welt.


Wichtig

Ich habe mir jetzt Gedanken gemacht zu dem Befehl, und würde mich freuen, wenn Du ihn abändern könntest.

EntityAlign(entity, x, y, z, [0 or 1])      zur Erklärung.     Dieser Befehl soll die Winkel xyz einfach setzen, egal wie der Winkel vorher war.
                                                                              Keine Abhängigkeit zum vorherigen Winkel mehr.
                                                                               Und entweder optional oder fest, ob bei vorhandenem parent, es sich entity um parent
                                                                              drehen soll.

EntityRotate(entity, x, y, z  [0 or 1])                    zur Erklärung      das gleiche wie rotate, nur relativ zum wert des vorherigen winkels

so langsam seh ich ja selber nicht mehr durch.

da ich das nicht wirklich gut erklären kann, verzeih, wenn ich hier zwei links poste, du kannst sie ja hinterher entfernen.

http://www.blitzforum.de/help/RotateEntity
http://www.blitzforum.de/help/TurnEntity


So, ich mach erstmal Pause hier, ich bekomm schon graue Haare.

Gewünschte Befehle wären noch:

EntityGetYaw  Winkel einer Entity
EntityGetPitch  Winkel einer Entity
EntityGetRoll   Winkel einer Entity

Befehle für Winkel 2 Entities zueinander.

Rotate sowie Turn eventuell schauen ob alles geht, und die camera scheint nicht richtig gedreht zu sein bei erstellung.
Fehler bei Winkelberechnung.

Ein EntityPointTo würde ich noch brauchen, was die frontseite einer Entity zu der Position eines anderen Entity ausrichtet.

Wenn das alles möglich ist, mach ich mein Spiel vom Code her weiter, im Moment macht das keinen Spass, leider.


x-tra

@gernot, hab Dir eine PN geschickt, hoffe sie stößt auf Anklang bei Dir.

Kitty Hello

#177
Update V0.8.0
- EntiyGetYaw/Roll/pitch gibt's jetzt. Interne Mathematik ist neu, dadurch schneller und sauberererererer Code.

- Ich habe ein Blitz3D Beispiel 1:1 umgeschrieben, zum Zeigen dass es geht.. Tut's. Aber penGL hat ein Rechte-Hand-System und DriectX/Blitz3D ein Linke-Hand-System. Darum wird alles evtl spiegelverkehrt sein.

2 Sache fehlen noch: Bessere Kollisionsprüfung und EntityPointTo Befehl (der ziemlich biestig ist, wenn man Parents hat) fehlen.



x-tra

#178
Great, but one question.

EntityGetPitch/Yaw/Roll  angeles relative to a parent(if any).

If no parent for the entity the return is the own local angels? right?

To the problem with EntityPointTo my idea is if a parent connection exists open this connection set angles and then connect parent and child together.

but is only an idea.

[edit]  EntitySetCameraRange
         EntitySetAlpha(entity, alpha)   set alpha range of transparence


some vertex commands like "VertexNX# ( surface,index )" like bb3d.  usual for my loader.

okay perhaps you look on it and some commands from bb3d.
thats all at this time.

big big thanks


Noch etwas eine andere Frage.
Wie schaut es bei dem Texturieren aus.
Eine normaltextur ist klar, aber man kann ja multitexturing machen.
Wie verhält es sich dabei?
Is die zweite Textur nur eine Bump, oder kann ich da auch mehr mit machen, also auch eine detailmap oder lightmap einfügen.
Sind ja soweit ich weiß, unterschiedliche Texturen, oder muss ich dann einfach das entityapplytexture mehrmals ausführen um die verschiedenen texturen übereinander zu legen.
Und werden die unterschiedlichen texturen auch als solche erkannt.
Achja, und der Zusammenhang mit
entitycreatebumplight ist mir noch etwas schleierhaft, ich denke also wenn ich überall als multitextur eine bumpmap oder sonstwas nehme, wird durch das licht alles gebumped sozusagen.seperate geschichten sind da wohl eher wenig möglich, oder?

wie hat man das am besten zu handhaben?
ein kleines beispiel wäre nett.

Fragen über Fragen.....

Kitty Hello

Hmm... Da müsste man angeben, das ein Entity den Bump-Effekt hat, oder? K.A. Wie machen die anderen das?