Вложений: 2
Нужна моделька позарез - лоу-поли:
квадратный пол 2 стенки буквой Г, меду ними столбик потолок Все части - чайлды. |
Вот:
[blitz] Graphics3D 800,600,32 Const n#=5 Const p#=0.5 Const f#=2*n Global Camera=CreateCamera() PositionEntity Camera,0,0,-10 Global light_sun = CreateLight(2) Global period=1000/30 Global time=MilliSecs()-period Global FPS_Count%, FPS_LastCount% Global MSL#=MilliSecs() Function MyFPS$() Local MS#=MilliSecs() If (MS-MSL)>=500 Then FPS_LastCount=FPS_Count*2 FPS_Count=0 MSL=MS Else FPS_Count=FPS_Count+1 EndIf Return Str(FPS_LastCount) End Function obj%=CreateWallPart() wf=1 While Not KeyDown(1) SetBuffer BackBuffer() Repeat elapsed=MilliSecs()-time Until elapsed ticks=elapsed/period tween#=Float(elapsed Mod period)/Float(period) For k=1 To ticks time=time+period If k=ticks Then CaptureWorld UpdateInput() UpdateWorld Next If KeyHit(17) Then WF%=Not WF% WireFrame WF RenderWorld tween Text 20,150, MyFPS() ;UpdateDayControl() Flip(0) Wend Function CreateWallPart() X1#=p Z1#=p X2#=n Z2#=p X3#=n Z3#=n X4#=p Z4#=n F1=CreatePoligon(X1#,Z1#, X2#, Z2#, X3#, Z3#, X4#, Z4#) F2=CopyMesh(F1) FlipMesh(f2) PositionEntity(F2,0,f,0) W1=CreateCube() FitMesh(W1,0,0,0,p,f,n-p,0) PositionEntity w1,0,0,p W2=CreateCube() FitMesh(W2,0,0,0,n-p,f,p,0) PositionEntity w2,p,0,0 W3=CreateCube() FitMesh(W3,0,0,0,p,f,p,0) Piv = CreatePivot() EntityParent(f1,Piv) EntityParent(f2,Piv) EntityParent(w1,Piv) EntityParent(w2,Piv) EntityParent(w3,Piv) Return Piv End Function Function CreatePoligon(X1#,Z1#, X2#, Z2#, X3#, Z3#, X4#, Z4#) Mesh%=CreateMesh() Surf%=CreateSurface(Mesh) V1%=AddVertex(Surf%, X1#, 0, Z1#);,0, 0) V2%=AddVertex(Surf%, X2#, 0, Z2#); 1, 0) V3%=AddVertex(Surf%, X3#, 0, Z3#); 1, 1) V4%=AddVertex(Surf%, X4#, 0, Z4#); 0, 1) T1%=AddTriangle(Surf%, V1%,V3%,V2%) T2%=AddTriangle(Surf%, V1%,V4%,V3%) Return mesh% End Function Function UpdateInput() TurnEntity Camera, MouseYSpeed()*0.3,0,0 TurnEntity Camera, 0,-MouseXSpeed()*0.3,0,1 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 If KeyDown(200) Then MoveEntity camera,0,0,2 If KeyDown(208) Then MoveEntity camera,0,0,-2 If KeyDown(205) Then MoveEntity camera,2,0,0 If KeyDown(203) Then MoveEntity camera,-2,0,0 End Function [/blitz] |
PS: Пивот в нвчале координат (нижняя угловая точка, где столбик стоит, самый угол... ну ты понял :) )
|
Часовой пояс GMT +4, время: 01:50. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot