Du bist nicht angemeldet.

Werbeanzeige

tft

Frischling

Beiträge: 10

Wohnort: CH-Dachsen / DE-Berlin / TR-Antalya

  • Private Nachricht senden

1 671

27.03.2020, 21:08

Hallo ....

hier gibt es also ein WIP. Dann werde ich mal Posten wie es meinem Projekt gerade so geht. Ich habe mich mit den Thema
Landschaft generieren befast. Und beschlossen HighMaps dazu zu benutzen. Das macht das ganze auch sehr Flexible, da es
sehr viele Generatoren dafür gibt. Ich habe sogar Höhen Karten von Google gefunden.


(Link)


Biss zum nächsten mal ........

tft

Frischling

Beiträge: 10

Wohnort: CH-Dachsen / DE-Berlin / TR-Antalya

  • Private Nachricht senden

1 672

31.03.2020, 21:49

Hallo,

hier mal ein Link, wie das OQE Project fortschreitet. Kommentare erwünscht.

OQE Video der Version 3:016

Gruss TFT

tft

Frischling

Beiträge: 10

Wohnort: CH-Dachsen / DE-Berlin / TR-Antalya

  • Private Nachricht senden

1 673

10.04.2020, 08:35

Und ein weiteres Update.

Hier der Link zum ursprünglichen Vorstellungs Tread.

http://forums.purebasic.com/german/viewt…435e01a9bdeef75

Gruss TFT

melerski

Frischling

Beiträge: 21

Wohnort: Ludwigshafen

  • Private Nachricht senden

1 674

20.01.2021, 00:40


Hab am Wochenende ein digitales Aquarium kreiert in Gamemaker.
Einfach nur Fische anglotzen und chillen.
64x36 Pixel 60fps
Für Windows und Android (APK Datei)
DOWNLOAD: Digital Aquarium

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »melerski« (24.01.2021, 12:50)


Jonathan

Community-Fossil

  • Private Nachricht senden

1 675

20.01.2021, 19:20

Huh, witzig :D
Lieber dumm fragen, als dumm bleiben!

Schrompf

Alter Hase

Beiträge: 1 410

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

1 676

21.01.2021, 11:26

Das ist tatsächlich auf eine minimalistische Art ziemlich stylish. Gute Arbeit! Ob Absicht oder nicht, ich finde es gut, dass Du für die Bewegung der Fische das LowRes-Raster verlassen hast. Und wie die kurz 1px breit werden, wenn sie wenden... herrlich :-)
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

melerski

Frischling

Beiträge: 21

Wohnort: Ludwigshafen

  • Private Nachricht senden

1 677

23.01.2021, 22:24

Das ist tatsächlich auf eine minimalistische Art ziemlich stylish. Gute Arbeit! Ob Absicht oder nicht, ich finde es gut, dass Du für die Bewegung der Fische das LowRes-Raster verlassen hast. Und wie die kurz 1px breit werden, wenn sie wenden... herrlich :-)

Danke. Ja die Fishbewegung war ursprünglich pixelweise, aber das war nicht so entspannend. Die Fische heben sich dadurch auch ein wenig ab, was gut ist, da sie im Mittelpunkt stehen sollen.

Ich hatte anfangs höhere Auflösungen ausprobiert, aber bin wieder zurück zu 64x36px weil es mir so am besten gefällt.
Irgendwann mache ich eine Version für pico8 da werden es dann 128x128px, aber leider wahrscheinlich pixelweise Bewegung der Fische.

Sonnenstrahlen sind hinzugekommen!

(Link)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »melerski« (23.01.2021, 22:33)


Schrompf

Alter Hase

Beiträge: 1 410

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

1 678

28.02.2021, 11:59

Ich arbeite seit ner Weile hin und wieder am ConeTracing. Die Idee ist wie beim RayTracing, wo man Strahlen durch die Szene verfolgt und guckt, was sie treffen. Nur dass hier kein Strahl (eine unendlich dünne Linie) getraced wird, sondern ein Strahl mit Ausdehnung, ein Kegel, Englisch "Cone".

Beim RayTracing unterscheidet man Primary Rays, also die Strahlen von der Kamera in die Szene, um zu schauen, welche Szenenteile auf welchen Pixeln landen, und Secondary Rays, also Strahlen von Oberflächen der Szene in die Szene hinein. Letztere sind meist viel wüster gestreut als die wohlgeordneten Primary Rays, die halt wie die Pixel aufm Monitor artig nebeneinander im gleichen Abstand liegen.

Primary Rays macht niemand, Rasterizing wird prinzipiell immer schneller sein. In den Secondary Rays liegt die eigentliche Magie - man kann damit ganz plump Reflektionen einsammeln, globale Beleuchtungseinflüsse aus der Umgebung sammeln oder Schatten von Lichtquellen holen. Das Problem beim RayTracing ist, dass der Ray unendlich dünn ist. Alle genannten Techniken brauchen aber Licht aus großen Bereichen, also muss man beim RayTracing sehr viele Strahlen losschicken und deren Einflüsse gewichtet aufsummieren. Und selbst ne NVidia RTX 2080 schafft bei FullHD und 60fps mit Mühe und Not einen Ray pro Pixel. NVidia fängt da an, diesen einen Ray clever zu streuen, über mehrere Frames hinweg die Ergebnisse wiederzuverwenden und mit GANs das heftige Rauschen, dass man dabei bekommt, rauszurechnen. Ich dagegen will Strahlen mit Volumen (== Kegel) verschicken und will das Aufsummieren der Einflüsse im Kegel analytisch lösen.

Wir nehmen als Beispiel mal den Schatten der Sonne. Die Sonne ist am Himmel eine Scheibe, also eine Fläche. Ein Punkt auf dem Boden bekommt also Licht von der Sonne aus verschiedenen Richtungen: die Strahlen links auf der Sonnenscheibe und die vom oberen Teil der Sonnenscheibe und so weiter addieren sich und ergeben einen hellen Punkt auf dem Boden. Wenn der Weg zur Sonne frei ist, ist das alles kein Problem. Das Problem fängt an, wenn irgendwas Kleines einen Schatten wirft. Das kleine Hindernis verdeckt nur einen Teil der Sonnenscheibe, wir kriegen also auf diesem Bodenpunkt anteilig weniger Licht von der Sonne.

Mit RayTracing müsste man nun von Bodenpunkt aus viele Strahlen in Richtung Sonnenscheibe abfeuern und jeden Strahl ein bisschen streuen, so dass die ganze Sonnenscheibe gleichmäßig abgetastet wird. Wenn wir genügend Strahlen nehmen, kriegen wir anteilig raus, wieviel von der Sonnenscheibe durch das kleine Hindernis verdeckt wird, und wieviel dunkler es auf diesem Bodenpunkt dadurch wird.

Viele Strahlen? Kacke, nich. Wär doch viel cooler, wenn wir statt dem unendlich dünnen Strahl, der ja nur trifft oder nicht trifft, einen Kegel abschicken könnten, der anteilig auf das kleine Hindernis trifft. Und das habe ich versucht. Ich kann jetzt analytisch ausrechnen, wieviel von einem kreisrunden|rechteckigen Kegel durch ein Rechteck|Voxelblob|Dreieck verdeckt wird. Und das habe ich eingesetzt, um einen Haufen Cones durch meine alte Voxelwelt zu tracen. Sind erstmal nur die Primary Rays, weil die am einfachsten zu coden sind, aber theoretisch sollte es ja nicht dabei bleiben. Und das sieht so aus:



Komplett ohne Licht sieht alles reichlich gleichförmig aus, es sind halt nur die Primary Rays. Bei Primary Rays hat man auch nicht wirklich was davon, dass das jetzt Cones anstatt Rays sind. Der einzige Vorteil ist, dass es in Bewegung komplett frickelfrei ist, weil halt für jeden Pixel anteilig die Farbwirkung jedes Voxels einberechnet wird.

Und es ist aktuell komplett in Software, weil ich die leichter debuggen kann. Irgendwann soll das schon noch auf die Grafikkarte wandern, da wär's dann auch drastisch schneller. Hier auf der CPU könnte ich noch ein bissl was optimieren und vektorisieren, aber viel besser wird's im Groben und Ganzen nicht mehr.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

David Scherfgen

Administrator

Beiträge: 10 306

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

1 679

28.02.2021, 12:48

Interessant. Ich hatte schonmal davon gehört, aber eines habe ich nicht verstanden: Was ist mit Verdeckungen? In dem Moment, wo der Kegel ein Objekt trifft, muss ich für die dahinter liegenden Objekte die Verdeckung durch dieses getroffene Objekt berücksichtigen. Ich habe es dann nicht mehr mit einem Kegel zu tun, sondern mit einem "maskierten" Kegel, wobei die Maske mit einem Polygon beschrieben werden könnte. Ich hoffe, ich habe mich verständlich ausgedrückt. Also wie löst du Verdeckungen?

Und was genau zeigt dein Screenshot eigentlich? Ich hätte da eine gewisse Unschärfe erwartet dadurch, dass pro Pixel viele Objekte getroffen werden ... Oder sind deine Kegel einfach extrem dünn, ohne "Streuung"?

Jonathan

Community-Fossil

  • Private Nachricht senden

1 680

28.02.2021, 13:04

Man würde also z.B. Richtung Sonne einen Kegel schießen, der genau so breit ist, dass er die Sonne abdeckt? Und ich vermute mal, man speichert dann unterwegs eine prozentuale Verdeckung, so dass man an einer Objektkante z.B. nur noch 50% der Sonne sieht und dann entsprechend dunkler wird? Die Frage, die denke ich auch David gestellt hat, ist dann, die man diese Verdeckung entlang des Strahl repräsentiert. Als Prozentangabe scheint man das naheliegend und performant zu sein, aber wenn man zwei Objekte zwischen Oberfläche und Sonne hat, die sie jeweils um 50% verdecken, kann man damit dann nicht entscheiden, ob die Verdeckung weiterhin 50% ist, oder 100% oder irgendwo dazwischen. Und eine komplexere Darstellung, sich also zu merken welcher Teil des Kegels verdeckt ist, dürfte so aufwändig sein, dass man dann direkt mehrere Strahlen schießen könnte.

Allerdings kann man ja auch einfach immer das Maximum nehmen. In den allermeisten Fällen dürften Objekte ja größer sein, als die Lichtquellen, d.h. der Effekt tritt vor allen Dingen an Objektkanten auf. Vielleicht hat man dann in der Praxis gar nicht so viele Artefakte.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige