Seite 2 von 3

Verfasst: 28.01.2009 14:24
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.

Verfasst: 28.01.2009 15:53
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

Verfasst: 28.01.2009 16:22
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.

Verfasst: 28.01.2009 16:36
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

Verfasst: 28.01.2009 17:17
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.

Verfasst: 28.01.2009 17:20
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?

Verfasst: 28.01.2009 17:24
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.

Verfasst: 28.01.2009 17:25
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.

Verfasst: 28.01.2009 21:34
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.

Verfasst: 29.01.2009 00:40
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.

:?