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

Tiens, concernant le rendu sur des textures de SkyBox, voici comment j'ai fait, cela semble correspondre à ce que tu cherchais à
faire ( texture de fond avec rendu de mesh par dessus)

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 a cube and set position
Global *cube.IMesh = iCreateCube(1.0)
iPositionNode(*cube, 0,0,0) 
; first method to texturing
  *material.IMaterial = iNodeMaterial(*cube)
; load texture
  *tex.ITexture = iLoadTexture( "glass.bmp") 
; set texture in material 
  iTextureMaterial(*material,  0, *tex) 



; create a target texture 
Global *textureTarget.ITexture = iCreateRenderTargetTexture(512, 512)
; load texture for copy inside the TextureRender
Global *bk.ITexture = iLoadTexture("bk.jpg")
; create Skybox
*sky.IMesh = iCreateSkybox( iLoadTexture("up.jpg"),iLoadTexture("dn.jpg"),iLoadTexture("lf.jpg"),iLoadTexture("rt.jpg"),iLoadTexture("ft.jpg"),*textureTarget)




;-----------------------------------------
; create first  camera
Global *cam.ICamera = iCreateCamera()
iPositionNode(*cam, 0,1,-10)
; create second  camera for render target
Global *cam2.ICamera = iCreateCamera()
iPositionNode(*cam2, 0,0,-8)





Procedure RenderSky()
     ; render traget texture with camera 2
     iActiveCamera(*cam2)
     iRenderTarget( *textureTarget , #True,  #True,  $ff222222)    
       iRenderNode(*cam2)
       iDrawImage2D(*bk ,0, 0)
       iRenderNode(*cube)
   iRenderTarget( #Null , #True,  #True,  0)
   iActiveCamera(*cam)
EndProcedure


; ---------------------------------------
;           main loop
; ---------------------------------------
Repeat
  
  iTurnNode(*cube, 0,1,0)
  
 	; move camera with dir key and mouse (left click)
  If iGetKeyDown(#KEY_ARROW_UP)
    iMoveNode(*cam, 0,0,0.5)
  EndIf
  If iGetKeyDown(#KEY_ARROW_DOWN)
    iMoveNode(*cam, 0,0,-0.5)
  EndIf
  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




  	; ---------------
  	;      Render
  	; ---------------
  iBeginScene()
    
    RenderSky()

    iDrawScene()

  iEndScene()


Until Quit=1
; end
iFreeEngine()
Force et sagesse...
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: [n3xt-D] un moteur pour PureBasic

Message par beauregard »

j'ai décidé de m'y remettre ce soir, mais çà coince( message d'erreur, error (0xc0150002) j'ai télécharché visualc++2005). Les exemples fonctionnent avec qu'elle version de pb ?

je précise que çà marche sur mon vieux PC, mais pas sur ma machine de dev.... je comprend pas là. il fait quoi exactement le vcredist_x86.exe :?:
Dernière modification par beauregard le lun. 19/oct./2009 21:59, modifié 1 fois.
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

Avec toute les versions :wink:


@Tmyke , colle ton cube dans un coin de la sybox , tu vas comprendre le problème ^^

- IScaleNode() ne marche pas sur la skybox. l'effet est visible que si je joue avec 2 des 3 paramètres , si j'en met 3 > à 1 , la skybox redeviens normale.
Pour l'eau , une gestion avancée de la taille s'impose , ainsi que la taille des uv's pour les très grandes étendu d'eau.
Les terrains n'ont pas l'air optimisé. ( pas de coupe avec un frustum à la base ? )
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 »

Ce n'est pas lié à le version de PB, il y a dans certains cas un patch windows à appliquer,
Ce topic du forum off te donnera la réponse ;)
http://www.purebasic.fr/english/viewtop ... &start=120
Force et sagesse...
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: [n3xt-D] un moteur pour PureBasic

Message par beauregard »

tmyke a écrit :Ce n'est pas lié à le version de PB, il y a dans certains cas un patch windows à appliquer,
Ce topic du forum off te donnera la réponse ;)
http://www.purebasic.fr/english/viewtop ... &start=120
mmh oui, alors je dois placer cet exe dans un endroit particulier ? parce que je l'ai lancé mais il ne s'est pas passé grand chose en fait, curieux.
Dernière modification par beauregard le lun. 19/oct./2009 22:03, modifié 1 fois.
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 : colle ton cube dans un coin de la sybox , tu vas comprendre le problème ^^
je vais voir cela. Faire du rendu de texture amène toujours certains artéfacts désagréable, ce n'est
pas vraiment du au Skybox en particulier...
Cpl.Bator a écrit :- IScaleNode() ne marche pas sur la skybox. l'effet est visible que si je joue avec 2 des 3 paramètres , si j'en met 3 > à 1 , la skybox redeviens normale.
je vais voir pour donner un accès direct au meshbuffer, ce qui permettra de bidouiller avec la geométrie
du Skybox comme l'on veut.
Cpl.Bator a écrit :Pour l'eau , une gestion avancée de la taille s'impose , ainsi que la taille des uv's pour les très grandes étendu d'eau.
Je vais voir pour implémenter cela.
Cpl.Bator a écrit :Les terrains n'ont pas l'air optimisé. ( pas de coupe avec un frustum à la base ? )
Si pourtant, Frustum et quadtree.
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

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

beauregard a écrit :mmh oui, alors je dois placer cet exe dans un endroit particulier ? parce que je l'ai lancé mais il ne s'est pas passé grand chose en fait, curieux.
As-tu lancé le fichier téléchargé vcredist_x86.exe ?
Force et sagesse...
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: [n3xt-D] un moteur pour PureBasic

Message par beauregard »

tmyke a écrit :
beauregard a écrit :mmh oui, alors je dois placer cet exe dans un endroit particulier ? parce que je l'ai lancé mais il ne s'est pas passé grand chose en fait, curieux.
As-tu lancé le fichier téléchargé vcredist_x86.exe ?
oui( mon PC de dev n'est pas connecté au net, petite précision qui a peut être son importance).

il place des dll quelque part j'imagine....
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 »

Je suppose, c'est un programme d'installation qui balance surement deux trois truc lié à VC 2005.
Maintenant, je ne sais pas quel sont les fichiers qui sont installés. L'exe d'install fait environ 2.6 Mo.
Force et sagesse...
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: [n3xt-D] un moteur pour PureBasic

Message par beauregard »

tmyke a écrit :Je suppose, c'est un programme d'installation qui balance surement deux trois truc lié à VC 2005.
Maintenant, je ne sais pas quel sont les fichiers qui sont installés. L'exe d'install fait environ 2.6 Mo.
oui, c'est bien çà, 2,6Mo. faut alors au préalable installer Visual C++ 2005 puis cet exe ? j'ai installé tellement de truc sur mon vieux PC... j'avoue être un peu à la rue là. :lol:

je dois installer çà ? :
http://www.clubic.com/telecharger-fiche ... ition.html

bon c'est fait, sur mon vieux PC, 227 Mo juste pour un langage C, où va le monde :? Mais le plus amusant, c'est que mon brontausaure n'avait pas besoin de cette dépendance pour faire tourner n3xt-D donc çà reste mystérieux... j'avais du installer un truc plus léger, mais quoi ?...
Dernière modification par beauregard le lun. 19/oct./2009 23:21, modifié 4 fois.
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

tmyke a écrit : je vais voir cela. Faire du rendu de texture amène toujours certains artéfacts désagréable, ce n'est
pas vraiment du au Skybox en particulier...
En fait , le rendu sur texture pour ce genre de chose n'est pas top.
ce que je veut dire , c'est qu'au moment du rendu d'une skybox quelconque , celle ci à des flags particuliers , logiquement elle n'est pas soumis au brouillard , lumières , elle reste centré par rapport à la camera active , pas de clipping far.
ce que j'aurais voulu , c'est rendre facilement des objets quelconque avec les même propriétés.
tmyke a écrit : Je vais voir pour implémenter cela.
Impec :mrgreen:
Si pourtant, Frustum et quadtree.
je dis que c'est pas optimisé , car j'ai rendu 4 terrain en même temps ^^
après , il manque bien de la géométrie adaptative :mrgreen: (ROAMING)
http://www.cognigraph.com/ROAM_homepage/
http://www.youtube.com/watch?v=aCQgSBne ... re=related


@+
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 »

beauregard a écrit :oui, c'est bien çà, 2,6Mo. faut alors au préalable installer Visual C++ 2005 puis cet exe ? j'ai installé tellement de truc sur mon vieux PC... j'avoue être un peu à la rue là. :lol:
Hola, pas besoin d'installer VC++2005 pour faire tourner N3xtD (sauf si bien sur tu souhaite compiler toi même le code du moteur)
Il faut juste exécuter le patch, c'est tout. Mon vieux portable n'a jamais vu un compilateur de sa vie, et
N3xtD tourne très bien dessus. En gros, je télécharge, j'exécute, et c'est tout, ça tourne de suite après ;)
Cpl.Bator a écrit :En fait , le rendu sur texture pour ce genre de chose n'est pas top.
ce que je veut dire , c'est qu'au moment du rendu d'une skybox quelconque , celle ci à des flags particuliers , logiquement elle n'est pas soumis au brouillard , lumières , elle reste centré par rapport à la camera active , pas de clipping far.
ce que j'aurais voulu , c'est rendre facilement des objets quelconque avec les même propriétés.
tout a fait d'accord avec tes remarque sur les SkyBox. Par contre, les effets que tu cherches à faire ne sont-ils
pas gérable par un code 'maison' (une sorte de SkyBox realis&é par tes soins) ?
Cpl.Bator a écrit :je dis que c'est pas optimisé , car j'ai rendu 4 terrain en même temps ^^
après , il manque bien de la géométrie adaptative :mrgreen: (ROAMING)
4 terrains en même temps, bigre ;) Quand tu dis que c'est pas optimisé, c'est parce que ton fps chutte trop ?
Quand au Roaming, il n'y en a pas et c'est volontaire. Le moteur de terrain natif d'Irrlicht y fait appel,
mais c'est terriblement moche, donc c'est un choix technique délibéré, et des options d'optimisations
qui sont autres...
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

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

Bon, j'ai réglé le soucis lié à la gestion de la souris. Je m'occupe de WaterNode, et deux trois autres truc
en suspend, mise à jour dispo je pense dimanche ou lundi au plus tard ;)
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

Re: [n3xt-D] un moteur pour PureBasic

Message par tmyke »

mise à jour comme promis (un poil plus tôt que prévu, pour une fois...).

Bon, je pense avoir pas mal amélioré la gestion de la souris. Se reporter à l'exemple 005_QuakeLevel
pour voir le résultat.

Au niveau des SkyBox, on peux désormais récupérer le pointeur des vertices. Pour ce qui est de
l'eau, on peux modifier les paramètres de la geométrie comme pour tout autre IMesh, c-à-d en
passant par les fonctions genre

Code : Tout sélectionner

;iScaleTCoordsMeshBuffer(iMeshGeometry(*water), 4.0, 4.0, 2)
; OU
;iPlanarTextureMappingMeshBuffer(iMeshGeometry(*water), 0.02)
J'ai ajouté quelques fonctions lié aux collisions, illustré par l'exemple 055_CharacterControl.

Plus deux trois truc retravaillé, bref voilà.
Force et sagesse...
Anonyme

Re: [n3xt-D] un moteur pour PureBasic

Message par Anonyme »

Impec , je regarde tout ca dans la journée , comme d'hab , t'aura un compte rendu ^^ :wink:
Répondre