Entity Koordinaten Fehler

Previous topic - Next topic

x-tra

Code (glbasic) Select
camera=EntityCreateCamera()
light=EntityCreateBumpLight()
player=EntityLoadMesh ("player.ddd")
player_texture = EntityLoadTexture("player.bmp")
player=EntityLoadMesh ("dreh.ddd")
dreh_texture = EntityLoadTexture("dreh.bmp")
EntityApplyTexture(player, player_texture, EntityMakeNullTexture() )
EntityApplyTexture(dreh, player_texture, EntityMakeNullTexture() )
EntityPosition(player, 0, 0, 30)
EntityPosition(dreh, 0, 0, 10)
EntityPosition(camera, 0, 2, 5)
EntityParent(camera, light)
EntityEnable(camera, TRUE)
WHILE TRUE

IF KEY(49)
    EntityMove(player, 1, 0, 0)

ENDIF

IF KEY(50)
    EntityMove(player, -1, 0, 0)

ENDIF


EntityDrawSystem()
SHOWSCREEN


WEND


Bei diesem Code bewegt sich beim Drücken der Tasten "m" und "n" auf der x achse hin und her.

Ich muss die camera auf der x achse erst um 180 grad drehen, damit sie richtig schaut.

X_CAMERAUP o.Mg[4], o.Mg[5], o.Mg[6]   würde dies sicher ändern, aber ich weiß nicht wie.

allg. scheint das mit dem koordinatensystem nicht so rund zu laufen, gerade im bezug auf die camera.(beim ES)

Entweder ich spinne, oder EntityRotate, EntityAlign und auch die Cameraerstellung haut nicht hin.

Also das haut alles nicht so hin.

Hier probiert mal: http://www.zshare.net/download/135536311d6d123f/

Schaut auf die winkel und entfernungen, oder ich bin einfach zu blöd dazu.


das hier soll die camera drehen, und den winkel zu player anzeigen.
ich bin wohl zu doof dafür....

Code (glbasic) Select

// Project: testy
// Start: Thursday, June 12, 2008
// IDE Version: 5.254
camera=EntityCreateCamera()
light=EntityCreateBumpLight()
player=EntityLoadMesh ("player.ddd")
player_texture = EntityLoadTexture("player.bmp")
EntityApplyTexture(player, player_texture, EntityMakeNullTexture() )
EntityParent(light, camera)
EntityPosition(player, 0, 0, 10)
EntityPosition(camera, 1, 1, 1)
EntityRotate(camera, 0, 0, 0)
EntityEnable(camera, TRUE)
WHILE TRUE

IF KEY(49)
    EntityRotate(camera, 0, 1, 0)

ENDIF

IF KEY(50)
    EntityRotate(camera, 0, -1, 0)

ENDIF

EntityDrawSystem()

LOCAL x,y,z,xdiff,ydiff,zdiff,xangle,yangle,dist

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

    xdiff = x-EntityGetX(camera) //
    ydiff = y-EntityGetY(camera) // Entfernungen
    zdiff = z-EntityGetZ(camera) //




    yangle=MOD((ATAN(zdiff,xdiff)+360),360)



X_MAKE2D
PRINT yangle, 100, 100
PRINT xdiff, 100, 110
PRINT ydiff, 100, 120
PRINT zdiff, 100, 130
PRINT x, 100, 140
PRINT y, 100, 150
PRINT z, 100, 160

SHOWSCREEN
WEND


Schranz0r

Heiko, die Entitysachen bitte in den Thread der Entitys, danke !
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

ich denke da wäre ein seperates unterforum passend.
so sortiert nach BUGS, Befehle, usw.

kannst du sowas machen?

ich gebs langsam auf, ich bekomm das nicht hin.

Schranz0r

Um was gehts jetzt im spezielen Heiko?
Ich hab grad zeit und kann dir helfen ;)
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

#4
Alsoooooooo

Ich will grundlegend ein Entity (für den anfang die kamera, später heute wollte ich auch eine andere entity) an einer anderen ausrichten.

D.h. die camera als beispiel soll immer in richtung anderer entity schauen.

Sozusagen ein Pointentity wie bei bb bekannt.

Aber allein an der kamerapositionierung und die winkelberechnung zum zielentity scheitert es.

stell dir vor, bei einem formel1 rennen, wo die kamera an der seite steht und den autos folgt.und es soll auch funktionieren, wenn sich die camera dazu noch bewegt.

und alles mit dem ES.

wobei Z-Roll unwichtig ist, es soll sich nur links/rechts oben/unten relevant ist.

wie bei dem beispiel mit den zwei bildern aus dem anderen thread, nur eben im 3d raum, ich raffs nicht.

probiers mal mit dem ES, wenn du das schaffst, biste mein held.

p.s. entityrotate  ist das gegenstück zu turnentity bei bb, falls du das nicht weißt.

Schranz0r

Jopp schon verstanden....

Ich schau was ich machen kann!
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

#6
suuuuper, ich seh selber nicht mehr durch, da bin ich mal gespannt.

und schau mal nach der positionierung bei entitycreatecamera() , wenn ich mich nicht irre, läuft da was schief, aber rotate- und alignentity sind auch, ach ich weiß nichts mehr.

erstmal nen kaffee, ma sehen was du zustande bringst.


Hier ma nen Code aus BM´s minib3d:

Code (glbasic) Select
Method PointEntity(target_ent:TEntity,roll#=0)

Local x#=target_ent.EntityX#(True)
Local y#=target_ent.EntityY#(True)
Local z#=target_ent.EntityZ#(True)

Local xdiff#=Self.EntityX(True)-x#
Local ydiff#=Self.EntityY(True)-y#
Local zdiff#=Self.EntityZ(True)-z#

Local dist22#=Sqr((xdiff#*xdiff#)+(zdiff#*zdiff#))
Local pitch#=ATan2(ydiff#,dist22#)
Local yaw#=ATan2(xdiff#,-zdiff#)

Self.RotateEntity pitch#,yaw#,roll#,True

End Method


wobei eben rotate hier EntityAlign entspricht.ich glaub die distanzen werden nicht richtig berechnet, oh man ich kauf mir ein tafelwerk.