Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - blastar

#31
Quote from: Kitty Hello on 2009-Jul-20puh. Bin auch ?berfragt.

irgendwie ist das genau die anwort die ich ?berall gefunden habe... 'ne richtige l?sung auf formelbasis habe ich nicht gefunden...  :'(

Da GLB leider nicht in der Lage ist 3d als Wireframe darstellen (warum eigentlich?) oder eine m?glichkeit bietet die vertics der (fertigen) objekte/szene auszulesen um diese dann selbst als wireframe darzustellen will bzw. muss ich alles selber machen... und da scheitere ich nun an diesem problem!

das ganze in einer ebene zu machen (wie ein normaler 3d-shooter / fps) ist kein problem aber dann dann in drei ebenen... da wird es sehr komplex! :'(

alternativ w?re aber auch eine l?sung hilfreicht die mir sagt wie ich diese form der 3d-bewegung (steuerung) mitz?hle...
#32
kleiner zwischenstand:

habe jetzt sogar mit drei punkten (obwohl zwei rechen sollten) gearbeitet:
- mit punkt#1 X-rotation ausgerechnet und alle drei punkte zur?ckrotiert
- mit punkt#2 Y-rotation ausgerechnet und wieder alle drei punkte zur?ckrotiert
- mit punkt#3 Z-rotation ausgerechnet und wieder alle drei punkte zur?ckrotiert
- kontrolle: alles wieder auf 0... winkel sind logisch... soweit gut...

ABER
an gewissen punkten schnappen die winkel einfach ?ber... ist wohl abh?ngig vom quadranten...  :'( HHHHIIIIIIIIIIIIIILLLLLLLLLLLLFFFFFFFEEEEEEEEE! :giveup:
#33
SIN & COS sind schon klar aber ich bekomme es einfach nicht hin... sitze wohl schon zulange an dem 'problem' (zumind f?r mich zZ) crooked
ich habe mal einen kleinen CODE angeh?ngt der das ganze etwas sichtbar machen soll: es geht um eine 'panzersteuerung' (keine ahnung wie man das sonst nennt), mit mit [rechts][links] dreht man die sphere... da ich zb hier probleme habe die rotation nachzurechnen muss ich die vertics der sphere IMMER mitdrehen und das ergebnis speichern... ich habe mal meinen code soweit eingek?rzt (nicht lachen!) dass ich das 'problem' sichtbar machen kann... dazu dachte ich nur zwei punkte zu drehen, einen f?r X & Y, den zweiten f?r die bestimmung der Rotation!

da f?llt auf das XZ & YZ nicht reichen! :|

Schranz0r, w?re super wenn du mir da helfen kannst die genaue rotation der sphere zur?ckzurechnen!

Code (glbasic) Select

GLOBAL VERZERRUNG = 1000; ABSTAND = 5
GLOBAL ROTX = 0; ROTZ = 0
GLOBAL Sphere_VERT = 42; Sphere_POLY = 80
GLOBAL OUTX, OUTY, OUTZ
GLOBAL COSX, SINX, COSY, SINY, COSZ, SINZ

TYPE tSphere
VERT[42][3]
VERTX[42][3]
POLY[80][3]
ENDTYPE
GLOBAL SphereList[] AS tSphere

PUNKT1_X = 0
PUNKT1_Y = 1
PUNKT1_Z = 0

PUNKT2_X = 1
PUNKT2_Y = 0
PUNKT2_Z = 0

//-------------------------------------

SETSCREEN 640, 480, 0
LIMITFPS 60

Add_Sphere()

WHILE KEY(1) = 0

ROTX = 0
ROTZ = 0

IF KEY(200) THEN ROTX = 3
// IF KEY(208) THEN ROTX = - 3
IF KEY(203) THEN ROTZ = 3
IF KEY(205) THEN ROTZ = - 3

Calc_Sphere(ROTX, ROTZ)
Draw_Sphere()

//---------------------------------
// zum sichtbarmachen der punkte
//---------------------------------

COSX = COS(ROTX)
SINX = SIN(ROTX)
COSY = COS(0)
SINY = SIN(0)
COSZ = COS(ROTZ)
SINZ = SIN(ROTZ)

ROTATE(PUNKT1_X, PUNKT1_Y, PUNKT1_Z, COSX, SINX, COSY, SINY, COSZ, SINZ)
PUNKT1_X = OUTX
PUNKT1_Y = OUTY
PUNKT1_Z = OUTZ
OUTY = OUTY * -1
OUTZ = OUTZ * -1
OUTX = OUTX * VERZERRUNG / (OUTZ + ABSTAND) + 320
OUTY = OUTY * VERZERRUNG / (OUTZ + ABSTAND) + 240
DRAWLINE 320, 240, OUTX, OUTY, RGB(255, 0 , 0)
PRINT "Punkt 1", OUTX, OUTY

DRAWRECT 0, 0, 170, 40, RGB(255,0,0)
PRINT "X: " + PUNKT1_X, 5, 8
PRINT "Y: " + PUNKT1_Y, 5, 16
PRINT "Z: " + PUNKT1_Z, 5, 24

ROTATE(PUNKT2_X, PUNKT2_Y, PUNKT2_Z, COSX, SINX, COSY, SINY, COSZ, SINZ)
PUNKT2_X = OUTX
PUNKT2_Y = OUTY
PUNKT2_Z = OUTZ
OUTY = OUTY * -1
OUTZ = OUTZ * -1
OUTX = OUTX * VERZERRUNG / (OUTZ + ABSTAND) + 320
OUTY = OUTY * VERZERRUNG / (OUTZ + ABSTAND) + 240
DRAWLINE 320, 240, OUTX, OUTY, RGB(0, 255, 0)
PRINT "Punkt 2", OUTX, OUTY

DRAWRECT 0, 50, 170, 40, RGB(0, 255, 0)
PRINT "X: " + PUNKT2_X, 5, 58
PRINT "Y: " + PUNKT2_Y, 5, 66
PRINT "Z: " + PUNKT2_Z, 5, 74

//---------------------------------
//---------------------------------

SHOWSCREEN

WEND
END

//-------------------------------------

FUNCTION Add_Sphere:

LOCAL b AS tSphere

RESTORE Sphere_Vertics
FOR x = 0 TO Sphere_VERT - 1
READ a1
READ a2
READ a3
b.VERT[x][0] = a1
b.VERT[x][1] = a2
b.VERT[x][2] = a3
NEXT

RESTORE Sphere_faces
FOR x = 0 TO Sphere_POLY - 1
READ a1
READ a2
READ a3
b.POLY[x][0] = a1
b.POLY[x][1] = a2
b.POLY[x][2] = a3
NEXT
DIMPUSH SphereList[], b

ENDFUNCTION
FUNCTION Calc_Sphere: rx, rz

LOCAL b AS tSphere
FOREACH b IN SphereList[]

COSX = COS(rx)
SINX = SIN(rx)
COSY = COS(0)
SINY = SIN(0)
COSZ = COS(rz)
SINZ = SIN(rz)

FOR x = 0 TO Sphere_VERT - 1
ROTATE(b.VERT[x][0], b.VERT[x][1], b.VERT[x][2], COSX, SINX, COSY, SINY, COSZ, SINZ)
b.VERT[x][0] = OUTX
b.VERT[x][1] = OUTY
b.VERT[x][2] = OUTZ
OUTY = OUTY * -1
OUTZ = OUTZ * -1
b.VERTX[x][0] = OUTX * VERZERRUNG / (OUTZ + ABSTAND) + 320 // trans
b.VERTX[x][1] = OUTY * VERZERRUNG / (OUTZ + ABSTAND) + 240 //
b.VERTX[x][2] = OUTZ
NEXT
NEXT

ENDFUNCTION
FUNCTION Draw_Sphere:

LOCAL test
LOCAL t1, t2, t3
LOCAL rx1, ry1, rz1
LOCAL rx2, ry2, rz2
LOCAL rx3, ry3, rz3

LOCAL b AS tSphere
FOREACH b IN SphereList[]

FOR x = 0 TO Sphere_POLY - 1

t1 = b.POLY[x][0]
t2 = b.POLY[x][1]
t3 = b.POLY[x][2]

rx1 = b.VERTX[t1][0]
ry1 = b.VERTX[t1][1]
// rz1 = b.QUADX[t1][2]

rx2 = b.VERTX[t2][0]
ry2 = b.VERTX[t2][1]
// rz2 = b.QUADX[t2][2]

rx3 = b.VERTX[t3][0]
ry3 = b.VERTX[t3][1]
// rz3 = b.QUADX[t3][2]

color = RGB(64, 64, 64) // Backface culling
test = (rx2 - rx1) * (ry3 - ry1) - (ry2 - ry1) * (rx3 - rx1) //
IF test <= 0 //
color = RGB(255, 255, 255) //
ENDIF //
DRAWLINE rx1 , ry1, rx2, ry2, color
DRAWLINE rx2 , ry2, rx3, ry3, color
DRAWLINE rx3 , ry3, rx1, ry1, color

NEXT
NEXT

ENDFUNCTION

FUNCTION ROTATE: x, y, z, wcx, wsx, wcy, wsy, wcz, wsz

rxt = x
ryt = y
rzt = z
rx2t = rxt
ry2t = ryt
rz2t = rzt
rx2t = rxt * wcz - ryt * wsz
ry2t = rxt * wsz + ryt * wcz
rxt = rx2t
ryt = ry2t
rzt = rz2t
rx2t =  rxt * wcy + rzt * wsy
rz2t = -rxt * wsy + rzt * wcy
rxt = rx2t
ryt = ry2t
rzt = rz2t
ry2t = ryt * wcx - rzt * wsx
rz2t = ryt * wsx + rzt * wcx

OUTX = rx2t
OUTY = ry2t
OUTZ = rz2t

ENDFUNCTION

STARTDATA Sphere_Vertics:
DATA -0.850651, 0.276393, -0.447214, -1.000000, 0.000000, 0.000000
DATA -0.850651, -0.276393, 0.447214, -0.809017, -0.262866, -0.525731
DATA -0.809017, 0.587785, 0.000000, -0.809017, -0.587785, 0.000000
DATA -0.809017, 0.262866, 0.525731, -0.525731, -0.723607, -0.447214
DATA -0.525731, 0.723607, 0.447214, -0.500000, 0.162460, -0.850651
DATA -0.500000, 0.688191, -0.525731, -0.500000, -0.688191, 0.525731
DATA -0.500000, -0.162460, 0.850651, -0.309017, -0.425325, -0.850651
DATA -0.309017, 0.951057, 0.000000, -0.309017, -0.951057, 0.000000
DATA -0.309017, 0.425325, 0.850651, 0.000000, 0.000000, -1.000000
DATA 0.000000, 0.525731, -0.850651, 0.000000, 0.894427, -0.447214
DATA -0.000000, -0.850651, -0.525731, 0.000000, 0.850651, 0.525731
DATA -0.000000, -0.894427, 0.447214, -0.000000, -0.525731, 0.850651
DATA 0.000000, 0.000000, 1.000000, 0.309017, -0.425325, -0.850651
DATA 0.309017, 0.951057, 0.000000, 0.309017, -0.951057, 0.000000
DATA 0.309017, 0.425325, 0.850651, 0.500000, 0.162460, -0.850651
DATA 0.500000, 0.688191, -0.525731, 0.500000, -0.688191, 0.525731
DATA 0.500000, -0.162460, 0.850651, 0.525731, -0.723607, -0.447214
DATA 0.525731, 0.723607, 0.447214, 0.809017, -0.262866, -0.525731
DATA 0.809017, 0.587785, 0.000000, 0.809017, -0.587785, 0.000000
DATA 0.809017, 0.262866, 0.525731, 0.850651, 0.276393, -0.447214
DATA 1.000000, -0.000000, 0.000000, 0.850651, -0.276393, 0.447214
ENDDATA

STARTDATA Sphere_faces:
DATA 0, 3, 1
DATA 0, 9, 3
DATA 0, 10, 9
DATA 1, 4, 0
DATA 1, 5, 2
DATA 1, 6, 4
DATA 2, 6, 1
DATA 2, 12, 6
DATA 3, 5, 1
DATA 3, 7, 5
DATA 3, 13, 7
DATA 4, 10, 0
DATA 4, 14, 10
DATA 5, 11, 2
DATA 5, 15, 11
DATA 6, 8, 4
DATA 6, 16, 8
DATA 7, 15, 5
DATA 7, 20, 15
DATA 8, 14, 4
DATA 8, 21, 14
DATA 9, 13, 3
DATA 9, 17, 13
DATA 9, 18, 17
DATA 10, 18, 9
DATA 10, 19, 18
DATA 11, 12, 2
DATA 11, 23, 12
DATA 12, 16, 6
DATA 12, 24, 16
DATA 13, 20, 7
DATA 13, 25, 20
DATA 14, 19, 10
DATA 14, 26, 19
DATA 15, 22, 11
DATA 15, 27, 22
DATA 16, 21, 8
DATA 16, 28, 21
DATA 17, 25, 13
DATA 17, 29, 25
DATA 18, 29, 17
DATA 18, 30, 29
DATA 19, 30, 18
DATA 20, 27, 15
DATA 20, 33, 27
DATA 21, 26, 14
DATA 21, 34, 26
DATA 22, 23, 11
DATA 22, 31, 23
DATA 23, 24, 12
DATA 23, 32, 24
DATA 24, 28, 16
DATA 24, 32, 28
DATA 25, 33, 20
DATA 25, 35, 33
DATA 26, 30, 19
DATA 26, 36, 30
DATA 27, 31, 22
DATA 27, 37, 31
DATA 28, 34, 21
DATA 28, 38, 34
DATA 29, 35, 25
DATA 29, 39, 35
DATA 30, 39, 29
DATA 31, 32, 23
DATA 31, 41, 32
DATA 32, 38, 28
DATA 32, 41, 38
DATA 33, 37, 27
DATA 34, 36, 26
DATA 34, 38, 36
DATA 35, 37, 33
DATA 35, 40, 37
DATA 36, 39, 30
DATA 36, 40, 39
DATA 37, 41, 31
DATA 38, 40, 36
DATA 38, 41, 40
DATA 39, 40, 35
DATA 40, 41, 37
ENDDATA
#34
Quoteohne die 3d-unterst?tzung von GLB!
ich brauche die genaue rechenweise bzw die formeln dazu!  :'(
#35
sorry, aber das mir den matrizen habe ich noch nie so richtig verstanden und mogel mich da trotzdem ganz gut durch... irgendwie... ! :(
ich denke die beschreibung 'orbit-camera' kommt dem am n?chsten was ich suche... allerdings OHNE das '?berschnappen' der winkel, so dass man beispielsweise die camera einmal um das object kreisen lassen kann... hat jemand 'ne idee?
#36
hi@all,
ich arbeite rein auf softwarebasis also ohne die 3d-unterst?tzung von GLB - und jetzt habe ich da ein kleines(?) problem.

mein 3d-'welt' f?hrt eine etwas umst?ndliche rotation (ohne translation) aus mit verschiedenen gr??en die da einfluss haben. jetzt wollte ich allerdings nicht jedesmal die welt mehrere mal mitdrehen (aus performancegr?nden) sondern dachte einfach zwei dummy-punkte [100,0,0] & [0,100,0] zu drehen aus denen ich dann die vollst?ndige rotation r?ckrechnen kann um diese dann auf meine 'welt' anzuwenden...
aber ich bekomme es einfach nicht hin!!!! :giveup:
hat jemand eine idee oder gar eine l?sung?
#37
ist schon ok... so schwierig ist es ja nicht das problem zu umgehen... hoffe die neue v6 kommt pünklich und es wäre super wenn die von anfang an stabil ist.. also lasse dir zeit... aber spätestens wenn der wiz in den versand geht brauche ich das ding auf meiner platte! :-)
#38
spitze... daaaaaaaaaaaanke... wann kommst das update? morgen???  :'(
#39
mir ist eine abweichung bei dem befehl BOXCOLL aufgefallen, die function stimmt nicht mit der beschreibung überein:

" Überprüft, ob sich 2 Rechtecke überlappen... "

allerdings gibt der befehl auch TRUE zurück wenn sie die Rechteckte nur berühren.

start:
   IF BOXCOLL( 0,0, 16, 16, 16, 16, 16, 16)
       PRINT "collide!", 100, 100
   ENDIF
   SHOWSCREEN
GOTO start

ich wollte ein objeckt an einer "wand" entlang gleiten lassen was damit allerdings nichtböglich ist! :-( der workaround für mich ist es eines der objecte als "x +1, y+2, 14, 14 " zu deklrarieren anstatt "x, y, 16, 16"!

bug oder muss das so sein?




#40
wie wäre es denn mal mit einem kleinen "anreiz" von der GLB-seite her? zb "wenn ein spiel dass mit GLB erstellt wurde plaziert wird gibts von uns oben 20â,¬ drauf!", oder so ähnlich? das würde sicher auch den anteil der mit GLB erstellten programme bei solchen contests etwas pushen! :good:

nur so als idee...  =D
#41
hi,
das problem ist NETwelches GLBasic nutzt für WINCE-programme... NET hat mit diesem speziellen wince-versionen (HPC2000) probleme bzw unterstützt diese erst garnicht nicht -> blame MS! so werden zb einige unter HPC2000 fehlende dll's verlinkt die garnicht nicht genutzt werden, diese musst du nachträglich installieren (im windows- oder programm-ordner) damit es läuft. die dll's findest du im netz, zb: http://hpcmonex.net/izemize.htm
... musste mal suchen... problematisch ist allerdings dass diese teilweise steinalten dll's ja trotzdem noch unter copyright stehen! deshalb ist es auch fraglich ob du die im falle des falles zu (d)einem programm dazupacken kannst... ein grund für mich auf dem HPC nix mehr zu machen und mich auf PPC zu beschränken! =(

du kannst das ganze mal genau nachlesen unter:
http://www.rothberger.net/pages/faq/softwareproblem_dlls.shtml

übrigens habe ich zwar meine GLB-programme zum laufen bekommen aber außer zeichenoberationen war nichts möglich... irgendwie habe ich das laden un/oder anzeigen von grafiken nicht hinbekommen (vielleicht keine kompatible DLL gefunden!?)... von den problemen der screenausrichtung/sreengröße usw mal ganz abgesehen... auf meinem anderen PPC läuft alles aber ohne probleme!?! dieses HPC2000 ist einfach zu "speziell" und zu alt für NET welches GLBasic nutzt... blame MS! =(

eventuell brauchst du auch noch: http://www.wincesoft.de/html/gapi_for_hpc_s.html
#42
da beides aber über software gemacht wird (der GP2X hat ja keine 3D-beschleunigung) ist das unlogisch!
#43
'bin gerade dabei ein wenig was mit dem GP2X anzustellen und wollte sowas wie CAMELTRY machen wobei sich der complette screen rotieren läßt... alles schön und gut aber auf dem GP2X erreicht der befehl ROTOSPRITE (selbst bei SMOOTHSHADING FALSE) nur 5 FPS (bei einer spritegröße von 400x400 = completter screen)... mache ich das ganze mit STARTPOLY/ENDPOLY ebenfalls mit dem kompletten 400x400-sprite erreiche ich 15 FPS!?!? allerdings müßte doch gerade die funktion STARTPOLY/ENDPOLY um einiges aufwendiger sein (textur-parameter & verzerrung) als ROTOSPRITE, oder? falls ich recht habe würde ich mich sehr über eine nachbesserung freuen! =)

test.zip - 1.16MB (rechts/links = drehen mit ROTOSPRITE, beim halten der rechten schulterstaste wird das ganze mit STARTPOLY durchgeführt - da sieht man den unterschied!?!)
#44
du, ich glaube solche mini-contest funktionieren hier in diesem forum (noch) nicht - dazu ist die GLB-community einfach zu klein... leider! =( die in den letzten wochen hier aktiven poster kann man sich an zehn fingern abzählen - selbst im deutschen BB-forum mit einem vielfachen an aktiven membern kommt oft nur eine handvoll beiträge zusammen... hier ist einfach mal der einsatz der "führungsspitze" gefragt!!! von nix kommt nix...

meistens entstehen gerade bei solchen kleinen und kurzen contests (2-3 wochen) witzige und vor allem spielbare sachen - bei so einem breiten angebot an platformen würde eine schwemme solcher kleinen witzigen games parallel über die verfügbaren plattformen sicher auch die bekanntheit von GLB steigern bzw bei einigen erstmal die aufmerksamkeit darauf lenken... warum wurden zb die beiträge des XMAS contests nur für GP2X released... keine PPC-versionen obwohl das ohne probleme gehen sollte?!? =( als ob es GLB für PPC & OSX nicht gäbe... von XBOX & LINUX mal ganz abgesehen...

hier muss Gernot einfach mal ran und was anschieben, auch GLB ist kein selbstläufer - eine knackige und witzige aufgabenstellung mit einer wirklichen herausforderung (da muss der ehrgeiz geweckt werden)... posts auf der startseite und stickies (nicht nur posts) in beiden foren... eventuell ein popup mit dem nächsten GLB-update!? als preis zb ein spezieller USER-rang hier im board oder ähnliches... kleine spiele die sich für JEDE plattform kompilieren lassen usw...
die user hier wollen contest aber das muss auch mal von oben unterstützt werden... irgendwie laufen sich hier user-initativen ohne unerstützung tot:
- Contest 3D Spiel als Aushängeschild für GLBasic
- "Tribut an R - Type" Wettbewerb
- dieser contest...

ich bin auf alle fälle dabei, unterstütze und berate gern... aber es liegt nicht in meiner aufgabe GLB zu promoten!

ps. das limit von 300 befehlen ein witz... keine wirkliche herausforderung! den tetris-clone mit 100 befehlen umzusetzen war viel fesselnder für mich! =D
#45
na ich zeig wenigstens mal guten willen! ;-)

ich schwimme schon seit weigkeiten auf der retro-welle und und hatte die letzten tage/wochen wirklich sehr wenig zeit, deshalb habe ich mal auf die schnelle ein schon älteres project für das lcd der g15-tastatur (48x160) auf glb angepasst - ziel (für mich) sind gp2x und ppc:

rausgekommen ist ein kleiner 2d-shooter im retro-look mit namen THROUGH THE ASTEROID BELT
- auflösung 120x120
- farbtiefe 1bit (zwei farben)
- steuerung mit nur einer taste (linke mausetaste)... einfach mal austesten! ;-)
- leider kein sound... aber stellt euch das ganze mit passender 8-bit sounduntermalung vor! =D

DOWNLOAD WIN32 (640x480)