les ligne 3D sont des entity comme les autres, avec leurs coordonnées dans l'espace.
Tu définis d'abord le tableau vide, avec le maximum de point qu'il
pourra contenir, puis tu l'alimente.
voici un petit code qui illustre mieux cela: touche 'N' la premier Cube monte,
la ligne le suit. Touche 'B', tu fais monter l'Entity line complete .
Code : Tout sélectionner
; Fichiers Include
IncludePath "Include\" : IncludeFile "dreamotion3d.pbi"
; Initialisation des différents modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; Initialise la fenêtre graphique
DM_Graphics3D(800, 600, 32, 0, 1)
; Définit la couleur ambiante
DM_AmbiantLight(0, 0, 0)
DM_CreateLight(3)
; ---------------------------------------
; meshs
; ---------------------------------------
*cube1.CEntity = DM_CreateCube()
*cube2.CEntity = DM_CreateCube()
DM_TranslateEntity(*cube2,10,0,0)
;creation de line 3D
*line.CEntity = DM_CreateLine(2)
DM_LinePoint(*line, DM_EntityX(*cube1), DM_EntityY(*cube1),DM_EntityZ(*cube1), 0,255,0)
DM_LinePoint(*line, DM_EntityX(*cube2), DM_EntityY(*cube2),DM_EntityZ(*cube2), 0,255,0)
; autres fonctions
; DM_CloseLine(*entity.CEntity)
; DM_LinePosition(*entity.CEntity, numPoint.l, x.f, y.f, z.f)
; ---------------------------------------
; Gestion des caméras
; ---------------------------------------
*camera = DM_CreateCamera()
DM_MoveEntity(*camera, 0,0,-20.0)
DM_CameraClsColor(*camera, 125, 125, 125)
; ---------------------------------------
; Boucle principale
; ---------------------------------------
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
EndIf
If KeyboardPushed(#PB_Key_N)
DM_TranslateEntity(*cube1, 0,0.2,0)
DM_LinePosition(*line, 0, DM_EntityX(*cube1), DM_EntityY(*cube1),DM_EntityZ(*cube1))
EndIf
If KeyboardPushed(#PB_Key_B)
DM_TranslateEntity(*line, 0,0.2,0)
EndIf
; ---------------
; Rendu
; ---------------
DM_BeginScene()
DM_RenderWorld()
DM_EndScene()
Until Quit=1
DM_ClearGraphics()
End