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 30

Beitrag von mpz »

Hi,

und ich Danke Dir zum erstellen des Wrappers. Ich werde sicher auch noch mehr 2D Physik Funktionen einbauen. Ist nur der Anfang...


Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: MP3D Alpha 30

Beitrag von Drago »

Hallo Michael,

beim Testen deiner Demos kommt bei mir die Fehlermeldung üngüldiger Speicherzugriff an Adresse 0.
MP_CreateMyShader (MyEffect), dieser Befehl löst ihn aus...

Die Kollisionen sind nicht richtig, manchmal bekomme ich überhaupt keine Kosllision angezeigt und
dann erst wenn die zwei Objekte sich einen halben Meter (Späßle..) überlappen.
Wenn ich das Testobjekt noch rein, oder raus zoome, stimmt überhaupt nichts mehr.


LG Drago
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 30

Beitrag von mpz »

Hi Drago,

das hört sich nach einer sehr sehr alte Grafikkarte an, die keine Shaderunterstüzung hat und nur Texturgrössen im Verhältnis von 2(4,8,16 etc) kennt. Bitte starte mal das MP_Grafikkartencheck.pb Programm aus den Extras Ordner und sagen genau was das Program anzeigt...

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: MP3D Alpha 30

Beitrag von Drago »

Ich glaube nicht das es daran liegt, aber hier die Daten..

Maximale Grösse der Textur : 4096
Muß Quadratisch sein : nein
Muß vielfaches von 2 sein : nein
Vertex Shaderversion : 300
Pixel Shaderversion : 300

Meine Karte:
Nvidia Geforce 6610 XL mit 128 Mb Ram
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 30

Beitrag von mpz »

Hi,

das sieht wirklich Okay aus. Ich habe auch eine Nvidea Grafikkarte und die zeigt das Gleiche an. Funktioniert es bei allen Shadern und bei allen Kollissionsdemos nicht? oder gibt es Demos die gut funktionieren?

Und ganz wichtig, funktioniert den die Kollissionsprüfung bei dieser Exe Datei?
http://forums.purebasic.com/german/view ... 12&t=22588


Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Re: MP3D Alpha 30

Beitrag von dige »

@MPZ: Die mp3d lib ist ja beachtlich gewachsen - auf einen ersten kurzen Blick gar nicht
zu überschauen was das alles kann :-)

Wie geht es denn damit weiter und welchen Stand hast Du damit erreicht?
Kann man das für ein größeres kommerzielles Projekt einsetzen und wird
das noch weiter entwickelt?
Worauf basiert diese Lib eigentlich? Kann die Lib inkompatibel werden
mit zukünftigen PB Versionen?

Ich habe die Idee eine Art Pinnwand zu programmieren, an der man seine Bilder
aufhängen, ausrichten und gestalten kann, quasi Funktionen eines Fotobuch-Editors.

Noch bin ich unentschlossen das ggf. mit nem Canvas Gadegt oder Sprites, oder
sogar mit Ogre zu machen, da es auch Beleuchtungseffekte geben soll...
Wäre Deine Lib dafür ebenfalls geeignet - sogar besser geeignet?

Ciao Dige
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: MP3D Alpha 30

Beitrag von DrShrek »

dige hat geschrieben:Wäre Deine Lib dafür ebenfalls geeignet - sogar besser geeignet?
Ciao Dige
Die Antwort lautet: Dreimal Ja!
Ja ist geeignet.
Und Ja ist besser geeignet, weil: Wenn Du einen Wunsch hast Du garantiert! davon ausgehen kannst, dass sich Michael darum kümmert, dass es Bestandteil der MP3D Lib wird (ausser es passt gar nicht).
Und Ja: Michael ist aktiv dran. Sicher wird demnächst eine neue Version rauskommen.
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 30

Beitrag von mpz »

Hi Dige,

ich bin immer noch dabei das Eine oder Andere dazu zu bauen. Testen tue ich es mit Nvidea und Ati Grafikkarten (habe aber keine uralten Karten mehr). Neue Funktionen kommen dazu, werden derzeit meist auf Anwenderwunsch mit eingebaut. Prinzipiell haben ich die Funktionen schon drin die ich reinbringen wollte. Ich bin gerade dabei ein Shadertutorial vorzubereiten so das man selber damit basteln kann und diese Shader auch gleich in seine MP3D Anwendungen einbauen kann.

Die Lib basiert auf DX9, Newton Physic, Chipmunk und ist komplett in PB geschrieben. Sollte ich das Projekt aufgeben werde ich die Sourcen frei geben. Damit soll die lib auch zukünftig mit PB arbeiten können...

Was Effekte betrifft kenne ich nichts vergleichbares (bei über 100 Shader)...

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Re: MP3D Alpha 30

Beitrag von dige »

Hallo mpz und mp3d fans,

habe jetzt die Demos alle durchprobiert und bin sehr beeindruckt!
Was mir noch nicht richtig klar ist, inwiefern die mp3 lib mit den 2d
Befehlen von PB gemixt werden kann.

In der Hilfe steht es wird ein PB Window mit der ID 0 aufgemacht...
Gilt das auch für MP_Graphics3D() und MP_Graphics3DWindow()?
Kann ich darin auch einen WindowedScreen() laufen lassen?
Was ist denn die ID 0 schon vergeben ist, wäre es nicht besser
#PB_ANY zu verwenden und die PB Window ID als Return von
MP_Graphics..() zu liefern?

Als ersten Test wollte ich einen Snapshot vom Kinect Tiefensensor
in ein Mesh konvertieren und anzeigen lassen.

-> Download Kinect Senor Snap (600KB)

Leider komme ich mit MP_CreateMesh() nicht weiter. Der SnapShot
besteht aus 640x480 Tiefenwerten a 2 Byte (Word).
Diesen kann man wie folgt auslesen:

Code: Alles auswählen

If ReadFile(0, "C:\Temp\KinectDepth2.bin" )
	*mem = AllocateMemory(Lof(0))
	If *mem
		ReadData( 0, *mem, Lof(0))
		*memEnd = *mem + Lof(0)
		
		min = 9999
		max = 0
		
		For *depth.Word = *mem To *memEnd Step 2
			If min > *depth\w And *depth\w : min = *depth\w
			ElseIf max < *depth\w : max = *depth\w : EndIf
		Next
		
		FreeMemory(*mem)
	EndIf
	CloseFile (0)
EndIf

Debug "Minimale / Maximale Entfernung"
Debug "Min: " + StrF((min - $890)/10, 1) + " cm"
Debug "Max: " + StrF((max - $890)/10, 1) + " cm"
Als Bild über einen Gradient visualisiert sieht es so aus:
Bild

Wie kann man die Tiefenwerte in ein Mesh übertragen?
"Papa, ich laufe schneller - dann ist es nicht so weit."
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 30

Beitrag von mpz »

Hi Dige,

Du kannst weiter Deine Image Befehl verwenden und diese Images durch MP_ImageToTexture(Image ) zu einer Textur umformen. Diese Textur wird dann in DX9 bzw Mp3d benutzt.

Für MP_Graphics3D() und MP_Graphics3DWindow() habe ich einfach mal ID 0 festgelegt. Bisher habe ich auch kein Beispiel gefunden wo das nicht sinnvoll war. Es gibt aber auch den MP_ScreenToHandle(hwnd) mit dem Du jeden WindowsScreen in DX9 umwandeln kannst. Also mache damit was Du willst ;)

CreateMesh und Grafik in Mesh ist etwas komplizierter. Ein Mesh besteht aus Dreieckspunkten und Dreiecksflächen. Um ein 2D Bild umzuformen benötigt man eine Mesh-Fläche mit vielen Dreicken. Dieser übergibt man die Grafik um die Höhenstufen anzupassen und die Grafik die drauf dargestellt werden soll. Du müsstes also erst einmal aus Deiner Grafik ein Graustufen Bild mit als HöhenMap erzeugen und dann beide Bilder laden. Ich habe Dir ein Programm beigelegt was das gut verdeutlicht. Zu Not kannst Du auch erst einmal dein Farbild als Highmap verwenden. Das Ergebnis läßt sich durchaus sehen...

Code: Alles auswählen


;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine
;// File Title: Picture_to_3D.pb
;// Created On: 19.2.2012
;// Updated On: 
;// Author: Michael Paulwitz
;// OS:Windows
;// 
;// Highmap Demofile
;// 
;////////////////////////////////////////////////////////////////

;-
;- ProgrammStart

MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster #Window = 0
SetWindowTitle(0, "Picture to 3D - Choose Space to load the files") ; So soll es heissen

camera=MP_CreateCamera() ; Kamera erstellen

;x.f=0 : y.f=0 : z.f = -40 
;MP_PositionCamera(camera,x.f,y.f,z.f) ; Kameraposition 
light=MP_CreateLight(1) ; Es werde Licht

x.f=0 : y.f=-130 : z.f = 6 ; Start of Mesh

While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder schliessen

 If MP_KeyDown(#PB_Key_Left)=1  : x-1   : EndIf ;links Debug #PB_Key_Left 
 If MP_KeyDown(#PB_Key_Right)=1 : x+1   : EndIf ;rechts #PB_Key_Right 
 If MP_KeyDown(#PB_Key_Down)=1  : y-1   : EndIf ;Runter #PB_Key_Down 
 If MP_KeyDown(#PB_Key_Up)=1    : y+1   : EndIf ;rauf #PB_Key_Up 
 If MP_KeyDown(#PB_Key_Z)=1     : z+0.1 : EndIf ;y Vertauscht bei y-z bei deutscher tastatur 
 If MP_KeyDown(#PB_Key_Y)=1     : z+0.1 : EndIf ;y Vertauscht bei y-z bei deutscher tastatur 
 If MP_KeyDown(#PB_Key_A)=1     : z-0.1 : EndIf ;a #PB_Key_A 
 
 If terrain ; Objekt drehen
    MP_DrawText (2,2,"Triangles: "+Str(MP_CountTriangles(terrain))+"  Vertices: "+Str(MP_CountVertices(terrain)),MP_ARGB(255,255,255,255)) 
    MP_PositionEntity (terrain,0,0,z) 
    MP_RotateEntity (terrain,x,y,0)
 EndIf
 
 If MP_KeyDown(#PB_Key_Space)=1
   
    Pattern$ = "Image File (bmp,jpg,tga,png,dds,ppm,dib,hdr,pfm|*.bmp;*.jpg;*.tga;*.png;*.dds;*.ppm;*.dib;*.hdr;*.pfm" 
    File$ = OpenFileRequester("Please choose Grayscale Highmap", "", Pattern$, 0)
    If terrain:MP_FreeEntity(terrain):EndIf 
    terrain=MP_LoadTerrain ( File$ , 128, 128 , 0 , 6 )
    
    File$ = OpenFileRequester("Please choose Colormap", "", Pattern$, 0)
    If Texture:MP_FreeTexture(Texture):EndIf
    Texture = MP_LoadTexture(File$)
    MP_EntitySetTexture (terrain, Texture )    
    max.f = MP_MeshGetHeight(terrain) ; find Maximum of Mesh
    If MP_MeshGetWidth(terrain) > max
      max = MP_MeshGetWidth(terrain)
    EndIf
    If MP_MeshGetDepth(terrain) > max
      max = MP_MeshGetDepth(terrain) 
    EndIf
    scale.f = 4 / max ; 
    MP_ScaleEntity (terrain,scale,scale,scale)
    x.f=0 : y.f=-130 : z.f = 6 
 EndIf

    MP_RenderWorld () ; Hier gehts los
    MP_Flip () ; 

Wend


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