Dieses Fenster möchte ich copieren und daneben anzeigen, der 3d-Körper sollte auch also in diesem Fenster die Bewegung zeigen.
Wie geht so etwas?
mfg
Code: Alles auswählen
#CameraSpeed=10
#EntitySpeed=4
#Camera=0
Dim entity(5, 1)
Dim Node(5)
Define.f KeyX,KeyY,MouseX,MouseY
InitEngine3D()
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
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)
EnableWorldPhysics(#True)
EnableWorldCollisions(#True)
CreateMaterial(0, LoadTexture(0, "gruen.jpg"))
CreateMaterial(1, LoadTexture(1, "hintergr.jpg"))
CreateMaterial(2, LoadTexture(2, "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)
CreateMesh(1, vert)
SetMeshData(1, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
SetMeshData(1, #PB_Mesh_Face, ?Triangle, Tria); 1)
CreateMesh(2, vert)
SetMeshData(2, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
SetMeshData(2, #PB_Mesh_Face, ?Triangle, Tria); 1)
CreateCamera(#Camera,0,0,100,100)
CameraLocate(#Camera,0,200,300)
CameraLookAt(#Camera,0,0,0)
CreateLight(0,RGB(255,255,255),0,500,0)
AmbientColor(RGB(200,200,200))
Floor=CreateEntity(#PB_Any,MeshID(0),MaterialID(1),0,-45,0)
ScaleEntity(Floor,300,10,300)
EntityPhysicBody(Floor,#PB_Entity_StaticBody)
For x=-2 To 2 Step 2
For z=-2 To 2 Step 2
Block=CreateEntity(#PB_Any,MeshID(0),MaterialID(0),x*80,0,z*80)
ScaleEntity(block,30,30,30)
EntityPhysicBody(Block,#PB_Entity_StaticBody)
Next
Next
Node(0) = CreateNode(#PB_Any,0,0,0)
Entity(0, 0) = CreateEntity(#PB_Any,MeshID(2),MaterialID(2))
Entity(0, 1) = CreateEntity(#PB_Any,MeshID(2),MaterialID(2)) ; Bounding Box
HideEntity(Entity(0, 1), 1)
ScaleEntity(Entity(0, 0),10,5,10)
EntityLocate(Entity(0, 1), 50,0,0)
EntityPhysicBody(Entity(0, 1),#PB_Entity_BoxBody, #PB_Entity_AbsoluteBodyMove)
SetEntityMass(Entity(0, 1),10)
ScaleEntity(Entity(0, 1),0.5, 0.25, 0.5)
AttachNodeObject(Node(0),EntityID(Entity(0, 0)),#PB_Node_Entity)
WorldDebug(#PB_World_DebugBody)
Repeat
ExamineKeyboard()
Active=0
If KeyboardPushed(#PB_Key_PageUp)
Speed=-#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_PageDown)
Speed=#CameraSpeed
Else
Speed=0
EndIf
If KeyboardPushed(#PB_Key_Left)
Turn_X+1
RotateNode(Node(0),0,Turn_x,0,#PB_Absolute)
ElseIf KeyboardPushed(#PB_Key_Right)
Turn_X-1
RotateNode(Node(0),0,Turn_x,0,#PB_Absolute)
EndIf
If KeyboardPushed(#PB_Key_X)
Move_X=-#EntitySpeed
Active=1
ElseIf KeyboardPushed(#PB_Key_C)
Move_X=#EntitySpeed
Active=1
EndIf
If KeyboardPushed(#PB_Key_A)
Move_Y=#EntitySpeed
Active=2
ElseIf KeyboardPushed(#PB_Key_Z)
Move_Y=-#EntitySpeed
Active=2
EndIf
If KeyboardPushed(#PB_Key_Up)
Move_Z=#EntitySpeed
Active=3
ElseIf KeyboardPushed(#PB_Key_Down)
Move_Z=-#EntitySpeed
Active=3
EndIf
If Turn_X>360
Turn_X-360
ElseIf Turn_X<0
Turn_X+360
EndIf
Deg_X=Turn_X+90
If Deg_X>360
Deg_X-360
ElseIf Deg_X<0
Deg_X+360
EndIf
Select Active
Case 1
deg.f=(#PI/180)*Turn_X
MoveEntity(Entity(0,1),Sin(deg)*Move_X * 10.0,0,Cos(deg)*Move_X * 10.0)
Case 2
MoveEntity(Entity(0,1),0,Move_Y,0)
Case 3
deg.f=(#PI/180)*Deg_X
MoveEntity(Entity(0,1),Sin(deg)*Move_Z * 10.0,0,Cos(deg)*Move_Z * 10.0)
Default
MoveEntity(Entity(0,1),0,0,0)
EndSelect
If ExamineMouse()
MouseX=-(MouseDeltaX()/30)*#CameraSpeed/2
MouseY=-(MouseDeltaY()/30)*#CameraSpeed/2
EndIf
RotateCamera(0,MouseY/2,MouseX/2,RollZ,#PB_Relative)
MoveCamera(0,0,0,Speed)
NodeLocate(Node(0), EntityX(Entity(0, 1)), EntityY(Entity(0, 1)), EntityZ(Entity(0, 1)))
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