Publié : dim. 05/juil./2009 12:30
vous etes en train de nous préparer un beau jouet là ! 

Forums PureBasic - Français
https://www.purebasic.fr/french/
; TEXTURE CLAMP
#ETC_REPEAT = 0
#ETC_CLAMP=1
#ETC_CLAMP_TO_EDGE=2
#ETC_CLAMP_TO_BORDER=3
#ETC_MIRROR=4
Code : Tout sélectionner
*Scene = iLoadLightMappingScene("medias/SimpleBox.m3d")
Global ab.AABBOX
iNodeBoundingBox(*Scene, @ab)
; set global physical dimension scene
iSetWorldSize(ab\MinEdge\x, ab\MinEdge\y, ab\MinEdge\z, ab\MaxEdge\x, ab\MaxEdge\y, ab\MaxEdge\z)
Debug ab\MinEdge\x
End
J'avais un peu omis l'instruction qui est associée. J'ai mis à jour les archives de la version 12, et ecris unCpl.Bator a écrit :Recoucou
comment je peut utilisé ceci :
; TEXTURE CLAMP
#ETC_REPEAT = 0
#ETC_CLAMP=1
#ETC_CLAMP_TO_EDGE=2
#ETC_CLAMP_TO_BORDER=3
#ETC_MIRROR=4
Il suffit de parcourir l'arbre hiérarchique que tu créé, avec les instructions:Cpl.Bator a écrit :Suggestion :
Code : Tout sélectionner
*Scene = iLoadLightMappingScene("medias/SimpleBox.m3d") Global ab.AABBOX iNodeBoundingBox(*Scene, @ab) ; set global physical dimension scene iSetWorldSize(ab\MinEdge\x, ab\MinEdge\y, ab\MinEdge\z, ab\MaxEdge\x, ab\MaxEdge\y, ab\MaxEdge\z) Debug ab\MinEdge\x End
*Scene est un pivot parent de plusieurs meshs
ce pivot me donne accès à la scene complete
peut on pour n'importe quelle fonction du moteur parcourir les enfants
et appliquer les modifications ou avoir accès au données ?
(ici la AABB)
Code : Tout sélectionner
iNodeNumChildren()
iNodeChildren()
Il n'y a pas d'instruction pour cela, mais je vais voir pour en créer une. Les XEffect méritent de murirCpl.Bator a écrit :j'avais oublié de mettre le dossier des shaders... :/
par contre impossible de déplacer une shadowlight ?
Je vais corriger, en effet cela ne prend pas en compte le redimensionnement éventuel.Cpl.Bator a écrit :iPickCamera() ne marche pas correctement lorsque le viewport est redimensionné.
Un petit code, pour tester et voir comment arriver au resultat et debbuguer éventuellementCpl.Bator a écrit :j'ai toujours le même soucis pour avoir une caméra sans projection 3D.
Code : Tout sélectionner
IncludePath "includes" : IncludeFile "n3xtD_PB.pbi"
IncludePath "./"
ExamineDesktops()
Global W.i = DesktopWidth(0)
Global H.i = DesktopHeight(0)
;
; IncludeFile "Interface.pbi.pb"
;
;
Procedure Inteface_CreateMenu()
*menu.IGUIContextMenu =iAddMenuGUI()
iAddItem_GUIContexMenu(*menu, "Fichier", -1, #True, #True)
iAddItem_GUIContexMenu(*menu, "Edition", -1, #True, #True)
iAddItem_GUIContexMenu(*menu, "Collector", -1, #True, #True)
iAddItem_GUIContexMenu(*menu, "A propos", -1, #True, #True)
*submenu=iGUIContexMenu_SubMenu(*menu, 0)
iAddItem_GUIContexMenu(*submenu, "Ouvrir", 101)
iAddItem_GUIContexMenu(*submenu, "Sauvegarder", 102)
iAddItem_GUIContexMenu(*submenu, "Quitter", 103)
*submenu=iGUIContexMenu_SubMenu(*menu, 2)
iAddItem_GUIContexMenu(*submenu, "Importer un mesh", 501)
iAddItem_GUIContexMenu(*submenu, "Ouvrir la bibliotheque", 502)
iAddItem_GUIContexMenu(*submenu, "Importer une bibliotheque", 503)
;iAddWindowGUI(0,42,256,H,"Texture",#True)
EndProcedure
Procedure Interface_DrawGroundGrid(Size.l=100)
For z = -Size/2 To Size/2
For x = -Size/2 To Size/2
iDrawLine3D(x,0,z,x+1,0,z,$505050)
iDrawLine3D(x,0,z,x,0,z+1,$505050)
Next
Next
iDrawLine3D(Size/2+1,0,Size/2+1,-Size/2,0,Size/2+1,$505050)
iDrawLine3D(Size/2+1,0,Size/2+1,Size/2+1,0,-Size/2,$505050)
EndProcedure
Procedure Interface_DrawXYGrid(Size.l=100)
For y = -Size/2 To Size/2
For x = -Size/2 To Size/2
iDrawLine3D(x,y,0,x+1,y,0,$505050)
iDrawLine3D(x,y,0,x,y+1,0,$505050)
Next
Next
iDrawLine3D(Size/2+1,Size/2+1,0,-Size/2,Size/2+1,0,$505050)
iDrawLine3D(Size/2+1,Size/2+1,0,Size/2+1,-Size/2,0,$505050)
EndProcedure
Procedure Interface_DrawYZGrid(Size.l=100)
EndProcedure
Procedure ContextMenu()
*menu =iAddContexMenuGUI(iGetMouseX(),iGetMouseY(), 350, 250, #Null, 49)
iAddItem_GUIContexMenu(*menu, "text1",50)
iAddItem_GUIContexMenu(*menu, "text2",51)
iAddSeparator_GUIContexMenu(*menu)
iAddItem_GUIContexMenu(*menu, "text3", 52, #True, #True, #False )
iAddItem_GUIContexMenu(*menu, "text4", 55)
; sub menu
*submenu=iGUIContexMenu_SubMenu(*menu, 3)
iAddItem_GUIContexMenu.l(*submenu, "subText31", 53, #True, #False, #True )
iAddItem_GUIContexMenu.l(*submenu, "subText32", 54)
EndProcedure
Procedure Interface_TextureMenu()
EndProcedure
ProcedureC GUIEventCallBack(eventGUI.l, idGUI.l, *GUIElement.IGUIElement)
If( eventGUI=#EGET_MENU_ITEM_SELECTED)
idx.l = iGUIContexMenu_ItemSelected(*GUIElement)
id.l = iGUIContexMenu_ItemCommandId(*GUIElement,idx)
Select id
Case 103 : End
EndSelect
EndIf
EndProcedure
Structure rect_render
min.VECTOR2
max.VECTOR2
EndStructure
iSetAntiAlias(#True)
*app = iCreateGraphics3D(W,H,32,1)
;-----------------------------------
; load font png
iLoadFont("font.png")
Global *font.IGUIFont = iGetFont()
Global view_xyz.rect_render
VECTOR2_(view_xyz\min,(W/2)+5,(H/2)+5)
VECTOR2_(view_xyz\max,W-2,H-2)
Global view_xz.rect_render
VECTOR2_(view_xz\min,2,42)
VECTOR2_(view_xz\max,(W/2)-5,(H/2)-5)
Global view_xy.rect_render
VECTOR2_(view_xy\min,(W/2)+5,42)
VECTOR2_(view_xy\max, W-2, (H/2)-5)
Global view_yz.rect_render
VECTOR2_(view_yz\min,2,(H/2)+5)
VECTOR2_(view_yz\max, (W/2)-5, H-2)
Inteface_CreateMenu()
iGUIEventCallBack(@GUIEventCallBack())
;-----------------------------------------
; APPLICATION CAMERA
;-----------------------------------------
Global *cam3D.ICamera = iCreateCamera( )
iPositionNode(*cam3D, 10,10,10)
iPointTargetNode(*cam3D, 0,0,0)
Global *camXZ.ICamera = iCreateCamera( )
Mat.MATRIX
iPositionNode(*camXZ, 0,20,0)
iPointTargetNode(*camXZ, 0,0,0)
Global *camXY.ICamera = iCreateCamera( )
iPositionNode(*camXY, 0,0,-20)
iPointTargetNode(*camXY, 0,0,0)
Global *camYZ.ICamera = iCreateCamera( )
iPositionNode(*camYZ, 0,0,-20)
iPointTargetNode(*camYZ, 0,0,0)
c=iCreateCube(1)
iScaleMeshBuffer(iMeshGeometry(c),10,1,10)
iColorGUI(2,$FFCACACA)
iColorGUI(1,$FFCACACA)
iColorGUI(5,$FFCACAFF)
Repeat
; If iGetMouseEvent(#MOUSE_BUTTON_RIGHT)
; ContextMenu()
; EndIf
If iGetKeyDown(#KEY_ESCAPE)
Quit=1
EndIf
If iGetKeyDown(#KEY_ARROW_UP)
iMoveNode(*cam3D, 0,0,0.5)
EndIf
If iGetKeyDown(#KEY_ARROW_DOWN)
iMoveNode(*cam3D, 0,0,-0.5)
EndIf
If iGetMouseX()>W/2+5 And iGetMouseY()>H/2+5
If iGetMouseEvent(#MOUSE_BUTTON_LEFT)
iTurnNode(*cam3D, iGetDeltaMouseY()*0.5, iGetDeltaMouseX()*0.5,0)
EndIf
If iGetMouseEvent(#MOUSE_BUTTON_RIGHT)
iMoveNode(*cam3D,iGetDeltaMouseX()*0.2,0,0)
EndIf
EndIf
iBeginScene(0,0,0)
iSetViewPort(view_xyz\min\x,view_xyz\min\y,view_xyz\max\x,view_xyz\max\y)
iActiveCamera(*cam3D)
iDrawScene()
Interface_DrawGroundGrid(50)
iSetViewPort(view_xz\min\x,view_xz\min\y,view_xz\max\x,view_xz\max\y)
iActiveCamera(*camXZ)
iDrawScene()
Interface_DrawGroundGrid(50)
iSetViewPort(view_xy\min\x,view_xy\min\y,view_xy\max\x,view_xy\max\y)
iActiveCamera(*camXY)
iDrawScene()
Interface_DrawXYGrid(50)
Mat.MATRIX
iProjectionMatrixOrthoLH(W,H,@Mat,0.01,1000)
iProjectionMatrixCamera(*camYZ,@Mat,#True)
iSetViewPort(view_yz\min\x,view_yz\min\y,view_yz\max\x,view_yz\max\y)
iActiveCamera(*camYZ)
iDrawScene()
iSetViewPort( 0,0,W,H)
iDrawRectangle2D((W/2)-5,42,(W/2)+5,H,$FFCACACA,$FFCACACA,$FFCACACA,$FFCACACA)
iDrawRectangle2D(0,(H/2)-5,W,(H/2)+5,$FFCACACA,$FFCACACA,$FFCACACA,$FFCACACA)
iDrawGUI()
iEndScene()
Until Quit=1
iFreeEngine()