Xors3D

Übersicht BlitzBasic FAQ und Tutorials

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

tft

Betreff: Xors3D

BeitragDi, Apr 06, 2010 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich füge mal hir eine LinkListe an. Damit die einzelnen wichtigen Posts direckt ereicht werden können.


Xors3D Samples vom Herstellerhttps://www.blitzforum.de/foru...p;start=33

Ein Raumschiff gefällig https://www.blitzforum.de/foru...p;start=20
Forne oder hinten https://www.blitzforum.de/foru...p;start=17
Mal was anderes https://www.blitzforum.de/foru...p;start=18
Sternstaub https://www.blitzforum.de/foru...p;start=27
öfter mal eine neue Welt https://www.blitzforum.de/foru...p;start=38

____________________________________________________________

Hallo comunity,

ich bin ja ein grosser Fan von B3D und beschäftige mich seit
jeher mit 3D und Basic. Seit kurtzem gibts nun die Xors3D Engine
als gut lauffähige version im Trial oder lizensiert. Die lizence kostet
schlappe 100 Dollar. Ich finde ein guter preis. Dafür das man entlich
DX7 den Rücken kehren kann. Daher möchte ich einige Beispiele
zeigen. Wie einfach der umstig .... und vor allem der neubeginn ist.

BlitzBasic: [AUSKLAPPEN]

;
; Xors3D examples by TFT
;
; Vorwort:
; Ich habe lange auf einen Erzatz der B3D Engine gewartet da diese
; mit vortschreitendem Alter immer schlechter mit den neuen Rechner
; klargekommen ist. Xor3D hat eine lange entwicklung hintersich und
; Orientiert sich am B3D Syntax und Entity System. Das macht den
; Umstieg doch recht einfach.
; Am genialsten finde ich die Lösung der Trial version. Sie ist voll-
; umfänglich funktional und hat eine Zeit begrenzung die eine Exe
; oder aus dem Editor heraus, 30 Minuten laufen läst.
; Daher sollten alle Beispiele funktionieren.
;
; 001 : Basic 1
;
; Als erstes werden wir mal die Grundlegenden dinge angehen.
; Screen, Licht, Cammera, Entity, Text, Bewegung
; Für B3D anwender alles sehr vertraut, nur müst ihr nicht versuchen
; das teil über den close botton zu schliessen. Das wird entlich abgefangen.
; Es gibt da zwar einen xWinMassage() befehl, der nur MW_Close als
; Parameter zulast. Aber das scheint nicht zu gehen.

Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

; lediglich der Graphics Befehl unterscheidet sich ein wenig
; dieser kennt jetzt einen 5. Parameter.
; Der gibt an ob VSync verwendet werden soll. True=ja,False=nein
; dafür gibt es bei xFlip keinen mehr. Ich trauere aber nicht darum.
; Auch die Auswahl der Screen Modie ist beschrängt, Fullscreen Ja/nein

xGraphics3D(800,600,32,False,True)

xAppTitle(ap$)

; Die Camera ist wie immer, als Entity konzipiert.
Global Cam=xCreateCamera()
xPositionEntity(Cam,0,0,-5)
; Das Licht hat die gewohnten 3 Parameter
Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)
; Was sofort auffält ist, das das Ambient Light vom start weg heller ist als Bei B3D
Cube=xCreateCube()
; Auch das erzeugen eines Qube ist fix erledigt.

Repeat

xTurnEntity(Cube,0.1,0.2,0.3) ; Cube reletiv zur alten Drehung

xRenderWorld ; Screen rendern

xText(10,10,"FPS "+xGetFPS()); Text ausgeben

xFlip ; Und das obligatorische Flip

Until xKeyHit(1) ; Sogar die Tastatur befehle sind implementiert.

End


Gruss und fiel Spass TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
  • Zuletzt bearbeitet von tft am Do, Apr 29, 2010 17:04, insgesamt 18-mal bearbeitet

tft

BeitragDi, Apr 06, 2010 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ihr könnt ja mal die X wegnehmen und den Code so umstricken das er
auch bei B3D läuft. Mir ist aufgefallen das Xors3D mit Textausgabe schneller
ist als ohne. Und B3B natürlich erheblich langsamer. Aber im grossen
und ganzen ist der Geschwindigkeits zuwachs eher gering. Bei mir etwa
15%.

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
  • Zuletzt bearbeitet von tft am Do, Apr 08, 2010 9:59, insgesamt einmal bearbeitet

Silver_Knee

BeitragMi, Apr 07, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist diese Investition überhaupt notwendig jetzt wo SPE kommt?

peacemaker

BeitragMi, Apr 07, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Engine heisst doch Xors3D? Falls du diese meinst, ist doch die von dem Russen. Hab sie mal vor langer Zeit ausprobiert, funktionierte erstaunlicherweise, aber dann doch relativ langsam.
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

tft

BeitragMi, Apr 07, 2010 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ja die Russen habes es Programiert. Und es ist erwachsen geworden.
Was is SPE ?

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

ZaP

BeitragMi, Apr 07, 2010 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Er meint die Softpixel Engine bzw. den Softpixel Engine Wrapper für B3D. Siehe hier.
Starfare: Worklog, Website (download)

Goodjee

BeitragMi, Apr 07, 2010 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hat das teil (spe) eigentlich schonmal wer richtig belastet? die screenshots auf der homepage zeigen hauptsächlich ein mesh, einen shader oder ein terrain. würde mich intressieren ob es auch mit mehr klarkommt Wink
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

tft

BeitragMi, Apr 07, 2010 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie auch immer, hir der nächaste Teil

BlitzBasic: [AUSKLAPPEN]


;
; Xors3D examples by TFT
;
; 002 : Basic 2
;
; Eines der Probleme die immer mal wider aufkommen
; ist die Sache mit den FPS und dem Speed einer Bewegung.
; Als Schlagwörter hört man offt "Zeit unabhängige bewegung"
; Was dahinter steckt ist eigentlich ganz simple, wird aber
; offt verkompliziert. Wenn ein Object sich pro Flip durchlauf
; um 1 auf der Z Achse nach vorne bewegt. Wird es bei
; 60 Durchläufen auch 60 Punkte weit weg sein. Wenn der
; Bildschirm also in einer Secunde 60 Bilder darstellt braucht
; das Obejct eine Sekunde. Nun gibt es aber fiele Gelegenheiten
; die mit dieser einfache vorgehensweise nicht richtig funktionieren.
; Zum Beispiel kann es sein das mein Monitor 120 Bilder pro
; secunde darstellen kann. Was dann gleichbedeuten mit einer
; verdoppelung der bewegungs gescheindigkeit ist. In der
; zeit von einer sekunde ist dann das Object bereits 120 weit weg.
; Da der Mensch sowiso nicht mer bilder sieht als der Monitor
; darstellen kann. Behalten wir die VSync begrenzung bei.
; Das hat den vorteil das wir uns nicht um die Rechnung kümmern
; müssen wenn die Bilder/Sec über 1000 geraten. Das hat den grund
; Das der Zeitmesser Millisecs() nur 1000/sec kennt. Und eine kleinere
; Einteilung nur noch mit einem Prezisions Timer möglich ist.
; Fiele Rechner verfügen zwar darüber. Aber eben nicht jeder.
;

Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

xGraphics3D(800,600,32,False,True)
xAppTitle(ap$)

Global Cam=xCreateCamera()
xPositionEntity(Cam,0,0,-5)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube=xCreateCube()

Repeat

; es gibt aber auch hirbei einen Haken. Einige werden jetzt sagen
; das es unnötig ist, für jedes Object die ElapsedTime zu berechen.
; Aber es fürt ganz klar zu fehlern. Wenn fiele Objecte im spiel sind
; die die FPS zur laufzeit unter die VSync drücken.
; Der klare forteil dieser methode ist aber, Das man auch künstlich
; auf berechnungs schritte verzichten kann. Da immer bekannt ist
; wie lange die letzt berechnung her ist.

alpha#=MilliSecs()-timer
xTurnEntity(Cube,0.01*alpha#,0.02*alpha#,0.03*alpha#)
timer=MilliSecs()

xRenderWorld

xText(10,10,"ms pro turn "+alpha)
xText(10,25,"FPS "+xGetFPS())

If xKeyDown(28)
Delay 100
EndIf

xFlip

Until xKeyHit(1)

End
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
  • Zuletzt bearbeitet von tft am Do, Apr 08, 2010 10:02, insgesamt 2-mal bearbeitet

tft

BeitragMi, Apr 07, 2010 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo....

nu, die ersten teile sind immer schnell gemacht. Und wie ich es
mir gedacht habe, genauso einfach wie bei B3D.

BlitzBasic: [AUSKLAPPEN]


;
; Xors3D examples by TFT
;
; 003 : Basic 3
;
; Texturen ..... ja die sind das aaa und oooo. Leider ist es
; offt nicht einfach an gute heran zu kommen. Daher behelfen
; wir uns selber. Xors3D bieten dafür einen Weg den wir von
; B3D zwar schon kennen. Dieser ist aber irgendwann und aus
; völlig ... na egal. Es get nicht mer.
; Wir machen uns unsere eigenen Texture und malen einen
; Ramen drauf. Dann noch ein paar einstellung für das Object
; und schon haben wir einen coolen Effect. WireFrame on Qube

Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

xGraphics3D(800,600,32,False,True)
xAppTitle(ap$)

Global Cam=xCreateCamera()
xPositionEntity(Cam,0,0,-5)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube=xCreateCube()

; Wir erzeugen eine Texture mit 64 mal 64 Punkten
Texture=xCreateTexture(64,64,1,1) : If Texture=0 Then RuntimeError("Handler=0")
; Dann ändern wir den Zeichen Puffer auf den Handler der Textrure
xSetBuffer(xTextureBuffer(Texture,0))
; Zeichnen eine Rechteck in der Farbe weis
xColor($ff,$ff,$ff)
xRect(0,0,63,63,0)
; und stellen den Buffer wider auf den Zeichenbildschirm
xSetBuffer(xBackBuffer())

; Hir weisen wir dem Qube die Texture zu
xEntityTexture(Cube,Texture,0,0)
; Dann noch die Darstellung ändern, 16 schaltet das Backfaceculling ab
; und 1 schaltet die beeinflussung duch Lichtquellen aus.
xEntityFX(Cube,17)
; zu guter letzt sollen sich die Farben der Texture addieren.
xEntityBlend(Cube,3)
; und damit wir auch das addieren sehen schalten wir das Entity auf durchscheinend
xEntityAlpha(Cube,0.2)

Repeat

alpha#=MilliSecs()-timer
xTurnEntity(Cube,0.01*alpha#,0.02*alpha#,0.03*alpha#)
timer=MilliSecs()

xRenderWorld

xText(10,10,"ms pro turn "+alpha)
xText(10,25,"FPS "+xGetFPS())

xFlip

Until xKeyHit(1)

End
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
  • Zuletzt bearbeitet von tft am Do, Apr 08, 2010 10:03, insgesamt einmal bearbeitet

tft

BeitragMi, Apr 07, 2010 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
HiHo ,,,,,,

BlitzBasic: [AUSKLAPPEN]

;
; Xor3D examples by TFT
;
; 004 : Basic 4
;
; Der Stress Test, ist eine möglichkeit zu sehen. Was Xor3D speed mässig
; drauf hat. Dazu verwenden wir ein Pivot und 4096 Qubs

Include "xors3d.bb"

Global ap$="Xor3D example by TFT for german comunity"

xGraphics3D(800,600,32,False,True)
xAppTitle(ap$)

; Um das ganze nicht zu rechenintensiv zu gestallten, werden wir uns eines
; genialen Object Typs bedienen. Dem Pivot. Einem einzelnen Punkt an dem
; Objecte angehängt werden können. Wir werden die Camera dort anbinden
; und dann vom Mittelpunkt wegschieben. Wenn jetzt der Pivot gedreht wird.
; Läuft die Camera um den Mittelpunkt des Pivot herum. immer mit blick
; auf den mittelpunkt.

Global CPiv=xCreatePivot()
Global Cam=xCreateCamera(CPiv)
xPositionEntity(Cam,0,0,-90)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube=xCreateCube()

Texture=xCreateTexture(32,32,1,1) : If Texture=0 Then RuntimeError("Handler=0")
xSetBuffer(xTextureBuffer(Texture,0))
xColor($ff,$ff,$ff)
xRect(0,0,31,31,0)
xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityFX(Cube,17)
xEntityBlend(Cube,3)
xEntityAlpha(Cube,0.3)

xEntityColor(Cube,$ff,0,0)

; Das muster Object wird vorerst nicht dargestellt. Daher schalten wir es ab.
xHideEntity(Cube)

; Hir erzeugen wir 30 Mal 30 Mal 30 Copien des Quader den wir weiter oben
; abgeschaltet haben.

ae=0
d=30
For i2=-d To d Step 4
For i1=-d To d Step 4
For i=-d To d Step 4
c=xCopyEntity(Cube)
xPositionEntity(c,i2,i1,i)
ae=ae+1
Next
Next
Next

Repeat

alpha#=MilliSecs()-timer
xTurnEntity(CPiv,0.01*alpha#,0.02*alpha#,0.03*alpha#)
timer=MilliSecs()

xRenderWorld

xText(10,10,"ms pro turn "+alpha)
xText(10,25,"FPS "+xGetFPS())
xText(10,40,"Anzahl Qube "+ae)

xFlip

Until xKeyHit(1)


TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

BladeRunner

Moderator

BeitragMi, Apr 07, 2010 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Tft, dein Wille in allen Ehren, aber es wäre für ein Tutorial doch sehr zuträglich wenn wenigstens der Name der Engine um die es geht korrekt geschrieben ist. Schon allein für die Suche.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

tft

BeitragDo, Apr 08, 2010 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

es hat sich ja schon jemand gefunden der das Tut korrigiert. Aber mal im ernst. Seid wann läst sich in der suche etwas finden..... Smile

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

the FR3AK

BeitragDo, Apr 08, 2010 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
tft hat Folgendes geschrieben:
Seid wann läst sich in der suche etwas finden..... Smile


Seit ich der deutschen Rechtschreibung mächtig bin. Ich finde meistens was durch die Forensuche.

Goodjee

BeitragDo, Apr 08, 2010 1:49
Antworten mit Zitat
Benutzer-Profile anzeigen
wo hast du denn was korrigiert? steht doch immernoch überall xor3d nich xors3d
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

tft

BeitragDo, Apr 08, 2010 8:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ok .... der deutschen Sprache mächtig .....

Zitat:

es hat sich ja schon jemand gefunden der das Tut korrigiert


heist ja wohl nicht umbedingt das schon hat. Und deine Rechtschreibung steht ja wohl auch nicht zum besten.... Goodjee .... Satz anfang Gross ? Das Wort "nich " gibt es nicht .........

Wenn ihr hir einen Rechtschreib Thread draus machen wollt ... nur zu. Aber ihr solltet erstmal auf eure eigene Nase schauen. Bei mir ist es wenigstens eine echte Rechtschreib Schwäche. Bei den meisten von euch nachlässigkeit.

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

biggicekey

BeitragDo, Apr 08, 2010 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mich stört nur das fehlende "s" bei Xors3d. Und ich denke auch Godjee und Bladerunner wollten nur hierauf hinweisen.
the_freak lasse ich mal dahingestellt...
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

tft

BeitragDo, Apr 08, 2010 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

habe das mit Xors3D nun so halbwegs korrigiert. Wenn jemandem was auffällt. Bitte eine PM an mich und nicht hir posten

BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 005 : Basic 5
;
; Innen oder Aussen. Das Auge läst sich immer täuschen wenn man
; ihm die Moglichkeit dazu gibt. Eine kleine exkusion in sachen Täuschung
; werden wir hir kurz anreissen. Alle Weltraum Spiele haben einen
; Sternen Hintergrund. Es gibt welche die echt schick sind und andere
; die lieber nie versucht wurden. Hir der einfachheit einer von letzterem.
; Mit geeigneten Texture geht das natürlich viel besser. Macht einfach mal
; und findet für euch die beste methode.

Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

xGraphics3D(800,600,32,False,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global Cam=xCreateCamera(CPiv)
xCameraClsColor(Cam,$ff,$ff,$ff)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)


Cube=xCreateCube()

; Textturen >512*512 werden nicht richtig verarbeitet.
Texture=xCreateTexture(512,512,1,1) : If Texture=0 Then RuntimeError("Handler=0")

xSetBuffer(xTextureBuffer(Texture,0))

; wir machen uns einen Sternen Hintergrund. Es gibt fiele Methoden
; dies zu realisieren. Aber wir halten es erstmal einfach

xColor($ff,$ff,$ff)
For i=0 To 300
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$99)
For i=0 To 200
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($44,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0) ; Dem Qube die Texture zuweisen
xEntityFX(Cube,1) ; Dann darf dieser nicht von Lichtquellen beinflust werden
xFlipMesh(Cube) ; Jetzt drehen wir das innerste nach aussen
; so wie man einen Pulover zum Waschen wendet
xScaleEntity(Cube,10,10,10,1) ; Und dann vergrössern wir ihn.

cc#=-40

Repeat

alpha#=MilliSecs()-timer
xTurnEntity(CPiv,0.001*alpha#,0.002*alpha#,0.003*alpha#)
timer=MilliSecs()

; Hir könnt ihr die Camera ins Zentrum stellen
; oder eine Aussenansicht geniessen.
; Es entsteht der eindruck das man sich innerhalb
; fieler sterne befindet ( So in etwa :-) )

If xKeyDown(28)
If cc#<0 Then cc#=cc#+0.02*alpha
xPositionEntity(Cam,0,0,cc#)
xColor($ff,$ff,$ff)
Else
If cc#>-40 Then cc#=cc#-0.02*alpha
xPositionEntity(Cam,0,0,cc)
xColor($00,$00,$00)
EndIf

xRenderWorld

xText(10,10,"ms pro turn "+alpha)
xText(10,25,"FPS "+xGetFPS())

xFlip

Until xKeyHit(1)

End
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

tft

BeitragDo, Apr 08, 2010 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 006 : Basic 6
;
; Vorne oder Hinten?
; Fieles was wir auf dem Computer sehen ist eine
; täuschung. Nur selten werden wir diese zu gesicht bekommen.
;
Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

xGraphics3D(800,600,32,False,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global Cam=xCreateCamera(CPiv)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube=xCreateCube()

Texture=xCreateTexture(512,512,1,1) : If Texture=0 Then RuntimeError("Handler=0")

xSetBuffer(xTextureBuffer(Texture,0))

xColor($ff,$ff,$ff)
For i=0 To 300
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$99)
For i=0 To 200
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($44,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityFX(Cube,1)
xFlipMesh(Cube)

; Um etwas platz im Cube zu schaffen

xScaleEntity(Cube,10,10,10,1)

cube2=xCreateCube()
xScaleEntity(cube2,1,1,1,1)

a#=-5 ; start entfernung festlegen
xColor($33,$ff,$ff)

Repeat

alpha#=MilliSecs()-timer:timer=MilliSecs()
xTurnEntity(CPiv,0.001*alpha#,0.002*alpha#,0.003*alpha#)
xTurnEntity(Cube2,-0.002*alpha#,-0.004*alpha#,0.006*alpha#)

; mit dem Mouserad kann die Kamera noch vorn oder hinten
; verschoben werden.

a#=a#+(xMouseZSpeed()/30.0)*alpha#
xPositionEntity(Cam,0,0,a#)

; Und nachdem die position der Camera bekannt ist
; wird der Qube mit dem Sternen Hintergrund an diese
; Position gesetzt. So siet es aus als ob der Hintergrund
; Stehen bleibt.

xPositionEntity(Cube,xEntityX(Cam,1),xEntityY(Cam,1),xEntityZ(Cam,1),1)

; Es wird jedem klar sein das der Cube2 nicht fiel kleiner ist
; als der Sternen Qube. Daher verschwindet der Cube2 auch
; wenn der Z wert der Camera > 13 wird. Um das zu verhindern$
; benutzen wir die Funktion xEntityOrder. Wir bestimmen einfach
; das der Cube immer als ersts gezeichnet wird. Bezihungs weise for
; allen Objecten mit einem Order von 0.

If xKeyDown(28)

; Und wider ist das Auge getäuscht.

xEntityOrder(Cube,1)
Else
xEntityOrder(Cube,0)
EndIf

xRenderWorld

xText(10,10,"ms pro turn "+alpha)
xText(10,25,"FPS "+xGetFPS())
xText(10,40,"CamZ "+xEntityZ(Cam))

xText(400,525,"Press return to order cube new",1)
xText(400,500,"Roll mousewheel and move the cam",1)

xFlip

Until xKeyHit(1)

End
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

tft

BeitragFr, Apr 09, 2010 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 101 : Exchange 1
;
; Was sonst noch geht.
; Optische effecte sind immer ganz toll.
; Spiel mal ein wenig rum damit. Und versucht zu verstehe
; wie dieser Effekt zustande kommt.
;
Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

Global ScrX=600,Scry=600
xGraphics3D(ScrX,Scry,32,False,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global Cam=xCreateCamera(CPiv)
xPositionEntity(CPiv,0,0,-4)

cube3=xCreateCube(CPiv)
xPositionEntity(cube3,0,0,3.49)
xEntityOrder(cube3,1)
Cube3Tex=xCreateTexture(Scrx,Scry,1,1)
xEntityFX(cube3,1)
xEntityTexture(Cube3,Cube3Tex)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube2=WireQube()

xHideEntity(Cube2)

ae=0
d=24
For i2=-d To d Step 8
For i1=-d To d Step 8
For i=-d To d Step 8
c=xCopyEntity(Cube2)
xPositionEntity(c,i2,i1,i)
xEntityColor(c,Rnd($99,$ff),Rnd($99,$ff),Rnd($99,$ff))
xScaleEntity(c,1,1,1)
ae=ae+1
Next
Next
Next

z#=0:x#=0:y#=0
xColor($33,$ff,$ff)

xHidePointer()

Repeat

alpha#=MilliSecs()-timer:timer=MilliSecs()

xTurnEntity(Cube2,0,0,0.08*alpha#)
xTurnEntity(Cube3,0,-0.0014*alpha#,-0.00013*alpha#)
xTurnEntity(CPiv,0,0.1,0.05)

xRenderWorld

xCopyRect(0,0,599,599,0,0,xGraphicsBuffer(),xTextureBuffer(Cube3Tex))
xEntityTexture(Cube3,Cube3Tex)

xFlip

Until xKeyHit(1)

End

Function WireQube()

Local Cube,Texture

Cube=xCreateCube()

Texture=xCreateTexture(32,32,1,1) : If Texture=0 Then RuntimeError("Handler=0")
xSetBuffer(xTextureBuffer(Texture,0))
xColor($ff,$ff,$ff)
xRect(0,0,31,31,0)
xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityFX(Cube,17)
xTextureBlend(Texture,1)
xEntityBlend(Cube,3)
xEntityAlpha(Cube,0.05)

xEntityColor(Cube,$ff,0,0)

Return Cube
End Function
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

tft

BeitragFr, Apr 09, 2010 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 007 : Basic 7
;
; Bewegung muss sein.
; Erst bewegung macht so richtig Spass. Gerade wenn man am
; Anfang ist. Macht bewegung eine Menge her.
;

Include "xors3d.bb"

Global ap$="Xors3D example by TFT for german comunity"

Global ScrX=800,Scry=600
xGraphics3D(ScrX,Scry,32,False,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global Cam=xCreateCamera(CPiv)
xPositionEntity(CPiv,0,0,0)

Global Ligt=xCreateLight(LIGHT_DIRECTIONAL)
xTurnEntity(Ligt,90,0,0)

Cube=StarCube()
xEntityOrder(Cube,1)
Cube2=WireQube()

ae=0
d=32
For i2=-d To d Step 6
For i1=-d To d Step 6
For i=-d To d Step 6
c=xCopyEntity(Cube2)
xPositionEntity(c,i2,i1,i)
xEntityColor(c,Rnd($99,$ff),Rnd($99,$ff),Rnd($99,$ff))
xScaleEntity(c,1,1,1)
ae=ae+1
Next
Next
Next

z#=0:x#=0:y#=0 ; start werte Festlegen
xColor($33,$ff,$ff)

xHidePointer()
; Damit beim start nicht ungewollte werte in xMouseXSpeed()
xFlushMouse() ; drinn sind. Müssen die Werte vorher gelöscht werden.

Repeat

alpha#=MilliSecs()-timer:timer=MilliSecs()

; bewegen der Camera, beziehungsweise des Pivot Objectes

; Die Befehle xMouseXSpeed und co. Messen den weg den
; die Mouse in die entsprechende Richtung gemacht hat.
; Leider ist die auflösung sehr grob daher müssen wir das
; ganze etwas gleiner machen.

y#=y#+(xMouseYSpeed()/50000.0)*alpha#
xTurnEntity(CPiv,y#*alpha#,0,0)
x#=x#-(xMouseXSpeed()/50000.0)*alpha#
xTurnEntity(CPiv,0,x#*alpha#,0)
z#=z#+(xMouseZSpeed()/1000.0)*alpha#

; jedesmal wenn die obigen Mouse Befehle verwendet wurden.
; Wird der wert auf 0 zurück gesetzt. Wenn ihr diesen also noch
; für weiter berechnungen benötigt. Speicher ihn zwischen.

; Damit die Mouse nicht das Fenster verlassen kann.
; wird diese immer zum Zentrum des Fensters zurück gestellt.
; Dies erzeugt keine werte in xMouseXSpeed() etc.

xMoveMouse(ScrX/2,ScrY/2)

xMoveEntity(CPiv,0,0,z#) ; bewegen der Kammera mit der geschwindigkeit z

xPositionEntity(Cube,xEntityX(Cam,1),xEntityY(Cam,1),xEntityZ(Cam,1),1)

xRenderWorld

xText(Scrx/2,500,"Roll MouseWhile and fligh",1)
xText(10,10,"FPS "+xGetFPS())

xFlip

Until xKeyHit(1)

End

; Wir haben ausserdem dies Funktionen Angelgt.
; Nicht weil es besser oder schneller ist. Nein es ist
; nur pracktische. Im code Teil den man gerade
; bearbeitet nicht immer den ganzen Code durch
; rollen zu müssen.

Function StarCube()

; Damit nicht aus versehen Variablen aus dem Main
; Code verwendet werden. Also Global gültige Variablen.
; Sollten diese konsequent immer als Local deklariert werden.
; Das ist besonders für laufVariablen wie hir " i " wichtig.
; Da diese auch offt im MainCode verwendet werden und
; sonst zu unerwarteten Fehlern führen können.

Local Cube,Texture,i

Texture=xCreateTexture(512,512,1,1)
If Texture=0 Then RuntimeError("Handler=0")

xSetBuffer(xTextureBuffer(Texture,0))

xColor($ff,$ff,$ff)
For i=0 To 300
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$99)
For i=0 To 200
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($44,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$44,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xColor($99,$99,$44)
For i=0 To 100
xRect(Rand(2,510),Rand(2,510),1,1,1)
Next

xSetBuffer(xBackBuffer())

Cube=xCreateCube()
xEntityTexture(Cube,Texture,0,0)
xEntityFX(Cube,1)
xFlipMesh(Cube)
xScaleEntity(Cube,10,10,10,1)
xEntityOrder(Cube,1)

Return Cube
End Function

Function WireQube()

Local Cube,Texture

Cube=xCreateCube()

Texture=xCreateTexture(32,32,1,1) : If Texture=0 Then RuntimeError("Handler=0")
xSetBuffer(xTextureBuffer(Texture,0))
xColor($ff,$ff,$ff)
xRect(0,0,31,31,0)

xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityFX(Cube,17)
xTextureBlend(Texture,1)
xEntityBlend(Cube,3)
xEntityAlpha(Cube,0.1)

xEntityColor(Cube,$ff,0,0)

Return Cube
End Function
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group