Drawing3D - Draw-Befehle für 3D-Szenen

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Drawing3D - Draw-Befehle für 3D-Szenen

Beitrag von STARGÅTE »

Dieses Include ist eine Erweiterung der Drawing-Library um Linien, Dreicke, Flächen oder ganze Körper im dreidimensionalen zu zeichnen. Das ganze basiert auf reinen Drawing- und CPU-Befehlen, sodass keine zusätzlichen DLLs oder Anforderungen an die Grafikkarte nötig sind. Das Include soll nicht als 3D-Engine benutzt werden (dafür ist es zu langsam), sondern dient zum Rendern von kleinen Szenen.

Drawing3D.zip
Enthält das Inlcude, eine Demo und fünf Beispiele.

Allgemein kann ich noch dazu sagen:
  • Mit StartDrawing3D() : StopDrawing3D() wird die Umgebung geöffnet.
  • Als Normal ist alles so eingestellt, dass die Angaben in den Positionen echte Pixel sind (von Breite und Höhe)
  • Mit Drawing3DMode() kann ich #Drawing3D_Outline oder #Drawing3D_Default auswählen
  • Drawing3DPosition() und Drawing3DRotation() ändern Position und Rotation der Szene
  • Alle Farbangaben sind immer in 32-Bit anzugeben ($FF00FF00 für Grün)
  • Drawing3DBackground() Füllt die Umgebung mit der angegebenen Farbe. (wenn der Alphawert 0 ist, ist der Hintergrund echt Transparent, nützlich bei 32-Bit-Images)
  • Drawing3DLight() setzt ein Licht (mit der Angabe woher es kommt) in die Szene
  • DrawPoint3D(), DrawLine3D() und DrawTriangle3D() zeichnet ein Punkt, Linie oder Dreick (jeweils mit Vertexfarben)
  • bei DrawPlane3D(), DrawImage3D() und DrawBox3D() wird nur Position, Größe und Rotation angegeben.
  • CreateImage3D() erstellt ein Image3D aus dem Image
Hier ein Beispiel einer Drawing3D-Szene mit transparentem Hintergrund.
Bild
Zuletzt geändert von STARGÅTE am 18.01.2022 23:47, insgesamt 6-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Drawing3D - unfertiger Code für Drawing-Befehle im 3D-Ra

Beitrag von c4s »

Sieht nützlich und gut aus - Danke.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Max_der_Held
Beiträge: 594
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: Drawing3D - unfertiger Code für Drawing-Befehle im 3D-Ra

Beitrag von Max_der_Held »

wow, aber echt he :)
super sache stargate :) daraus lässt sich was machen (meiner meinung nach pbosl character)
lg
walker
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: Drawing3D - unfertiger Code für Drawing-Befehle im 3D-Ra

Beitrag von Josef Sniatecki »

Echt cool
Dickes Lob :allright:

Wie ich sehe, werden die primitiven Körper (Kugeln und Quader) hauptsächlich durch Line3D gezeichnet. Das schärfste wären nun 3D Bezier-Kurven, da ich gesehen habe, dass die Grüne Wellenform aus deinem Beispiel ab einer bestimmten Entfernung nur aus Punkten besteht.

Ansonsten ist diese Befehlssammlung gut fürs Zeichnen von kleinen 3D-Veranschaulichungen. :)
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Drawing3D - unfertiger Code für Drawing-Befehle im 3D-Ra

Beitrag von TomS »

Danke, du blöder Bot. Letzte Woche hab ich mit so was angefangen und dabei liegt hier schon was seit Monaten rum. :lol:
Das Beispiel schaut nett aus, STARGÅTE :allright:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Drawing3D - Demo für das kommende Include

Beitrag von STARGÅTE »

Tachchen,

nach langer Zeit hab ich mich mal wieder an meinen alten Code gesetzt und Drawing3D ein Update verpasst.
Das Include ist noch nicht fertig, aber da ich gerade "Pause" mache, möchte ich euch trotzdem mal eine Demo zukommen lassen:
BildBildBild
  • Im neuen Include ist es nun möglich auch Flächen darzustellen zu lassen, (Triangle3D, Plane3D).
  • Drawing3D besitzt nun einen Z-Buffer der auch bei transparenten Pixel für das richtige Alphablending sorgt.
  • Es können Lichter platziert werden (aktuell aber nur aus welcher Richtung sie strahlen)
Mir ist durchaus bewusst, das eine Grafikkarte sowas im Schlaf erledigen würde. Aber es war nun mal mein Ziel das ganze auf Softwareebene zu schreiben nur mit Drawingbefehlen!

Hier könnt ihr euch die Demo angucken (schon mit unfertigem Include):
Drawing3D - Demo
Mit gedrückter Maus, könnt ihr die Ansicht drehen. Bitte wirklich ohne Debugger starten, ansonsten ist der Code sehr sehr langsam.
Der Code (vorallem das Zeichnen der Dreiecke) ist auch noch nicht optimiert (soweit das auf CPU-Ebene möglich wäre), daran arbeite ich aber. Außerdem soll es noch eine Art Container geben (Cluster3D) in den man dann "reinzeichnen" kann, sodass Sachen Gruppiert werden können.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Drawing3D - Demo für das kommende Include

Beitrag von c4s »

Klasse! Bin schon gespannt auf die fertige Version. :allright:

Edit:
Ich denke aber, dass den Befehlen einen eigenen Präfix oder deutlichere Namen geben solltest, denn momentan ist die Verwechslungsgefahr mit den PB-internen, "echten" 3D-Befehlen sehr groß...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Drawing3D - Demo für das kommende Include

Beitrag von STARGÅTE »

Jo hab ich schon überlegt, aber die DrawingBefehle sind ja auch nur schlicht und einfach Line, Box, usw. statt DrawLine, DrawBox oder so ^^.
Aber ich kann es gerne zu DrawTriangle3D machen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Drawing3D - Demo für das kommende Include

Beitrag von c4s »

Oder einfach überall nur "Draw3D"?!
- StartDraw3D(), StopDraw3D()
- Draw3DFieldOfVision(), Draw3DCameraPosition() etc.
- PlotDraw3D(), LineDraw3D() etc.

... oder "3DD_" vorhängen:
- 3DD_Start(), 3DD_Stop()
- 3DD_FieldOfVision(), 3DD_CameraPosition() etc.
- 3DD_Plot(), 3DD_Line() etc.

Ja, ist schwierig da etwas gutes zu finden. :wink:

Mir persönlich würde wohl der Präfix am besten gefallen. Aber es ist natürlich vollkommen deine Entscheidung, schließlich sind Geschmäcker bekanntlich verschieden...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Drawing3D - Demo für das kommende Include

Beitrag von ts-soft »

c4s hat geschrieben:... oder "3DD_" vorhängen:
- 3DD_Start(), 3DD_Stop()
- 3DD_FieldOfVision(), 3DD_CameraPosition() etc.
- 3DD_Plot(), 3DD_Line() etc
Da bekommst Du aber Ärger mit den Syntaxregeln von Procedure- und Variablennamen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten