Dreamotion3D

Généralités sur la programmation 3D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pub faite sur PureBlogFr
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 »

Merci :wink:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Salut,

Merci pour ton moteur, je vais esseyer de me mettre a la 3D.
Jusque maintenant j'était repoussé par la complexité de la chose...
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 »

Alors n'hésite pas, y-a pas mal de passionnés ici qui se feront un plaisir de
t'aider, meme si tu pars de zero... (dont moi bien sur :wink: )
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

J'ai parcouru les exemples et l'aide, et ce que tu a fait a l'air vraiment terrible ! Bravo !

J'ai bien aimer le moteur de terrain, c'est le système qu'on utilisais sur darkbasic pro, et j'aimais bien ce système. (en plus poussé sur ton moteur)
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 »

Merci pour les compliment, en tous les cas tu n'est donc pad a ton
coups d'essais en 3D, vue que tu connais DBPro, donc pour toi l'apprentissage de
Dreamotion3D devrait se faire en dousseur... :)

PS: a titre d'info, quel sont les élément de ta config, (surtout CPU+carte video),
je coche sur ma tablette les config ou cela été essayé et ou cela semble tourner sans réel soucis... :wink:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ma config est la suivante :

CPU : AMD 2700+
Memoire : 512 Mo PC3200
GPU : Geforce fx 5600 XT 128 mo
Carte mère : ASUS A7V600-X
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 »

Merci ... Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Juste une question, tout ce qui a sur ton forum c'est le forum "Work in progress ..." ?

Ou en s'inscrivant il y a d'autre forum qui apparaisent ?
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 »

En t'inscrivant, j'activerais un compte 'beta testeur', qui te donnera accès
a l'autre partie du forum (in french).
Dernière modification par tmyke le ven. 05/janv./2007 17:16, modifié 1 fois.
Force et sagesse...
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok merci, je me suis inscrit, pseudo : wolfjeremy :D
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Salut,

Je voulais savoir, comment je pouvez facilement jouez entre un rendu normal et un rendu fillaire ?

J'utilise donc :

Code : Tout sélectionner

DM_BrushAddRender(*bb, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
Pour mettre en "fillaire" (je sais pas comment ça s'appel mdr)
Mais pour l'enlever j'utilise quoi ?

Merci d'avance pour votre réponse.
Seyhajin
Messages : 17
Inscription : jeu. 03/mars/2005 13:24

Message par Seyhajin »

Essaye :

Code : Tout sélectionner

DM_BrushAddRender(*bb, #D3DRS_FILLMODE, #D3DFILL_SOLID )
pour switcher entre les deux.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok ça marche, mais après avoir changé de mode 4 fois, il ne veux plus changé mdr
Enfin bon ça marche c'est déjà ça. :D

ça serait bien si quelqu'un saurait m'expliquer un peu les ligne du genre DM_BrushAddTextureStage etc, car je ne comprend pas trop les parametres de ces fonctions :oops:
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 »

Tout d'abord, sache qu'il existe une fonction

Code : Tout sélectionner

DM_EntityAddRender(*entity, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
Sont role est identiques, mais elle applqiue les commutateurs a l'entité dans sont ensemble,
et pas seulement à une Brush en particulier.


Il existe 3 grandes fonctions pour les changement d'état des divers
éléments constitutif de DirectX:

SetRenderState(), SetSamplerState(), SetTextureStageState()

SetRenderState() permet d'agir sur le traitement des pixel et des vertex par
le pipeline de rendu, comme par exemple le BlendMode, AlphaRef, ou FillMode.

SetSamplerState() permet d'agir sur les opérations de traitement généraux lié
aux textures, comme les filtres ou le type d'adressage.

SetTextureStateStage() permet de jouer sur les valeur de Blend, couleur, etc...
sur chaque canal de texture lors de leurs traitement par le pipeline de rendu.

Tu trouveras dans la Doc de DirectX toutes les info et les possibilité sur ces
instructions vital a la bonne maitrise de la 3D avec DirectX.

Sous DM3D, tu disposes d'une pile de pré-rendu et post-rendu, que tu peux alimenter pour
appliquer les changements d'état souhaité, soit au niveau d'une brush, soit au
niveau d'une entité dans sont ensemble. Ce sont les instructions:

Code : Tout sélectionner

    DM_BrushAddRender.l(*CBrush, state.l, value.l)
    DM_BrushAddSampler.l(*CBrush, sampler.l, Types.l, value.l)
    DM_BrushAddTextureStage.l(*CBrush, Stage_texture.l, Types.l, Value.l)
    
    DM_BrushRender(*CBrush, index_stack.l, state.l, value.l)
    DM_BrushSampler(*CBrush, index_stack.l, sampler.l, Types.l, value.l)
    DM_BrushTextureStage(*CBrush, index_stack.l, Stage_texture.l, Types.l, Value.l)
    
    DM_BrushRestoreRender(*CBrush, state.l, value.l)
    DM_BrushRestoreSampler(*CBrush, sampler.l, Types.l, value.l)
    DM_BrushRestoreTextureStage(*CBrush, Stage_texture.l, Types.l, Value.l)

et

Code : Tout sélectionner

    DM_EntityAddRender.l(*CBrush, state.l, value.l)
    DM_EntityAddSampler.l(*CBrush, sampler.l, Types.l, value.l)
    DM_EntityAddTextureStage.l(*CBrush, Stage_texture.l, Types.l, Value.l)
    
    DM_EntityRender(*CBrush, index_stack.l, state.l, value.l)
    DM_EntitySampler(*CBrush, index_stack.l, sampler.l, Types.l, value.l)
    DM_EntityTextureStage(*CBrush, index_stack.l, Stage_texture.l, Types.l, Value.l)
    
    DM_EntityRestoreRender(*CBrush, state.l, value.l)
    DM_EntityRestoreSampler(*CBrush, sampler.l, Types.l, value.l)
    DM_EntityRestoreTextureStage(*CBrush, Stage_texture.l, Types.l, Value.l)


Au prime abord, cela parrait asser compliqué, mais une fois que tu en as compris le principe,
cela te donne les plein pouvoir sur le rendu des tes Entités, et une puissance très
importante.

Par exemple, dans le cas d'un mesh en filaire, il suffit d'ecrire:

Code : Tout sélectionner

*mesh.CEntity = DM_CreateCube()
DM_EntityAddRender(*mesh, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
DM_EntityRestoreRender(*mesh, #D3DRS_FILLMODE, #D3DFILL_SOLID )

Si tu n'ecrivais pas l'instruction 'DM_EntityRestore...', le pipeline de rendu
resterais en mode filaire et les autres objets serais aussi représentés en WireFrame.

Voila, c'est succins, mais j'espère que cela a éclairé un petit peu ta lanterne.
Force et sagesse...
Répondre