MP3D Alpha 32

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

Hallo, kann man denn den Nullpunkt verschieben , für eine neue Reaktion?

Die Parent/Kind ist glaube ich , ein wichtiger Bestandteil um sich ein wenig von den nicht leicht erstellbaren Anim-Figuren zu trennen. Weiterhin hin ist eine Animation die vorgegeben ist nur Sinnvoll für Gehbewegungen .
Um eine Freibeweglichkeit kommt man nicht herum, wenn es Steuerbar sein sollen die in jede Position etwas erreichen sollen.
Die anderen 3d-Enginen habe das aufgenommen, wie auch "n3xtd", "Blitz3d", "Ogre" in Purebasic ein bisschen spät, "irrlicht".

Vielleicht kommt es noch rein.


Gruss
Zuletzt geändert von super_castle am 27.12.2009 15:23, insgesamt 2-mal geändert.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

eine Mesh direkt laden kann

Also kann man jetzt eine "x-Datei" direkt laden.
Klasse, hatte ich noch garnicht getestet.

Gruss
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

Wie kann man vom 3d-Screen ein Foto/Image herstellen evtl für ein weiteres Sprite?

Gruss
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von mpz »

Hi super_castle,

Parent/Kind ist ein schönes Konzept was durchaus seinen Sinn macht. Da ich aber in all den Jahren diese Funktion (z.B. Blitz3D) nie benutzt habe, habe ich bisher noch keine Resourcen (Freizeit) darein gesteckt. Ich gehe immer direkt an die Vertexe und kann daher jeden Bereich individuell verändern.

Laden von Meshs ist wichtig, aber bei mir kann man diese Meshs sogar verändern (z.B. MP_AddMesh, MP_PositionMesh und MP_VertexSetX/Y/Z ) und danach wieder speichern.

In den Demos findes Du eine Demo MP_ScreenshotToTexture.pb welches aus einem 3D Screen eine Textur erzeugt
http://www.W-Bilder.de/preview.php?file ... 802a9c.bmp

Normalerweise benutzt man dazu ein Rendertarget. Bei meinem Demo habe ich getrickts. Das Erstellen von Rendertargets um z.B. mehrere 3D Screens auf einem Fenster zu erstellen ist aber Bestandteil des nächsten Updates.

Gruß Michael
Working on - MP3D Engine -
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

Kannst du mir mit deiner Meshveränderung mal kurz erklären, wenn ich 2 Würfel nebeneinander habe mit welchen Trick ich den oberen drehen kann um die Achsen und wenn der untere bewegt wird, das der obere in seine Stellung mitkommt.

Danke.

Gruss
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

Beim "MP_Box Box kollision.pb" tritt ein grober Überschneidungsfehler auf,
das heisst, der Würfel schneidet in die rechteckige Stange bis zu 1/8.

Wo kann man hier ein Bildschirmfoto vom Fehler reinstellen?

Gruss
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

In den Demos findes Du eine Demo MP_ScreenshotToTexture.pb

Besser wäre ein Foto vom Backbuffer.

Gruss
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von mpz »

Ja wenn 3D so leicht wäre könnte jeder mal kurz seine Engine selber schreiben...

Meshveränderung:
Um dein Wunsch sinnvoll unzusetzen muss man wirklich ein Parent - kid zusammenhang erstellen. Man müsste sonst die Positionen der 8 Ecken des zweiten Meshs im Raum neu berechnen um die Vertexpunkte verändern. Das ist wirklich zu kompliziert. Ich kann mir aber ansehen ob ein Parent - kid für Meshs in Zukunft machbar ist...

MP_Box Box kollision.pb
Es gibt verschieden Arten der Kollisionserkennungsalgorythmen. Diese muss man aber bei DX9 selber "erfinden" und schreiben. Ich habe darüber einiges gelesen und haben mich der einfachhalber für eine Punkt in Box Überprüfung entschieden. Es werden damit 8 Punkte des einen Würfels mit dem anderen Würfel überprüft und umgekehrt. Bei dieser Art der Überprüfung kommt es zu dem teilweisen Überschneidungen an "ungünstigen" Positionen. Sollte jemand einen besseren Algorythmus haben baue ich den gerne ein...

MP_ScreenshotToTexture
Bei DX9 gibt es keinen "Backbuffer". Man muss die gleiche Renderschleife die für den 3D Screen gedacht ist auf eine anderes RenderTarget umstellen, z.B. eine Textur die speziell vorbereitet wurde.

Gruß Michael
Working on - MP3D Engine -
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von super_castle »

Jup, danke für deine Info.

Gruss
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Re: MP3D Alpha 18 Lib zu Weihnachten

Beitrag von mpz »

Hi super_castle,

ich glaube die Parent - kid Struktur ist einfacher als gedacht. Ich habe hier mal eine kleine Testdatei gemacht wo es einen Planeten, Mond und Satelliten gibt. Der Satellit ist abhängig vom Mond und der Mond abhängig von Planet. Im nächten Update wird daher der Befehl
MP_MeshSetParent (Entity, Parent) ; Setzt für eine Entity ein Parent
integriert:

Gruß Michael

http://em.q-soft.ch/files/get/UOvOh0Omo ... etmond.exe

Demo Parent Kid

Code: Alles auswählen

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

camera=MP_CreateCamera() ; Kamera erstellen
light=MP_CreateLight(1) ; Es werde Licht

Mesh  = MP_CreateSphere(16) ; Und jetzt eine Kugel
Mesh2 = MP_CreateSphere(16)
Mesh3 = MP_CreateSphere(16)

If CreateImage(0, 255, 255) ; Etwas Farbe selber erzeugen
   MP_CreateImageColored(0,0,RGB($00,$F0,$00),RGB($00,$F0,$00),RGB($00,$00,$FF),RGB($00,$00,$ff)) ; 
   MP_EntitySetTexture (mesh, MP_ImageToTexture(0))
   MP_CreateImageColored(0,0,RGB($F0,$00,$00),RGB($F0,$00,$00),RGB($00,$FF,$FF),RGB($00,$FF,$FF)) ; 
   MP_EntitySetTexture (mesh2, MP_ImageToTexture(0))
   MP_CreateImageColored(0,0,RGB($00,$00,$F0),RGB($00,$00,$F0),RGB($FF,$00,$00),RGB($FF,$00,$00)) ; 
   MP_EntitySetTexture (mesh3, MP_ImageToTexture(0))
   FreeImage(0)
EndIf

MP_PositionEntity (Mesh,0,0,4) ; Position des Planeten

MP_PositionEntity (Mesh2,0,0,2) ; Position des Mondes
MP_ScaleEntity (Mesh2, 0.2, 0.2, 0.2 ) 

MP_PositionEntity (Mesh3,0,0,0.5) ; Position des Sateliten
MP_ScaleEntity (Mesh3, 0.1, 0.1, 0.1 ) 

MP_MeshSetParent(Mesh2,Mesh) ; Mond abhängig vom Planet
MP_MeshSetParent(Mesh3,Mesh2) ; Satellit abhängig vom Mond


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

    
    MP_TurnEntity (Mesh,0.5,0,0) ; dreh den Planeten
    MP_TurnEntity (Mesh2,2,0,0)  ; dreh den Mond
    
    MP_RenderWorld() ; Erstelle die Welt
    MP_Flip () ; Stelle Sie dar

Wend
Working on - MP3D Engine -
Antworten