Dreamotion3D

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

Message par tmyke »

Pour les Quad, tu disposes de 8 canaux de texture, a toi de jouer avec les pile d'effets sur les Brush pour mixer tout cela. Sinon voici par exemple
un bout de code qui permet de modifier directement les valeurs du mesh d'un quad:

Code : Tout sélectionner

Structure Vertice8
  x.f
  y.f
  z.f
  nx.f
  ny.f
  nz.f
  color.l
  uv.f[16]
EndStructure ;92
*Vert.Vertice8

  mesh.ID3DXMesh = DM_QuadLocalMesh(0)
  *VB.IDIRECT3DVERTEXBUFFER9
  mesh\GetVertexBuffer( @*VB )
  *VB\Lock( 0, 0, @*Vert, 0 )
  For i = 1 To 256
   *Vert\y = *Vert\y + 5.0
   *Vert = *Vert + 92
  Next
  *VB\UnLock()
  *VB\Release()
tu le place juste avant la boucle principale par exemple du tuto que j'ai fais. Cela modifie toutes les composante 'Y' des vertex du Quad n° 0.
Retourne la camera (a l'init il est dans ton dos) et tu veras, il est monté d'un cran...
Sûr, il faut commencer a maitriser un poil DX, mais rien d'insurmontable...
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Avec DeleD,j'ai exporté le chateau 'Neuschwanstein.dmf' au format b3d.

Je peux le charger avec la commande DM_LoadAnimEntity(), par contre ça plante si j'utilise la commande DM_LoadEntity(), pourtant cette dernière fonctionne avec les fichiers b3d fournis dans tes démos.

Ensuite j'ai voulu reprendre l'exemple avec mario en remplaçant la scene.x par mon chateau, et là aussi ça plante, sans doute parce que je suis obligé d'utiliser DM_LoadAnimEntity() pour charger le chateau plutôt que DM_LoadEntity() ?

En fait ça plante sur la commande NX_CreateStaticElement(*base,10,0), pourtant *base n'est pas nulle.

DeleD est gratuit, si tu veux faire l'essai.
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.
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 »

J'ai installé et essayé. Je connaissait pas, pas mal du tout , en fait cela va me
servir a continuer le débuggage des effet sous le format B3D, le lightMapping
par exemple qui tourne encore pas très rond.

Sinon, pour ton chateau, balaise le mesh, 143 objets, 43 Brush, pas le petit
truc. En fait au niveau de DM3D, c'est un bug, ou plutot une limitation dans
les imports (128 objets seulement) qui faisait que cela plantait. Pour les
LoadAnimEntity(), la gestion est différente, et la pas de soucis.
J'ai donc modifié mes constantes, et désormais, l'import se fait correctement.
Pour les Mesh static dans PhysX, il est normal que cela ne fonctionne pas
avec les fonctions LoadAnimEntity(), c'est logique quelque part.
J'ai essayé donc le chateau avec le sample 'character' et la fonction
LoadEntity(), et la c'est au poil... (module DM3D a re-loader donc...)

PS: par contre les export au format '.x' de DeleD sont ancien standart, donc
ne fonctionne pas avec DM3D..
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Super, ça fonctionne nickel :)

Il me reste à ajouter le suivi de la caméra, et balader mario dans le chateau :P
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.
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 »

J'ai réussi a trouver mon petit bug, et maintenant j'arrive a importer
les scene format B3D faite avec DeleD et les LightMapping. C'est
plutot chouette, et cela ajoute au rendu se petit truc qui en jète...

(module a re-loader , désolé )
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

J'ai vu qu'il était possible de faire du picking avec le terrain ,et avec les entitys c'est possible ?

Il est possible de faire du lancer de rayon ?

Si je reprends l'exemple du chateau , il est possible de lancer un rayon et de connaitre en retour les coordonnées de l'intersection entre le chateau et le rayon ?

Je cherche à reprendre avec des commandes de ton moteur l'exemple qui se se trouve dans ma signature, c'est à dire pouvoir se déplacer dans une scène 3D et lancer un objet (une sphère) qui s'affiche au point d'intersection.
Et afficher des lasers avec émission de particules au point d'intersection.

ça permettrait de comparer la façon de s'y prendre entre les deux moteurs ogre et le tien, pour obtenir le même résultat.
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.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

J'ai testé un peu les lignes, malheureusement elles ne sont pas plus rapides qu'en PB natif. Pourrais-tu rajouter une fonction pour les gérer comme les triangles, de façon à ce qu'on puisse profiter de la vitesse apportée par le vertexbuffer?
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 »

@Comtois:

Oui il existe des foncions de picking sur les Entity. Dans le Sample 'MD2.pb' tu a un exemple, avec les ligne suivantes:

Code : Tout sélectionner

If MouseButton(#PB_MouseButton_Right)
	*mesh = DM_CameraPick(*camera, MouseX(), MouseY())
	If *mesh<> Null 
 		  DM_TranslateEntity(*mesh, 0.0, 10.0, 0.0)
	EndIf
EndIf
C'est tout simple. Quelques autres instructions sont les suivantes:

DM_PickedEntity.l() : retourne la dernière Entity Pickée
DM_PickedTriangle.l(): retourne le triangle sur l'Entity Pickée
DM_PickedDistance:f(): retourne la distance calculé lors du dernier picking sur l'Entity trouvée.
DM_LinePick.l(posx.f, posy.f, posz.f, distx.f, disty.f, distz.f):
Permet de faire un test de Picking sur les Entity, passant par une ligne définit par l'utilisateur
, pos étant le point de départ, dist étant les coordonnée relatives du point d'arrivé. Retourne l'Entity
trouvé la plus proche. (a débugguer)
Dans le cas de DM_LinePick(), attention, car c'est le Mesh brut qui est testé
donc sur des Entity asser lourdes, cela peut-etre asser long... Il y a des fonction
dans le moteur physique qui sont plus rapide et que je peux intégrer asser rapidement je
pense.

Sinon, très très sympa ton pgm en signature, j'espère que tu arriveras a un résultat similaire assez
rapidement avec DM3D. PAr contre je me rends compte qu'il n'y a pas de donction de dessin de ligne 3D,
je vais voir ce que je peux faire...

@djes: Qu'entends tu par tester les lignes ?. Pour gérer les triangles, je ne vois pas trop ce que tu souhaite.
Pour faire directement du VertexBuffer (primitives par exemple) , tu a accès directemement aux fonctions Direct3D
au sein du code PB. Sinon, tout les mesh crées dans DM3D sont tous stockés dans des VertexBuffer, et si possible
directement dans la mémoire de la carte vidéo. Peux-tu faire un parallèle avec des fonction Ogre sous PB ?
Dernière modification par tmyke le mar. 24/oct./2006 8:46, modifié 1 fois.
Force et sagesse...
Anonyme

Message par Anonyme »

je pense qu'il parle de simple lignes 2D lineXY()
Djes, j'ai une fct° plus optimisé que celle de pb dans le code que je t'ai filer sur le forum Bgames, tu rajoutes le pointeur vidéo en modifiant le RVB en BVR et le tour est joué. :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 »

Cpl.Bator a écrit :je pense qu'il parle de simple lignes 2D lineXY()
Si tel est le cas, alors oui, ce n'est pas très optimisé encore, et la partie 2D est un peut
le parent pauvre de DM3D pour le moment, je préfère pour l'instant accer mes
effort sur la 3D :wink:
Mais DM3D est un projet de longue allaine (qui est sortie de terre il n'y a que 4 mois...) et pour faire des GUI ou autre,
il faudra que l'on revienne dessus pour faire une partie 2D qui soit un peu plus a la hauteur.
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 »

fonction NX_RayCastAnyShape intégré au moteur physique pour
des detection line hyper rapide et puissante (avec face, distance, etc...) et
intégration des fonctions de dessin ligne 3D dans le module graphique.

Tout cela en ligne dès demain... :wink:
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

tmyke a écrit :fonction NX_RayCastAnyShape intégré au moteur physique pour
des detection line hyper rapide et puissante (avec face, distance, etc...) et
intégration des fonctions de dessin ligne 3D dans le module graphique.

Tout cela en ligne dès demain... :wink:

Avec un petit exemple ? :)


ça me parait excellent tout ça, je vais pouvoir supprimer les 3/4 de mon code
#hello
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.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Cpl.Bator a écrit :je pense qu'il parle de simple lignes 2D lineXY()
Djes, j'ai une fct° plus optimisé que celle de pb dans le code que je t'ai filer sur le forum Bgames, tu rajoutes le pointeur vidéo en modifiant le RVB en BVR et le tour est joué. :wink:
Oui, j'ai vu, elle est très bien! Mais aujourd'hui on ne peut plus faire comme ça, il faut si possible utiliser les fonctions câblées des cartes vidéos (même si une routine de ligne est toujours utile pour certains effets :D)

tmyke> J'ai utilisé les fonctions D3D pour le faire moi-même, mais comme ton moteur est super cool, je me disais que ce serait bien qu'il y ait une fonction "native" pour le faire sans se prendre la tête :D. J'ai beaucoup apprécié d'avoir un pointeur sur le device d3d aussi facilement...
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 »

OK pour les fonctions native. Pour nous aider, liste moi les fonctions et leurs
utilités que tu souhaiterais voir et je les implentes dès que possible :wink:
Force et sagesse...
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

TMyke, suis en train de commencer à tomber vers ton moteur à défaut de Ogre....
Répondre