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 »

comtois a écrit :ça manque cruellement de doc !
c'est vrai, cela à toujours été un des gros points faible de DM3D.

comtois a écrit :Je voulais faire un CameraLookAt(), donc du coup il faut utiliser PointEntity() ...
en fait l'instruction DM_PointEntity() permet d'orienter une entity vers une
autre, il y a un sample dans le pack qui illustre très bien son emploi (19-Poursuite.pb). ;)

comtois a écrit :Comment je fais pour rendre transparent le block ? comme dans la version avec Ogre ?
je te poste d'ici a ce soir un petit code pour faire un cube avec alphaBlending.
comtois a écrit :A tout hasard, il n'y a pas un paramètre pour définir comment l'axe Z sera orienté et utilisé par le moteur 3D ?
non, meme si ce genre d'instruction ne serait pas trop difficile a faire. Faudrais
juste que je teste, surtout les répercutions que cela aurait sur les instructions de positionnement
par le suite...
Dobro a écrit :Genial :D

si Comtois se met a Dreammotion3D , Tmyke va etre obligé de travailler dessus :lol:
parceque le Comtois, y va en trouver des manques :lol:
Comtois à déjà beaucoups travaillé avec DM3D, et il a permit de beaucoups faire avancer
le moteur à une époque, et c'était bien cool... :)


Ceci dit, meme si cela à l'air très calme, je suis en train en fait de terminer le recodage
complet du moteur, avec pas mal de correctif et de bugs éradiqués. Cette fois une doc complete
(meme si elle sera concise) accompagnera le package (elle sera en anglais par contre), et de
plus, le projet passe entièrement en OpenSource (j'ai d'ailleurs posté sur le forum anglais
un message sous forme de roadmap sur le sujet).
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

en fait l'instruction DM_PointEntity() permet d'orienter une entity vers une
autre,
Et y'a pas moyen de l'orienter vers un point 3D tout simplement ?

si la structure Centity était défnie je pourrais déclarer une variable de ce type et renseigner les paramètres nécessaires à la fonction DM_PointEntity() sans créer une entity.
Pour l'instant je fais comme ça

Code : Tout sélectionner

Global *Bidon.CEntity
*bidon=DM_CreateMesh()
DM_PositionEntity(*bidon, 5*#Taille, 0, 3*#Taille)
DM_PointEntity(*camera, *bidon)
Après tout pourquoi pas, mais comment je fais pour libérer la mémoire ? je n'ai pas trouvé de DM_FreeMesh().
Pour info, puisque la structure n'est pas définie , ça n'a pas de sens de faire *entity.Centity , on peut aussi écrire *entity. C'est vrai que ça aide à comprendre à quoi se rattache le pointeur.

Et je n'ai toujours pas compris la différence entre un mesh et une entity. Avec Ogre c'est plus clair, le mesh contient la géométrie ,et il peut être utilisé pour créer plusieurs entity, et ensuite les commandes de mouvements , et autres sont dédiés aux entitys.là j'utilise indifféremment ma variable *entity pour créer le mesh et pour manipuler l'entity.
En fait elle englobe tout ? mais est-ce qu'un mesh peut-être commun à plusieurs entity ? quelles sont les différences entre CopyMesh() et CopyEntity() ?
Dans l'aide pour CopyMEsh() il y a un paramètre
copy: (facultatif) copie par copie réél ou par référence
C'est quoi la différence entre copie réelle et copie par référence ?

Au fait comment fonctionne DM_CameraZoom() ? je n'ai toujours pas compris à quoi correspondait le paramètre ? avec Ogre il y a CameraFov() et le paramètre correspond à un angle. on peut faire l'analogie avec les objectifs photos , grand angle --> plan large, petit angle --> zoom.

Je n'ai pas trouvé une échelle linéaire pour faire varier le zoom , quelle est la plage a utiliser ?

je te poste d'ici a ce soir un petit code pour faire un cube avec alphaBlending.
Merci :)
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 »

comtois a écrit :Et y'a pas moyen de l'orienter vers un point 3D tout simplement ?
non, mais tu peux créer un pivot (DM_CreatePivot()) auquel tu fera référence une
fois convenablement placé pour alimenter ton instruction DM_PointEntity(). Sinon,
pour libérer la ressource, il suffit de faire DM_FreeEntity(*pivot).

comtois a écrit : Et je n'ai toujours pas compris la différence entre un mesh et une entity...
En fait les Entity sont les éléments de base regroupant tous ce que
tu va crééer dans ton environement 3D. Donc cela regroupe les camera,
les lights, les mesh, les aniamtion, les sprite3D, etC...

Cela permet de manipuler tous ces éléments avec des instruction simple et
communes, que ce soit au niveau du positionnement, mais aussi au niveau
de la hiérarchisation. C'est comme cela que tu peux concevoir un arbre
hierarchique constitué d'Entity qui seront des mesh3D mais aussi des
lights (comme pour une torche par exemple), ou une camera (pour les FPS
par exemple).
Donc, pour un mesh3D statique, quand tu fait DM_CreateCube(), tu créé
une Entity de type Mesh3D, qui sera physiquement un cube.
Idem, quand tu fera DM_CreateLight(), tu créé une Entity de type lumière,
et dans les deux cas, pour les positionner tu vas employer une instruction
commune DM_PositionEntity().

Mais comme tu le dis, les structure n'étant pas définits, tu n'est pas obligé
de mettre à chaque fois *entity.CEntity, le CEntity n'étant la que pour
'marquer' le type de pointeur. Les choses seront différentes dans la
version 4, ou la l'utilisateur aura pleinement accès aux structures de
tous les éléments...

comtois a écrit :quelles sont les différences entre CopyMesh() et CopyEntity() ?
Dans l'aide pour CopyMEsh() il y a un paramètre
copy: (facultatif) copie par copie réél ou par référence
C'est quoi la différence entre copie réelle et copie par référence ?
Si tu fais une copy par référence, tu ne duplique pas les Buffers en mémoire video,
tu est dans ce cas gagnant en terme de ressource mémoire. Si tu n'a pas à modifier
à chaque fois le buffer géométrique de chaque élément, cette methode est à privilégier.

comtois a écrit :Au fait comment fonctionne DM_CameraZoom() ? je n'ai toujours pas compris à quoi correspondait le paramètre ? avec Ogre il y a CameraFov()
et le paramètre correspond à un angle. on peut faire l'analogie avec les objectifs photos , grand angle --> plan large, petit angle --> zoom.
Zoom au départ est égale à 0.0, et pour faire varier, le pas conseillé est de l'ordre de 0.01. Dans
l'exemple '11-3D2D.pb' tu un exemple d'utilisation.





Pour la transparence

Tu peux donc pour faire un cube transparent, employer
l'instruction DM_BrushAlpha(). Voici trois ligne à rajouter
par exemple pour avoir le cube principal plus ou moins transparent.
L'instruction DM_EntityLast() place l'entity en fin de pipeline
de rendu, car les mesh avec représentation alpha doivent etre
rendu en dernier pour éviter des problème visuels désagreable.

Code : Tout sélectionner

;- **** MAIN ****

*brush=DM_GetBrush(*entity)
DM_EntityLast(*entity)
DM_BrushAlpha(*brush, 0,2,3)
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Merci pour toutes ces précisions.

J'ai mis le code précédent à jour, en ajoutant la transparence du bloc principal.

à l'occasion je mettrai de l'ordre dans le code.
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

J'ai voulu ajouter une light, mais l'ambiance est orange alors que j'ai défini des lumières blanches, bug ou boulette dans mon code ?

J'ai mis à jour le code précédent avec les lights.
Après je m'attaque aux ombres, c'est possible avec Dreamotion3D je crois ?
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 »

Pour les light, je ragarde, pour ce qui est des ombres, c'est possible,
mais c'est toujours à l'état de prototypes, donc a voir justement
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 »

Oui, dès que tu créé des éclairage, tes mesh prenent la couleur que tu leurs a affectés,
donc orange ( DM_BrushColor(*bb, 255,128,0,255) )...
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Ok merci , c'est mieux maintenant, j'ai corrigé le code.

Il y a tellement de choses à savoir, mais on ne va pas s'en plaindre :)
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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon je réecris mon message,

dreamotion3d a toute les peines a fonctionner avec purebasic 4.10 beta 4

j'ai réussi a le faire marcher une fois, puis plus rien !! :?

ça m'envoie des POLINK error a tout les exemples !! :?

galere :lol:
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 »

Je fait toujours mes tests de la version 4 de DM3D avec la version 4.02 de PB.
Je vais tester avec la version 4.10beta4 pour voir ce qu'il en est, et je te
tiens au courant...
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

il semble deja que lorsqu'on install Physix
la version de Dreamotion3D.dll soit differente de la version donné avec
le moteur 3D

donc en installant physx apres le moteur on cree une incompatibilité

j'ai pu constaté qu'avant l'install de physx, l'exemple de comtois (Blocs)
fonctionne , alors qu'apres l'install de physx, ça marche plus !!


mais dans tout les cas, je ne suis pas arrivé a faire fonctionner les exemples
fourni avec l'installation du moteur3D :? :)
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 »

Bon, j'ai fait une mise a jour en 4.10 beta 4 de PB, puis j'ai téléchargé la version
actuelle de Dreamotion3D, que j'ai installé.

Je n'ai pas rencontré de soucis de fonctionnement sur aucun des samples du pack en tous les
cas.

Pour ce qui est du PackPhysX, en effet il y a bien un soucis de compatibilité, je vais d'ailleurs
provisoirement rendre indispo le téléchargement de ce dernier en attendant sa mise a jour
avec la version 4 de Dreamotion3D.
Pour faire de la physique avec DM3D il va falloir attendre un petit peu maintenant .
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

désolé, mais chez moi apres avoir TOUT effacé Dreamotion3d sur mon system (y compris dans le sytem32)

reinstallation dans la foulée !
et bien voila :
sur l'exemple "poursuite.pb" , (mais tout les exemples coince chez moi ..)

Image

ce serai peut etre bien que l'installateur verifie que tout les fichiers soient bien installé a leur place ... 8O

et qu'il soit capable de Désinstaller aussi !! :D
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 »

L'instalateur met les fichiers à un endroit bien précis dans les différents
repertoires de PureBasic, et vérifie si ces répertoires existes préalablement.
Il n'y a plus rien d'ecris dans les repertoire Windows...

C'est vrai, par contre, qu'il n'y a pas d'option de desinstalation, ce que je vais essayer
de corriger.

Par contre, j'ai téléchargé la version 4.02 de PB, que j'ai mis a jour avec la 4.10 beta4,
puis installé DM3D dans ce repertoire tout neuf et tout propre, cela fonctionne parfaitement...
je n'ai aucun soucis de link. J'ai fais la manip sur trois ordi, sans soucis.Donc c'est assez bizarre. :?

[EDIT] je pense qu'il traine quelque part un ancien fichier DM3D (lib ou DLL), car par
exemple, la fonction DM_SetColorText() n'est plus dans DM3D depuis un bon moment...
Ta mésaventure va me pousser vraiment à faire un systeme de désinstallation propre.
;)
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tmyke a écrit : Ta mésaventure va me pousser vraiment à faire un systeme de désinstallation propre.
;)
merci :lol:
Répondre