IRC Logs for #zfx


2021-04-08

07:01:00 Hannes joined the channel
07:01:13 Hannes: Ahoi
07:09:19 Schrompf joined the channel
07:10:07 Hannes: Ahompf
07:20:20 Schrompf: Huhunnes
07:24:51 xq: moin moin
07:51:30 joeydee joined the channel
07:51:35 joeydee: moin
07:54:02 xq: huhu! o/
07:54:58 Schrompf: das matched unter anderem "Ohauahuhuxo"
07:55:17 Schrompf: ne, ! ist gar kein operator
07:59:13 joeydee: "Ohauahuhuxo" ist das dieser neue Asteroid mit seltsamer Form, in denen die Covid-Leugner das Raumschiff sehen, das Trump geordert hat und das auf Frau Merkel fallen soll?
08:00:08 Schrompf: das alien-überwachungsschiff, was leider so hackeschnell war, dass es inzwischen schon wieder mehrere AE entfernt ist
08:01:09 joeydee: "Oh da ist intelligentes Leben auf diesem Planeten, lass uns mal verbeischauen" ... "Oh, wir haben uns geirrt"
08:03:06 joeydee: Wäre das Schiff versehentlich in die sonne gesteuert, wäre es umbenannt worden in "Ohauahauaha!"
08:04:47 IceMichael: ho
08:04:48 xq: lol
08:05:00 xq: ich finds witzig, wie anstrengend es ist, dinge in die sonne zu steuern :D
08:05:08 Schrompf: :-) die pinseln gerade einen neuen namen dran, nämlich "Ochnööhöhöhöhö"
08:08:06 joeydee: https://cdn.vox-cdn.com/uploads/chorus_image/image/45826606/cliff.0.0.jpg
08:14:27 xq: http://www.christopherbretz.ca/pf/sealevelrise/
08:14:33 xq: mir ist die tage dieser link untergekommen
08:14:38 xq: sehr spannende visualisierung
08:25:30 Magister joined the channel
08:25:50 joeydee: Werde dann auf eine dieser neuen tropischen Inseln in der Antarktis ziehen, sieht idyllisch aus von oben.
08:27:23 joeydee: Und mal einen Ausflug in die McMurdo-Unterwasserbasis machen.
10:12:20 IceMichael: also ich find, das muss man auch mal positiv sehen. Von mir aus z.B. ist es dann echt viel näher zum Meer
10:15:53 joeydee: Erdboden in meinem Wohngebiet ist aktuell 93m über NHN. Juhu :)
10:41:30 Magister joined the channel
10:43:12 xq: https://www.unrealengine.com/en-US/spotlights/real-time-cinematic-short-memories-of-australia-stirs-powerful-emotions
10:43:19 xq: mir fällt grade die kinnlade durch den boden
10:43:23 xq: unreal ist schon echt unverschämt
11:05:34 xq: joeydee: https://github.com/MasterQ32/tvg/issues/1 was hältst du von diesem vorschlag?
11:09:55 joeydee: nichts.
11:10:47 joeydee: die Ableitungen sind crap.
11:10:56 xq: inwiefern?
11:11:17 joeydee: Wenn eine Achterbahn aus Kreissegmenten bestehen würde, würdest du dir das Genick brechen.
11:13:10 joeydee: Wenn du Kurven grafisch sinnvoll umsetzen möchtest, musst du unterschiedliche "Beschleunigungen" zuslassen können, also die Ableitungen (glaube die ersten beiden?) müssen auch stetig sein. Das geht nicht mit Kreissegmenten.
11:16:29 joeydee: https://www.youtube.com/watch?v=zLQuf8N-mGw&t=18s
11:17:45 joeydee: Um so eine Kurve dann mit deinem Programm zeichnen zu können, musst du wiederum mit beliebig vielen Kreissegmenten mit sich kontinuierlich änderndem Radius annähern. Dann kannst du auch Linien nehmen.
11:22:49 xq: ah, good point :)
11:22:50 xq: darum frag ich
11:39:50 Essex20 joined the channel
11:44:23 xq: joeydee: die frage ist, wie relevant das ist?
11:49:36 joeydee: Je nachdem welche Formen du generell zeichnen können willst. Wenn dein Einsatzgebiet beschränkt ist, mag das reichen. Wenn du eine allgemeine Implementierung willst, mit der jemand mal ein Vektor-Zeichenprogramm (oder SVG-Importer) erstellen können soll, läufst du in dasselbe Problem wie mit Linien, nur komplizierter.
12:09:10 xq: ich würde gerne generell beliebige pfade darstellen können
12:09:20 xq: was ich mir jetzt überlegt habe:
12:09:30 xq: bezier-kurven sollten für alles reichen, was spline ist, oder?
12:11:21 joeydee: Mit cubic Bezier kannst du mit möglichst wenigen Stützpunkten praktisch jede beliebige Form nachzeichnen. Ist der Standard in Vektorgrafikprogramme, ich arbeite damit (Adobe Illustrator).
12:12:02 joeydee: Im Prinzip auch für Kreise, weiß aber nicht wie da die Abweichung ist.
12:13:53 xq: cubic bezier? einfach 4 control points?
12:16:38 joeydee: Ja. Wie im Thread gezeigt. Quadratic (2 Pfadpunkte und 1 gemeinsamer Kontrollpunkt) kenne ich aus der Grafiker-Praxis nicht.
12:17:11 xq: okay, cool
12:17:23 xq: weil dann hack ich mir mal ein pfad-system zusammen
12:17:39 xq: line segment, circle segment, bezier segment
12:17:43 xq: was brauch ich noch?
12:18:51 xq: ist variable liniendicke relevant? /o\
12:19:16 xq: sagen wir, du wolltest einen comic zeichnen
12:20:12 joeydee: Antworte gleich drauf, erst noch:
12:20:27 joeydee: https://helpx.adobe.com/flash/kb/bezier-pen-tool-flash-professional/_jcr_content/main-pars/img_0.img.png/bezier.gif
12:21:02 joeydee: Die meisten mathematischen Erklärungen verbinden die Punkte zu einem Parallelogramm und nennen alles "Kontrollpunkte" p0-p3
12:21:35 joeydee: Anschaulich ist aber: p0 und p3 sind Pfadpunkte, p1 und p2 sind ihre Ankerpunkte oder Handles.
12:22:11 joeydee: (Bzw. es werden die Pfadpunkte "Ankerpunkte" genannt)
12:22:12 joeydee: https://www.webucator.com/how-to/how-work-with-bezier-curves-adobe-illustrator.cfm
12:22:26 joeydee: So ist es intuitiver zu verstehen, finde ich
12:23:09 xq: agreed
12:24:19 xq: okay, also bezier it is
12:24:30 xq: jetzt frage ich mich, wie ich das sinnvoll implementiere
12:24:45 xq: (gleiches thema wie meine frage gestern bzgl. rasterization)
12:25:48 joeydee: Jeder Pfadpunkt hat "linkes Handle" und "rechtes Handle". Ist einer 0, gibts ne Ecke. Sind 2 benachbarte 0, ist dazwischen ein Liniensegment.
12:26:21 xq: joeydee: das ist wahrscheinlich zu fett :D
12:28:10 xq: (wie ein editor das handhabt ist mir scheißegal, aber unnötige daten zu speichern ist in dem use case ne katastrophe)
12:28:50 joeydee: Zu variabler Liniendicke: In Illustrator geht das, ja. wäre ein weiteres Attribut je Pfadpunkt.
12:29:38 xq: jo, das wird noch ein spaß das klein zu bekommen
12:29:39 joeydee: Nutze ich aber selten. Meist bezieht sich Linienstärke auf den gesamten Pfad.
12:30:14 xq: denk ich mir
12:30:32 xq: aber ich seh auch use cases
12:30:51 Essex20: LOL.. In Factorio haben gewisse Dinge (Trainstation, Radar u.s.w) automatisch einen Namen (von den supportern) .. meine erste Trainstation heisst direkt mal ZornGottes...
12:30:55 xq: das format soll später auch font können
12:31:14 xq: 11,99Essex20:99,99 lol
12:31:33 joeydee: Fonts haben keine unterschiedlichen Linienstärken. Das sind Flächen.
12:32:38 joeydee: Ich würd mir an deiner Stelle mal SVG anschauen, wie da ein Pfad verwaltet wird und welche Segmenttypen es da gibt.
12:33:43 xq: jo, muss ich wohl mal machen
12:34:01 xq: und wieso haben fonts flächen? ne linie mit stärke ist auch ne fläche
12:35:14 joeydee: Nein. Praxisfall: Eine Linie kannst du nicht auf einen Schneidplotter schicken, wenn du damit Buchstaben ausschneiden willst.
12:36:41 joeydee: Eine dicke Linie könnte Kreisenden haben, oder Enden die um die halbe Stärke übers Ende rausgehen, oder ... das bestimmt aber nicht der Plotter, wenn er ne Linie bekommt.
12:37:06 joeydee: Eine Fläche ist dagegen exakt definiert, mit Linienstärke 0.
12:37:21 joeydee: Fonts kommen immer als geschlossene Flächen.
12:38:33 joeydee: Der Plotter geht also immer den Pfad entlang, den er bekommt. Der rechnet sich nicht selbständig einen neuen Pfad aus.
12:59:24 xq: good point
12:59:32 xq: also am besten gar keine linienstärke supporten?
12:59:38 xq: also linie = 1,44 pixel breit?
13:04:11 xq: und wer flächen/outlines will, muss zur flächendefinition greifen?
13:06:52 joeydee: Für's Rastern kannst du schon ein Attribut "Linienstärke" machen. Meine Aussage war nur: Fonts arbeiten nicht mit Linienstärke, sondern mit Flächen. Schneidplotter war ein Beispiel, warum das Sinn macht.
13:07:39 xq: jo, okay
13:07:48 xq: bin echt happy, dass du da so firm bist :)
13:08:01 xq: ich frag mich grade, wie ich das ganze flächig füllen soll
13:08:14 xq: also, sagen wir, ich hab das übliche bezier-trapez und unten rückverbunden
13:08:40 xq: jetzt möchte ich das ding pixelfüllen
13:08:45 xq: du kennst nicht zufällig den passenden algo? :D
13:11:32 joeydee: Gleich ;)
13:11:42 joeydee: So sieht ein Font aus: https://lh3.googleusercontent.com/proxy/cbV1Cu1EUS-7HtgNIAGIhQv0ekw8QNTwyZI1V5WogVTC2RSDP9cs5rVBE6koZTioddeiymPgwK2TJYy2HmEJHmPVhkS6igte2csA6GvO8Oy3bkb_SVdW758wufzWKZTVg-F3LyUJPRl84KGspF8pn6M
13:13:37 xq: ah, also auch einfach path-fill
13:13:41 joeydee: Quilez has it all: https://www.shadertoy.com/view/wdBXRW
13:15:03 joeydee: Es gibt auch irgendwo ne Abhandlung, wie "Inseln" behandelt werden müssen, also z.B. der Freiraum im kleinen a. Der gehört zum Pfad, aber ein eigener geschlosener.
13:15:33 xq: https://mavo.io/demos/svgpath/
13:15:37 xq: das hier ist relativ cool
13:16:11 xq: joeydee: das ist ja nur ein polygon fill, was ich brauch wäre ein bezier fill :D
13:16:55 joeydee: du setzt doch zum Rastern Bezier eh in Linienstücke um. Das ist dein Polygon.
13:17:17 xq: örm
13:17:18 xq: hm
13:17:19 xq: good point
13:17:31 xq: okay, dann haben wir 2/3 probleme gelöst
13:18:28 xq: dann muss ich mal noch rausfinden, wie man bezier anständig in line segments zerlegt
13:18:39 xq: weil da ist die längenberechnung ja nicht ganz trivial
13:20:39 joeydee: Dass die Liniensegment-Länge variiert ist doch unwichtig.
13:20:57 xq: naja, aber ich hätte gerne so wenig wie möglich liniensegmente
13:21:03 xq: hm
13:21:12 xq: also subdivision einfach hochskalieren, bis die längste linie < threshold?
13:23:24 joeydee: Kürzeste Verbindung wäre Abstand der Endpunkte. Sagen wir 80px. Du willst aber Segmente auf 10px. Also berechnest du den Punkt bei t=1/8 und schaust ob der wesentlich weiter entfernt ist; wenn ja verkürze t. Oder berechne den Punkt in der Hälfte. Oder nähere irgendwie anders an.
13:24:24 xq: joa, ich spiel mal rum
13:24:42 xq: ich will ja hier auch kein full-featured SVG bauen :D
13:24:45 joeydee: "verkürze t" wäre dann heuristisch. Also wenn die Strecke p(t=0) zu p(t=1/8) z.B. 12 px ist, berechne den passenden Faktur daraus.
13:26:39 joeydee: Ne, aber mit dem was du alles genannt hast ist die Pfadbehandlung in SVG ein guter Anhaltspunkt. https://www.w3.org/TR/SVG/paths.html#Introduction
13:26:55 xq: jo, hab ich schon :)
13:27:03 xq: "smooth path" hab ich nicht verstanden, würde ich mal weglassen" :D
13:27:52 xq: ah, hm
13:28:02 xq: c -10 -50 30 -50 20 0
13:28:11 xq: das hier wäre ein pfad, für den die heuristik sicher spannend ist :D
13:28:54 xq: c -10 50 10 50 0 0
13:28:57 xq: das hier ist besser
13:29:02 xq: "schlaufe"
13:30:44 xq: ah, die smooth hab ich jetzt auch verstanden
13:30:49 joeydee: jo, spiel mal rum, für den Anfang reicht ja auch erstmal festes t.
13:31:41 xq: jo
13:32:49 xq: bezier-länge zu berechnen ist wohl analytisch relativ unmöglich :D
13:34:09 joeydee: würd ich jetzt auch nicht machen wollen :) für unsere Zwecke muss man ja so oder so durchsteppen, so what.
14:06:26 xq: jo
14:06:32 xq: bin ja mal gespannt
14:07:09 xq: bzgl. line fill/stroke color hätte ich einfach nur "flat color" oder nen 2-punkt-linear/radial gradient genommen
15:06:55 xq: joeydee, https://mq32.de/public/34107d24dfa9b1bc024fbb74f2342f5cfec2ee8b.png
15:07:04 xq: "länge zwischen den control points / 8"
15:07:33 joeydee: :)
15:07:49 xq: gibt relativ gute ergebnisse imh
15:09:02 xq: 16 ist auch noch relativ okay
15:09:11 xq: wenn man die segmente nicht sieht
15:25:44 xq: joeydee: https://mq32.de/public/bezier-01.mp4
15:26:26 xq: color coding: rot<=2, gelb<=4, grün<=8
15:26:33 xq: jeweils distanz in *ganzen* pixeln
16:41:15 joeydee: :) sieht brauchbar aus
17:29:04 Schrompf joined the channel
20:12:27 Schrompf: moin noise-foilsen loift! http://www.splitterwelten.info/privat/dungeon_foils.png
20:14:39 IceMichael: oh, nice
20:14:55 IceMichael: bist du damit zufrieden?
20:15:03 IceMichael: ich finde, das sieht sehr organisch aus, das könnte echt einfach so gewachsen sein
20:15:10 IceMichael: wirkt sehr natürlich
20:15:47 Schrompf: jau, gefällt mir. die normal map hat aber noch so regelmäßige streifen, die ich ein bissl döflich finde
20:16:05 IceMichael: diese Diagonalen, die man in der Mitte sieht?
20:16:20 IceMichael: und der Boden ist ja jetzt auch uneben, das ist ebenfalls neu, eh?
20:16:39 IceMichael: überhaupt ist es ja jetzt auch distorted und nicht einfach glatt konkav/konvex, das ist auch ein (cooler) neuer Effekt?
20:17:13 IceMichael: also barfuß würd ich da Schmerzen haben und mit Schuhen umknicken :) liegt aber an meiner Tollpatschigkeit
20:17:21 IceMichael: wäre übrigens auch ne coole Unterwasserwelt
20:18:15 Schrompf: wird hoffentlich ne coole felshöhle. noi ist wie gesagt das noise aufm foilsen
20:20:35 IceMichael: finde, das ist schon jetzt ne coole Felshöhle
20:20:44 Schrompf: ja, ich froi mich sehr
20:20:47 IceMichael: das dürfte doch eigentlich gut neue Motivation geben :)
20:20:58 Schrompf: und die noise-funktion ist avx256 handoptimiert. bin sehr stolz drauf
20:21:04 IceMichael: nice
20:21:08 Schrompf: auch wenn's völlig sinnlos ist. hab's nichtmal gebenchmarkt
20:21:16 IceMichael: ja gut, wenn's so leicht von der Hand geht
20:22:18 Schrompf: war's nicht. ne normale noise hätte ich in 10 min runterschrubben können. so waren es 3h. plus debugging, weil ich mich verswizzled hatte
20:26:10 IceMichael: swizzle shizzle
20:26:42 IceMichael: na ja, trotzdem. Bei mir wär auch nach 3h nix rausgekommen und vermutlich wär dabei noch ein Flugzeug abgestürzt und das Nachbarhaus abgebrannt
20:47:16 Schrompf: spontane brände, menschen kollabieren auf offener straße, in der entfernung sirenengeheul