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: > Welche Sprache ist dazu die richtige? Die Sprache von OpenSCAD. quader.scad:
1 | cube([5, 4, 3]); |
Das ist alles.
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.
Schauen, welche Sprache auch OpenGL beherrscht, egal ob fest eingebaut oder als Lib, Modul o.ä. Hier was zum Spielen : https://www.paules-pc-forum.de/forum/thread/145502-die-vollversion-von-oglbasic-1-0-ist-ab-sofort-freeware/?postID=900150&highlight=oglbasic#post900150
> 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.
Hase schrieb: > vorab ich habe bis jetzt nur Mikrocontroller [...] programmiert. Arduino? Dann wäre processing vielleicht was für dich. https://processing.org/tutorials/p3d
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.
Ich hab meine Wuerfel in "C" rotieren lassen. Allerdings wusste ich schon was eine Transformationsmatrix ist. Die Jugend wird halt immer bloeder...
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.
Eine weitere einfache Lösung in Python, die ohne Grafikbibliothek auskommt und leicht auf praktisch jede andere Programmiersprache portierbar ist:
1 | print(r""" |
2 | o----o |
3 | / \ \ |
4 | / \ \ |
5 | / o----o |
6 | o / / |
7 | \ / / |
8 | \ / / |
9 | o----o |
10 | """) |
Im Anhang noch eine Lösung, bei der die Dimensionen des Quaders frei wählbar sind.
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°.
:
Bearbeitet durch User
Da kann man mal sehen was eine unpräzise Aufgabe für unterschiedliche richtige Ergebnisse erzielen kann, da ist ja fast alles dabei.
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.
:
Bearbeitet durch User
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
:
Bearbeitet durch User
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.
mit Sci-fi und Steampunk gibts auch nettes dann Monster, Zombies :D Quader sind doch echt langweilig !!!
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.
●DesIntegrator ●. schrieb: > Günther Jauch? Ja, tatsächlich. Durch eine korrekte Wortwahl klappt's dann sogar auch bei mir mit dem gelben 3D Würfel. ⚂
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? :-]
:
Bearbeitet durch User
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..
mir wurde grad ein Bild ausgespuckt, bei dem ich irgendwie an das Wort Forentroll denken musste
Vielleicht ist das ja was: CadQuery: 3D-Objekte programmieren in Python
1 | Mit CadQuery programmiert man 3D-Objekte für CAD, CNC und 3D-Druck in Python.. |
https://www.heise.de/news/CadQuery-3D-Objekte-programmieren-in-Python-7286483.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.