Xors3D

Übersicht BlitzBasic FAQ und Tutorials

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

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 !!!!!!

tft

BeitragFr, Apr 09, 2010 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 008 : Basic 8
;
; Ein Raumschiff gefällig..
; Auch ohne Modell Programm können wir mit etwas
; Ideenreichtum ein kleines Raumschiff erzeugen.
; Wir verwenden dazu einige der Mesh Befehle mit dehnen
; sich herlich Basteln läst und machen mit AddMesh eins draus.
;

Include "xors3d.bb"

; Für all diejenigen die nachstehende DLL kennen. Eine erleichterung
; bei allen Windows bezogenen dingen.

;Include"blitzsys.bb"
;If DLLBlitzSysInitialise() = False Then RuntimeError("Blitzsys.dll not found")
;Global BlitzSys=1

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

Global ScrX,Scry
Global WinMode=True

If BlitzSys=1 And WinMode=True
; ScrX=DLLDesktopWidth()
; ScrY=DLLDesktopHeight()
Else
ScrX=800:Scry=600
EndIf

xGraphics3D(ScrX,Scry,32,True,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global CPiv2=xCreatePivot(CPiv)
Global Cam=xCreateCamera(CPiv2)
xPositionEntity(Cam,0,1,-5)

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

; wir basteln uns ein Raumschiff

; Der grund Körper
PlayerObject=xCreateCone(14,True,CPiv)
xRotateEntity(PlayerObject,90,0,0)
xScaleMesh(PlayerObject,1,1,0.2)

; Ein seiten Teil
; Es wird nicht als eigenes Entity behandelt.
; Wir addieren die Mesh Informationen zum grund Körper
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,0.6,0,0)
xAddMesh(c,PlayerObject)
; Nach dem Addieren wird das muster Object nicht mer benötigt und
; kann freigegeben werden.
xFreeEntity(c)

c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,-0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCone(4,True)
xEntityColor(c,$0,$ff,$ff)
xScaleMesh(c,0.4,0.4,0.15)
xPositionMesh(c,0,-0.2,-0.1)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,-0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)

; --------------------------------------------------------

Cube=StarCube()

QubeField()

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

xHidePointer()
xFlushMouse()

Repeat

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

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#

xMoveMouse(ScrX/2,ScrY/2)

; Damit wir auch mal von der seite schauen dürfen

If xKeyDown(203); Pfeil lings
xTurnEntity(CPiv2,0,0.06*alpha#,0)
Else If xKeyDown(205); Pfeil rechts
xTurnEntity(CPiv2,0,-0.06*alpha#,0)
EndIf

xMoveEntity(CPiv,0,0,z#)

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

xRenderWorld

xText(10,10,"FPS "+xGetFPS())

xText(scrx/2,560,"Press arrow key left or right to look around the ship",1)
xFlip

Until xKeyHit(1)

End

Function StarCube()

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

Function QubeField()

Local Cube2,ae,d,i,i1,i2

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

xFreeEntity(Cube2)

Return ae

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

googlehupf

BeitragFr, Apr 09, 2010 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@tft find das gut daß du dich mit xors3d beschäftigst....
bin damit auch schon ne weile unterwegs....
habs komplett mit lizenz und stehe auch gut mit den admins dort in kontakt.
kann auch gerne paar beispiel codes bringen aber eher für bmax.

betreibe die seite xors3d.de welche noch unter der umstrukturierung meinerseits leidet und bald im neuen gewand online geht.

kannst mich gerne mal per pm kontaktieren.

tft

BeitragSa, Apr 10, 2010 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich nehme das angeboht gerne in anspruch, vorallem weil mir etliche dinge beim ausarbeiten der Demos auffallen. Die man als Bugs betrachten kann, aber nicht muss. Deine Seite habe ich schon gesehen, und werde mich mal sehe lassen.

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

tft

BeitragSo, Apr 11, 2010 1:33
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 009 : Basic 9
;
; Kollision ........
; mal sehen was passiert.

Include "xors3d.bb"

Include"blitzsys.bb"
If DLLBlitzSysInitialise() = False Then RuntimeError("Blitzsys.dll not found")
Global BlitzSys=1

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

Global ScrX,Scry
Global WinMode=False

If BlitzSys=1 And WinMode=True
ScrX=DLLDesktopWidth()
ScrY=DLLDesktopHeight()
Else
ScrX=800:Scry=600
EndIf

xGraphics3D(ScrX,Scry,32,WinMode,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global CPiv2=xCreatePivot(CPiv)
Global Cam=xCreateCamera(CPiv2)
xPositionEntity(Cam,0,1,-5)

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

;------------------------------------------

PlayerShip=CreateShip()

; Da stellt sich doch gleich die frage, warum den das Pivot und nicht
; das Shiff selber verwendet wird. In unserem fall liegt das daran das
; die Slide und Stop befehle bei Child Objecten nicht immer richtig
; funktioniert. Beim Sliden wird dann das Object im Koordinaten Raum
; des Parent verschoben. Probiert es doch einfach aus. Ersetzt CPiv durch
; PlayerShip und den letzten Parameter von Collision von 0 nach 2.

xEntityType(CPiv,1)
xEntityRadius(CPiv,1)

; Eine der wesentlichen grund Züge der Collisions Erkennung ist
; die Typen trennung. Dadurch kann man gezielt objecte auf
; Kollision prüfen.

xCollisions(1,2,1,0)

;------------------------------------------

Cube=StarCube()
QubeField()

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

xHidePointer()
xFlushMouse()
xFlushKeys()

Repeat

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

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#

xMoveMouse(ScrX/2,ScrY/2)

If xKeyDown(203); Pfeil lings
xTurnEntity(CPiv2,0,0.06*alpha#,0)
Else If xKeyDown(205); Pfeil rechts
xTurnEntity(CPiv2,0,-0.06*alpha#,0)
EndIf

xMoveEntity(CPiv,0,0,z#)

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

xUpdateWorld()

; Nach dem UpdateWorld prüfen wir ob unser Schiff mit einem
; Object zusammen gestossen ist und löschen dies.

c=xCountCollisions(CPiv)
If c>0
For i=1 To c
; !!!! Wichtig ist das der Counter hir bei 0 anfängt.
cc=xCollisionEntity(CPiv,i-1)
xFreeEntity(cc)
Next
EndIf
xResetEntity(CPiv)

;-------------------------------------------------------------------------

xRenderWorld

xText(10,10,"FPS "+xGetFPS())

xFlip

Until xKeyHit(1)

End

Function StarCube()

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

Function Qube()

Local Cube,Texture

Cube=xCreateCube()

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

xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityColor(Cube,$ff,0,0)

Return Cube
End Function

Function QubeField()

Local Cube2,ae,d,i,i1,i2

Cube2=Qube()

ae=0
d=60
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)

;------------------------------------------------
xEntityType(c,2)
xEntityRadius(c,1)
;------------------------------------------------

ae=ae+1
Next
Next
Next

xFreeEntity(Cube2)

Return ae

End Function

Function CreateShip()

Local c,PlayerObject

PlayerObject=xCreateCone(14,True,CPiv)
xRotateEntity(PlayerObject,90,0,0)
xScaleMesh(PlayerObject,1,1,0.2)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,-0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCone(4,True)
xEntityColor(c,$0,$ff,$ff)
xScaleMesh(c,0.4,0.4,0.15)
xPositionMesh(c,0,-0.2,-0.1)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,-0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)

Return PlayerObject

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

Mau

BeitragSo, Apr 11, 2010 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte mal eine Grundsatzfrage, bevor ich umsteige -wie kompatibel und stabil ist die Xors3D Engine denn auf den verschiedenen Betriebssystemen (XP, Vista, 7), 32- / 64-Bit Modi und NVidia / ATI-Karten? Ist das ganze nur eine Spielerei bisher oder wirklich stabil, kompatibel und einsatzbereit?


TFT hat Folgendes geschrieben:
; Texturen >512*512 werden nicht richtig verarbeitet.

(Aus dem Sternenhintergrund-Beispiel). Wie darf man das verstehen? Shocked
Alles muss, nichts kann!

tft

BeitragSo, Apr 11, 2010 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.......

ich hoffe das euch das Thema interessiert. Für die nächsten Teile werden
wir noch einige andere coole funktions Sammlungen mit ins Boot nehmen.
Das bedeutet natürlich das die Codes immer länger werden. Daher werden
wir das ganze so abspecken das die Funktionen in einer Include landen.



BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 010 : Basic 10
;
; Zielen ........ Schiessen ...... BOOM
; Jetzt kommt mehr Action rein ......
;
; Diejenigen unter euch die schon mehr Erfahrung mit den Tücken
; der Collisions erkennung habe. Werden jetzt sicher sagen ......
; BOOOAAAA so geht das ja nun garnicht.
; Und ich stimme dem zu. Aber dazu gibts fileicht ein Exanche ...

Include "xors3d.bb"

Include"blitzsys.bb"
If DLLBlitzSysInitialise() = False Then RuntimeError("Blitzsys.dll not found")
Global BlitzSys=1

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

Global ScrX,Scry
Global WinMode=False

If BlitzSys=1 And WinMode=True
ScrX=DLLDesktopWidth()
ScrY=DLLDesktopHeight()
Else
ScrX=800:Scry=600
EndIf

xGraphics3D(ScrX,Scry,32,WinMode,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global CPiv2=xCreatePivot(CPiv)
Global Cam=xCreateCamera(CPiv2)
xPositionEntity(Cam,0,1,-5)

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

PlayerShip=CreateShip()
xEntityType(CPiv,1)
xEntityRadius(CPiv,1)
xCollisions(1,2,1,0)
Cube=StarCube()
QubeField()

;-----------------------------------------------

; Hir machen wir uns eine Bullet

cone=xCreateCone(3)
xRotateMesh(cone,90,0,0)
xScaleMesh(cone,0.1,0.1,0.4)
xEntityColor(cone,$ff,0,0)
xEntityFX(cone,1)
xHideEntity(cone)

; da wir 2 Kannonen leufe haben, switshen wir
WappenSwitsh=0

; Speicher für die Bullet daten.
Global Bullet.bullet
Type bullet
Field handler
End Type

; Die Bullets bekommen den Type 3
xCollisions(3,2,1,0)

;-----------------------------------------------
z#=0:x#=0:y#=0

xHidePointer()
xFlushMouse()
xFlushKeys()

Repeat

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

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#

xMoveMouse(ScrX/2,ScrY/2)

If xKeyDown(203); Pfeil lings
xTurnEntity(CPiv2,0,0.06*alpha#,0)
Else If xKeyDown(205); Pfeil rechts
xTurnEntity(CPiv2,0,-0.06*alpha#,0)
EndIf

xMoveEntity(CPiv,0,0,z#)

;---------------------------------------------
If xKeyDown(57) ; Space Taste
; Eine Zeitliche betrenzung muss sein
If FireTimer<MilliSecs()
FireTimer=MilliSecs()+200 ; Und hir stellt man die Schuss Folge geschwindigkeit ein
WaponSwitsh= Not WaponSwitsh ; Waffenwechsel
If WaponSwitsh=0
WaponXPos#=0.6
Else
WaponXPos#=-0.6
EndIf
Bullet.bullet= New bullet
; Bullet copieren und positionieren.
Bullet.bullet\handler=xCopyEntity(cone)
xPositionEntity(Bullet.bullet\handler,xEntityX(PlayerShip,1),xEntityY(PlayerShip,1),xEntityZ(PlayerShip,1))
xRotateEntity(Bullet.bullet\handler,xEntityPitch(PlayerShip,1),xEntityYaw(PlayerShip,1),xEntityRoll(PlayerShip,1))
xMoveEntity (Bullet.bullet\handler,WaponXPos#,0,0)
xTurnEntity(Bullet.bullet\handler,270,0,0)
xEntityType(Bullet.bullet\handler,3)
xEntityRadius(Bullet.bullet\handler,0.2)
EndIf
EndIf

; und damit das ganze sich auch bewegt
Bullet.bullet= First bullet
For Bullet.bullet= Each bullet
; Und wozu das Z am ende ???
; Damit wir unsere Bullets nicht selber einholen :-)
xMoveEntity(Bullet.bullet\handler,0,0,0.01*alpha#+z#)
Next
;---------------------------------------------

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

xUpdateWorld()

;---------------------------------------------

; zu guter letzt reagieren wir noch auf die entstehende Collision
; Cube und Bullet werden entfernt
Bullet.bullet= First bullet
For Bullet.bullet= Each bullet
c=xCountCollisions(Bullet.bullet\handler)
If c>0
For i=1 To c
cc=xCollisionEntity(Bullet.bullet\handler,i-1)
xFreeEntity(cc)
xFreeEntity(Bullet.bullet\handler)
Delete Bullet.bullet
Next
EndIf
xResetEntity(CPiv)
Next

;-------------------------------------------------------------------------

xRenderWorld

xColor($0,$0,$0)
xText(10,10,"FPS "+xGetFPS())
xText(scrX/2,550,"Press space to fire bullet",1)
xColor($33,$ff,$ff)
xText(11,11,"FPS "+xGetFPS())
xText(scrX/2+1,551,"Press space to fire bullet",1)

xFlip

Until xKeyHit(1)

End

Function StarCube()

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

Function Qube()

Local Cube,Texture

Cube=xCreateCube()

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

xSetBuffer(xBackBuffer())

xEntityTexture(Cube,Texture,0,0)
xEntityColor(Cube,$ff,0,0)

Return Cube
End Function

Function QubeField()

Local Cube2,ae,d,i,i1,i2

Cube2=Qube()

ae=0
d=30
For i2=-d To d Step 6
For i1=-d To d Step 6
For i=-d To d Step 6
If i=0 And i1=0 And i2=0
Else
c=xCopyEntity(Cube2)
xPositionEntity(c,i2,i1,i)
xEntityColor(c,Rnd($99,$ff),Rnd($99,$ff),Rnd($99,$ff))
xScaleEntity(c,1,1,1)

xEntityType(c,2)
xEntityRadius(c,1)
EndIf

ae=ae+1
Next
Next
Next

xFreeEntity(Cube2)

Return ae

End Function

Function CreateShip()

Local c,PlayerObject

PlayerObject=xCreateCone(14,True,CPiv)
xRotateEntity(PlayerObject,90,0,0)
xScaleMesh(PlayerObject,1,1,0.2)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,-0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCone(4,True)
xEntityColor(c,$0,$ff,$ff)
xScaleMesh(c,0.4,0.4,0.15)
xPositionMesh(c,0,-0.2,-0.1)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,-0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)

Return PlayerObject

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

tft

BeitragSo, Apr 11, 2010 11:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

@MAU, ich wollte eigentlich eine Texture 1024*1024 benutzen. Aber da
scheint etwas nicht zu funktiorien. Versuch doch selber mal eine solche
Texture zu erzeugen. Entweder funktioieren die Zeichenbefehle nicht
oder die berechnung der Texture Cords sind fehlerhaft. Man kann nichts von der Texture sehen. Ich habe aber auch nicht lange rum experimentiert...
weis also auch nicht obs an der NVidea Graka liegt.

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

tft

BeitragDo, Apr 15, 2010 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;
; Xors3D examples by TFT
;
; 011 : Basic 11
;
; Der weltraum ist leer?
; Ja dies ist eine besonderheit diese Menschenunwirklichen
; gebildes gähnender Leere. Selbst wenn man mit 100000 Kmh
; durchs Weltall düst. Bekommt man den eindruck das es nicht vor
; werts geht. Dazu haben sich findige Programierer den Sternen
; Staub ausgedacht. Ein paar wenige Objecte die sehr klein sind
; werden in der umgebung dargestellt und vermitteln den eindruck
; von bewegung. Hir ein ansatzt dazu.....
;

Include "xors3d.bb"

Include"blitzsys.bb"
If DLLBlitzSysInitialise() = False Then RuntimeError("Blitzsys.dll not found")
Global BlitzSys=1

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

Global ScrX,Scry
Global WinMode=False

If BlitzSys=1 And WinMode=True
ScrX=DLLDesktopWidth()
ScrY=DLLDesktopHeight()
Else
ScrX=800:Scry=600
EndIf

xGraphics3D(ScrX,Scry,32,WinMode,True)
xAppTitle(ap$)

Global CPiv=xCreatePivot()
Global CPiv2=xCreatePivot(CPiv)
Global Cam=xCreateCamera(CPiv2)
xPositionEntity(Cam,0,1,-5)

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

PlayerObject=CreateShip()
Cube=StarCube()

;-------------------------------------------------------------

; Das hir bedarf glaube ich nicht wirklich einer grösseren Erklärung

cstaub=xCreateCone(3)
xScaleMesh(cstaub,0.051,0.051,0.051)
;xEntityColor(cstaub,$55,$55,$55)
xEntityFX(cstaub,1)
;xHideEntity(cstaub)

Global Staub.Staub
Type Staub
Field handler
End Type

For i=0 To 90
staub.staub= New staub
Staub\handler=xCopyEntity(cstaub)
If staub\handler=0 Then RuntimeError("Handler=0")
xPositionEntity(Staub\handler,15-Rnd(0,30),15-Rnd(0,30),15-Rnd(0,30))
Next

;-------------------------------------------------------------

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

xHidePointer()
xFlushMouse()

Repeat

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

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#

xMoveMouse(ScrX/2,ScrY/2)

If xKeyDown(203); Pfeil lings
xTurnEntity(CPiv2,0,0.06*alpha#,0)
Else If xKeyDown(205); Pfeil rechts
xTurnEntity(CPiv2,0,-0.06*alpha#,0)
EndIf

xMoveEntity(CPiv,0,0,z#)

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

;--------------------------------------------

; Und das hir ist auch recht einfach gehalten. Die 90 Staub teile werden
; hir auf entfernung geprüft und gegebenenfals gelöscht. Sofort wird in$
; Flugrichtung ein neues erzeugt.
staub.staub= First staub
For staub.staub= Each staub
If xEntityDistance(Staub\handler,CPiv)>30
; Angleichung an die Schiffposition und rotation
xPositionEntity(staub\handler,xEntityX(CPiv),xEntityY(CPiv),xEntityZ(CPiv))
xRotateEntity(staub\handler,xEntityPitch(CPiv),xEntityYaw(CPiv),xEntityRoll(CPiv))
; Dann zufällig um das Zentrum verteilen
xMoveEntity(staub\handler,15-Rnd(0,30),15-Rnd(0,30),0)
; und in Fartrichtung ins sichtfeld schieben.
If z#>0 Then xMoveEntity(staub\handler,0,0,15)
If z#<0 Then xMoveEntity(staub\handler,0,0,-15)
EndIf
Next
;--------------------------------------------

xRenderWorld

xText(10,10,"FPS "+xGetFPS())
xText(10,25,"Z "+xentityz(cpiv,1))
xText(scrx/2,560,"Press arrow key left or right to look around the ship",1)
xFlip

Until xKeyHit(1)

End

Function StarCube()

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

Function CreateShip()

Local c,PlayerObject

PlayerObject=xCreateCone(14,True,CPiv)
xRotateEntity(PlayerObject,90,0,0)
xScaleMesh(PlayerObject,1,1,0.2)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True)
xScaleMesh(c,0.02,0.3,0.02)
xPositionMesh(c,-0.6,0,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCone(4,True)
xEntityColor(c,$0,$ff,$ff)
xScaleMesh(c,0.4,0.4,0.15)
xPositionMesh(c,0,-0.2,-0.1)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)
c=xCreateCylinder(14,True,PlayerObject)
xEntityColor(c,$ff,$0,$0)
xScaleMesh(c,0.15,0.2,0.15)
xPositionMesh(c,-0.35,-0.9,0)
xAddMesh(c,PlayerObject)
xFreeEntity(c)

Return PlayerObject

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

tft

BeitragDo, Apr 15, 2010 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Einer meiner grösten Hoffnungen war. Das die Rechenungenauigkeit durch
64 Bit Aritmetik eleminiert wurde. Jeder kennt sicher den Effekt das Objekte die sich bewegen und vom Welt Zentrum weiter als 28000 entfernt sind anfangen zu wackeln. Das ist bei Xors3D noch genauso wir bei B3D. Desweiteren gibt es Probleme bei der Mesh addition. Die Cords sind scheinbar auf 256 begrenzt. Alles darüber wird als MOD angehängt und taucht somit an falscher Stelle auf. Dann lassen sich Texturen zwar erzeugen und bearbeiten. Auch Rendern ist möglich. Aber die Zeichen befehle arbeiten mit Texturen Grösser 512*512 nicht richtig zusammen.

Also mein erster eintruck nach einer Woche ist. Eine solide Engine, mit noch dem einen oder anderen Problem. Ich werde fleisig weiter probieren.

Wenn jemand etwas besonderes ausprobiert haben möchte. Kann er hir ruhig mal was Posten.

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

Ray-Tracer

BeitragFr, Apr 16, 2010 12:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, erstmal Danke für die Einführung in Xors3d.

Zitat:
Wenn jemand etwas besonderes ausprobiert haben möchte. Kann er hir ruhig mal was Posten.


Ich hab mal nen bissl rumprobiert, aber ich bekomme das mit den Schatten nicht hin. Wäre toll wenn du dafür nen Beispielcode hättest, wie man die Schattenengine einbaut, ich seh da nich durch.
__wunschklang__
 

Mau

BeitragMi, Apr 21, 2010 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Klasse Tutorial, habe aber noch einige Fragen & Anregungen dazu:


tft hat Folgendes geschrieben:
Desweiteren gibt es Probleme bei der Mesh addition. Die Cords sind scheinbar auf 256 begrenzt. Alles darüber wird als MOD angehängt und taucht somit an falscher Stelle auf.

Was genau ist hier denn mit "Cords" und "MOD" gemeint?


Zitat:
Dann lassen sich Texturen zwar erzeugen und bearbeiten. Auch Rendern ist möglich. Aber die Zeichen befehle arbeiten mit Texturen Grösser 512*512 nicht richtig zusammen.

Auf meiner ATI-Karte funktioniert das auch mit grösseren Texturen einwandfrei. Scheint also (mal wieder) ein NVidia Problem zu sein.


Dann hätte ich noch eine Anregung:
Das Tutorial ist zwar sehr interessant, geht aber leider nicht wirklich auf die Möglichkeiten der Xors3D Engine ein (Shader, Bumpmapping, Shadows), sondern ist eher eine Art Grundkurs in B3D, auch wenn dabei Xors-Befehle verwendet werden. Dabei wäre es doch viel interessanter, wie man die neuen Features benutzt und in eigenen Spielen implementiert. Hoffe, du kannst uns da vielleicht noch einige Tutorials zur Hand geben (die beiliegenden Samples sind leider nicht sehr erklärend) Wink

Ausserdem frage ich mich immer noch, wie kompatibel die Engine auf verschiedenen Karten und Windows-Systemen ist, dazu lassen sich irgendwie nur schwer Fakten finden, wahrscheinlich weil die Engine noch nicht so stark verbreitet ist Sad
Alles muss, nichts kann!

tft

BeitragMi, Apr 21, 2010 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

danke für deine Anregung.

MOD: Mann nehme einen Wert 299 und schaut wie offt 255 hineinpast und gibt den restbetrag aus. In unserem falle 44. Konkret bedeutet das. Wenn ich ein Object mit der X Koordinate von +299 In ein Mesh kopiere wird es an die Koordinate -255 + 44 gestellt. Das ist zumindestens bei mir so.

Cords: Falsch geschrieben....... ist Umgangssprache für Koordinaten.

Da sich das Tutorial erst am Anfang befindet, bitte ich um Gedult. Momentan versuche ich selber gerade die sache mit Schatten auf die rolle zu bringen. Was sich als schwieriger erweist als gedacht.

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

Mau

BeitragDo, Apr 22, 2010 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich muss echt sagen, das ich schon recht enttäuscht bin, was die Dokumentation von Xors3D angeht -ganze 13 Beispielcodes (die sich alle nur auf Shader beziehen), ist das alles? Shocked

Kein Beispiel zu Shadows und kaum Tutorials zu finden. Der User muss sich wohl alles erst selbst zusammen suchen. Die Befehlsreferenz ist ziemlich kryptisch, in den wenigstens Fällen wirklich selbsterklärend und das Forum gibt auch nicht viel her. Bei einem Preis von 100$ für mich nicht nachvollziehbar Confused
Alles muss, nichts kann!

tft

BeitragDo, Apr 22, 2010 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo MAU,

befor man so richtig abmeckert ... sollte man doch einfach mal Google
bemühen .... gugst du hir

http://area.xors3d.com/deposit...20-samples

ausserdem sind die meisten ( Aussnahmen schon weiter oben angesprochen ) Befehle eins zu eins kompatibel. Und dazu gibts eine SUPER deutsche Hilfe hir im Forum.

Und für das ding mit dem Schatten ..... gibts sogar auch eine leuffähige version. Und wider ein Thema abgehagt.

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

Mau

BeitragDo, Apr 22, 2010 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ausserdem sind die meisten ( Aussnahmen schon weiter oben angesprochen ) Befehle eins zu eins kompatibel. Und dazu gibts eine SUPER deutsche Hilfe hir im Forum.

Mir geht's doch nicht darum, wie man B3D benutzt, sondern eben genau die Features, die B3D NICHT hat. Und ich bin es einfach leid, mir wegen schlecht geordneten Websites oder kryptischer Docs alles erst mal umständlich aus tausend Foren zusammensuchen zu müssen. Ist ja nicht so, das man den ganzen Tag nichts anderes zu tun hätte Confused Und wenn man erst mal Google extern bemühen muss, um auf einer Website etwas zu finden, ist das in meinen Augen sowieso ein Armutszeugnis.

Aber gut, die Samples aus dem "Depository" erklären da schon um einiges mehr, danke dir. An der Engine selbst gibt's bisher nichts auszusetzen.
Alles muss, nichts kann!
 

super_castle

BeitragSo, Apr 25, 2010 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mir kommt es so vor, als wenn die Russen den Code von B3D aufgebrochen haben und dann dieses Strickmuster verfolgt haben.
Es fehlt zum Programm "die liebe fürs Detail" .

Die Russen haben ja auch damals (1986) verschiedenen Dos-Versionen(MS-Dos ähnlich) in Deutschland verkauft. Wenn man das ASM zerfriemelt hatte , kam fast "MS-Dos" raus.

Gruss

Goodjee

BeitragSo, Apr 25, 2010 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
du wirst es nicht glauben, aber es war das ziel etwas zu schaffen was fast so funktioniert wie b3d, damit man sich nicht umgewöhnen muss und trotzdem mit der zeit gehn kann.

btw, "die russen" ist schon ziemlich rassistisch
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group