Einfachen 3D Quader zeichen

Gast #7186781
Lesenswert?

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
Gast #7186809
Lesenswert?

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...
Gast #7186883
Lesenswert?

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.
Gast #7186940
Lesenswert?

> 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.
#7187136
Lesenswert?

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.
#7188512
Lesenswert?

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.
Gast #7189270
Lesenswert?

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.
Gast #7189289
Lesenswert?

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.
#7189357
Lesenswert?

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.
#7189451
Lesenswert?

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.
Gast #7189504
Lesenswert?

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...
#7189607
Lesenswert?

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.
Gast #7189803
Lesenswert?

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.
Moderator #7190046
Lesenswert?

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.
Angehängte Dateien:
(Firma: Autotronic) #7190076
Lesenswert?

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.
Angehängte Dateien:
#7193359
Lesenswert?

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.
Angehängte Dateien:
#7198348
Lesenswert?

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.
Angehängte Dateien:
Gast #7199396
Lesenswert?

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).
(Firma: FULL PALATINSK) Persönliche Seite #7199576
Lesenswert?

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
(Firma: Autotronic) #7199645
Lesenswert?

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.
Angehängte Dateien:
(Firma: Autotronic) #7199674
Lesenswert?

●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.
Angehängte Dateien:
(Firma: Autotronic) #7199692
Lesenswert?

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.
Angehängte Dateien:
(Firma: Autotronic) #7199719
Lesenswert?

●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? 😬
(Firma: Autotronic) #7199770
Lesenswert?

Ε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.
Angehängte Dateien:
(Firma: FULL PALATINSK) Persönliche Seite #7200583
Lesenswert?

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?

:-]
Angehängte Dateien:
Gast #7200730
Lesenswert?

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..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren