Drehpunkt verlagern
Verfasst: 02.10.2010 11:31
Hallo, ich habe hier 4 Würfel als Node hintereinander, die man unabhängig drehen kann (node).
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
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