Guten Morgen,
vorab ich habe bis jetzt nur Mikrocontroller und SPS und ein ganz ganz
klein wenig C# programmiert.
Nur so als Vorwarnung😉.
Nun möchte ich versuchen einen Quader auf den Bildschirm zu zeichnen.
Dieser Quader sollte irgendwie einer Perspektivischen Ansicht ähnlich
sein.
Welche Sprache ist dazu die richtige?
Könnte man irgendwie Sketchup Plugin verwenden?
Bin ich komplett auf dem Holzweg?
Danke für die Hilfe
Ganz egal, ob du es von Grund auf selbst schreibst, oder ob du ein
Framework benutzt. Alle gehen davon aus, du weißt, was "Affine
Transformationen" sind.
Eigentlich ist die Mathematik ganz einfach. Wenn du auf ein Lehrbuch
stößt, mit dem der Matheprof seine Studenten verwirren will, nimm
einfach das nächste.
Wahrscheinlich ist es am einfachsten, du nimmst eine Library, die ~50
grundlegende Funktionen bietet. Transformationen, Linien zeichnen,
Flächen füllen...
Hase schrieb:> Nun möchte ich versuchen einen Quader auf den Bildschirm zu zeichnen.> Dieser Quader sollte irgendwie einer Perspektivischen Ansicht ähnlich> sein.>> Welche Sprache ist dazu die richtige?
Scheißegal, das geht prinzipiell mit jeder Programmiersprache. Man muss
halt nur programmieren können.
Kannst du nicht? Dann lerne es!
Ende der Ansage.
> Die Sprache von OpenSCAD.
Hat recht. Einfach abwarten, bis jemand OpenSCAD in das GPT-3 einhängt.
Dann braucht Hase überhaupt nicht mehr programmieren lernen. Kann
einfacht sagen "Ein gelber Quader irgendwie einer Perspektivischen
Ansicht ähnlich".
Die Zeiten, in denen wir noch versehen mussten, wie das funktioniert,
gehen zu Ende.
Noch was schrieb:>> Die Sprache von OpenSCAD.>> Hat recht. Einfach abwarten, bis jemand OpenSCAD in das GPT-3 einhängt.> Dann braucht Hase überhaupt nicht mehr programmieren lernen. Kann> einfacht sagen "Ein gelber Quader irgendwie einer Perspektivischen> Ansicht ähnlich".
Warum so kompliziert?
Für zuhause nimmt man Stable Diffusion statt GPT-3. Da sagt man dann
einfach "yellow cube" und dann kommt da ein gelber Würfel raus. Gleich
das erste Bild mal als Anhang.
Sowas hamwa früher in Basic aufm heimcomputer hingezaubert, später dann
nen einfachen raytracer mit realschulmathematik ohne vektoren, zwar lahm
aber funktionierte.
> Da sagt man dann einfach "yellow cube"
Erinnert mich an Kaeptn K.tz und Kommander Sp.ck auf der
US-Airforce-Base:
"Komputer!"
Und nuex passiert. Harharhar.
Markus K. schrieb:> Für zuhause nimmt man Stable Diffusion statt GPT-3. Da sagt man dann> einfach "yellow cube" und dann kommt da ein gelber Würfel raus. Gleich> das erste Bild mal als Anhang.
Hmm, funktioniert bei so einem Würfel erstaunlich gut. Sobald du aber
was machst, wo Menschen mit dabei sind, wird's … sagen wir mal eher
surrealistisch. Insbesondere Gesichter und Hände scheinen nicht gerade
die Stärke der Software zu sein.
Rolf M. schrieb:> Markus K. schrieb:>> Für zuhause nimmt man Stable Diffusion statt GPT-3.
Auf Github schreiben sie "Text-to-image" aber ich sehe nirgendwo den
Text als Bild? Vielleicht bin ich zu alt?
Heinz B. schrieb:> Schauen, welche Sprache auch OpenGL beherrscht, egal ob fest> eingebaut oder als Lib, Modul o.ä.
Um einen einzigen Quader zu zeichnen braucht er kein OpenGL.
Das geht auch per Softwarerendering und damit kann er dann jeden
Prozessor nehmen.
Was er braucht ist eine 2d Ebene in der er reinzeichnen kann und
Mathekenntnisse.
Als Programmiersprache genügt bereits Basic, da er C# kann, sollte er
das nehmen.
Dann muss er eine Funktion schreiben, die ihm Linien zeichnen kann. Wenn
es effizient sein soll, kann er sich den Bresenham Algorithmus ansehen.
Nano schrieb:> Um einen einzigen Quader zu zeichnen braucht er kein OpenGL.
Da hast du wohl recht. Aber wer zeichnet sich schon einen
schnöden Würfel dahin. Als Programmierübung ja. Ich dachte
da eher noch an eine schöne Textur und Drehung, deshalb mein
Vorschlag mit OpenGL.
Heinz B. schrieb:> Nano schrieb:>> Um einen einzigen Quader zu zeichnen braucht er kein OpenGL.>> Da hast du wohl recht. Aber wer zeichnet sich schon einen> schnöden Würfel dahin. Als Programmierübung ja. Ich dachte> da eher noch an eine schöne Textur und Drehung, deshalb mein> Vorschlag mit OpenGL.
Da er Mikrocontroller erwähnt hat, könnte er auch eine Würfel auf einem
kleinen Mikrocontroller und einem einfachen pixelbasierten schwarz Weiß
LCD Display zeichnen wollen, da würde ihn OpenGL in der Auswahl der HW
nur einschränken.
Ein PC bekommt eine Textur + Drehung auch in Software schnell genug hin,
wenn es nur ein einziger Würfel ist. OpenGL wird er erst bei komplexen
Szenen mit > 3000 Vertics benötigen.
Nano schrieb:> Da er Mikrocontroller erwähnt hat, könnte er auch eine Würfel auf einem> kleinen Mikrocontroller und einem einfachen pixelbasierten schwarz Weiß> LCD Display zeichnen wollen, da würde ihn OpenGL in der Auswahl der HW> nur einschränken.
Dann hätte er allerdings im falschen Forum gepostet, da wir hier in
"PC-Programmierung" sind.
> Ein PC bekommt eine Textur + Drehung auch in Software schnell genug hin,> wenn es nur ein einziger Würfel ist.
Klar, aber mit OpenGL ist es halt einfacher.
loeti2 schrieb:> Rolf M. schrieb:>> Markus K. schrieb:>>> Für zuhause nimmt man Stable Diffusion statt GPT-3.>> Auf Github schreiben sie "Text-to-image" aber ich sehe nirgendwo den> Text als Bild? Vielleicht bin ich zu alt?
Ich benutze das da: https://nmkd.itch.io/t2i-gui
Dabei ist mir aufgefallen, dass wenn der GPU-Speicher ausgeht, dann gibt
es keine Fehlermeldung. Er schreibt dann "Loading..." aber er geht nie
zum Generating über. Das war bei anderen GUIs besser gelöst.
Du brauchst natürlich eine geeignete GPU (Nvidia GTX10xx aufwärts, kein
AMD) und darfst die Bilder nicht zu groß machen. Ich habe eine GTX1070
mit 8GB VRAM, damit kann ich maximal Bilder mit 512x512 erzeugen.
Markus K. schrieb:> Ich benutze das da: https://nmkd.itch.io/t2i-gui> Dabei ist mir aufgefallen, dass wenn der GPU-Speicher ausgeht, dann gibt> es keine Fehlermeldung. Er schreibt dann "Loading..." aber er geht nie> zum Generating über. Das war bei anderen GUIs besser gelöst.>> Du brauchst natürlich eine geeignete GPU (Nvidia GTX10xx aufwärts, kein> AMD) und darfst die Bilder nicht zu groß machen. Ich habe eine GTX1070> mit 8GB VRAM, damit kann ich maximal Bilder mit 512x512 erzeugen.
Echt jetzt? Dann taugt die von dir verwendete Scheiße wohl nicht
wirklich etwas. Oder du bist zu blöd, sie richtig zu benutzen.
512x512... Lachhaft. In dieser Größenordnung wurde im letzten
Jahrtausend schon Lara Croft präsentiert. Ohne jegliche 3D-Unterstützung
durch die Hardware... (OK: mit einer Voodoo1 sah's dann deutlich
hübscher aus und ruckelte auch nicht mehr so furchtbar).
Aber, das ist der Punkt: das waren Sachen, die ein Vierteljahrhundet her
sind. Das geht heut doch echt deutlich besser...
c-hater schrieb:> In dieser Größenordnung wurde im letzten> Jahrtausend schon Lara Croft präsentiert.
Ach. Du hast deine Maus in die Hand genommen und reingesprochen:
"Zeichne mir ein Bild von Lara Croft", und dann ist das ohne
3D-Unterstützung einfach so am Bildschirm erschienen?
c-hater schrieb:> Markus K. schrieb:>> Du brauchst natürlich eine geeignete GPU (Nvidia GTX10xx aufwärts, kein>> AMD) und darfst die Bilder nicht zu groß machen. Ich habe eine GTX1070>> mit 8GB VRAM, damit kann ich maximal Bilder mit 512x512 erzeugen.>> Echt jetzt? Dann taugt die von dir verwendete Scheiße wohl nicht> wirklich etwas. Oder du bist zu blöd, sie richtig zu benutzen.
Ich glaube, Du solltest Deine Computer-Allgemeinbildung mal wieder
aktualisieren. Dann wüsstest Du, dass GPT-3 und Stable Diffusion
Neuronale Netze sind.
> 512x512... Lachhaft. In dieser Größenordnung wurde im letzten> Jahrtausend schon Lara Croft präsentiert.
"Lara Croft holding a yellow cube"
Siehe Anhang.
c-hater
> Echt jetzt? Dann taugt die von dir verwendete Scheiße wohl nicht> wirklich etwas. Oder du bist zu blöd, sie richtig zu benutzen.
Markus K
>Ich glaube, Du solltest Deine Computer-Allgemeinbildung mal wieder>aktualisieren. Dann wüsstest Du, dass GPT-3 und Stable Diffusion>Neuronale Netze sind.
Ich glaube, das nützt nichts. Der hat tatsächlich keinen Plan und will
auch keinen kriegen.
Aber, lass uns mal auf die Schwächen dieser KI-Lösung eingehen:
Versuch mal eine Lara Croft, die zwei Würfel auf den Würfelecken
balanciert. Die Würfel sollen eine Kantenlänge von 20cm haben.
Hier noch im Bild der kleine Bruder von Yalu sein Würfel. Den Würfel
habe ich aus Langeweile auf die Schnelle im Reisebus nur mit dem
Smartphone gezeichnet, ganz ohne Werkzeuge und Hilfsmittel.
Er lässt sich sogar während der Fahrt um 90° drehen.
Mit Autocad Inventor kann man einen Würfel zeichnen und rotieren lassen.
https://youtu.be/8U21PSr0kzk
Mit einem Zusatzmodul lässt sich die Rotation in eine MP4 Videosequenz
umwandeln. Interessant wird das erst wenn komplexe Maschinen wie
Hubkolbenmotoren oder Getriebe während der Arbeit, wie auf einem
Drehteller präsentiert werden.
Wer noch das alte Smartphone S7 hat, kann den Quader auch mit der
Drehfunktion stufenlos bis auf eine Stelle hinterm Komma rotieren
lassen. Im Beispiel sind es 22,5° 😃
Die Drehfunktion geht von minus 45° bis plus 45°.
c-hater schrieb:> Scheißegal, das geht prinzipiell mit jeder Programmiersprache. Man muss> halt nur programmieren können.
Ja, mit C auf einem 8-bitter in ASM macht man das mit links in 1 bis 2
Stunden.
Mir war gerade danach, mal einen kleinen Rasterizer in C zu schreiben.
Läuft ohne libs (abgesehen von der c standard library). Speichert ein
Bitmap, grösse und X/Y Rotation ist einstellbar.
Ganz fertig ist er eigentlich noch nicht, (Ich behandle den Fall wenn
die Geometrie teilweise links / rechts nicht ins Bild passt noch nicht,
dass kann zu Dreieckssalat führen), aber um einen gelben Würfel zu
Zeichnen inklusive Beleuchtung reicht es. Es könnte zwar auch
komplexeres machen, ich habe eine komplette rendering Pipeline mit sowas
wie Fragment und Vertex Shader aufgebaut, ist recht einfach erweiterbar
& ziemlich flexibel.
Ich habe meinen Rasterizer nun noch auf Github hochgeladen.
https://github.com/Daniel-Abrecht/dparaster
Dabei habe ich es noch in mehrere Dateien aufgeteilt, und den Bug den
ich oben beschrieben habe noch behoben. Irgendwo habe ich aber immer
noch ein zwei Bugs / edge-case die ich noch am suchen bin.
Ich habe auch noch ein Skript erstellt, das mit gst-launch den Würfel
drehend anzeigen, oder als Video speichern kann. Einfach "make demo"
oder "make demo-video" machen, dann erstellt es die. Beispielvideo im
Anhang.
Ich habe den letzten Fehler im Rasterizer nun auch noch gefunden. Und
noch das Video generierende Script erweitert, das kann jetzt mit ffmpeg
geloopte APNG Animationen mit Transparenz generieren. Die sind anders
als die Videos verlustfrei.
Daniel A. schrieb:> Und noch das Video generierende Script erweitert,
Klasse! Der Würfel rotiert nach dem Anklicken sogar auf dem Smartphone.
Wenn ich ihn mir aber runterlade und dann anklicke, dann rotiert er
leider nicht mehr. 😐
Das Bildanzeigeprogramm muss halt animierte PNGs unterstützen. Browser
können das, diverse Videoplayer vermutlich auch, aber viele
Bildprogramme kommen damit nicht klar. Das selbe Problem hat man auch
mit vielen anderen Bildformaten (besonders bei SVG finde ich das
schade).
Rolf M. schrieb:> Markus K. schrieb:>> Für zuhause nimmt man Stable Diffusion statt GPT-3. Da sagt man dann>> einfach "yellow cube" und dann kommt da ein gelber Würfel raus. Gleich>> das erste Bild mal als Anhang.>> Hmm, funktioniert bei so einem Würfel erstaunlich gut. Sobald du aber> was machst, wo Menschen mit dabei sind, wird's … sagen wir mal eher> surrealistisch. Insbesondere Gesichter und Hände scheinen nicht gerade> die Stärke der Software zu sein.
also das mit den Gesichtern geht durchaus.
Bei Schrift versagt es.
Oder es gibt ein Kommando das ich noch nicht kenne
Markus K. schrieb:> Warum so kompliziert?> Für zuhause nimmt man Stable Diffusion statt GPT-3. Da sagt man dann> einfach "yellow cube" und dann kommt da ein gelber Würfel raus. Gleich> das erste Bild mal als Anhang.
Wenn ich "yellow cube" eingebe, dann kommt bei mir plötzlich eine
Fehlermeldung!
Wenn ich aber "gelber Würfel" eingebe, dann kommt ein leckerer
geschmackvoll angerichteter Teller mit gelber Grütze und Schokopralinen
raus. 😄
Das ist kein Witz, hier die Beweisfotos.
●DesIntegrator ●. schrieb:> also das mit den Gesichtern geht durchaus.
Bei der Eingabe von Thomas Gottschalk wird zwar eine Art Thomas
Gottschalk dargestellt (Bild), aber Michael Jackson sieht aus wie ein
Monster.
●DesIntegrator ●. schrieb:> Bei Schrift versagt es.
Die Schrift wird vom System extra verfremdet, damit keine Markennamen
entstehen.
Interessante Gesichter und Konstruktionen entstehen, wenn man folgende
Namen eingibt:
Helmut Schmidt, Mona Lisa, Kandinsky, Angela Merkel, Donald Trump, Kelly
Family, Beatles, Günther Jauch, Linda Zervakis, Katze, Krokodil,
Giraffe, Perpetuum Mobile, usw.
Bei der Eingabe von "Perpetuum Mobile" könnte man meinen, dass die KI
eine perfekte Konstruktion mit nahezu 100% Wirkungsgrad oder mehr
konstruiert, aber Pustekuchen, das Ergebnis kann höchstens als Kunstwerk
akzeptiert werden.
Bei der Eingabe von "Elefant" werden kopflose Wesen geschaffen. Offenbar
kennt das Programm noch keinen Elefant.
Michael M. schrieb:> Interessante Gesichter und Konstruktionen entstehen, wenn man folgende> Namen eingibt:
Hast du mal Misch/Doppel-Namen versucht?
"Angela Trump"?
"Mona-Helmut Jauch-Kadinsky"?
●DesIntegrator ●. schrieb:> Quader sind doch echt langweilig !!!
Ja, deine Bilder sind echt gut geworden. Du hast auch die richtigen
Wörter kreativ miteinander kombiniert. Bei mir sind auch zufällig einige
6 äugige Monster mit spitzen Zähnen entstanden. Ich trau mich gar nicht,
die hier zu zeigen. Was soll man dann bloß von mir denken? 😬
Εrnst B. schrieb:> Hast du mal Misch/Doppel-Namen versucht?> "Angela Trump"?> "Mona-Helmut Jauch-Kadinsky"?
Die Kombination von Kandinsky und Jauch sieht weiterhin aus wie
Kandinsky.
Εrnst B. schrieb:> Hier hatte die KI wohl eine falsche Angela im Sinne...
Bei mir hat's zwar geklappt, aber es werden einfach beide Personen
nebeneinander dargestellt.
Die Kombi aus Adolf und Dick und Doof sieht eher ängstlich aus.
Je ausführlicher und genauer man die gesuchten Dinge beschreibt, um so
besser wird das Ergebnis:
Ohne Mund kann "Hello Kitty" die leckere Mahlzeit allerdings nicht
verzehren. 🙀
Es ist noch zu beachten, das ein Possibility Space eines solchen GAN
nicht das selbe wie ein 3D Space ist. Man kann damit also keine Videos
von drehenden Würfeln machen.
Michael M. schrieb:> Ohne Mund kann "Hello Kitty" die leckere Mahlzeit allerdings nicht> verzehren. 🙀
ist das nicht eine Art Stilmittel im Zeichentrick,
den Mund erst dann erscheinen zu lassen,
wenn die Figur zu sprechen oder wie hier zu essen anfängt?
In sofern: Egal.
bei technischen Dingen schon interessanter.
Wieso leuchtet das Glühobst ohne Fassung,
wenn man nur
"incandescent lightbulb"
eingibt?
:-]
Hase schrieb:> Welche Sprache ist dazu die richtige?
Wenn das eine richtige animation werden soll müsste JavaFX das
einfachste sein.. damit kann man den sogar animieren, beleuchten etc.
Wenn es ein hässlicher/normaler Würfel sein soll geht jede Sprache ohne
große Auswahl, zum Beispiel sogar Python etc..
Dann Sprache aussuchen und loslegen..