Seite 5 von 8

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

Verfasst: 22.08.2014 21:06
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)

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

Verfasst: 23.08.2014 20:08
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:

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

Verfasst: 24.08.2014 11:09
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

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

Verfasst: 24.08.2014 12:05
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 ?

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

Verfasst: 24.08.2014 15:35
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

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

Verfasst: 24.08.2014 17:24
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.

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

Verfasst: 24.10.2014 10:15
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

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

Verfasst: 24.10.2014 19:30
von STARGÅTE
Du kannst diese Struktur einfach löschen, sie wird für die Ausführung des Codes nicht benötigt.

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

Verfasst: 24.10.2014 22:14
von kernadec
bonsoir STARGATE
Hoppla : jetzt den Code ohne diese Struktur funktioniert
Ich hatte nicht daran gedacht, zu versuchen! :roll:
Vielen Dank

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

Verfasst: 03.11.2014 20:16
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