Model Format für Splines

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
antisteo
Establishment
Beiträge: 923
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Model Format für Splines

Beitrag von antisteo »

Moin,

gibt es eigentlich irgendein anerkanntes Model-Format für Spline-basierte 3D-Geometrie und -Animation? (bzw. es braucht ja auch entsprechende Editoren und geile Render Engines, die entweder die Geometrie je nach LoD aufblähen oder sehr intelligente Pixelshader haben, die den Spline quasi raycasten)
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4997
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Schrompf »

Die einzige Engine, bei der ich das jemals gelesen habe, war Quake2 - ja, das Quake2 von 2001 oder so. Die haben damals Torbögen und so als Splines abgelegt und je nach verfügbarer Rechenleistung verschieden detailliert tesseliert.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Model Format für Splines

Beitrag von dot »

.obj? 😉
Benutzeravatar
Jonathan
Establishment
Beiträge: 2520
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Jonathan »

Schrompf hat geschrieben: 20.10.2024, 19:09 Die einzige Engine, bei der ich das jemals gelesen habe, war Quake2 - ja, das Quake2 von 2001 oder so. Die haben damals Torbögen und so als Splines abgelegt und je nach verfügbarer Rechenleistung verschieden detailliert tesseliert.
Du meinst Quake 3, oder?
https://quark.sourceforge.io/infobase/maped.curves.html

Das war lustig, weil GameStar damals vom Entwickler irgendetwas von wegen perfekt runden Oberflächen gehört hat und dann ein großes Beispielbild von einem der weiblichen Charaktere im Heft abgedruckt hat um dann zu behaupten, der Po sei endlich perfekt rund. Aber der hatte natürlich konstante Auflösung, nur eben hinreichend große.

Ansonsten: Blender kann natürlich alle Arten von Kurven, und das Dateiformat ist irgendwo dokumentiert. Assimp hatte ja mal einen Blender-Loader. Das würde sich als Leveleditor für dein Spiel vielleicht gut lohnen, weil du ja auch direkt Levelobjekte setzen und Exportieren kannst (über Empties und ein Custom-Export-Skript).

Aber wie anderswo schon gesagt: Wenn du Splines einfach hinreichend beim Export sampelst, sieht man eh keine Ecken mehr. Und wenn dein LOD eh mit beliebigen Punktwolken umgehen kann, dann kannst du auch einfach die hochaufgelösten, diskretisierten Splines da rein schmeißen. Wenn du statt Texel Punkte verwendest ist deine Farbauflösung fast immer eh höher als die Geometrieauflösung, du kannst also auch einfach davon ausgehen, dass alles entweder Punktwolken oder Dreiecke sind und brauchst dir über Splines keine Gedanken machen.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4997
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Schrompf »

Assimp kann Blender nur in nem exotischen Branch, und lädt da nur den Triangle Preview Mesh. Assimp hat gar keine Datenstrukturen für Splines.

Aber ich stimme dem allgemeinen Tenor zu: es ist albern, das überhaupt zu wollen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8308
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Krishty »

Fast alle CAD-Formate sind Spline-basiert. IGES, STEP, DWG kommen oft genug erst garnicht tesseliert. Dafür kosten die Bibliotheken zum Laden ein kleines Vermögen. Ich nutze ein selber geforktes OpenCASCADE, und auch das kommt mit Einschränkungen wie „braucht bei einigen Dateien fünfzehn Minuten zum Laden“ und „Tesselierung sieht manchmal aus nicht erkennbaren Gründen grütze aus“ zusätzlich zu „kein Support, da gratis (sonst 6000 € pro Jahr und Arbeitsplatz)“.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Matthias Gubisch
Establishment
Beiträge: 487
Registriert: 01.03.2009, 19:09

Re: Model Format für Splines

Beitrag von Matthias Gubisch »

Sorry für offtopic
Aber bei der Diskussion stellt sich mir die Frage ob man mit Hilfe von mesh shadern und workgraphs die splines nicht direkt auf der gpu tesselieren könnte.
Das würde doch wirkliches unlilited Detail ermöglichen
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Schrompf
Moderator
Beiträge: 4997
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Schrompf »

Ja, vielleicht schon. Quasi das uralte Quake-Ding mit "soweit tesselieren, wie's die Performance her gibt und es nötig ist". Aber weil's hier gerade philosophisch wird: das ist doch nicht mehr Detail! Das ist doch nur die selbe Informationsmenge, leeeiiiicht besser repräsentiert. Unlimited Detail wären die Fitzelchen der Rauhfasertapete, nicht die immer exaktere Darstellung des Krümmungsverlaufs eines Kotflügels.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Mirror »

Meiner Meinung nach wird die Auflösung von Splines überschätzt. Wenn ein Objekt nicht mehrere Meter große ist, fallt eine niedrige Tesselation gar nicht auf. Bei meinem kleinen Editor verwende ich fest 64 Segmente für einen polygonalen Kreis und es fällt kaum auf.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
antisteo
Establishment
Beiträge: 923
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Model Format für Splines

Beitrag von antisteo »

Mirror hat geschrieben: 22.10.2024, 12:59 Meiner Meinung nach wird die Auflösung von Splines überschätzt. Wenn ein Objekt nicht mehrere Meter große ist, fallt eine niedrige Tesselation gar nicht auf. Bei meinem kleinen Editor verwende ich fest 64 Segmente für einen polygonalen Kreis und es fällt kaum auf.
64 Segmente für einen Kreis sind aber ganz schön viel, wenn das Objekt in großer Entfernung nur 2-3 Pixel vom Bildschirm einnimmt.

Was ich mich frage ist: Kann man auch im Fragment Shader tesselieren? Also ein Deck-Dreieck rendern und die einzelnen Pixel dann raytracen.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4997
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Schrompf »

Klar, mach. Hab neulich Guardians Of The Galaxy auf Steam gespielt, und die raytracen im PixelShader mit Silhouette und Fragment Rejection durch ein HeightField, wenn ich das richtig gesehen habe.

Slug, die Font Rendering Library, rendert die Splines direkt aus dem TrueTypeFont im FragmentShader und kann damit gleich geile Antialiasing-Sachen machen, so dass Du nen Textpanel wie in KriegDerSterne schräg rendern kannst und selbst die kleinsten Buchstaben noch gut lesbar sind.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Mirror »

antisteo hat geschrieben: 22.10.2024, 13:13 64 Segmente für einen Kreis sind aber ganz schön viel, wenn das Objekt in großer Entfernung nur 2-3 Pixel vom Bildschirm einnimmt.
64 Segmente sind vorgegeben, man wird es aber editieren können. Bei Softcubes geht das ja schon immer.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Benutzeravatar
Jonathan
Establishment
Beiträge: 2520
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Model Format für Splines

Beitrag von Jonathan »

antisteo hat geschrieben: 22.10.2024, 13:13 64 Segmente für einen Kreis sind aber ganz schön viel, wenn das Objekt in großer Entfernung nur 2-3 Pixel vom Bildschirm einnimmt.
Ja, aber das hat halt nix mit Splines zu tun, bzw. genauer gesagt es ist kein Spline-spezifisches Problem. Du hast ja auch Triangle-Meshes (Charaktere etc.) die eine ähnliche Auflösung (Vertices pro Meter) haben und auch in unterschiedlichen Entfernungen gerendert werden.

Du brauchst also auf jeden Fall eine LOD-Strategie für Dreiecksmeshs (oder in deinem Fall vlt. eher Punktwolken). Wenn du irgendein Spline-basiertes Objekt in ein Dreiecksmesh umwandelst, braucht man nicht allzu viele Dreiecke, damit es rund aussieht (egal wie nah man dran ist), es ist also absolut keine verrückte Idee, Splines in Triangles umzuwandeln. Und ab dem Punkt kannst du den selben Code verwenden, den du eh schon für Triangles hast um dein LOD zu machen.

Was du jetzt vor hast ist, überspitzt gesagt, einen zweiten Code-Pfad zu entwickeln und zu pflegen, der dein Projekt komplizierter und fehleranfälliger macht (weil mehr Logik da ist die kaputt gehen kann), allerdings keinen Mehrwert liefert. Man kann das aus mathematischer Sicht nett und elegant finden, aber aus entwicklungsökonomicher Sicht macht das schlicht keinen Sinn.

Ich wollte das nur nochmal erwähnen, weil ich dachte, dass dir effizientes Entwickeln ggf. wichtig sein könnte. Wenn du unbedingt Splines machen willst, dann ist das auch ok. Ich schreibe ja auch meine eigene 3D Engine für meine Projekte, die ehrlich gesagt nicht besonders toll ist und das macht mit Sicherheit auch absolut keinen Sinn, wenn man maximal effizient entwickeln will. Aber ist ja Hobby und kein Beruf. Eigene 3D Engine schreiben ist ehrlich gesagt keine kluge Idee, Splines statt Dreiecke zu rendern auf die selbe Art auch nicht. Aber kann man trotzdem machen. Und mit einem netten Spline Renderer wirst du bestimmt auch lobende Kommentare hier bekommen.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten