PureBasic Community-Projekt (kleine 3D-Engine fertig)

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Xaby hat geschrieben:Und Zap3D
Zap3D ist halt uralt (Würde auch nichtmehr mit PB laufen - Vorgänger von Senseflare3D :-P ), da kann man nichts machen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

So ...
Hier war ja meine Behauptung
http://www.purebasic.fr/german/viewtopi ... 84&start=0

Dass eine 3D-Engine zu basteln einfach sei und mit etwas Schulmathematik kein Problem sein sollte ...
Ich bleibe dabei :D

Und wenn bis nachher keiner eine Engine bastelt, dann muss ich wohl mal ran und euch eine Würfel-Umgebung zur Verfügung stellen :D :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Es kommt doch auch drauf an, welchen Funktionsumfang die Engine haben soll. Sprite3D ist nicht mit DreaMotion3D zu vergleichen.

Naja, wenn man selbst für Schulmathematik zu doof ist, wie ich, dann kriegt man spätestens bei der Vektorrechnung für Rotation Probleme (wie ich ^^).
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Wir sind doch etwas weit vom Thema abgekommen /:->
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Ja, stimmt. Dachte gerade auch schon, "was für ein Thema?".
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Wenn keiner würfelt, mach ich es :D

Siehe Anfang des Beitrags und hier
http://www.purebasic.fr/german/viewtopi ... 098#190098

Damit die Sache endlich ins Rollen kommt :allright:

Bild
http://www.folker-linstedt.de/pureforum/FL3D.zip
Kinder an die Macht http://scratch.mit.edu/
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Könntest du eventuell dann öfters mal eine Exe draus machen, da ich als 3.30 benutzer da wenig chancen habe :P
(und andere sicher auch!)
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Der gesamte Code hat weniger als 600 Zeilenb (noch 200 übrig),
ist PureBasic 4.x Code und nutzt keine Gadgets oder API ...

sollte mit der PureBasic 4.x Demo (kostenlos) ebenfalls funktionieren.
Solltest du nicht wissen, wo man die Demo findet,
schau dir das Video hier an, da wird es beschrieben:
http://rapidshare.de/files/38760901/Pur ... L.avi.html

Also keine Ausrede mit PureBasic 3.3 :D :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Heute, mal die schlimme Version hochgeladen, wo ich auf falsche Vertexes zugreife :shock:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

HALLO VON KOB

Beitrag von kob »

Hallo leute habe da mal reingeschnuppert , und spitz gekrigt das ihr ein spiel schreiben wollt , das eicht hamma ist und ICH ZITTIRE (oder so ähnlich ) : das einschlägt wie knallerbsen auf einer wiese . Ich habe jetzt mit bekommen das ihr eine 3D Engine used . ihr wollt eine selber schreiben nuttzt aber den OpenGL Render mit triangels und so Z-Buffer
Setilbuffer usw . das würde ich ich nicht als engine bezeichnen , meine meinung nach muss eine engine einen render haben , schl matematig ist das zwar aber doch irgendwie blöd . ich habe mal so ne art render geschrieben , schimpft sich LLE (Low Level Engine :D ) hat nicht viel drauf ist nicht fertig usw kann aber sachen anzeigen ich poste den source code hier , da ich dan warschweinlich einen anschis vom admin bekomme hier meine mail add : KOb4you@gmx.de spammt so viel ihr wollt (ironisch gemeint) Code Hier :

Code: Alles auswählen

Procedure InitRayK()

Global RayK_MaxZPos = 2048
Global RayK_ScaleFaktor = 128
Global RayK_ScreenMiddleX = 512
Global RayK_ScreenMiddleY = 384

EndProcedure

Procedure RayK_GetXCoord(x,z)

Out = X * RayK_MaxZPos / ( Z + X ) + RayK_ScreenMiddleX

ProcedureReturn Out
EndProcedure

Procedure RayK_GetYCoord(y,z)

Out = Y * RayK_MaxZPos / ( Z + Y ) + RayK_ScreenMiddleY

ProcedureReturn Out
EndProcedure

Procedure RayK_GetWidth(Width,Z)

Width = Width + ( -Z / RayK_ScaleFaktor ) 

ProcedureReturn Width
EndProcedure

Procedure RayK_GetHeight(Height,z)

Height =  Height + ( -Z / RayK_ScaleFaktor )

ProcedureReturn Height
EndProcedure

Procedure RayK_GetDepth(Depth,z)

Depth =  Depth + ( -Z / RayK_ScaleFaktor )

ProcedureReturn Depth
EndProcedure

Procedure RayK_CalculateDistance(x,y,x2,y2)

Out = CalculateDistance(x,y,x2,y2)
ProcedureReturn Out

EndProcedure

Procedure RayK_DrawBox(x,y,z,Width,Height,Color)

X = RayK_GetXCoord(x,z)
Y = RayK_GetYCoord(y,z)
Height = RayK_GetHeight(Height,z)
Width = RayK_GetWidth(Width,z)

If Height <= 1
Height = 1
ElseIf Width <=1
Width = 1
ElseIf Width <= 1 And Height <= 1
Plot(x,y,color)
Else
Box(X,Y,Width,Height,Color)
EndIf

EndProcedure

Procedure RayK_DrawLineXYZ(x,y,z,x2,y2,z2,Color)

X = RayK_GetXCoord(x,z)
Y = RayK_GetYCoord(y,z)
X2 = RayK_GetXCoord(x2,z2)
Y2 = RayK_GetYCoord(y2,z2)

LineXY(x,y,x2,y2,color)

EndProcedure

Procedure RayK_DrawBoxWire(x,y,z,width,height,depth,color)

width = RayK_GetWidth(width,z)
height = RayK_GetHeight(height,z)
depth = RayK_GetDepth(depth,z)

x = x
y = y
z = z
x2 = x + width
y2 = y
z2 = z
x3 = x + width
y3 = y + height
z3 = z
x4 = x
y4 = y + height
z4 = z

x5 = x + depth
y5 = y + depth
z5 = z + depth
x6 = x + width + depth
y6 = y + depth
z6 = z + depth
x7 = x + width + depth
y7 = y + height + depth
z7 = z + depth
x8 = x + depth
y8 = y + height + depth
z8 = z + depth

X = RayK_GetXCoord(x,z)
Y = RayK_GetYCoord(y,z)
X2 = RayK_GetXCoord(x2,z2)
Y2 = RayK_GetYCoord(y2,z2)
X3 = RayK_GetXCoord(x3,z3)
Y3 = RayK_GetYCoord(y3,z3)
X4 = RayK_GetXCoord(x4,z4)
Y4 = RayK_GetYCoord(y4,z4)
X5 = RayK_GetXCoord(x5,z5)
Y5 = RayK_GetYCoord(y5,z5)
X6 = RayK_GetXCoord(x6,z6)
Y6 = RayK_GetYCoord(y6,z6)
X7 = RayK_GetXCoord(x7,z7)
Y7 = RayK_GetYCoord(y7,z7)
X8 = RayK_GetXCoord(x8,z8)
Y8 = RayK_GetYCoord(y8,z8)

If Width <= 1 And height <= 1 And Depth <= 1

Plot(x,y,color)

Else

LineXY(x,y,x2,y2,color)
LineXY(x2,y2,x3,y3,color)
LineXY(x3,y3,x4,y4,color)
LineXY(x4,y4,x,y,color)

LineXY(x5,y5,x6,y6,color)
LineXY(x6,y6,x7,y7,color)
LineXY(x7,y7,x8,y8,color)
LineXY(x8,y8,x5,y5,color)

LineXY(x,y,x5,y5,color)
LineXY(x2,y2,x6,y6,color)
LineXY(x3,y3,x7,y7,color)
LineXY(x4,y4,x8,y8,color)

EndIf

EndProcedure

Procedure RayK_DrawTriangle(x,y,z,x2,y2,z2,x3,y3,z3,color)

x = RayK_GetXCoord(x,z)
y = RayK_GetYCoord(y,z)
x2 = RayK_GetXCoord(x2,z2)
y2 = RayK_GetYCoord(y2,z2)
x3 = RayK_GetXCoord(x3,z3)
y3 = RayK_GetYCoord(y3,z3)

LineXY(x,y,x2,y2,color)
LineXY(x2,y2,x3,y3,color)
LineXY(x3,y3,x,y,color)

EndProcedure

InitSprite()
InitKeyboard()
InitRayK()
OpenScreen(1024,768,32,"Raycasting...")

Repeat
ClearScreen(#Black)
ExamineKeyboard()

Z + 64
StartDrawing(ScreenOutput())
RayK_DrawTriangle(10,10,z,30,10,z+10,10,30,z-10,#Red)
StopDrawing()

FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
; IDE Options = PureBasic 4.10 (Windows - x86)
; CursorPosition = 176
; FirstLine = 8
; Folding = Dw
; EnableXP
; EnableOnError
; EnableCompileCount = 86
; EnableBuildCount = 0
; EnableExeConstant
sorry kenn mich mit rapideshare nicht aus
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Antworten