OGRE - warum funktioniert das nicht?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Xaby hat geschrieben:Interessante Seite.

Na ja, ich hatte deshalb lieber gleich meine eigene "Engine"
gebastelt. Da weiß ich wenigstens, was sie macht und wieso :D

Finde auch doof, dass man Sprites() initialisieren muss,
diese aber wohl nicht richtig verwenden kann.

Zu mindest hatte ich manmal den Eindruck, dass da Dinge
nicht angezeigt werden oder es unerklärliche Fehler gab.

:roll:
Du musst aber zugeben, dass deine Engine jetzt nicht wirklich mit der
hier vergleichbar ist und so schnell ist eine Engine auf halbwegs aktueller
Basis nicht geschrieben.

InitSprite() braucht man wohl für den Screen und die Eingabefunktionen.

Ich denke es ist einfach zu viel mit Workarpounds gearbeitet worden.
I´a dllfreak2001
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Naja, die Sprites (DX9 Subsystem) funktionieren ja mit der 3D-Engine ...
aber optimal gelöst ist das alles sicher nicht. Leider hat das Update die
Anbindung "nur" von unbenutzbar auf "eingeschränkt benutzbar" gehoben.
Wir können nur hoffen, das Fred den weiteren Durst dannach erkennt und
tatsächlich für das nächste Update noch mal alles überarbeitet.

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 »

Xaby hat geschrieben:Na ja, ich hatte deshalb lieber gleich meine eigene "Engine"
gebastelt. Da weiß ich wenigstens, was sie macht und wieso :D
Das ist Müll. Nach 8 Jahren gibt man verzweifelt auf bzw. hat keine Zeit mehr. Viele Engines sind echt genial und an denen gibts nichts auszusetzen. OGRE eigentlich auch, nur die PureBasic Implementation hat noch einige Sachen die verbessert werden könnten.

XNA ist auch super. Allerdings ist das eher ein Renderer, der OpenGL und DirectX mischt mit Model-, Textur- und Audioverwaltung. Und auf fast jedem anderen PC crashen die Anwendungen einfach so komplett mit Framework.

Und man kommt garnichtmehr nach mit dem Programmieren, wenn man alles selbst macht. Ich glaube ich hinke mittlerweile nurnoch 5 Jahre hinterher.
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
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

PMV hat geschrieben:Naja, die Sprites (DX9 Subsystem) funktionieren ja mit der 3D-Engine ...
aber optimal gelöst ist das alles sicher nicht. Leider hat das Update die
Anbindung "nur" von unbenutzbar auf "eingeschränkt benutzbar" gehoben.
Wir können nur hoffen, das Fred den weiteren Durst dannach erkennt und
tatsächlich für das nächste Update noch mal alles überarbeitet.

MFG PMV
Mittlerweile auch nicht mehr, die Spritefunktionalität ist in der PB4.3-Version weggefallen selbst mit DX9-Subsystem (getestet auf Vista64 in der 64 und 32-Bit Version).

Fred sollte erstmal die Physik ruhen lassen und die Engine in den grundzügen brauchbar machen.
Mit den Loadworld-Funktionen ist eigentlich keinem geholfen, da man da nirgends eine Kollision oder Physikfunktionalität hat.

Was wirklich wichtig ist, das wären Licht und Texturen-Befehle sowie die Unterstützung der aktuellen Version der Ogre-Models.
Toll wäre es wenn man Materialien on the Fly mit Parametern á la Parse3DScripts bearbeiten könnte.
Vielleicht ein LOD-System. Gib dem Entity den Wert und auf dieser Entfernung von der Kamera wird es ausgeblendet.
Eventuell eine Möglichkeit die 3D-Daten von Meshes on the fly zu bearbeiten.

@DarkDragon

Weißt du wie die Normalen (aus dem MeshManual-Beispiel) berechnet bzw.
weißt du wo es eine Doku dazu gibt?
Weil ich versteh den Aufbau nicht ganz, warum hat denn jeder jeder Eckpunkt des Kubus eine Normale... Ich dachte man brauch für 3D nur die Flächennormale für jedes Dreiecks-polygon bestimmen.

Code: Alles auswählen

#SQRT13 = 0.57735026

DataSection

  CubeData2:
    
    Data.f -100.0,100.0,-100.0        ; 0 position
    Data.f -#SQRT13,#SQRT13,-#SQRT13  ; 0 normal
    Data.l 255                        ; 0 colour
    Data.f 100.0,100.0,-100.0         ; 1 position
    Data.f #SQRT13,#SQRT13,-#SQRT13   ; 1 normal
    Data.l 255                        ; 1 colour
    Data.f 100.0,-100.0,-100.0        ; 2 position
    Data.f #SQRT13,-#SQRT13,-#SQRT13  ; 2 normal
    Data.l 255                        ; 2 colour
    Data.f -100.0,-100.0,-100.0       ; 3 position
    Data.f -#SQRT13,-#SQRT13,-#SQRT13 ; 3 normal
    Data.l 255                        ; 3 colour
    Data.f -100.0,100.0,100.0         ; 4 position
    Data.f -#SQRT13,#SQRT13,#SQRT13   ; 4 normal
    Data.l 255                        ; 4 colour
    Data.f 100.0,100.0,100.0          ; 5 position
    Data.f #SQRT13,#SQRT13,#SQRT13    ; 5 normal
    Data.l 255                        ; 5 colour
    Data.f 100.0,-100.0,100.0         ; 6 position
    Data.f #SQRT13,-#SQRT13,#SQRT13   ; 6 normal
    Data.l 255                        ; 6 colour
    Data.f -100.0,-100.0,100.0        ; 7 position
    Data.f -#SQRT13,-#SQRT13,#SQRT13  ; 7 normal
    Data.l 255                        ; 7 colour

  CubeDataIndex:
    Data.w 0,2,3
    Data.w 0,1,2
    Data.w 1,6,2
    Data.w 1,5,6
    Data.w 4,6,5
    Data.w 4,7,6
    Data.w 0,7,4
    Data.w 0,3,7
    Data.w 0,5,1
    Data.w 0,4,5
    Data.w 2,7,3
    Data.w 2,6,7
      
EndDataSection
I´a dllfreak2001
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

dllfreak2001 hat geschrieben:Ich dachte man brauch für 3D nur die Flächennormale für jedes Dreiecks-polygon bestimmen.
So ist es auch, jedenfalls wenn du alles Flach haben willst.

Für Smoothshading musst du jedoch (so ist es am einfachsten) den durchschnitt aller Flächennormalen die daran grenzen berechnen und dann hast du pro Vertex eine Normale.

Desshalb muss man bei OGRE immer für jeden Vertex die Normale setzen. Wenn du sie dennoch pro Fläche haben willst musst du für jedes Dreieck 3 Vertizen erstellen und jedem der 3 Vertizen die Flächennormale zuweisen.

Runde Schattierung ist üblicher als Flache bei den meisten Anwendungen.

Ansonsten würde ich sowieso von so einem hardcoded Mesh abraten. Ein neues Mesh ist schnell erstellt mit Blender oder Milkshape.
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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Mittlerweile auch nicht mehr, die Spritefunktionalität ist in der PB4.3-Version weggefallen selbst mit DX9-Subsystem (getestet auf Vista64 in der 64 und 32-Bit Version).

äh.. wus?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Kaeru Gaman hat geschrieben:> Mittlerweile auch nicht mehr, die Spritefunktionalität ist in der PB4.3-Version weggefallen selbst mit DX9-Subsystem (getestet auf Vista64 in der 64 und 32-Bit Version).

äh.. wus?
Bei mir funktionierts wunderbar.
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
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Es geht darum, man entwickelt eine Spielewelt mit einem eigenen Lod System. Die einfache Spielewelt wird per Meshmanual erzeugt und
Details werden dann wie gewohnt im Modeller gebastelt.
So kann man sich einen eigen Leveleditor basteln.
I´a dllfreak2001
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

@DarkDragon zeig mal deinen Code her...
Hast du auch PB4.30?

Bei mir geht der mit Invalid memory access (read error at address 0)
beim laden eines Sprites raus. Werde es gleich auf XP gegentesten, ich denke aber das macht keinen Unterschied.


Edit: Unter XP läuft es... unter Vista64 nicht... dort ist die Grafikkarte eine NV mit dem WHQL-Treiber 180.48.

Edit: Jetzt läufts auch auf Vista, lag daran das dort noch die Beta3 lief.
I´a dllfreak2001
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@all

Ich rede natürlich nicht von Shader 4.x oder anderen Leckerbissen.
Ich hatte auch nicht vor, besser zu werden als es andere Engines getan hatten

Meine Intention ging eher daher, dass ich eine Engine wollte, die mit in meiner
EXE-Datei ist und möglichst wenig Platz verbraucht.

Die 3DEngine.DLL darf man nicht vergessen mitzuliefern und zum Ausprobieren
von QuellCode oder Spielen, da immer erst irgendwas irgendwo hin zu kopieren
als Laie, hätte ich keinen Bock drauf.

Deshalb hatte ich angefangen, meine Engine zu schreiben und weil ich
behauptet hatte, dass es mit der Schulmathematik der 11. bzw. 12. Klasse
möglich ist und damit ich nicht als Schwätzer gelte, musste ich mal ran.

Preise würde sie sicherlich nicht abräumen, aber sie kann 3D,
ist für kleinere Anwendungen ausreichend schnell, benutzt reine PureBasic-
Befehle, was sie unabhängig von der Oberfläche macht, was bei Ogre
nicht immer der Fall war, da die Anfangs nur für Windows verfügbar war,
soweit ich mich richtig erinnere.
PB-Hilfe hat geschrieben:Hinweis: Wenn Sie in Ihren Projekten die 3D-Engine von PureBasic verwenden und Sie vorhaben, Ihr erstelltes Executable weiterzugeben, müssen Sie die Engine3D.dll aus dem PureBasic/Compilers Verzeichnis in Ihr Haupt-Projekt-Verzeichnis kopieren.
Unterstützung: Alle OS

Jetzt bin ich mir nicht sicher, ich dachte immer, dass .DLL-Dateien
nur unter Windows funktionieren.

:?
Kinder an die Macht http://scratch.mit.edu/
Antworten