Page 2 sur 4

Publié : sam. 22/mars/2008 19:14
par wolfjeremy
Il y a des model 3D gratuit sur le web, mais bien souvent, l'animation n'est pas encore faite et donc ça sert a rien au final lol

Publié : sam. 22/mars/2008 19:18
par cha0s
Cpl.Bator a écrit : Grâce a tmyke d'ailleurs j'espère pouvoir avoir un dreamotion sous linux pour mon utilisation perso.

c'est vrai que un dreammotion sous linux sa serait le pied.

Cependant j'ai regardé les sources et le travaille semble assez titanesque je pense que si on veut que cela se realise il faudrait qu'ont aportes notre aide a tmyke.

Publié : sam. 22/mars/2008 21:04
par tmyke
Pour les "Mega-objet", je suis preneur, et je serais le premier à faire ce qu'il
faut pour les integrer au code...
cha0s a écrit : c'est vrai que un dreammotion sous linux sa serait le pied.

Cependant j'ai regardé les sources et le travaille semble assez titanesque je pense que si on veut que cela se realise
il faudrait qu'ont aportes notre aide a tmyke.
Passer Dreamotion3D sous linux veut dire un portage du code sous OpenGL. C'est possible, mais comme tu dis,
cela représente un sacré travail et aussi une bonne connaissance de OGL.
En y allant doucement, les choses sont certainement realisable, et à plusieurs ... ;)

Publié : sam. 22/mars/2008 22:01
par Anonyme
J'ai déjà importé pas mal de chose , d'une part grâce à embryon de moteur réalisé par Tmyke & moi même ( ose 3D ) qui n'a jamais vu le jour.
et dreamotion 3D, je me sers des sources de dreamotion surtout pour avoir un modèle de "pipeline" , j'ai déjà un petit panel de fonctions dispo :
mais bon , je ne veut pas mettre de coup d'épée dans l'eau , rien ne sera dispo d'ici un bon bout de temps.
InitEngine.l()
RenderWorld(*CCamera)

BeginScene()
EndScene()

EnableZBuffer()
DisableZBuffer()

CreateCube.l(*Parent = #Null)
CreateSphere.l(Radius.f,Iteration.l,*Parent = #Null)

EntityRendering(*CEntity,*CEntity_Camera)
TranslateEntity(*CEntity,x.f, y.f, z.f, glob.b=#False)
TurnEntity(*CEntity,x.f, y.f, z.f, glob.b=#False)
RotateEntity(*CEntity,x.f, y.f, z.f, glob.b=#False)
PositionEntity(*CEntity,x.f, y.f, z.f, glob.b=#False)
ScaleEntity(*CEntity,x.f, y.f, z.f, glob.b=#False)
MoveEntity(*CEntity,x.f, y.f, z.f)
GetEntityX.f(*CEntity, glob.b=#False)
GetEntityY.f(*CEntity, glob.b=#False)
GetEntityZ.f(*CEntity, glob.b=#False)
GetEntityPitch.f(*CEntity, glob.b=#False)
GetEntityYaw.f(*CEntity, glob.b=#False)
GetEntityRoll.f(*CEntity, glob.b=#False)
PointEntity(*CEntity_Source ,*CEntity_target,roll.f)
EntityWired(*CEntity,state.b)
CountChildreen(*CEntity)
CreatePivot(*Parent=#Null)
SetEntityMesh(*CMesh,*Parent = #Null)

CreateCamera.l(width,height, near.f=1, far.f=1000)

CreateLight.l(num_ordre.l,type.b,*Parent = #False)
SetLightAmbient(*CLight,red.f,green.f,blue.f,w.f=1)
SetLightDiffuse(*CLight,red.f,green.f,blue.f,w.f=1)
SetLightSpecular(*CLight,red.f,green.f,blue.f,w.f=1)
SetLightShininess(*CLight,value.f)
SetLightDirection(*CLight,x.f,y.f,z.f)
SetLightCutOff(*CLight,value.f)
SetLightConstantAttenuation(*CLight,value.f)
SetLightLinearAttenuation(*CLight,value.f)
SetLightQuadraticAttenuation(*CLight,value.f)
SetLightExponent(*CLight,value)

CreateMesh.l()
AddVertex.l(*CMesh, x.f , y.f , z.f , u.f , v.f , color.l=0)
AddFace.l(*CMesh,A.l,B.l,C.l)
SetVertexColor.b(*CMesh, vertice.l , r.f , g.f , b.f)
RenderingMesh(*CMesh)
UpdateNormal(*CMesh)
CountVertices.l(*CMesh)
TranslateMesh(*CMesh, x.f, y.f, z.f)
RotateMesh(*CMesh, x.f, y.f, z.f)
ScaleMesh(*CMesh, x.f, y.f, z.f)

CreateMaterial.l()
SetMaterialTexture(*CMaterial,*CTexture)
SetMaterialAmbient(*CMaterial,red.f,green.f,blue.f,w.f=1)
SetMaterialDiffuse(*CMaterial,red.f,green.f,blue.f,w.f=1)
SetMaterialSpecular(*CMaterial,red.f,green.f,blue.f,w.f=1)
SetMaterialEmissive(*CMaterial,red.f,green.f,blue.f,w.f=1)
SetMaterialShininess(*CMaterial,value.f)
SetEntityMaterial(*CEntity,*CMaterial)

CreateTexture.l(width, height)
TexturePutPixel(*CTexture, x, y,red.c ,green.c, blue.c, alpha.c)
GenerateTextureID.l(*CEntity,*CTexture)
SetTextureArray(*CTexture,*Array)
Tmyke , je profite de se topic pour te faire une relance , la fonction lookat n'existe pas sous dreamotion, du peut pointé une entité sur une autre mais pas avec des vecteurs.

Voici une fonction qui te renvois une matrice que tu peut remplacer à la matrice vue de l'objet.
Elle est directment utilisable sous dreamotion , je t'ai piqué les mêmes nom de classes a deux choses près.

Code : Tout sélectionner

CMatrix CEntity::LookAT(CVector3 eye,CVector3 at,CVector3 up){

CVector3 zaxis;
zaxis.x = eye.x - at.x;
zaxis.y = eye.y - at.y;
zaxis.z = eye.z - at.z;
float dist = sqrt(zaxis.x * zaxis.x + zaxis.y * zaxis.y + zaxis.z * zaxis.z);
zaxis.x /= dist;
zaxis.y /= dist;
zaxis.z /= dist;

CVector3 xaxis;
xaxis.x = up.y * zaxis.z - up.z * zaxis.y;
xaxis.y = up.z * zaxis.x - up.x * zaxis.z;
xaxis.z = up.x * zaxis.y - up.y * zaxis.x;
   dist = sqrt(xaxis.x * xaxis.x + xaxis.y * xaxis.y + xaxis.z * xaxis.z);
xaxis.x /= dist;
xaxis.y /= dist;
xaxis.z /= dist;

CVector3 yaxis;
yaxis.x = zaxis.y * xaxis.z - zaxis.z * xaxis.y;
yaxis.y = zaxis.z * xaxis.x - zaxis.x * xaxis.z;
yaxis.z = zaxis.x * xaxis.y - zaxis.y * xaxis.x;

float dot1 = xaxis.x * eye.x + xaxis.y * eye.y + xaxis.z * eye.z;
float dot2 = yaxis.x * eye.x + yaxis.y * eye.y + yaxis.z * eye.z;
float dot3 = zaxis.x * eye.x + zaxis.y * eye.y + zaxis.z * eye.z;

CMatrix mat;
mat.identity();

mat.elem[0][0]=xaxis.x;
mat.elem[0][1]=xaxis.y;
mat.elem[0][2]=xaxis.z;
mat.elem[0][3]=-dot1;

mat.elem[1][0]=yaxis.x;
mat.elem[1][1]=yaxis.y;
mat.elem[1][2]=yaxis.z;
mat.elem[1][3]=-dot2;

mat.elem[2][0]=zaxis.x;
mat.elem[2][1]=zaxis.y;
mat.elem[2][2]=zaxis.z;
mat.elem[2][3]=-dot3;

mat.elem[3][3]=1;

return mat;
}

Publié : sam. 22/mars/2008 23:24
par Backup
@Cpl.Bator: ha quand meme !!

sacres boulot dit donc !! 8O

Publié : sam. 22/mars/2008 23:31
par Anonyme
C'est pas fini , j'attaque le picking , puis certainement le shadow mapping , ensuite la reflection , je récupère mes travaux de ma lib sur les sprites que je vais incorporer dans le moteur, ainsi que le début de gui que j'ai créer ( mais pas encore diffusé ).
J'adore opengl :D , le hic , c'est que j'ai une CG pourrie , la mienne à brûlé l'été dernier... donc pô de shader...


edit : y a que 108ko de code contre 1015ko pour dreamotion environ , y 'a encore du travail , mais le miens sera toujours plus leger, c'est de l'opengl pas dx... :D

Publié : dim. 23/mars/2008 9:59
par poshu
Un moteur 3D compréhensible, fonctionnel ET multiplateforme.... @_@;
Bonne chance, c'est ce genre de chose qui hante mes rêves cochons.

Publié : dim. 23/mars/2008 10:26
par tmyke
Tmyke , je profite de se topic pour te faire une relance , la fonction lookat n'existe pas sous dreamotion, du peut pointé une entité sur une autre mais pas avec des vecteurs.
Excelent, c'est vrai que tu en avais parlé, je regarde cela et je vois pour incorporer ton
code dans DM3D
;)

I am a solitary programmer

Publié : dim. 23/mars/2008 13:22
par beauregard
SPH a écrit :Je pose la question : est-ce que fred n'a pas su mettre en avant une conception 3D simple à réaliser ?Ca se pourrait bien !!
Dans une interview, il me semble que Fred a déclaré avoir quelques difficultés avec la 3D. Mais il est fermement résolu à marier PureBasic avec Ogre( 4.30), afin de proposer quelque chose de terrible.
tmyke a écrit : Contrairement à d'autres langages comparables, Fred et son équipe à fait le choix de laisser un peu de coté le
'jeux' et la programmation 2D/3D ludique, pour aller couvrir d'autre domaines de programmation (utilitaire, etc..).
Ton travail, ton oeuvre, devrais je dire, est admirable, tes conseils précieux. Je suis d'accord avec toi, et j'utiliserai très certainement ton moteur si je n'étais déjà pas très occupé avec mon jeu 2D. Je peux donc ici livrer ma petite expérience et donc être plus nuancé pour la 2D: il est possible de faire un grand jeu en 2D( haute résolution, transparence, rotation( sprite3D), variables, tableaux, liste chainée, etc, rien ne manque pour réaliser "facilement" un jeu 2D classique( sans moteur physique hein). La 2D avec PB, çà déchire grave comme disent les jeunes! :) La conception des images étant, elle, problématique( sauf si on a compris qu'il fallait y consacrer le plus clair de son temps).

Pour la 3D, dès le départ tout est vicié: un jeu commercial datant de 3 ans est déjà jugé comme "cubique" par les journalistes/testeurs. Nous n'avons pas encore droit a des puces spécialisés, mais a une multiplication de CPU( comme au début des années 80 avec la 2D sur borne arcade) -> face à cette complexité il faut 20, 30, 40 personnes, voir plus, pour réaliser un grand jeu3D... Alors, à moins de proposer une partie artistique des plus évolué comme DeusEx, je vois pas comment il est possible d'intéresser les joueurs gatés d'aujourd'hui.

D'où ma conclusion: la 3D est une technologie qui n'est pas encore arrivé à maturité( je précise: pour un concepteur solitaire). Et par conséquent, tout ce qui la simplifiera ne sera jamais mal venu.

Publié : dim. 23/mars/2008 16:01
par djes
beauregard> +1

Publié : dim. 23/mars/2008 17:32
par Anonyme
la 3D est une technologie qui n'est pas encore arrivé à maturité( je précise: pour un concepteur solitaire). Et par conséquent, tout ce qui la simplifiera ne sera jamais mal venu.
Je suis d'accord aussi avec toi , puis la 3D n'est pas près d'être mature , avec l' arriver de nouvelle technologie , du matériel de plus en plus puissant , de nouvelle méthode comme le photon mapping...
Il n'empêche que pour faire de la 3D , il faut un minimum de connaissance en math , comme les vecteurs par exemple,
Comprendre les choses n'est pas un luxe , certaine base fondamentale son nécessaire pour réalisé véritablement son que l'on veut.
Bien sur , on peut faire de la 3D facilement, y a qu'a prendre darkbasic.
on fait de la 3D sans rien connaître véritablement, y a qu'a interroger un darkbasicien et lui demandé "qu'est ce qu'une matrice?"
il va te répondre un terrain...
le prémaché n'a pas que du bon non plus. après vous faite comme bon il vous semble , mais j'aime comprendre ce que je fait.

Publié : dim. 23/mars/2008 18:20
par tmyke
La technoligie 3D se complexifie au fil du temps, et plus cela va aller, plus le nombre de personnes susceptibles
de maitriser ces techniques de plus en plus complexes va diminuer. Cela sera de moins en moins à la porté de
l'amateur moyen. La programmation direct des GPU, la maitrise du RayTraicing (l'avenir à court terme), etc...
ne sera pas à la porté de tout le monde. Donc, soit on est un bulbe de la 3D moderne, et on en exploite les possibilités
pour arriver à des résultats qui seront effectivement fantastiques, soit on n'aura d'autre choix que de se tourner vers des
solution mâchées, à la DarkBasic ou encore Blitz3D et ses descendants... Mais bon, certains diront qu'il n'est pas
indispensable de connaitre le principe du moteur à explosion pour partir en vacances avec sa voiture...
;)

Publié : dim. 23/mars/2008 21:23
par Backup
tout a fait, d'ailleurs je me considere bien volontier comme un Darkbasicien
(que j'ai ete du reste) :D, je ne sais pas ce que c'est qu'une Matrice !..

je pense qu'il y a deux choses dans ce que vous dites, il y a ceux qui font les moteur3D , qui doivent effectivement se pencher sur des trucs de plus en plus complexe ,Raytracing ect..

pis ya les utilisateurs , et moi par exemple je fait du raytracing et du Phong depuis tres longtemps , en autre grace a des logiciels comme 3D STudio (Atari ST), NEON3D(Falcon030), POV (Atari) , et aujourd'hui plethore de Soft sur mon PC.....

et franchement je connais le principe, mais je m'en fou pour l'utiliser :D

justement je pense que plus on avance, plus il sera facile de faire des jeux 3D avec des commandes simple mais très élaboré !!
qui d'ailleurs actionnent des principes très très compliqué !
que les gens n'imagines même pas :)

d'ailleurs on peut Critiquer le DarkBasic, mais il préfigure, une tendance a permettre au commun des mortel de se faire un jeux en 3D a l'aide de commande simple... et c'est tant mieux !! :)

donc je pense que contrairement a ce que dit Cpl.Bator , les moteurs évoluerons là on est d'accords, mais il deviendrons de plus en plus abordable pour monsieur tout le monde !! :D

par contre, les "petits" Moteur 3D comme Dreamotion, continueront a exister, car il y aura toujours des passionnés un peu marteau mais, ils seront aussi bien plus complexe a mettre en œuvre
encore que tout depends des langages informatique du futur :D

Publié : dim. 23/mars/2008 22:10
par djes
Faire un jeu, c'est de la technique oui, mais il n'y a pas que ça! La 3D, le réalisme, etc. apportent des choses mais ne sont pas essentiels, à mon avis. Ce qui est important est surtout de penser au joueur et de savoir équilibrer frustration et réussite pour lui donner du plaisir. Sinon, on fait de la démo, c'est un autre domaine, tout aussi intéressant :)

En 91, 3D construction kit est sorti (entre autres sur Amiga). C'était un soft qui permettait de faire des applications et des jeux en 3D, scriptables, etc. Ce n'était pas texturé, mais c'était très efficace, et quelques bons trucs ont été faits avec.
On n'a rien inventé; on ne fait que rattraper la dizaine d'années (je suis gentil) de retard que l'on doit à Microsoft :twisted:

de bons outils pour du bon travail

Publié : lun. 24/mars/2008 14:33
par beauregard
Cpl.Bator a écrit :J'ai déjà importé pas mal de chose , d'une part grâce à embryon de moteur réalisé par Tmyke & moi même ( ose 3D ) qui n'a jamais vu le jour.
tmyke a écrit :
Tmyke , je profite de se topic pour te faire une relance , la fonction lookat n'existe pas sous dreamotion, du peut pointé une entité sur une autre mais pas avec des vecteurs.
Excelent, c'est vrai que tu en avais parlé, je regarde cela et je vois pour incorporer ton
code dans DM3D ;)
Je suis ravis d'apprendre vos échanges de connaissances, et je vous souhaite de réussir, et de, heu, faire perdurer votre travail d'équipe( en utilisant un moyen plus réactif que le forum quand même ;) )
Cpl.Bator a écrit :J'adore opengl :D , le hic , c'est que j'ai une CG pourrie , la mienne à brûlé l'été dernier... donc pô de shader...
c'est pas cool, voyez. Faut absolument que tu répare au plus vite cette injustice( cette fois-ci ne la prend pas trop chaude, une moyenne gamme devrait suffire).