[n3xt-D] un moteur pour PureBasic

Généralités sur la programmation 3D
Anonyme

Message par Anonyme »

Exemple 11 = SPLIT_SCREEN.pb :oops:
je l'avais déjà testé en plus...
Oui aussi, les instruction Camera permettent à peut près tout, d'ailleurs
les exemples 033 et 034 sont une façon de définir des cameras orthogonales.
je voulais dire cameras orthographique ( sans perspective quoi ).
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :je voulais dire cameras orthographique ( sans perspective quoi ).
Tu passe par l'instruction iProjectionMatrixOrthoLH() par exemple pour définir tes paramètres,
et tu n'as plus qu'a faire après iProjectionMatrixCamera(*camera, @matrix(0), #True)
et tu devrais arriver aux effets recherchés.
Force et sagesse...
Anonyme

Message par Anonyme »

Merci , je vais jeter un œil , sinon regarde le bug :

Code : Tout sélectionner

IncludePath "includes"   :   IncludeFile "n3xtD_PB.pbi"
IncludePath "./"
; 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, "Vue", -1, #True, #True)
  iAddItem_GUIContexMenu(*menu, "A propos", -1, #True, #True)
  
    *submenu=iGUIContexMenu_SubMenu(*menu, 0)
    iAddItem_GUIContexMenu(*submenu, "Ouvrir", 101)
    iAddItem_GUIContexMenu(*submenu, "Sauvegardé", 102)
    iAddItem_GUIContexMenu(*submenu, "Quitter", 103)
  
    *submenu=iGUIContexMenu_SubMenu(*menu, 2)
    iAddItem_GUIContexMenu(*submenu, "Plan XY (Face)", 501)
    iAddItem_GUIContexMenu(*submenu, "Plan ZY (Coté)", 502)
    iAddItem_GUIContexMenu(*submenu, "Plan XZ (Dessus)", 503)

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
  
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



ExamineDesktops()
W.i = DesktopWidth(0)
H.i = DesktopHeight(0)

iSetAntiAlias(#True)
*app = iCreateGraphics3D(W,H,32,1)

;-----------------------------------
; load font png
iLoadFont("font2.bmp")
Global *font.IGUIFont = iGetFont()


Inteface_CreateMenu()


iGUIEventCallBack(@GUIEventCallBack())
  

;-----------------------------------------
; APPLICATION CAMERA 
;-----------------------------------------
Global *cam3D.ICamera = iCreateCamera( )
iPositionNode(*cam3D, 10,10,10)
iPointTargetNode(*cam3D,  0,0,0)

Global *camXZ.ICamera = iCreateCamera( )
iPositionNode(*camXZ, 0,50,0)
iPointTargetNode(*camXZ,  0,0,0)




c=iCreateCube(4)


Repeat



  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 iGetMouseEvent(#MOUSE_BUTTON_MIDDLE)
   iTurnNode(*cam3D, iGetDeltaMouseY()*0.5, iGetDeltaMouseX()*0.5,0)
EndIf 
  iSetViewPort( 0,0,W,H)
  iBeginScene(192,192,192)
    
    
    
    
    
    iActiveCamera(*camXZ)
    iSetViewPort( 0,0,W/2,H/2)	
    Interface_DrawGroundGrid()
    iDrawScene()

    iActiveCamera(*cam3D)
		iSetViewPort( W/2,0,W,H/2)
		Interface_DrawGroundGrid()
    iDrawScene()
    
    iSetViewPort( 0,0,W,H)
    iDrawGUI()

  iEndScene()    
 
Until Quit=1
iFreeEngine()
Anonyme

Message par Anonyme »

je viens de rajouté cela :

Code : Tout sélectionner

Mat.MATRIX
iProjectionMatrixOrthoLH(W,H,@Mat,0.01,1000)
iProjectionMatrixCamera(*cam3D,@Mat,#True)

la caméra deviens "implacable" , impossible de la bouger.
Anonyme

Message par Anonyme »

tmyke a écrit :
Cpl.Bator a écrit :

Code : Tout sélectionner

iSetCollideForm(#COMPLEX_PRIMITIVE_SURFACE) 
fait déconner cette fonction :

Code : Tout sélectionner

*resultat = iCollideRayCastAll(*A\x,*A\y,*A\z,*B\x,*B\y,*B\z, 1, @dist)
Je viens de faire un test, pas de vrai soucis décelé. Si avec la dernière update tu as toujours le
problème, alors dis le moi.

http://rapidshare.com/files/251790025/L ... 4.rar.html

met la ligne 81 a #HULL_PRIMITIVE pour déplanté :D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Je regarde cela. Tu me donne plus de travail que je ne puis en absorber :)
Force et sagesse...
Anonyme

Message par Anonyme »

je regarde cela. Tu me donne plus de travail que je ne puis en absorber
:D

le problème est que sans #COMPLEX_PRIMITIVE_SURFACE , je ne peut pas lightmapper des objets avec des trous , par exemple , un rectangle avec un trou ( une fenetre ). ou bien , un objet ne peut pas projeter sa propre ombre sur lui même ;)
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

pauvre tmyke, Cpl.Bator va finir par nous le tuer sur son clavier :D.

mais sa sera surement un super projet courage les mecs :wink:





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Bon concernant d'abord ton code avec le GUI, si tes menus ne s'affiche pas,
c'est très certainement que la font que tu charges n'est pas valide (soucis de repertoire
par exemple, j'ai ajouté 'media/' et cela fonctionne très bien).
Pas de font chargé, pas de GUI.

Pour ce qui est du code pour tester les lights, j'ai un peu planché sur le truc.
Premièrement, j'arrive à de meilleurs résultat avec DX qu'avec OGL. Et surtout
en employant l'instruction iAttenuationLight( *light, 1, 1.0/radius, 0)
cela attenue pas mal le phénomène. Pas de Light trop forte et qui flashent. C'est la seule réponse
que je peux te donner pour le moment en tous les cas, même si cela reste en suspend pour aller plus loin.

Pour ce qui est de l'archive Lightmap-part_4.rar, je m'y colle dans l'après midi pour voir ou est
le soucis, ainsi que sur les boundingBox. ;)
Force et sagesse...
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

venom a écrit :pauvre tmyke, Cpl.Bator va finir par nous le tuer sur son clavier :D.
J'ai une super soupe de sécurité, ma femme et mes filles, qui me surveille 24h/24. Donc pas de danger
que je rentre en vibration et que j'explose. :P
Force et sagesse...
Anonyme

Message par Anonyme »

Bon concernant d'abord ton code avec le GUI, si tes menus ne s'affiche pas,
c'est très certainement que la font que tu charges n'est pas valide (soucis de repertoire
par exemple, j'ai ajouté 'media/' et cela fonctionne très bien).
Pas de font chargé, pas de GUI.

j'ai pas dis que ca déconnais :D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :j'ai pas dis que ca déconnais :D
Oups :oops: Ceci dit tes menu n'était pas visible ;)

Je vois en tous les cas que tu te débrouilles déjà niveau multicamera, verrions-nous pointer un viewer à la capacité Lightmapping :P
Force et sagesse...
Anonyme

Message par Anonyme »

Bah écoute , y a tout les outils pour faire un petit éditeur de scene 3D
alors autant en profité.
:D

@+
Anonyme

Message par Anonyme »

Le calcul des Bounding box n'est pas au point , a revoir , je posterais un exemple ( post du lightmapping ) :wink:
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Mise à jour N°12.

Pas mal de bugs corrigés ou de manque comblés (merci à Cpl.Bator, le TerminaBetaTesteur).
Au chapitre des nouveautés, l'intégration des instructions XEffect. Elles permettent une
mise en œuvre simples et faciles d'effet (shader) ainsi que des scènes complètes en
shadowmapping. Attention, cartes anciennes ou d'entrées de gamme s'abstenir ;).

Deuxième intégration attendu, la possibilité d'importer directement les scene construite
avec irrEdit1.5 (section Link du site). Très intéressant pour ceux qui connaissent.

En résumé, 6 nouveaux samples, les 031-048-220-221-222-223


Les liens sont toujours ceux du post originel, ou encore sur le site http://www.n3xt-d.org ;)

Travaux en cours pour la 13 ième mise à jour:
- Le Header C++, qui en a bien besoin,
- Toujours des routines divers visant à améliorer et ajouter certaines fonctions.

Image Image
Image
Force et sagesse...
Répondre