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
aber Danke damit kann Ich was anfangen, werde es mal alles austesten
@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

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