Echtzeitmanipulation von OGRE Meshes

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

DarkDragon hat geschrieben:Mir hats eher den Anschein, als hätten sich aberhunderte von Nachahmer gefunden, die einfach über viele PureBasic-Versionen hinweg alles nachplappern was je einer schlechtes über PureBasic ausgesagt hat. Aber die sind sich alle zu schade um zu prüfen ob sich was geändert hat.
Wenn das jetzt keine Anspielung war weiß ich auch nicht ...
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von mpz »

Hi Leute,

in DX9/10 Vertexe zu ändern ist nicht schwer. Da ich Blitz 3D sehr mag (und Ogre nicht), bin ich ja dabei eine eigene DX9 Engine zu schreiben mit ähnlichen Befehlen wie in Blitz3D. Ein kleines Demo zur Veränderung der Vertexe und Farben hatte ich schon mal fertig gemacht, ist 20 KByte gross. Jetzt müßte man nur noch rausbekommen wie man an die Meshs in Ogre "rankommt". 3DS Import funktioniert jetzt auch schon in Ogre (sieh Tipps und Tricks)......

Gruß Michael

http://rapidshare.de/files/46166116/Mes ... n.exe.html

Code: Alles auswählen

;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine
;// File Title: Bewegende Objekte2.pb
;// Created On: 26.11.2008
;// Updated On: 
;// Author: Michael Paulwitz
;// OS:Windows
;// 
;// Teekanne wird verändert
;// 
;////////////////////////////////////////////////////////////////

;-
;- ProgrammStart


MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster #Window = 0
SetWindowTitle(0, "Teekanne wird verändert") ; So soll es heissen

camera=MP_CreateCamera() ; Kamera erstellen

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

cube=MP_Createteapot() ; Nen Würfel

For n = 0 To MP_CountVertices(cube)-1

          farbea.l = Random(255)
          farbeb.l = Random(255)
          farbec.l = Random(255)

          MP_SetVertexColor (cube,n,RGB(farbea,farbeb,farbec))
Next

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder schliessen
    
    For n = 0 To MP_CountVertices(cube)-1
        x.f = MP_VertexX (cube,n)
        y.f = MP_VertexY (cube,n)
        z.f = MP_VertexZ (cube,n)

        zufall.f = (Random (1000)-500)/100000 
        MP_SetVertexX (cube,n, x + zufall)
        MP_SetVertexY (cube,n, y + zufall)
        MP_SetVertexZ (cube,n, z + zufall)

    Next 
  
    MP_DrawText (10,10,MP_ARGB(255,255,255,255),"Läuft mit "+Str(MP_FPS ())+" FPS") ; Textanzeige an Position x,y, Farbe RGB und Text$
    MP_TurnEntity (cube,0.05,0.5,1) ; Würfel Drehen

    MP_RenderWorld () ; Hier gehts los
    MP_Flip () ; 

Wend

End

Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Appropo OGRE und CEGUI ... vielleicht kein Paradebeispiel, weil das Spiel
doch öfters abstürzt, aber mir ist grad aufgefallen das "Building &
Co." (dt. Titel: Bau AG) tatsächlich darauf aufbaut. Die Log-Dateien, die
auch bei PB-Programmen auftauchen, sind sehr verräterisch :lol:

Und das sollte in PB auch realisierbar sein. :shock:
(sofern einem da keine Bugs dazwischen kommen)

Auf demonews gibs auch nen kleines Video der Demo.
http://www.demonews.de/demos.php?demo=1496
http://www.bau-a-g.de/

PS: die fmod.dll (3.7.4) findet dort auch seine verwendung

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Fluid Byte hat geschrieben:
DarkDragon hat geschrieben:Mir hats eher den Anschein, als hätten sich aberhunderte von Nachahmer gefunden, die einfach über viele PureBasic-Versionen hinweg alles nachplappern was je einer schlechtes über PureBasic ausgesagt hat. Aber die sind sich alle zu schade um zu prüfen ob sich was geändert hat.
Wenn das jetzt keine Anspielung war weiß ich auch nicht ...
Auf was soll es denn bitteschön eine Anspielung sein? Ihr wollt alles auf Anspielungen schieben damit ich schnell wieder abhau. Das ist doch eure Masche, immer und jederzeit. Langsam hab ich das Gefühl ihr wollt mich loswerden. Aaaaarggghhhh. :-(

@mpz: Toll, mach schön weiter Werbung für dein Projekt, aber es stört langsam wie du das überall in jedem Topic machst, egal obs damit zu tun hat oder nicht. Ich seh jeden Tag ein neues Querfeldeinposting von dir.
Wenn du VBOs verwendest, dann kannst du nicht so einfach darauf zugreifen. Da muss man erst den ganzen Puffer von der Grafikkarte holen, verändern und wieder in die Grafikkarte schieben und das ist bei 30k Dreiecken einfach nicht möglich es in Echtzeit zu tun.
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
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

Beitrag von mpz »

Hi Dark Darkdragon,

Das meine Postings dich nerven, Okay, ich halte mich in Zukunft zurück!

Das es wie in diesem Fall Querfeldeinposting ist, finde ich aber nicht.

Was habe ich gesagt: Unter Direct X ist es einfach Mesh zu manipulieren. Ich glaube nicht das "man den Puffer der Grafikkarte" auslesen muss. Man benötigt nur einen Zeiger auf den Mesh, das bietet Ogre sicherlich an. Die Manipulation von 30K Files ist meiner Meinung nach in Realtime möglich. Tests haben bei mir erst bei 400K Files zu deutlichen Zeitverlusten geführt...

a) Direktzugriff auf Mesh, bei interesse Poste ich (ausnahmsweise, ich halte mich ja zurück) auch ein kleines Beispiel in Purebasic
b) Über Shader, Beispielcodes habe ich ja schon ein paar mal gepostet auch ohne Resonanz zu erhalten

Ich habe bisher auch einige Ergebnisse meiner Engine als freie Programmcodes oder fertige Tools bereitgestellt, was sicherlich einigen Ogre Programmieren hilft, wenn es nervt sorry, ich werde mich bessern...

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Hallo,
mpz hat geschrieben:Hi Dark Darkdragon,

Das meine Postings dich nerven, Okay, ich halte mich in Zukunft zurück!

Das es wie in diesem Fall Querfeldeinposting ist, finde ich aber nicht.
Es geht hier um OGRE
mpz hat geschrieben:Was habe ich gesagt: Unter Direct X ist es einfach Mesh zu manipulieren. Ich glaube nicht das "man den Puffer der Grafikkarte" auslesen muss. Man benötigt nur einen Zeiger auf den Mesh, das bietet Ogre sicherlich an. Die Manipulation von 30K Files ist meiner Meinung nach in Realtime möglich. Tests haben bei mir erst bei 400K Files zu deutlichen Zeitverlusten geführt...
OGRE nutzt nunmal nicht nur DirectX, wenn du mal genau hinschaust. Für DirectX mag es vielleicht Methoden zum partiellen Bearbeiten eines Puffers geben, aber in OpenGL ist dies nicht der Fall. Hier wird immer der komplette Vertexpuffer neu übertragen. Und bei 30k Dreiecken wird das schon recht schnell sehr langsam. Es sei denn du setzt den Standard auf super Grafikkarten, was aber bei einem Minispiel nicht toll ist (Viele Leute spielens auf Businessclass-Systemen) und bei einem Maxispiel sollte man das eh Hardwareseitig erledigen oder ganz darauf verzichten.
mpz hat geschrieben:a) Direktzugriff auf Mesh, bei interesse Poste ich (ausnahmsweise, ich halte mich ja zurück) auch ein kleines Beispiel in Purebasic
b) Über Shader, Beispielcodes habe ich ja schon ein paar mal gepostet auch ohne Resonanz zu erhalten
Über Shader wird es heutzutage gemacht mit Vertexblending, aber davon redet hier ja keiner.

Mir geht nur die ständige Selbst-Werbung auf den Senkel bei dir, mehr nicht.
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
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

@mpz:
Ich seh' das zwar nicht ganz so eng wie DD aber im Kern stimmt es. Es geht hier um OGRE, nicht DirectX. Trotzdem Danke für den Hinweis auf den Code. <)
PMV hat geschrieben:Appropo OGRE und CEGUI ... vielleicht kein Paradebeispiel, weil das Spiel doch öfters abstürzt, aber mir ist grad aufgefallen das "Building & Co." (dt. Titel: Bau AG) tatsächlich darauf aufbaut.
Das bedeutet aber leider gar nichts. Die benutzen OGRE, ja, nur nicht dieselbe Implementierung wie PB.
DarkDragon hat geschrieben:Auf was soll es denn bitteschön eine Anspielung sein? Ihr wollt alles auf Anspielungen schieben damit ich schnell wieder abhau. Das ist doch eure Masche, immer und jederzeit. Langsam hab ich das Gefühl ihr wollt mich loswerden. Aaaaarggghhhh
Och, nu' weine mal nicht. Keiner will doch loswerden Didi. :wink:

Wenn du mich damit nicht gemeint hast nehme ich alles zurück.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Kiffi
Beiträge: 10715
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

DarkDragon hat geschrieben:Langsam hab ich das Gefühl ihr wollt mich loswerden. Aaaaarggghhhh. :-(
Didi, bleib hier!

Bild
a²+b²=mc²
Antworten