[n3xt-D] un moteur pour PureBasic

Généralités sur la programmation 3D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

Cpl.Bator a écrit :Ouais , mais fait vite quoi !
j'ai pas que ca à foutre de t'attendre ! :twisted:
je rigole hein ! bon app ;)
merci...

tant pis alors, je finis mon fromage sur le clavier, me femme m'apporte ma part de gâteau et mes filles sont partie me préparer mon café avec
leur pyjama '3D with PB without N3xtD is for loosers' brodé dans le dos ...


Bon, pour revenir à nos moutons, en fait j'ai refais sebsiblement le même code, mais en passant par les
fonctions GUI de N3xtD.
Cela donne ceci (basé sur le code précedent, a quelques lignes près) :

Code : Tout sélectionner

; Include files 
IncludePath "includes"   :   IncludeFile "n3xtD_PB.pbi"



; Globales
Global	anglex.f, angley.f, flagXDown.w
Global	mox.f, omx.f, moy.l, omy.l

Global *app.l, Quit.l


;----------------------------------------------------------
; open n3xt-D screen
*app = iCreateGraphics3D(800,600)
; << OR >>
;*app = iCreateGraphics3D(800,600, 32, #False, #True, #EDT_DIRECT3D9)
If *app= #Null
  End
EndIf
 
 
  SetCurrentDirectory("media/") 

;-----------------------------------------
; set ambient light
; iAmbientLight( color.l=$ffaaaaaa)
;----------------------------------------
; create light and set position
 *light.ILight = iCreateLight($ffffffff, 45)
 iPositionNode(*light, 0,30,10)



; turn off MipMap
iTextureCreation( #ETCF_CREATE_MIP_MAPS, #False )

;----------------------------------------
 ; load 3D objects 
  Global *obj1.IObject = iLoad3DObject("plane.3ds")
  Global *obj2.IObject = iLoad3DObject("earth.x")



;-----------------------------------------
; create plane
*plane.IMesh =  iCreateMesh(*obj1)

;-----------------------------------------
; create tiger
Global *sphere.IMesh =  iCreateMesh(*obj2)
iPositionNode(*sphere, 0,0.5,5)
iScaleMeshBuffer(iMeshGeometry(*sphere), 1.5,1.5,1.5)


;-----------------------------------------
; create first  camera
Global *cam.ICamera = iCreateCamera( )
iPositionNode(*cam, 0,10,-15)
iTurnNode(*cam, 15,0,0)

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



iPointNode(*cam, *sphere)

;-----------------------
; create GUI Image
*logo.ITexture = iLoadTexture("logo_128.png")
*img.IGUIImage = iAddImageGUI(*logo, 0,15,#True, "text")

iColor_GUIImage(*img, $55ffffff )



; ---------------------------------------
;           main loop
; ---------------------------------------
Repeat
    
 	; control earth
  If iGetKeyDown(#KEY_ARROW_UP)
    iTranslateNode(*sphere, 0,0,0.5)
    iPointNode(*cam, *sphere)
  EndIf
  If iGetKeyDown(#KEY_ARROW_DOWN)
    iTranslateNode(*sphere, 0,0,-0.5)
    iPointNode(*cam, *sphere)
  EndIf
  If iGetKeyDown(#KEY_ARROW_RIGHT)
    iTranslateNode(*sphere, 0.5,0,0)
    iPointNode(*cam, *sphere)
  EndIf
  If iGetKeyDown(#KEY_ARROW_LEFT)
    iTranslateNode(*sphere, -0.5,0,0)
    iPointNode(*cam, *sphere)
  EndIf
  If iGetKeyDown(#KEY_KEY_R)
    iTranslateNode(*sphere, 0,0.5,0)
    iPointNode(*cam, *sphere)
  EndIf
  If iGetKeyDown(#KEY_KEY_F)
    iTranslateNode(*sphere, 0,-0.5,0)
    iPointNode(*cam, *sphere)
  EndIf
  
  
  
	; move camera with dir key and mouse (left click)
  If iGetMouseEvent(#MOUSE_BUTTON_LEFT)
  		If flagXDown=0
  			omx = iGetMouseX()
  			omy = iGetMouseY()
  			flagXDown=11
  		Else
  			moy = iGetMouseY()-omy
  			angley=(moy/10.0)
  			omy= iGetMouseY()
  			mox = iGetMouseX()-omx
  			anglex=(mox/10.0)
  			omx= iGetMouseX()
  			iTurnNode(*cam, angley, anglex,0)
  		EndIf
  Else
  	 		flagXDown=0
  EndIf


	; if Escape Key, exit	
  If iGetKeyDown(#KEY_ESCAPE)
    Quit=1
  EndIf



  xx.l = iProjectedX(*sphere)
  yy.l = iProjectedY(*sphere)

  	; ---------------
  	;      Render
  	; ---------------
  iBeginScene()
    iDrawScene()
    iDrawGUI()
    iDrawText(*font, "DirKey and R/F for move earth",  10,10,0,0, $ff00ffff)

    iRelativePositionGUI(*img, xx,yy)

  iEndScene()

Until Quit=1
; end
iFreeEngine()
Force et sagesse...
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

Impec , mais faut vraiment simplifier le passage 2D/3D. les sprites 3D sont indispensable pour les effets de blending , ce que ne fait pas la gui ou les images , et je peut faire des rendus séparément comme dans ton exemples de mix 2d / 3d.
je met le lens flare de coté et je continue de codé ma petite démo en attendant une éventuelle commande iBegin2D :mrgreen:
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

Cpl.Bator a écrit :... en attendant une éventuelle commande iBegin2D :mrgreen:
Je vais reprendre cette partie dévolue à la 2D sur ce point, et fournir à la fois des fonctions simples et efficaces,
pour pouvoir realiser un éventail de choses importantes...
Des new's d'ici quelques jours ;)
Force et sagesse...
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

ca marche bien quand même :D

Image


Par contre , j'aurais bien voulu regler la taille de la skybox ( un peu trop grande à mon gout )
et de pouvoir "dessiner" dans la skybox , càd de mettre une planète 3D qui tourne avec du bump, mais qui fasse parti de la skybox.
on peut déjà le faire en gardant une distance égale à la caméra mais bon , pas top :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [n3xt-D] un moteur pour PureBasic

Message par comtois »

Pour info, j'ai ajouté n3xtd sur dvp
http://purebasic.developpez.com/outils/?page=m3d#N3XTD

Si tu as des remarques, n'hésite pas :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

j'ai qu'une remarque , tu m'épates :D
tu fait vivre à toi tout seul le Forum , loin là bas , dans le froid glacial de dvp :D
je viendrais plus souvent dorénavant :wink:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [n3xt-D] un moteur pour PureBasic

Message par comtois »

Je ne suis plus tout seul, progi1984 donne un sacré coup de pouce !
Il vient encore d'écrire un tuto.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

En parlant de tuto , j'ai jamais rien compris à la conception d'un article , mis à part que c'est en xml , et c'est une vrai merde pour s'y retrouvé... :roll:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: [n3xt-D] un moteur pour PureBasic

Message par comtois »

Je t'invite à poursuivre cette discussion sur les forums de dvp, on a assez débordé du sujet initial de ce post :P

Tmyke, je songe toujours à retranscrire PureBlock avec N3xtD, je suis pas mal pris par ailleurs, mais ça reste dans un coin de ma tête, faudra que ça sorte un jour en le codant :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

@Tmyke

Je me suis fait un petit loader qui lit un script txt , et qui charge les medias.
ca marche , sauf lorsque je "thread" ma fonction de chargement.
J'ai codé que le chargement de skybox pour le moment , les textures devienne blanche...
comme si elle sont libérer en fin de thread...
vraiment bizarre
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [n3xt-D] un moteur pour PureBasic

Message par Ollivier »

@TMyke

Salut, en tentant de redownloader N3xtD, j'ai une erreur à l'exécution du sample n° 001:

L'application n'a pas pu s'initialiser correctement (0xC0150002). Cliquer sur OK pour arrêter l'application.

J'ai rajouté un End comme ceci:

Code : Tout sélectionner

; Include files 
End
IncludePath "includes"   :   IncludeFile "n3xtD_PB.pbi"
Mais c'est exactement la même erreur...
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

il y a bien la dll a coté du fichier .pb que tu compiles , et la lib rangé dans les userlibs du compilo purebasic ?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [n3xt-D] un moteur pour PureBasic

Message par Ollivier »

@Cpl.Bator

Oui, et vu que j'ai déjà vu fonctionner le moteur il y a quelques temps, je soupçonne l'une des nouvelles fonctionnalités (notamment du côté de la GUI, j'ai déjà un plantage chronique des fonctions natives Gadget3D et Window3D).

J'espère que TMyke garde ses anciennes archives: celle qui avait seulement une douzaine d'exemples peut suffire.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

Bon, allez, après quelques jours d'absence, retour aux affaire ;)
Comtois a écrit :Pour info, j'ai ajouté n3xtd sur dvp
http://purebasic.developpez.com/outils/?page=m3d#N3XTD

Si tu as des remarques, n'hésite pas
extrat, je vais potasser cela, et je ne manquerais pas de faire des commentaires ;)
Comtois a écrit :Tmyke, je songe toujours à retranscrire PureBlock avec N3xtD, je suis pas mal pris par ailleurs, mais ça reste dans un coin de ma tête, faudra que ça sorte un jour en le codant :)
j'attends avec impatience, mais je sais que tu es pas mal pris, donc chaque chose en son temps ;).

Cpl.Bator a écrit :Je me suis fait un petit loader qui lit un script txt , et qui charge les medias.
ca marche , sauf lorsque je "thread" ma fonction de chargement.
J'ai codé que le chargement de skybox pour le moment , les textures devienne blanche...
comme si elle sont libérer en fin de thread...
vraiment bizarre
oui, bizarre, cela ne serait pas un soucis de path au chargement des fois (même si je pense que tu y a déjà pensé) ?

Ollivier a écrit :Salut, en tentant de redownloader N3xtD, j'ai une erreur à l'exécution du sample n° 001...
tu trouvera probablement une explication ici:
http://www.purebasic.fr/english/viewtop ... &start=120

Sinon, j'ai repris les fonctions concernant les Sprite3D, avec un management dédié, donc beaucoups plus
simplet et ouvert.
Je vois ce que je peux faire au niveau des Skybox suite à tes remarques Cpl.Bator.
Force et sagesse...
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

oui, bizarre, cela ne serait pas un soucis de path au chargement des fois (même si je pense que tu y a déjà pensé) ?
Vala une archive :
http://rapidshare.com/files/294153637/BugN3xtd.rar.html
Change la ligne 34

Code : Tout sélectionner

is_Threaded = #False ; #True 
:wink:
Répondre