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:

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

Beitrag von STARGÅTE »

Der Koordinatenursprung ist bei Drawing3D immer in der Mitte und außerdem (x,y,z)->(right,top,front) (also wie bei OGRE)
Anders als bei OGRE ist nur, dass Größe und Längeneinheiten immer in echten Pixeln sind, solange sich die Objkte in der z=0 Ebene befinden.

Hier die Codezeile mit dem Offset und Y-Flip

Code: Alles auswählen

DrawImage3D(#Image3D, X-OutputWidth()/2,-Y+OutputHeight()/2, 0, ImageWidth(#Image), ImageHeight(#Image), 0, 0, Random(60)-30)
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
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

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

Beitrag von silbersurfer »

@alter Mann
@Silbersurfer:
Ich vergesse meist, das auch Programmierer Mathe nicht mögen deshalb hier mal den Versuch einer Erklärung.
So will Ich das mal nicht ganz sagen, nur die schreibweise ist, wenn man kein Mathe Ass ist etwas schwer zu lesen :lol:
aber Danke damit kann Ich was anfangen, werde es mal alles austesten :allright:

@Stargate
Edit: Da es scheinbar interesse gibt, werde ich wohl das Projekt wieder aufnehmen.
Ja das wäre Prima es ist eine schöne saubere lib, Super Arbeit Stargate :allright: :allright: :allright:
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

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

Beitrag von silbersurfer »

Hallo Stargate,

Ich habe noch einen kleinen Bug gefunden.
Und zwar, wenn man ein Image3D objekt Scaliert (vergrößert). Dann kommt Array-Index außerhalb der zulässigen Grenzen
Schau dir dazu dein Demo an, und vergrößere mal dein Image3D außerhalb des Fensterbereiches dann kommt der Fehler

gruss Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag von STARGÅTE »

silbersurfer hat geschrieben:Dann kommt Array-Index außerhalb der zulässigen GrenzenSchau dir dazu dein Demo an, und vergrößere mal dein Image3D außerhalb des Fensterbereiches dann kommt der Fehler
Hm, komisch, kann ich weder in dem hier angebotenen Incldue noch in meinem neuen Include feststellen.
Und ja ich habe den Debugger angeschatet...
Und "theoretisch" sind auch in beiden möglichen Bereichen abfragen drin.

Kannst du mal deine Fall hochladen und/oder mir schicken ?
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
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

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

Beitrag von silbersurfer »

Sorry Stargate,

Nach dem du vergrößert hast mußt du nochmal Rotieren. Danach kommt erst der Fehlen !

an dieser Stelle von deinem Code

Code: Alles auswählen

Procedure.i Drawing3D_ImageColor(*Color.Drawing3D_Color, X.f, Y.f)
	Protected *Image3D.Drawing3D_Image = Drawing3DInclude\CurrentImage3D
	Protected FX.f = Mod(X**Image3D\Width+0.5, 1.0)
	Protected FY.f = Mod(Y**Image3D\Height+0.5, 1.0)
	Protected PixelX0.i = X * *Image3D\Width  - 0.5 - FX
	Protected PixelY0.i = Y * *Image3D\Height - 0.5 - FY
	Protected PixelX1.i = X * *Image3D\Width  + 0.5 - FX
	Protected PixelY1.i = Y * *Image3D\Height + 0.5 - FY
	If PixelX0 < 0 : PixelX0 = 0 : EndIf
	If PixelY0 < 0 : PixelY0 = 0 : EndIf
	If PixelX1 > *Image3D\Width-1 : PixelX1 = *Image3D\Width-1 : EndIf
	If PixelY1 > *Image3D\Height-1 : PixelY1 = *Image3D\Height-1 : EndIf
	Protected *C00.Drawing3D_Color = *Image3D\Pixel(PixelX0, PixelY0) ;<<<<<<<<<<<<<<< Hier kommt der Fehler
	Protected *C10.Drawing3D_Color = *Image3D\Pixel(PixelX1, PixelY0)
	Protected *C01.Drawing3D_Color = *Image3D\Pixel(PixelX0, PixelY1)
	Protected *C11.Drawing3D_Color = *Image3D\Pixel(PixelX1, PixelY1)
	*Color\Alpha = *C00\Alpha*(1-FX)*(1-FY) + *C10\Alpha*(FX)*(1-FY) + *C01\Alpha*(1-FX)*(FY) + *C11\Alpha*(FX)*(FY)
	*Color\Red   = *C00\Red  *(1-FX)*(1-FY) + *C10\Red  *(FX)*(1-FY) + *C01\Red  *(1-FX)*(FY) + *C11\Red  *(FX)*(FY)
	*Color\Green = *C00\Green*(1-FX)*(1-FY) + *C10\Green*(FX)*(1-FY) + *C01\Green*(1-FX)*(FY) + *C11\Green*(FX)*(FY)
	*Color\Blue  = *C00\Blue *(1-FX)*(1-FY) + *C10\Blue *(FX)*(1-FY) + *C01\Blue *(1-FX)*(FY) + *C11\Blue *(FX)*(FY)
EndProcedure
Gruss Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag von STARGÅTE »

Hm ist vermutlich bereits in einer neuen Version gefixt, da ich dort alle Koordinaten auf "InRange" prüfe.

PS: Mit Debugger ist das Include kaum zu verweden, weils einfach zu langsam ist.
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
Benutzeravatar
kernadec
Beiträge: 25
Registriert: 05.07.2009 17:51

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

Beitrag von kernadec »

Hallo STARGATE

Vielen Dank für Ihre Arbeit
Mit Drawing3D.pbi gute Arbeit aber jetzt mit Drawing3D_Object-Struktur
dynamische Elemente Fehler auftritt mit Purebasic-530
mein PC XP 32 sp3
Herzliche Grüße

Code: Alles auswählen

Structure Drawing3D_Object
	StructureUnion
		Type.i
		Cluster.Drawing3D_Cluster   ; ERROR Structure Dynamic nein autorisierte Structure union
		Line.Drawing3D_Line
		Triangle.Drawing3D_Triangle
	EndStructureUnion
EndStructure
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag von STARGÅTE »

Du kannst diese Struktur einfach löschen, sie wird für die Ausführung des Codes nicht benötigt.
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
Benutzeravatar
kernadec
Beiträge: 25
Registriert: 05.07.2009 17:51

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

Beitrag von kernadec »

bonsoir STARGATE
Hoppla : jetzt den Code ohne diese Struktur funktioniert
Ich hatte nicht daran gedacht, zu versuchen! :roll:
Vielen Dank
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

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

Beitrag von derschutzhund »

Hallo STARGATE,

zunächst mal vielen Dank für dieses tolle include!
War genau was ich für meine kleine Anwendung brauchte.
Kannst du mir sagen wie man einen Farbverlauf von rot bei 220 bis grün bei 180 hinbekommt?

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Antworten