Page 3 sur 6

Publié : dim. 08/mars/2009 18:11
par tmyke
Il faut surtout voir si ta carte te suffit pour le moment dans tes applications.
Si oui, alors pourquoi changer ? Il est certains que d'ici quelques temps elle sera dépassé.
Et si tu veux t'amuser en 3D, alors une carte un poil plus recente serait la bienvenue ;)


Sur ce, j'ai mis à jour l'archive, avec les premiers exemples illustrant quelques fonctions
lié à la gestion physique. Je m'amuse bien à conduire la petite voiture :)


ImageImage

Publié : dim. 08/mars/2009 19:39
par comtois
J'aime bien les derniers exemples :)

Par contre, je n'ai pas encore fouillé, mais pour le clavier y'a moyen de gérer un clavier azerty ? parce qu'écrire TVInput_IsKeyPressed(#TV_KEY_A)
pour utiliser la touche [Q], c'est pas terrible.

Publié : dim. 08/mars/2009 19:53
par tmyke
Tu me pose une colle là. Je dirais que comme cela non, il n'y a pas d'instruction
en apparence pour basculer sur le clavier AZERTY.

Je dirais à vue de nez qu'il faut juste re-programmer le codage des touches qui est fait dans le fichier
pbTV3DConstante.pbi, avec par exemple #TV_KEY_A = 16 au lieu de 30, etc...

ou ajouter une liste de constante clavier #TV_FR_KEY_A = 16 etc..

J'y avais pas pensé :?

Publié : lun. 09/mars/2009 10:35
par kelebrindae
Très joli !
Les possibilités graphiques sont alléchantes, et le moteur physique a l'air plutôt bien aussi; ça donne envie.

C'est juste dommage qu'il faille payer 150$ pour se débarrasser du logo "powered by True Vision 3D", j'avais vaguement espéré que ce serait gratuit; DreamMotion3D m'a donné de mauvaises habitudes, je suppose... :wink:

...mais c'est un projet fou !

Publié : lun. 09/mars/2009 11:55
par beauregard
kelebrindae a écrit :payer 150$
si tu fait un jeu de course de dingue, ou un fps de folie qui intéresse un éditeur, les 150$ ne seront pas un obstacle, loin de là... et t'auras probablement d'autres soucis bien plus sérieux.

pour relativiser, 150$, c'est une consultation chez un avocat spécialisé en droit commercial et industriel( 120 euros en 2002).
tmyke a écrit :basculer sur le clavier AZERTY.
il y a une commande purebasic, mmh,

Code : Tout sélectionner

KeyboardMode(#PB_Keyboard_International) 

Publié : lun. 09/mars/2009 12:59
par tmyke
kelebrindae a écrit :Très joli !
Les possibilités graphiques sont alléchantes, et le moteur physique a l'air plutôt bien aussi; ça donne envie.

C'est juste dommage qu'il faille payer 150$ pour se débarrasser du logo "powered by True Vision 3D", j'avais vaguement espéré que ce serait gratuit; DreamMotion3D m'a donné de mauvaises habitudes, je suppose... :wink:
Le watermark peut etre genant au depart, mais on l'oubli vite. Il est certain qu'apres, pour diffuser ses creations,
alors il faut se taper la licence, pas forcement donnee.
Mais comme je l'ai souligne en prehanbule de ce sujet, il ne s'agit que d'une possibilite parmis d'autre pour faire
de la 3D avec PureBasic (meme si plus je joue avec, plus je trouve ce moteur possede un fort potentiel).
Il en existe d'autre, meme si aucune ne semble federatrices pour le moment.
beauregard a écrit :
tmyke a écrit :basculer sur le clavier AZERTY.
il y a une commande purebasic, mmh,

Code : Tout sélectionner

KeyboardMode(#PB_Keyboard_International) 


Faudrais que je teste ;) mais comme laisse entendre plus haut, il faut tout simplement faire un codage
des constante claviers specifique Fr, et cela devrait largement suffire.

(desole pour les accents, je suis avec mon telephone)

Publié : lun. 09/mars/2009 18:50
par Patrick88
lien vers le wiki donnant accés à des tutoriels (en anglais) en vb

http://wiki.truevision3d.com/

pat

Publié : mar. 10/mars/2009 13:24
par tmyke
Merci pour ce lien Pat, c'est un point d'entre très intéressant pour TV3D .
Pour des codes et des tuto, voir ici: http://tv3dsamples.blogspot.com/
C'est des codes C#, VB, C++ mais cela laisse pas mal de listing à décortiquer...

Sinon je me bat avec Vista, ou j'ai des plantages systématiques. Je pense avoir trouvé le soucis et
la parade, des news d'ici un jour ou deux, je dois aussi régler des soucis sur TVInput en mode FullScreen pour la souris.
Bref, le revers de la medaille, moins glorieux comme boulot, mais néanmoins indispensable.

Mais apparemment rien de rédhibitoire pour le moment, juste quelques ajustement pour que cela puisse tourner sur
toutes les plateforme Windows

;)

Publié : mar. 10/mars/2009 21:38
par Patrick88
j'ai tenté (en vain) de convertir un petit code vb de création de mesh avec addvertex, un peu comme j'avais bidouillé avec opengl, mais il y des paramétres sur la fonction qui sont restés obscurs...

en vb ça donne :
Mesh.AddVertex x, 0, z, 0, 0, 0 (tout simple)

la fonction qui m'a semblé le plus proche
;TVMesh_AddVertex.l(*mesh.TVMesh,x.f,y.f,z.f,nx.f,ny.f,nz.f,tu1.f,tv1.f,tu2.f=0.0,tv2.f=0,color.l=0)
arg!
TVMesh_AddVertex.l(*mesh, x, 0, z, 0, 0, 0, 0, 0, 0, 0, 0)

le code vb convertit en pb (j'ai bidouillé l'exemple 2 qui me paraissait le plus proche )

Code : Tout sélectionner

; ------------------------------------------------------------
;   TV3D exemples
;
;   Exemple 2   :   exemple pour creation ;manuel; de mesh 
;   Historique  :
;     xx/03/09  19:16    TMyke
;
; ------------------------------------------------------------

; Include files 
IncludePath "Includes\"   :   IncludeFile "pbTV3D.pbi"

EnableExplicit

Global hwnd.l
Global *engine.TVEngine
Global *global_scene.TVScene
Global *tv_input.TVInputEngine
Global *mesh.TVMesh
Global *camera.TVCamera
Global Quit.l, i.l
 
Declare updateCamera()

Procedure.l MyCylinder(Radius.f, Height.f, Sides.f)
 
    Protected Theta.f ;Current Angle
    Protected Inc.f ;Angular increment
    Protected x.f ;x coord
    Protected y.f ;y coord
    Protected z.f ;z coord
    Protected i.l ;Integer
 
    ;Mesh.SetPrimitiveType TV_TRIANGLESTRIP
    ;TVMesh_SetPrimitiveType(*mesh.TVMesh,ePrimitiveType.l)
    TVMesh_SetPrimitiveType(mesh,#TV_TRIANGLESTRIP)
 
    ;Cylinder Precision
    Inc = 2 * #PI / Sides ;where each side has two triangles
       
    Theta = 0
   
    For i = 0 To Sides
       
        ;Calculate Vertices
        x = Radius * Cos(Theta)
        y = Height
        z = Radius * Sin(Theta)
       
        ;Vertex at the top of the cylinder
        ;Mesh.AddVertex x, 0, z, 0, 0, 0
        ;TVMesh_AddVertex.l(*mesh.TVMesh,x.f,y.f,z.f,nx.f,ny.f,nz.f,tu1.f,tv1.f,tu2.f=0.0,tv2.f=0,color.l=0)
        TVMesh_AddVertex.l(*mesh, x, 0, z, 0, 0, 0, 0, 0, 0, 0, 0)
        ;Vertex at the bottom of the cylinder
        ;Mesh.AddVertex x, y, z, 0, 0, 0
        TVMesh_AddVertex.l(*mesh, x, y, z, 0, 0, 0, 0, 0, 0, 0, 0)
        Theta = Theta + Inc
   
    Next
    ProcedureReturn *mesh
EndProcedure

;----------------------------------------------------------
; ouverture d'une fenetre
 *engine = TVGraphics3D(800, 600)
 
 ;----------------------------------------------------------
; TV3D n'est pas seulement un moteur 3D, mais un moteur de
; jeux. Donc, on lui spécifie la creation d'une scene, ce qui
; initialise en quelque sortie tous les éléments du moteur 3D
  *global_scene = TVScene_Create()
  TVScene_SetBackgroundColor( 0.1, 0.1, 0.2)
; limitation du frame rate à la fréquence de rafraichissement de l'écran
 TVEngine_SetVSync(*global_scene , #True)

*mesh = MyCylinder(10,10,3)

;----------------------------------------------------------
; creation d'un Mesh, vide, que l'on appel "cube", 
; ; rataché à notre scene 
;      *cube = TVScene_CreateMeshBuilder("cube")
; creation dessus d'un simple cube

; on veut voir nos face quelque soit 'orientation
;  TVMesh_SetCullMode(*cube, #TV_DOUBLESIDED)
; ; ajout d'une face
;  TVMesh_AddFace(*cube, 0)
; ; ajout d'un certain nombre de vertices
;  For i = 0 To 11
;     TVMesh_AddVertexEx(*cube, ?Vertex+32*i, 32)
;  Next

;----------------------------------------------------------
; creation d'une camera
*camera = TVCamera_Create()
TVCamera_SetPosition(*camera, 0,0,-5)


;----------------------------------------------------------
; creation d'un device Input pour la gestion des entré (souris et clavier ici)
TVInput_Create()
TVInput_Initialize( #True, #True)
;
Repeat

    TVMesh_RotateY(*mesh, 0.01,0)

  ; gestion touche et freecamera
    updateCamera()
  
  ; boucle de rendu
    TVEngine_Clear(*engine, #False)
     TVMesh_Render(*mesh)
    TVEngine_RenderToScreen(*engine)

Until Quit=1
; end

Global angx.f, angy.f, mDown.l
Procedure updateCamera()
	 
	Protected mx.l, my.l
	Protected bt1.L, bt2.l, bt3.l, bt4.l, btroll.l
	
	TVInput_GetMouseState(@mx , @my , @bt1 , @bt2, @bt3, @bt4 , @btroll )
		
	If bt1
  		If mDown=0
  			mDown=11
  		Else
			angx = mx*0.15
			angy = my*0.15
		  TVCamera_Turn(*camera, DEG2RAD(angy), DEG2RAD(angx), 0)

  		EndIf
	Else
  	 	mDown=0		
	EndIf
	If TVInput_IsKeyPressed.l(#TV_KEY_UP)
		 TVCamera_MoveRelative(*camera,0.005 * TVEngine_AccurateTimeElapsed.f(*engine),0,0, #True)
	EndIf
	If TVInput_IsKeyPressed.l(#TV_KEY_DOWN)
		 TVCamera_MoveRelative(*camera,-0.005 * TVEngine_AccurateTimeElapsed.f(*engine),0,0, #True)
	EndIf
	If TVInput_IsKeyPressed.l(#TV_KEY_ESCAPE)
		 Quit=1
	EndIf
			
EndProcedure
:? :?:

pat

Publié : mar. 10/mars/2009 22:08
par GeBonet
Ben voilà... Installé et tout fonctionne... Enfin presque...
Mais c'est certainement du à moi...

Sous JaPBe pas de problème... ! Superbe !

Mais sous IDE normal (PB 3.0) J'ai des cubes blancs... Etc... Pourquoi ???

C'est pas la première fois, avec d'autres aussi.
Il suffisait de mettre le débugger externe graphique... Mais ici non ???
Encore pas mal de truc à apprendre ?

Publié : mar. 10/mars/2009 22:43
par beauregard
GeBonet a écrit :cubes blancs
mmh, tu as peut être les même soucis que j'avais: mise à jour de directX et pilote graphique, puis rouler jeunesse... :)

ps: ta carte doit supporter shader

Publié : mar. 10/mars/2009 22:45
par GeBonet
Ouais... Possible, mais alors pourquoi avec JaPBe aucun problème ?

Publié : mar. 10/mars/2009 23:00
par beauregard
GeBonet a écrit :Ouais... Possible, mais alors pourquoi avec JaPBe aucun problème ?
c'est étrange. au début j'utilisais Japbe, pour tester mais finallement l'ide officiel me suffit. çà doit être une histoire de direction, Dobro ayant déjà rencontré ce type de problème, mmh, fait donc un copier/coller des 2 .dll dans, heu, le dossier où, heu, on partage les trucs, hum.

Publié : mar. 10/mars/2009 23:05
par tmyke
Patrick88 a écrit :j'ai tenté (en vain) de convertir un petit code vb de création de mesh avec addvertex, un peu comme j'avais bidouillé avec opengl, mais il y des paramétres sur la fonction qui sont restés obscurs...

en vb ça donne :
Mesh.AddVertex x, 0, z, 0, 0, 0 (tout simple)

la fonction qui m'a semblé le plus proche
;TVMesh_AddVertex.l(*mesh.TVMesh,x.f,y.f,z.f,nx.f,ny.f,nz.f,tu1.f,tv1.f,tu2.f=0.0,tv2.f=0,color.l=0)
arg!
TVMesh_AddVertex.l(*mesh, x, 0, z, 0, 0, 0, 0, 0, 0, 0, 0)

le code vb convertit en pb (j'ai bidouillé l'exemple 2 qui me paraissait le plus proche )


pat
Je regarde cela, et en rentrant du boulot demain, je pense pouvoir te donner le code valide.
GeBonet a écrit :Ouais... Possible, mais alors pourquoi avec JaPBe aucun problème ?
Je ne connais pas JaPBe, et je n'ai donc pas essayé. Avec l'IDE de base, et en installant comme
prévu le pack, cela devrait marcher. Maintenant, pour cela fonctionne parfaitement avec JaPBe et
pas avec l'IDE de PB, là je ne serais
répondre.... :?:

Publié : mar. 10/mars/2009 23:08
par beauregard
tmyke a écrit :là je ne serais répondre.... :?:
oui, c'est vraiment très étrange...