Der Drehpunkt liegt im Zentrum der Würfel.
Nun möchte ich den Drehpunkt verlagern.
Welche Werte in der Datazeile müssen da verschoben werden?
Gruss
Code: Alles auswählen
Dim Node(5)
Global.f KeyX, KeyZ
Global x1.f,y1.f,dx.f,dy.f,winkel.f
#camera=2
InitEngine3D()
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
hWnd = OpenWindow(0,0,0,800,600,"Nodes",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
OpenWindowedScreen(hWnd,220,10,500,400,0,0,0)
CreateMaterial(0, LoadTexture(0, "gruen.jpg"))
CreateMaterial(1, LoadTexture(1, "blau.jpg"))
CreateMaterial(2, LoadTexture(2, "rot.jpg"))
CreateMaterial(3, LoadTexture(3, "gelb.jpg"))
Restore NumericalData
Read.l Vert
Read.l Tria
Read.l Max
CreateMesh(0, vert)
SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
SetMeshData(0, #PB_Mesh_Face, ?Triangle, Tria); 1)
CreateCamera(#Camera,0,0,100,100)
CameraLocate(#Camera,0,200,300)
CameraLookAt(#Camera,0,0,0)
CreateEntity(20,MeshID(0),MaterialID(0),0,-45,0)
ScaleEntity(20,300,1,300)
CreateLight(0,RGB(255,255,255),0,500,0)
AmbientColor(RGB(200,200,200))
Node(0) = CreateNode(#PB_Any,0,0,0)
CreateEntity(0,MeshID(0),MaterialID(1))
ScaleEntity(0,25,5,12)
AttachNodeObject(Node(0),EntityID(0),#PB_Node_Entity)
;-------------------------------
Node(1) = CreateNode(#PB_Any,0,10,0)
AttachNodeObject(Node(0),NodeID(Node(1)),#PB_Node_Entity)
CreateEntity(1,MeshID(0),MaterialID(2))
ScaleEntity(1,8,8,8)
AttachNodeObject(Node(1),EntityID(1),#PB_Node_Entity)
;---------------------------------
Node(2) = CreateNode(#PB_Any,0,33,0)
AttachNodeObject(Node(1),NodeID(Node(2)),#PB_Node_Entity)
CreateEntity(2,MeshID(0),MaterialID(3))
ScaleEntity(2,8,8,8)
AttachNodeObject(Node(2),EntityID(2),#PB_Node_Entity)
;----------------------------------
Node(3) = CreateNode(#PB_Any,0,33,0)
AttachNodeObject(Node(2),NodeID(Node(3)),#PB_Node_Entity)
CreateEntity(3,MeshID(0),MaterialID(1))
ScaleEntity(3,8,8,8)
AttachNodeObject(Node(3),EntityID(3),#PB_Node_Entity)
Repeat
Event = WaitWindowEvent(1)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_R)
RotateNode(Node(1),1,0,0,#PB_Relative)
ElseIf KeyboardPushed(#PB_Key_T)
RotateNode(Node(1),-1,0,0,#PB_Relative)
EndIf
If KeyboardPushed(#PB_Key_F)
RotateNode(Node(2),1,0,0,#PB_Relative)
ElseIf KeyboardPushed(#PB_Key_G)
RotateNode(Node(2),-1,0,0,#PB_Relative)
EndIf
If KeyboardPushed(#PB_Key_V)
RotateNode(Node(3),1,0,0,#PB_Relative)
ElseIf KeyboardPushed(#PB_Key_B)
RotateNode(Node(3),-1,0,0,#PB_Relative)
EndIf
If KeyboardPushed(#PB_Key_E)
winkel=winkel-1
If winkel<0
winkel+360
EndIf
ElseIf KeyboardPushed(#PB_Key_Q)
winkel=winkel+1
If winkel>360
winkel-360
EndIf
EndIf
If KeyboardPushed(#PB_Key_W)
y1=Sin(-winkel/180*#PI)*1
x1=Cos(-winkel/180*#PI)*1
dx+x1
dy+y1
ElseIf KeyboardPushed(#PB_Key_S)
y1=Sin(-winkel/180*#PI)*1
x1=Cos(-winkel/180*#PI)*1
dx-x1
dy-y1
EndIf
RotateNode(Node(0), 0, winkel, 0 ,#PB_Absolute)
NodeLocate(Node(0), dx, 0, dy)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit=1
End
DataSection
StringSect:
Data.s ""
NumericalData:
Data.l 24,12,2
Vertice: ;x,y,z,nx,ny,nz,col,u,v = Vertex + Normal + Col + UV Koordinaten
Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
Triangle: ; Vertice x,y,z verbinden/Create Triangle
Data.w 2,0,3
Data.w 1,0,2
Data.w 6,4,7
Data.w 5,4,6
Data.w 10,8,11
Data.w 9,8,10
Data.w 14,12,15
Data.w 13,12,14
Data.w 18,16,19
Data.w 17,16,18
Data.w 22,20,23
Data.w 21,20,22
EndDataSection