Sprite3D um die y Achse drehen
Sprite3D um die y Achse drehen
Hi,
also mit RotateSprite3D(#Sprite3D, 60, 0) kann ich das Sprite auf der X Achse drehen.
Gibt es eine Möglichkeit das Sprite auf der Y-Achse zu drehen?
Ich möchte ein Film Archiv schreiben welches das Cover in der Mitte Normal gerade anzeigt und rechts und links daneben die Filme leicht schräg zeigt.
Gruss
Schoppy
also mit RotateSprite3D(#Sprite3D, 60, 0) kann ich das Sprite auf der X Achse drehen.
Gibt es eine Möglichkeit das Sprite auf der Y-Achse zu drehen?
Ich möchte ein Film Archiv schreiben welches das Cover in der Mitte Normal gerade anzeigt und rechts und links daneben die Filme leicht schräg zeigt.
Gruss
Schoppy
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Sprite3D um die y Achse drehen
schau dir mal TransformSprite3D an.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Re: Sprite3D um die y Achse drehen
also mit RotateSprite3D(#Sprite3D, 60, 0) kann ich das Sprite auf der X Achse drehen.

DIe x-Achse geht von Links nach Rechts auf dem Bildschirm.
RotateSprite3D dreht das Bild um den Mittelpunkt des Sprites, also um eine gedachte z-Achse ...
Wenn du nun wirklich um die Y-Achse drehen willst dann solltest du wie Kaeru Gaman schrieb mit
TransformSprite3D arbeiten.
Einfachste Variante wäre, die Eckpunkte (x,y) so zu wähel als wäre es ein normales Sprite.
Dann musst du n bisschen mit den Werten spielen bis das gewünschte ergebnis kommt, z-Parameter nicht vergessen damit die Textur nicht verzerrt.
Falls du es aber richtig machen willst, musst du dir die RotationsMatrizen holen, und die Raumpunkte umrechnen in 2D.
Dazu gehört dann auch n Art Kamera mit öffnungswinkel usw.
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Sprite3D um die y Achse drehen
also wenns einfach gehen soll kann man das auch mit sinus und kosinus lösen



Re: Sprite3D um die y Achse drehen
Ich sitze vor dem gleichen Problem. Auch ich möchte das Sprite um die y-Achse drehen, um so eine 3-Dimensionalität zu erhalten. Ich habe mich an TransformSprite3d versucht, aber ich scheitere an dem Befehl. Die Hilfe ist keine Hilfe. Man soll einen z-Parameter angeben. Aber nach welchem Kriterium? Wie wird dieser errechnet? Gibt es irgendwo ein Tutorial oder nähere Informationen zu dem Befehl?
(Win 11 64-bit, PB 6.04 und 6.10)
-
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Re: Sprite3D um die y Achse drehen
nimm 3d und ogre, da kannste eine fläche herstellen und kannst durch verschiebung der koordinaten auch den drehpunk bestimmen.
für "schiene.png" setzt ein eigenes bild ein.
schau dir ogre an, da kannst auch transparente flächen machen.
gruss
für "schiene.png" setzt ein eigenes bild ein.
schau dir ogre an, da kannst auch transparente flächen machen.
gruss
Code: Alles auswählen
Global Dim spr.l(150),zz.l
InitEngine3D()
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,640,480,"3D Mesh Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),200,10,400,400,0,0,0)
Add3DArchive("Data", #PB_3DArchive_FileSystem)
For zz=0 To 2
CreateMesh(zz,10)
SetMeshData(zz, #PB_Mesh_Vertex|#PB_Mesh_UVCoordinate, ?Ecken, 4)
SetMeshData(zz, #PB_Mesh_Face, ?Viereck, 4)
CreateMaterial(0, LoadTexture(0,"schiene.png"))
CreateEntity(zz, MeshID(zz), MaterialID(0))
Next
colorlight = 0
If colorlight = 0
CreateLight(0, RGB(255,255,255), 100.0, 0, 0) ; White Light
Else
CreateLight(0, RGB(0,0,255), 100.0, 0, 0) ; Blue Light
CreateLight(1, RGB(255,0,0), -100.0, 0, 0) ; Red Light
CreateLight(2, RGB(255,255,0), 0.0, 100, 0) ; Yellow Light
EndIf
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,50)
CameraBackColor(0, RGB(255,255,255))
Repeat
ExamineKeyboard()
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
rot=1
RotateEntity(0,0,0,rot*0.1,#PB_Relative)
RotateEntity(1,0,rot,rot*0.3,#PB_Relative)
RotateEntity(2,rot,0,rot*0.5,#PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit
End
DataSection
Ecken:
Data.f -10, 0, 0 ; Ecke 0 lu
Data.f 0,1
Data.f 10, 0, 0 ; Ecke 1 ru
Data.f 1,1
Data.f 10, 20, 0 ; Ecke 2 ro
Data.f 1,0
Data.f -10, 20, 0 ; Ecke 3 lo
Data.f 0,0
Viereck:
Data.w 0, 1, 2 ; Dreieck 1 besteht aus den Ecken 0, 1 und 2
Data.w 2, 3, 0 ; Dreieck 2 besteht aus den Ecken 2, 3 und 0
; = 1 Viereck Vorderseite
Data.w 0, 3, 2 ; Dreieck 1 besteht aus den Ecken 0, 3 und 2
Data.w 2, 1, 0 ; Dreieck 2 besteht aus den Ecken 2, 1 und 0
; = 1 Viereck Rueckseite
EndDataSection
Re: Sprite3D um die y Achse drehen
Der Tipp ist nett gemeint, aber nicht praktikabel. Nur, um eine Karte mit einer Drehung darzustellen lohnt es sich wohl kaum, eine komplette 3D-Enginge einzubinden. Außerdem ist es mit TransformSprite3D möglich. Die Frage ist nur: Wie?
(Win 11 64-bit, PB 6.04 und 6.10)
Re: Sprite3D um die y Achse drehen
Hier mein Beispiel aus dem Englischen Forum:
http://www.purebasic.fr/english/viewtop ... 66#p333066
http://www.purebasic.fr/english/viewtop ... 66#p333066
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Sprite3D um die y Achse drehen
Ja! Endlich! Das ist es! Schade, dass das Beispiel nicht kommentiert ist. Ich werde mal versuchen, es nachzuvollziehen.
(Win 11 64-bit, PB 6.04 und 6.10)
Re: Sprite3D um die y Achse drehen
Bei dem Beispiel fällt mir auf: Die recht Fläche scheint ein wenig um den Mittelpunkt zu "eiern". Woran liegt es und kann man es umgehen?
(Win 11 64-bit, PB 6.04 und 6.10)