Moin,
Edit: Ich poste hier ab und zu mal neue Versionen, selbst wenn es keinen interessiert hat man hier einen Überblick über den Werdegang
vor einiger Zeit wollte ich mal einen Asteroidengenerator basteln (der kleine Bildchen für ein Spiel generiert). Irgendwie bin ich dann auf die Idee gekommen, dass man das doch in 3D machen könnte. Im EN Forum habe ich dazu die S3d.au3 (von Starg, 2014) gefunden, die 22KB leicht ist und keine externen Libs verwendet. Die hat mir aber von der Handhabung her nicht gefallen, sie diente aber als Inspirationsquelle.
Das Folgende ist maximal eine Alpha-Phase, nicht mehr als ein kleiner Test bei dem die halbe Funktionalität fehlt. S3d ist vom Umfang her ein Stück besser (hier gibt es z.B. auch eine mobile Kamera und vielseitigere Zeichenwerkzeuge), in meiner UDF geht es mehr um die Anzeige von Geometrien (z.B. eine Kugel die durch Deformation & Farbe in einen Asteroiden verwandelt wird Soweit bin ich aber noch nicht)
Zum Ausprobieren -> Ordner entpacken und die Test.au3 aufrufen. Ich habe alle Dateien im Ordner so gelassen wie sie sind und nicht aufgeräumt, wenn jemand stöbern möchte, nur zu
Edit: v28.12.22:
- Performance wurde um ca. 20% erhöht (erforderte quasi komplettes Umschreiben von allem)
- Primitives Parallel Light hinzugefügt (eine Lichtquelle, Weiß, Parallel (unendlich weit weg)), Dadurch ging die Performance wieder um 20% runter
- Grundstein für "beliebige" Polygone gelegt (es soll neben Triangles und Quads auch andere Polygone geben. Ein Pentagondodekaeder sollte nativ gezeichnet werden können. Kann ja wohl nicht angehen, dass man den triangulieren muss, dabei ist er so schön)
- Oktaeder zur Geometrie hinzugefügt
Edit: v26.01.23:
- Die Beleuchtung wurde wieder entfernt (die Berechnung war doof gelöst. Das wird zukünftig als "statische" und "dynamische" Beleuchtung getrennt berechnet). Die Statische kann man nämlich auslagern und nur 1x berechnen, während man die dynamische in jedem Frame erneut berechnen muss.
- Jetzt sind "alle" möglichen geometrischen Formen die aus Punkten und Polygonen (egal wie viele Punkte pro Polygon) unterstützt. Mein lieblings Pentagondodekaeder ist endlich mit von der Partie.
- Culling hinzugefügt für Objekte die außerhalb sind.
- Eine Kamera gibts jetzt auch (aber nur eine sehr rudimentäre, keine frei fliegende und beim Culling sind hier noch Bugs wenn man unter bestimmten Winkeln auf Objekte schaut, oder zu nah dran ist. Dann sieht man ggf. die Rückseite)
- Quasi alle Algorithmen neu geschrieben. Sie sind nicht wirklich optimiert, haben jetzt aber besseres Optimierungspotential.
- Code aufgeräumt (sofern man diese Baustelle aus "aufgeräumt" bezeichnen will)
- In der Demo vom 26.01.23 -> Test.au3 starten und mit der linken Maustaste um xy und mit der rechten in um z drehen.
(edit: Das ist ein Bild, keine Ahnung warum hier das Vorschau einfügen nicht funktioniert)
Edit v30.01.23:
- Aufräumen (im Prinzip sollte "alles" in Linalg.au3 integriert werden was gebraucht wird, sonst hat man 3 Includes nur für Mathe)
- Test1 und Test2 sind jetzt 2 Beispiele. Das 2te ist mein geliebter Planetengenerator (bzw. ein Beispiel für eine bunte deformierte Kugel... der Grund für alles hier )
- In Test2 wird eine gebastelte Steuerung verwendet die kein Y-Lock hat (Rotation um freie Achse, statt eine Achse des Koordinatensystems.).
lg
M