Showroom - Aktuelle Arbeiten und Projekte

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
woodsmoke
Beiträge: 44
Registriert: 30.06.2023, 14:05
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von woodsmoke »

Bild

Arbeite an einen 2. Teil von einer mech simulation. Das erste war Mechwarrior 2 Feeling, das jetzt eher Mech2 Mecenaries.
Dazu nutze ich die alte erste Version aus meinen programmier n00b Zeit. Ist lustig, viel brute force taktik.
Ziel ist eine aufwändigere Gegner AI, ein paar mehr Waffen, Mechs, aufgebohte Optik ...
Vielleicht auch zufallsgenerierte Welten, und da Söldner Permadeath + Punkte-Highscore-System.
Zuletzt geändert von woodsmoke am 11.04.2024, 00:58, insgesamt 1-mal geändert.
joeydee
Establishment
Beiträge: 1043
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von joeydee »

Habe gestern mal einen Tesselation-Algo ausprobiert, dessen Name ich leider nicht kenne.
Ich schätze zwar, dass der generell deutlich mehr Line-Intersection-Tests benötigt als z.B. Pig Ear, also dürfte nicht besonders optimal sein. Und schmale lange Dreiecke sind ja auch nicht besonders hübsch, alles mehr so Brute-Force, also dürfte nicht wirklich von Interesse sein. Aber: er funktioniert ;)

Dafür ist die Formulierung ziemlich simpel: Nimm einen beliebigen Punkt im Loop als Startpunkt an, gehe im Umlaufsinn durch welche Punkte von dort aus "sichtbar" sind, und füge diese zum aktuellen Fan hinzu. Für Punkte die nicht sichtbar sind, mache einen neuen Loop auf welcher separat gelöst wird.

Ist entfernt mit Schweinsöhrchen verwandt, aber schneidet keine einzelnen Dreiecke ab, sondern ganze Polyloops (welche am Ende dann alle jeweils durch einen einzelnen Fan repräsentiert werden können, dabei aber nicht konvex sein müssen), und arbeitet von innen nach außen statt von außen nach innen.

Die Idee ist an einen Bot angelehnt, welcher seine Umgebung von einem Punkt aus scannt, offene Portale im Scanpanorama markiert, später dann zu diesen hinrollt und von dort aus die noch unbekannten Bereiche dahinter scannt, bis keine Portale mehr übrig sind.

Im Bild startet der Algo bei 0; 1 ist sichtbar, 2 und 3 nicht, 4 ist wieder sichtbar, also wird ein separater Loop 1,2,3,4 in die ToDo-Liste gelegt. Ebenso 4,5,6, sowie 7-19 usw. Zum aktuellen Fan gehören dagegen die von 0 aus "sichtbaren" Punkte 0,1,4,6,7,19,...
Die blauen Kreise markieren jeweils den letzten sichtbaren Punkt und damit Startpunkt für abgetrennte Polyloops, die blaue Linie die Schnittkante zum nächsten wieder sichtbaren Punkt; abgetrennte Dreiecke (wie z.B. 4,5,6) sind trivial und haben hier im Debug-Render keinen neuen Startpunkt, sondern werden ungeprüft in die Renderliste gelegt.
Bild
joeydee
Establishment
Beiträge: 1043
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von joeydee »

Relativ uninteressant, ich zeigs trotzdem. Weitere kleine Beschäftigungen mit Triangulierung. Diesmal der Original-Schweinsöhrchen-Algo, und dabei lief mir auch die konvexe Hülle über den Weg. Alter Kumpel, lange nicht gesehen ;)

Nimm das nächstbeste Ohr:
pigear01.jpg
Nimm das Ohr mit dem kleinsten Innenwinkel am verbliebenen Polygon:
pigear02.jpg
Nimm das Ohr mit der kürzesten Cut-Strecke:
pigear03.jpg
Definiere "Ohr" als "Konkave Stelle, Verbindungsline der Schenkel ausschließlich außerhalb des Polygons"
(Oder einfacher: Kehre den Umlaufsinn des Polygons um)
Das verbleibende Polygon (hier weiß) ohne weitere solche Konkav-Stelle ist die konvexe Hülle. Behaupte ich mal, Beweisführung geht anders.
pigear04.jpg
Benutzeravatar
Schrompf
Moderator
Beiträge: 4852
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von Schrompf »

Wie unterscheidest Du zwischen z.B. den kürzesten Cut-Strecken? Erstellst Du da jedes mögliche Ohr und wählst dann das aus, was den kürzesten Cut hat? Oder gibt's irgendnen Trick, wie Du z.B. den Punkt erkennst, von dem aus der TriFan den kleinsten Innenwinkel hat?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
joeydee
Establishment
Beiträge: 1043
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von joeydee »

Im Moment noch Brute Force, also ja, komplette Prüfung in jedem Durchgang.
Man kann aber vorher eine sortierte Liste mit allen konvexen Ecken erstellen, nach dem Grad der Konvexität (Innenwinkel) oder dem Abstand der Schenkel-Endpunkte. Für den nächsten Clip nimmt man dann das erste Element dieser Liste, welches den eigentlichen Ohr-Test besteht. Diese Liste kann man dann nach jedem Clip ja relativ aufwandsarm updaten (Konvexität der beiden Nachbarpunkte kann sich geändert haben) und sortiert halten.
Antworten