MP3D Alpha 32

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 22 zum testen

Beitrag von mpz »

Hallo Leute,

die 22 ist raus (findet man hier am Anfang) und das Forum temporär down. Der Anbieter hat ein PHP Update gemacht und jetzt ist Fehlersuche angesagt. Also habt etwas Geduld...

Neuerungen der 22, ScrollSurface um den Hintergrund zu scrollen. Man kann es sicher so machen
1) http://www.purebasic.fr/english/viewtop ... 16&t=40637
oder aber so machen
2) http://em.q-soft.ch/files/get/V028GUzL1A/scrollen2.exe

Und Neuerungen die Primitves
http://em.q-soft.ch/files/get/nRSMwrkEF5/primitives.exe

Hier noch die beiden Quellcodes:

ScrollSurface:

Code: Alles auswählen

MP_Graphics3D (640,480,0,3) ; Create Windows, #Window = 0
SetWindowTitle(0, "Alpha Cube with scrolling Background") 

camera=MP_CreateCamera() ; Create Camera

light=MP_CreateLight(1) ; Create light

Mesh=MP_CreateCube() ; Cretae Cube

Texture = MP_CatchTexture(?Pic, ?Picend-?Pic) ; Make textur from Scroll Image (2280 X 450 Pixel)
Surface  = MP_TextureToSurface(Texture) ; Make a Surface from Textur

If CreateImage(0, 255, 255) ; Make image -> Original Purebasic procedure

    Height=255 
    x = 128
    y = 128
    StartDrawing(ImageOutput(0))
    For Radius = Height/2 To 10 Step -10
       Circle(x, y, radius ,RGB(Random(255),Random(255),Random(255)))
    Next
    StopDrawing() ; This is absolutely needed when the drawing operations are finished !!! Never forget it !
    
EndIf

Texture2 = MP_ImageToTexture(0) ; Make Textur from Purebasic Image

MP_EntitySetTexture(Mesh, Texture2) ; Put Texture to Cube 

MP_TexturSetAlpha (Texture2,1) ; Make Alpha Cube

;-

MP_SurfaceSetPosition(Surface,0,0,1) ; Start Surface on Position 0,0

MP_SurfaceSrcRect(Surface,0, 0, 256, 256) ; get 256*256 Pixel from Scroll Image

MP_SurfaceDestRect(Surface,0, 0, 640, 480) ; Strech it on the 640*480 Screen
 
MP_PositionEntity (Mesh,0,0,5) ; Position of the Cube



While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder Windows Schliessen
    yy.f + 0.01
    
    MP_ScrollSurface(Surface, Sin(yy) * 0.9, 1 ) ; Scroll the Surface Image 
   
    MP_DrawText (10,10,Str(MP_FPS())) ; Have i the normal FPS?
    MP_TurnEntity (Mesh,0.1,0.1,0.1)  ; Turn the Cube


    MP_RenderWorld() ; Erstelle die Welt

    MP_Flip () ; Stelle Sie dar

Wend

DataSection
   Pic: IncludeBinary "Regensburg_Uferpanorama_08_2006_.jpg"
   PicEnd:
 EndDataSection
Primitives:

Code: Alles auswählen

MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster mit 3D Funktion #Window = 0
SetWindowTitle(0, "Darstellung von Primitives") ; Setzt einen Fensternamen

camera=MP_CreateCamera() ; Kamera erstellen

Entity = MP_CreatePrimitives (6, 2) ; 6 Vertexe und LINELIST (einzelne Linien)

MP_EntitySetZ (Entity, 8)
    
MP_SetPrimitives(Entity, 0,  0, 2, 0,  $FFFFFFFF)
MP_SetPrimitives(Entity, 1,  0, -2, 0, $FF0000FF)
MP_SetPrimitives(Entity, 2,  -2, 0, 0, $FF00FF00)
MP_SetPrimitives(Entity, 3, 2, 0, 0,   $FF00FFFF)    
MP_SetPrimitives(Entity, 4, 0, 0, 2,   $FFFF0000) 
MP_SetPrimitives(Entity, 5, 0, 0, -2,  $FFFF00FF)    

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder Windows Schliessen

    MP_TurnEntity (Entity,0.1,0.1,0.1) ; dreh den Würfel
    MP_RenderWorld() ; Erstelle die Welt
    MP_Flip () ; Stelle Sie dar

Wend
Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 22 zum testen

Beitrag von mpz »

Nur zur Info,

das Forum ist wieder eröffnet. Die alten Beiträge konnten nicht mehr importiert werden. Wichtige Beiträge werden aber nachträglich neu reingeschrieben..


Schönes Wochenende
Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: MP3D Alpha 22 zum testen

Beitrag von DrShrek »

Arbeite an den 2DDrawing Befehlen der MP3D Engine, und möchte Euch hier immer etwas auf den laufenden halten.

Habe aktuell etwas am Speed optimiert. Wer möchte kann mal die beiden Demos auf seiner Machine laufen lassen.

Die Demos zeichnen verschiedenfarbige Boxen auf den Window.
Dabei wird die Anzahl der Boxen permanent erhöht bis eine minimale Framerate von 60-58 erreicht ist.

Hier noch meine Werte:
Optimiert: 2300 Boxen
Standard: 889 Boxen

Downloadlink:
http://em.q-soft.ch/files/get/pgPGsesUr ... andard.zip

Hier noch der Sourceabschnitt der für die 2DDrawing Befehle zuständig ist (nicht alleine lauffähig!)

Code: Alles auswählen

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow; 
  If MP_FPS() > 60: count +1 : EndIf
  MP_DrawText (1,1,"FPS = "+Str(MP_FPS()) + " Boxes: " + Str(count),0,$FFFF0000)

  MP_StartDrawing()
    For n = 1 To count
      MP_2DBox(MP_RandomFloat(-14,12) ,MP_RandomFloat(-10,8),2,2,Random($AAAAAA)+$11111,0 ,1)
    Next n
  MP_StopDrawing()
   
  MP_RenderAll() 
  MP_Flip () 
Wend
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: MP3D Alpha 22 zum testen

Beitrag von DrShrek »

Update:
Kreise gehen nun auch.
FPS: 58-60 habe ich 1896 gefüllte Kreise

Die Demo zeichnet verschiedenfarbig gefüllte Kreise auf den Window.
Dabei wird die Anzahl der Kreise permanent erhöht bis eine minimale Framerate von 58-60 erreicht ist.
http://em.q-soft.ch/files/get/GQvrg7W01 ... circle.exe

Hier auch noch die nEck Funktion (Demo mit lauter gefüllten 6-Ecken, nicht schlecht für einfache 6-Eck Maps)
http://em.q-soft.ch/files/get/m9FyIT2kW ... d-neck.exe
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 22 zum testen

Beitrag von mpz »

Hi,

hier ein kleines Beispiel wir man eine Aphatextur mit PB erzeugt:

http://em.q-soft.ch/files/get/oXsUwgTHoE/alphatest.exe

Gruß Michael

Code: Alles auswählen

MP_Graphics3DWindow(30,30, 800,600 ,"", #PB_Window_SystemMenu )
MP_Viewport(20,20,400,400)

camera=MP_CreateCamera()

light=MP_CreateLight(1)

Mesh=MP_CreateCube()

CreateImage(0, 255, 255,32)
  StartDrawing(ImageOutput(0))
    DrawingMode(#PB_2DDrawing_AlphaChannel)
    Box(0, 0, 800, 600, $00000000)
   
    ; The classic Circle-thing :)
    ;
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    Circle( 90,  90, 60, RGBA(255,   0,   0, 128))
    Circle(160,  90, 60, RGBA(  0, 255,   0, 128))
    Circle(125, 160, 60, RGBA(  0,   0, 255, 128))
    
 StopDrawing()

Texture = MP_ImageToTexture(0,0,1,1)

MP_TexturSetAlpha (Texture,2)


MP_EntitySetTexture (Mesh, Texture)
MP_PositionEntity (Mesh,0,0,3)

MP_AmbientSetLight(RGB(255,255,0))

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow

    MP_TurnEntity (Mesh,0.1,0.1,0.1)
    MP_RenderWorld()
    MP_Flip ()

Wend

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: MP3D Alpha 22 zum testen

Beitrag von gnasen »

Obwohl das ganze ja leider (noch) nicht auf der neusten PB Beta läuft, habe ich mir mal die Freiheit genommen, schonmal ein wenig die Engine zu testen. Gefällt mir alles sehr gut, schön niedrige Ressourcen Auslastung und die primitives sind genau das, was ich benötige und in der Ogre Implementierung nicht finden konnte.
Nur eine kleinigkeit ist mir aufgefallen, die für mich relativ wichtig wäre: Könntest du bei der Kamera den Befehl:
MP_CameraSetPerspective(Cam, Grad.f)
erweitern auf Grad_Horizontal, Grad_Vertical?
pb 4.51
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 22 zum testen

Beitrag von mpz »

Hi Gnasen,

sag niemals Nie...

Die MP3D Alpha 23 ist draussen. Hier liegt eine lib für 4.50 Beta 2 bei.

MP_CameraSetPerspective(Cam, Grad.f) benötigt keine separaten Winkel, da es sich diesen automatisch aus der Auflösung Breite durch Höhe erzeugt (und damit 4:3 und 16:9 kompatibel je nach Auflösung ist). Ich habe Dir aber einen optionalen Aspect Parameter spendiert und hoffe das reicht für Deine Zwecke:
MP_CameraSetPerspective(Cam, Grad.f [,Aspect.f]) ; Setze den Blickwinkel einer Kamera in den Winkel Grad.f und Aspect (Breite / Höhe)

Hier mal ein Demo wie Meshs unsichtbar werden
http://em.q-soft.ch/files/get/Il97vs-5OC/alphatest3.exe

und animierte Partikel, ist mehr eine Tech-Studie bin halt kein Grafiker :)
http://em.q-soft.ch/files/get/AXMPq-iH2 ... rtikel.exe

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: MP3D Alpha 23 zum testen

Beitrag von gnasen »

Läuft wunderbar unter PB 4.5b2, danke kann nun endlich loslegen.
Hier ein paar Funktionen, die ich nicht finden konnte, würde ich evtl noch der Lib hinzufügen.

Code: Alles auswählen

Structure s_coor3D
  
  StructureUnion
  x.f
  theta.f
  EndStructureUnion
  StructureUnion
  y.f
  phi.f
  EndStructureUnion
  StructureUnion
  z.f
  r.f
  EndStructureUnion
  
EndStructure

Procedure.f rad_to_deg(rad.f)
  
  Protected deg.f = rad * 180/#PI
  ProcedureReturn deg
  
EndProcedure
Procedure.f deg_to_rad(deg.f)
  
  Protected rad.f = deg * #PI/180
  ProcedureReturn rad
  
EndProcedure
Procedure spheric_to_cartesian(*coor.s_coor3D)
  
  Protected temp.s_coor3D
  
  temp\x = *coor\r * Sin(*coor\theta) * Cos(*coor\phi)
  temp\y = *coor\r * Sin(*coor\theta) * Sin(*coor\phi)
  temp\z = *coor\r * Cos(*coor\theta)
  
  *coor\x = temp\x
  *coor\y = temp\y
  *coor\z = temp\z
  
EndProcedure
Procedure cartesian_to_spheric(*coor.s_coor3D)
  
  Protected temp.s_coor3D
  
  temp\theta = #PI/2 - ATan( *coor\z / Sqr(*coor\x * *coor\x + *coor\y * *coor\y))
  temp\phi   = ATan2(*coor\x,*coor\y)
  temp\r     = Sqr(*coor\x * *coor\x + *coor\y * *coor\y + *coor\z * *coor\z)
  
  *coor\theta = temp\theta
  *coor\phi   = temp\phi
  *coor\r     = temp\r
  
EndProcedure


Define deg.f
Define rad.f

deg = 90
rad = deg_to_rad(deg)
Debug "deg: " + StrF(deg) + " rad: " + StrF(rad)

rad = -#PI/4
deg = rad_to_deg(rad)
Debug "deg: " + StrF(deg) + " rad: " + StrF(rad)


Define coor.s_coor3D
coor\x = 1 : coor\y = 1 : coor\z = 0

cartesian_to_spheric(coor)
Debug "spheric:"
Debug StrF(coor\theta) + " " + StrF(coor\phi) + " " + StrF(coor\r)

spheric_to_cartesian(coor)
Debug "cartesian:"
Debug StrF(coor\x) + " " + StrF(coor\y) + " " + StrF(coor\z)
Da du scheinbar gerne in Grad rechnest, sind vorallem die Gradumrechnungen sehr wichtig, da der Standard eher in Richtung Bogenmaß tendiert.

Edit: Kann es sein, dass Pitch und Yaw bei der Kamera vertauscht sind? Pitch (Nicken) wäre für mich eine Schwenkung auf und ab, Yaw (Gieren) der Schwenk, also seitwärts.
pb 4.51
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 23 zum testen

Beitrag von mpz »

Hi Gnasen,

Danke für Deine Umrechnungen. Werde ich gerne einbauen. Es gibt vermutlich so viel "Grad" weil ich Grad verstehe und meine Welt sich um 360 Grad dreht :).

Das mit Pitch und Yaw schaue ich mit noch einmal genauer an. Ich freue mich immer wieder wenn die kleine Käfer (auf neudeutsch Bugs) aus meiner Engine verschwinden...

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 24

Beitrag von mpz »

Hallo Leute,

hier wieder der Rufer in der Wüste...

Neue Version 24 mit neuen Funktionen erschienen

Neue Demo: MP_Soundeffekt.pb, Demofile for Soundeffekte
http://em.q-soft.ch/files/get/2joY0onMg ... effect.exe

Neu Demo: MP_SpriteCol_PixelPixel, Echte Pixel Pixel überprüfung
http://em.q-soft.ch/files/get/3PevuWmBHI/pixelpixel.exe

Neu Demo: MP_Shadereffekte.pb, Programm zur Erstellung von PixelShadern
http://em.q-soft.ch/files/get/O4YMiXohg ... shader.zip

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Antworten