BASIC

Author Topic: Schneegestöber in 3D  (Read 11211 times)

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Schneegestöber in 3D
« on: 2007-Jun-15 »
Neuauflage: Die meisten Beiträge sind leider leer :(
« Last Edit: 2010-Jan-16 by Quentin »

Offline BumbleBee

  • Global Moderator
  • Prof. Inline
  • *******
  • Posts: 891
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #1 on: 2007-Jun-16 »
Cool.
Let it snow, let it snow...Tralala :D
Ich würde das auch bei Code Snippets reintun und den Code mit englischen Kommentaren versehen.  
Sieht auf jeden Fall wirklich gut aus.

Cheers
The day will come...

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

Offline Antidote

  • Mr. Polyvector
  • ***
  • Posts: 164
    • View Profile
    • http://antidotes.wordpress.com
Schneegestöber - ein erster zaghafter Versuch
« Reply #2 on: 2007-Jun-16 »
Schade,
bei mir wird folgendes ausgegeben:
Quote
"Grafikanzeige.gbas"(97) error : wrong argument type : INC, arg no: 1
TYPE  is not declared
PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #3 on: 2007-Jun-16 »
Auweia, übersetzen, na mal sehen.

@Antidote
seltsam, hast das neueste Update gezogen? Ansonsten versuch vielleicht mal in der Funktion Update_Snow() statt
Code: GLBasic [Select]
LOCAL lsnow

LOCAL lsnow AS tSnowFlake
zu schreiben, vielleicht hilfts

Offline Antidote

  • Mr. Polyvector
  • ***
  • Posts: 164
    • View Profile
    • http://antidotes.wordpress.com
Schneegestöber - ein erster zaghafter Versuch
« Reply #4 on: 2007-Jun-16 »
@Quentin
Ahhh, ich war nicht up2date ;)
Geht aber auch schneller als man gucken kann mit diesen Updates :))


Schöne Schneeflocken, einfach nur gecodet...toll
PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

mannybass

  • Guest
Schneegestöber - ein erster zaghafter Versuch
« Reply #5 on: 2007-Jun-16 »
Sieht toll aus!
Sauber gecodet, gut dokumentiert.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5020
  • O Rly?
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #6 on: 2007-Jun-17 »
jopp ganz nett, aber noch paar schönheitsfehler drin:

Code: GLBasic [Select]
  // Schneeflocke zeichnen
  FILLRECT 0,0,10,10, RGB(0xff, 0x00, 0x80)
  DRAWLINE 0, 5, 10, 5, RGB(RND(255), 255, 255)
  DRAWLINE 5, 0, 5, 10, RGB(RND(255), 255, 255)
  DRAWLINE 1, 1, 9, 9, RGB(RND(255), 255, 255)
  DRAWLINE 9, 1, 1, 9, RGB(RND(255), 255, 255)
Damit sind die Zwischenräume durchsichtig!

und ich häts wohl mit  DIM gemacht anstat mit Types.
Types sind in GLB schau schnell, darum gehts mit deinem Code auch gut, aber versuchs mal in Blitz3D oder so, da haste 0 Chance .....
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #7 on: 2007-Jun-17 »
sitmmt auf Transparenz hab ich hierbei gar nicht geachtet, ist mir aber bei dem Gewimmel auch nicht aufgefallen. Thx für den Hinweis.

Wieso DIM statt TYPEs? Sind die Geschwindigkeitsunterschiede wirklich so enorm? Hier war mir aber auch die bessere Lesbarkeit wichtiger als das letzte Quentchen Performance.
In BlitzMax hatte ich aber auch schon etliche hundert Ojbkete gleichzeitig über den Bildschirm bewegt (mit TYPEs). Konnte keine Geschwindigkeitsprobleme sehen, wobei ich zugeben muss, daß ich auch keine genauen Messungen vorgenommen habe.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5020
  • O Rly?
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #8 on: 2007-Jun-17 »
In Blitz haste gleich mal paar laggs, schmieren die FPS gleich ab...

DIM ist die resourcensparende variante,
Types beanspruchen mehr .....


Aber schön haste es Programmiert, schön eingerückt & Kommentiert
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schneegestöber - ein erster zaghafter Versuch
« Reply #9 on: 2007-Jun-17 »
Gefällt mir gut! Gibt's das auch in 3D? hehehe

War bloß ein Scherz. Ist wirklich super Arbeit! =)
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #10 on: 2007-Jun-17 »
Quote from: WPShadow
Gefällt mir gut! Gibt's das auch in 3D? hehehe
yep, sobald ich einen Schimmer von 3D in GLBasic hab ;-)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5020
  • O Rly?
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #11 on: 2007-Jun-17 »
ist doch wirklich einfach :D
3D mein ich jetzt , da musste gernet viel ändern am Code
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #12 on: 2008-Apr-25 »
so, muss den alten Wirsing hier noch mal ausgraben, denn endlich gibt es jetzt 3D-Schnee, worauf die ganze GL-Community nicht gewartet hat ;)

Code: GLBasic [Select]
// --------------------------------- //
// Project: 3D-Schnee
// Start: Monday, April 14, 2008
// IDE Version: 5.204

GLOBAL KEY_LEFT = 203
GLOBAL KEY_RIGHT = 205
GLOBAL KEY_UP = 200
GLOBAL KEY_DOWN = 208
GLOBAL MAX_SNOW = 5000

TYPE t_snow
  x; y; z
  speed
  angx
  angz
ENDTYPE
LOCAL snow[] AS t_snow
DIM snow[MAX_SNOW]

// init snow
FOR i = 0 TO MAX_SNOW - 1
  snow[i].x = RAND(-1000, 1000)
  snow[i].y = RND(1000)
  snow[i].z = RAND(-1000, 1000)
  snow[i].speed = RND(10) / 10 + 1
  snow[i].angx = RND(360)
  snow[i].angz = RND(360)
NEXT


//DRAWRECT 0, 0, 255, 255, RGB(80, 80, 80)
//GRABSPRITE 0, 0, 0, 255, 255

// ground
X_OBJSTART 0
  X_OBJADDVERTEX -1000, 0, -1000, 0, 0, RGB(80, 80, 80)
  X_OBJADDVERTEX -000, 0, -1000, 0, 0, RGB(80, 80, 80)
  X_OBJADDVERTEX 1000, 0, 1000, 0, 0, RGB(80, 80, 80)
  X_OBJADDVERTEX -1000, 0, 1000, 0,0, RGB(80, 80, 80)
X_OBJEND

// snowflake
X_OBJSTART 1
  FOR i = 0 TO 360 STEP 45
    X_OBJNEWGROUP
      X_OBJADDVERTEX 0, 1, 0, 0, 0, RGB(255, 255, 255)
      X_OBJADDVERTEX SIN(i)*2, 0, COS(i)*2, 0, 0, RGB(255, 255, 255)
      X_OBJADDVERTEX 0, -1, 0, 0, 0, RGB(255, 255, 255)
      X_OBJADDVERTEX -SIN(i)*2, 0, -COS(i)*2, 0, 0, RGB(255, 255, 255)
  NEXT
X_OBJEND


LOCAL phi, psi    // angles for camera x-z and y-z
phi = 90

WHILE TRUE

  // for camera movement
  IF KEY(KEY_LEFT) THEN INC phi, 1
  IF KEY(KEY_RIGHT) THEN DEC phi, 1
  IF KEY(KEY_UP) THEN INC psi, 1
  IF KEY(KEY_DOWN) THEN DEC psi, 1
  IF phi > 359 THEN phi = 0
  IF phi < 0 THEN phi = 359
  IF psi > 45 THEN psi = 45
  IF psi < 0 THEN psi = 0
 
  dx = COS(phi) * COS(psi)
  dy = SIN(psi)
  dz = -SIN(phi) * COS(psi)  
 
  X_MAKE3D 1, 1000, 45
  X_CAMERA 0, 1, 0, dx, dy+1, dz
 
  // draw the ground
  X_DRAWOBJ 0, 0
 
  // draw the snowflakes
  FOR i = 0 TO MAX_SNOW - 1
    X_MOVEMENT snow[i].x, snow[i].y, snow[i].z
    X_ROTATION angle, 1, 0, 1
    X_DRAWOBJ 1, 0
    INC snow[i].angx, 2
    IF snow[i].angx > 359 THEN snow[i].angx = 0
    INC snow[i].angz, 2
    IF snow[i].angz > 356 THEN snow[i].angz = 0
    INC snow[i].x, SIN(snow[i].angx)/2
    INC snow[i].z, SIN(snow[i].angz)/2
    DEC snow[i].y, snow[i].speed
    IF snow[i].y < 0
      snow[i].x = RAND(-1000, 1000)
      snow[i].y = 1000
      snow[i].z = RAND(-1000, 1000)
      snow[i].speed = RND(10) / 10 + 1
      snow[i].angx = RND(360)
      snow[i].angz = RND(360)
    ENDIF
  NEXT
  INC angle, 1
  IF angle > 359 THEN angle = 0
 
  SHOWSCREEN
 
WEND

// ------------------------------------------------------------- //
// ---  RAND  ---
// ------------------------------------------------------------- //
FUNCTION RAND: minimum, maximum
  RETURN minimum + RND(-minimum + maximum)
ENDFUNCTION // RAND

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5020
  • O Rly?
    • View Profile
Schneegestöber - ein erster zaghafter Versuch
« Reply #13 on: 2008-Apr-26 »
Wirklich erste Sahne!
Finds auch cool das du mein RAND auch immer schön benutzt :)
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schneegestöber - ein erster zaghafter Versuch
« Reply #14 on: 2008-Apr-26 »
Gefällt mir!

Geht das auch mit Seitenwind?
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est