présent sur DM3D, plus le moteur y gagnera
Dreamotion3D
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Mais il y a un pb qui m'embete beaucoup.... c'est pas multiplateforme !
Et niveau 2D sur 3D, qu'as tu comme fonction à nous offrir ?
Et niveau 2D sur 3D, qu'as tu comme fonction à nous offrir ?
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Pour le multiplateforme, le fait d'avoir résolument choisi DirectX comme API,
réduite forcement l'utilisation a Windows. C'est un choix technique, et je
conviens qu'il peut etre frustrant pour les Mac et Linuxiens...
Pour les fonctions, je peux donner le liste, mais il y en a environ 200...
Pour résumer, pour l'instant le moteur gère:
- fonction2D de bases
- import statique format B3D - 3DS - X - 3DM
- import anim format MD2 - X - (B3D à venir)
- gestion des Entity avec parent-enfant
- Pixel - Vertex shaders - HLSL
- Light multiples et gestion des ombres (en cours)
- moteur de particules
- gestion des Textures et Brush avec programmation des effets
- petit moteur de terrain
- camera multiples
- module physique
- passerelle intégré vers les fonction bas niveau DirectX
- etc.. (j'en oubli surement)
réduite forcement l'utilisation a Windows. C'est un choix technique, et je
conviens qu'il peut etre frustrant pour les Mac et Linuxiens...
Pour les fonctions, je peux donner le liste, mais il y en a environ 200...
Pour résumer, pour l'instant le moteur gère:
- fonction2D de bases
- import statique format B3D - 3DS - X - 3DM
- import anim format MD2 - X - (B3D à venir)
- gestion des Entity avec parent-enfant
- Pixel - Vertex shaders - HLSL
- Light multiples et gestion des ombres (en cours)
- moteur de particules
- gestion des Textures et Brush avec programmation des effets
- petit moteur de terrain
- camera multiples
- module physique
- passerelle intégré vers les fonction bas niveau DirectX
- etc.. (j'en oubli surement)
Force et sagesse...
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Niveau 2D sur 3D, en fait, ce serait genre pour faire un HUD, une GUi, etc...
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
HUD et GUI, c'est toujours un plus incontestable dans un bon moteur3D.
Mais c'est un gros boulot pour faire déjà quelques choses de présentable.
Et pour l'instant, je me consacre 100% a la partie 3D, qui est l'essence meme du moteur.
Meme si je sais qu'un jour il faudra que nous nous penchions sur le problème.
Maintenant, DM3D n'est pas un projet fermé, et si il y en a qui se le sentent, alors on sera la pour faire en sorte que cela se concrétise...
Mais c'est un gros boulot pour faire déjà quelques choses de présentable.
Et pour l'instant, je me consacre 100% a la partie 3D, qui est l'essence meme du moteur.
Meme si je sais qu'un jour il faudra que nous nous penchions sur le problème.
Maintenant, DM3D n'est pas un projet fermé, et si il y en a qui se le sentent, alors on sera la pour faire en sorte que cela se concrétise...
Force et sagesse...
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Je ne te demande pas de les faire... mais j'essaie de voir si il ya des fonctions capable d'afficher de la 2D au dessus de la 3D (premier plan)... Je voudrais transférer ma console (type Quake) de Ogre vers DM3D...
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
OK, je comprends mieux. Il y a quelques fonctions 2D, comme pour dessiner
des ligne, cercle, etc... ainsi que des fonctions de gestion de Sprite2D, et de
texte bien sur. Dans le cas d'une console, avec les fonctions texte et les fonctions
Sprites , c'est jouable. Sinon, quelles fonctions penses-tu qu'il serait nescessaire
pour mener ton transfert vers DM3D possible ?
des ligne, cercle, etc... ainsi que des fonctions de gestion de Sprite2D, et de
texte bien sur. Dans le cas d'une console, avec les fonctions texte et les fonctions
Sprites , c'est jouable. Sinon, quelles fonctions penses-tu qu'il serait nescessaire
pour mener ton transfert vers DM3D possible ?
Force et sagesse...
J'ai testé ton moteur 3d, excellent, du beau boulot. seul defaut a mon avis, ignorer linux et mac est une erreur strategique surtout que le marché du mac par exemple avec son basculement vers l'architecture intel est de plus en plus important, tenir en compte egallement opengl pourrait a terme apporter beaucoups plus d'interet a Dreamotion3D, attirer beaucoups de developpeurs de jeux et augmenter la notoriete de ton travail. autre critere, un projet opensource se doit de tenir compte des architectures libres... cela dit, j'imagines le travail derriere pour realiser un wrapper directx et opengl (equivalences), mais ca ne doit pas etre tres difficile pour une personne de talent...
Je comprend que ce soit un choix technique, mais c'est quand meme dommage. en tous cas, bonne continuation...
Je comprend que ce soit un choix technique, mais c'est quand meme dommage. en tous cas, bonne continuation...
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Merci pour le compliment.
Le fait de ne pas supporter OpenGL est souvent une question qui revient, voir une
critique. C'est vrai que mettre en quelque sorte de coté le monde Mac et Linux
n'est pas terrible. Je connais OpenGL, c'est on API d'apprenti si je puis dire, mais
pour l'insant malheureusement il n'est pas envisageable d'ecrire DM3D avec, car
DM3D est trop 'impliqué' DirectX, et déjà en interne ouvert DirectX10, ce qui
pour moi est le vrai chalenge et le vrai avenir pour la 3D top niveau ...
Désolé donc de ne me consacrer qu'aux 'Windows man', mais bon, dans le monde amateur
de la prog 3D si on fait le bilan BlitzMax, PB, C++ et C#, ils représnetent une
masse non négligeable quand meme...
Le fait de ne pas supporter OpenGL est souvent une question qui revient, voir une
critique. C'est vrai que mettre en quelque sorte de coté le monde Mac et Linux
n'est pas terrible. Je connais OpenGL, c'est on API d'apprenti si je puis dire, mais
pour l'insant malheureusement il n'est pas envisageable d'ecrire DM3D avec, car
DM3D est trop 'impliqué' DirectX, et déjà en interne ouvert DirectX10, ce qui
pour moi est le vrai chalenge et le vrai avenir pour la 3D top niveau ...
Désolé donc de ne me consacrer qu'aux 'Windows man', mais bon, dans le monde amateur
de la prog 3D si on fait le bilan BlitzMax, PB, C++ et C#, ils représnetent une
masse non négligeable quand meme...
Force et sagesse...
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
@Coolman : Pour les amateurs d'OpenGl, la programmation s'apprend... donc n'hésitez pas, on sera sans aucun problème pret à tester !
@Tmyke : En fait, si tu peux transformer ce code (http://purebasic.hmt-forum.com/viewtopic.php?t=5678) tout en collant du texte sur la texture 0, il n'y aura aucun problème....
Ensuite, on verra pour les autres points, car je suis en train de créer un moteur de jeu, donc je marche de prototype en prototype !
@Tmyke : En fait, si tu peux transformer ce code (http://purebasic.hmt-forum.com/viewtopic.php?t=5678) tout en collant du texte sur la texture 0, il n'y aura aucun problème....
Ensuite, on verra pour les autres points, car je suis en train de créer un moteur de jeu, donc je marche de prototype en prototype !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Comme promis, Comtois, voici un petit exemple. En fait, j'ai juste repris le sample
'Character' du pack PhysX (avec les média) et j'ai modifié le code comme suit:
La sphere représente le point de départ du test RayCast, et le vecteur 'dir' est
par défaut orineté vers le bas. Les touche A et Z permettent de déplacer la sphere et
donc de matérialiser les face que l'on détecte sur les Entity physiques de la scene.
J'ai des petit soucis de couleur avec la fonction Line, donc pas de soucis je suis dessus
(marche bien avec BMax, mais pas avec PB bizarre..)
Sinon, dernière chose, download des deux modules mis a jours Dreamotion3D et PhysX
http://www.dreamotion3d.com/PureBasic/modulePB.zip
http://www.dreamotion3d.com/PureBasic/PhysXPB.zip

'Character' du pack PhysX (avec les média) et j'ai modifié le code comme suit:
Code : Tout sélectionner
; Fichiers Include
IncludePath "Include\"
IncludeFile "d3dx9.pbi"
IncludeFile "dreamotion3d.pbi"
IncludeFile "PhysX.pbi"
; Globales
Global anglex.f, angley.f, flagXDown.w
Global mox.f, omx.f, moy.l, omy.l
Global *camera.CEntity
Global *rs.CEntity
Global *cs.CEntity
Global *st.CEntity
Global *cap.CEntity
Global *base.CEntity
Global *font.CFont
Global *light.CEntity
Global angle.f
Global *resul.CEntity
Global *sph.CEntity
Global face.l
Global *line.CEntity
Global Dim tri.l(3)
Global Dim v0.f(3), Dim v1.f(3), Dim v2.f(3)
Global mat.D3DXMATRIX
; Initialisation des différents modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; Initialise la fenêtre graphique
DM_Graphics3D(800, 600, 32, 0, 1)
; Charge une font
*font = DM_LoadFont("Arial",8 , 1)
DM_SetColorText (*font, 198,198,198,255)
SetCurrentDirectory("media/")
;---------------------------------
; INIT DU MOTEUR PHYSIQUE
;---------------------------------
NX_Init(*DM_d3dDev9)
;------------------------------
; P'TITE LUMIERE
;------------------------------
*light = DM_CreateLight(1, null)
DM_LightRange(*light ,50)
DM_LightAttenuation(*light, 1.0, 0.0, 0.0)
DM_TranslateEntity(*light, 0,200,35)
;--------------------------------------------------------------
; CHARGE UN SOL
;--------------------------------------------------------------
; charge un sol pour avoir une référence
*base = DM_LoadEntity("land.x", Null, False)
NX_CreateStaticElement(*base,10,0)
*base = DM_LoadEntity("square.3ds", null, false)
DM_TranslateEntity(*base, 2,140,35)
NX_CreateStaticElement(*base, 10,0)
*sph = DM_LoadEntity("sphere2.x")
DM_PositionEntity(*sph, 100,100,-50)
;------------------------------
; create CHARACTER
;------------------------------
*cap = DM_LoadEntity("mariorun.x", null, false)
NX_CreateCharacter(*cap, 0,26,0, 6.0,8.5, 0.1)
;NX_EntityCollideCallBack(*cap, Collision)
NX_SetCharacterGroup(*cap, 4)
NX_SetSpeedJumpCharacter(*cap, 3.5)
;------------------------------
; une p'tite ligne
;------------------------------
*line = DM_CreateLine(4)
DM_LinePoint(*line, 0,20,10, 0,255,0)
DM_LinePoint(*line, 10,20,0, 0,250,0)
DM_LinePoint(*line, 10,20,10, 0,250,0)
DM_CloseLine(*line)
angle=180.0
; ---------------------------------------
; Gestion des caméras
; ---------------------------------------
*camera = DM_CreateCamera(#Null)
DM_MoveEntity(*camera, 207,150,101)
DM_TurnEntity(*camera, 17,-140,0)
DM_CameraClsColor(*camera, 25, 25, 25)
; ---------------------------------------
; Boucle principale
; ---------------------------------------
; si plein ecran, permet d'avoir la fleche
;change_curseur( #IDC_ARROW )
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
EndIf
If KeyboardPushed(#PB_Key_Q)
DM_TranslateEntity(*sph, 1,0,0)
EndIf
If KeyboardPushed(#PB_Key_W)
DM_TranslateEntity(*sph, -1,0,0)
EndIf
; If KeyHit(#PB_Key_R)
dirx.f =0
dirz.f =0
diry.f = -1
*resul = NX_RayCastAnyShape(DM_EntityX(*sph), DM_EntityY(*sph), DM_EntityZ(*sph), dirx, diry, dirz)
;récupère la face trouvée
face = NX_RaycasFaceID()
; récupère les vertex associé
DM_TriangleVertex(*resul, face, @tri(0))
; transpose dans des tableau de vertex pour traitement
v0(0) = DM_VertexX(*resul, tri(0))
v0(1) = DM_VertexY(*resul, tri(0))
v0(2) = DM_VertexZ(*resul, tri(0))
v1(0) = DM_VertexX(*resul, tri(1))
v1(1) = DM_VertexY(*resul, tri(1))
v1(2) = DM_VertexZ(*resul, tri(1))
v2(0) = DM_VertexX(*resul, tri(2))
v2(1) = DM_VertexY(*resul, tri(2))
v2(2) = DM_VertexZ(*resul, tri(2))
; recup la matrice d'attitude du mesh ttrouvé
DM_EntityWorld(*resul, @mat)
; transpose les coordonnées brut des vertices dans le world de représentation du mesh trouvé
D3DXVec3TransformCoord(@v0(0), @v0(0), @mat)
D3DXVec3TransformCoord(@v1(0), @v1(0), @mat)
D3DXVec3TransformCoord(@v2(0), @v2(0), @mat)
; modifie les point du line pour une représentation graphique de la face
DM_LinePosition(*line, 0, v0(0), v0(1), v0(2) )
DM_LinePosition(*line, 1, v1(0), v1(1), v1(2) )
DM_LinePosition(*line, 2, v2(0), v2(1), v2(2) )
DM_LinePosition(*line, 3, v0(0), v0(1), v0(2) )
; EndIf
; Gestion de la caméra
If KeyboardPushed(#PB_Key_Up)
DM_MoveEntity(*camera, 0,0,4)
ElseIf KeyboardPushed(#PB_Key_Down)
DM_MoveEntity(*camera, 0,0,-4)
EndIf
If MouseButton(#PB_MouseButton_Left)
If flagXdown=0
omx = MouseX()
omy = MouseY()
flagXDown=11
Else
moy = MouseY()-omy
angley=(moy/5.0)
omy= MouseY()
mox = MouseX()-omx
anglex=(mox/5.0)
omx= MouseX()
DM_TurnEntity(*camera, angley,anglex,0)
EndIf
Else
flagXDown=0
EndIf
; ---------------
; Rendu
; ---------------
; mise a jour de la physique
NX_Update()
DM_BeginScene()
DM_RenderWorld()
; Affichage du texte
DM_DrawText(*font, 10, 32, "Control Mario: Y/B move G/H turn T/U strafe SPACE jump")
DM_EndScene()
Until Quit=1
NX_Exit()
DM_ClearGraphics()
End
par défaut orineté vers le bas. Les touche A et Z permettent de déplacer la sphere et
donc de matérialiser les face que l'on détecte sur les Entity physiques de la scene.
J'ai des petit soucis de couleur avec la fonction Line, donc pas de soucis je suis dessus
(marche bien avec BMax, mais pas avec PB bizarre..)
Sinon, dernière chose, download des deux modules mis a jours Dreamotion3D et PhysX
http://www.dreamotion3d.com/PureBasic/modulePB.zip
http://www.dreamotion3d.com/PureBasic/PhysXPB.zip
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
Je vais voir cela, je te fais signe...Progi1984 a écrit :En fait, si tu peux transformer ce code (http://purebasic.hmt-forum.com/viewtopic.php?t=5678) tout en collant du texte sur la texture 0, il n'y aura aucun problème....
Force et sagesse...
@Progi1984 je n'ai helas ni le temps, ni peut etre egallement tout simplement pas les competences de me lancer la dedans, ce que je cherche, c'est un moteur 3d de preference opensource et multiplateforme..
@tmyke je comprends tout a fait ton choix, ce n'etait nullement une critique mais j'ai trouvé que c'etait dommage, c'est tout
@tmyke je comprends tout a fait ton choix, ce n'etait nullement une critique mais j'ai trouvé que c'etait dommage, c'est tout
-
tmyke
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
@Coolman: pas de soucis, en espérant peut-etre te compter un jour parmis les adeptes de DM3D
@Progi: voila vite fait sur la gaz un truc qui ressemble a ce que tu souhaitais:
c'est tout simple, un Sprite et un texte, il suffit de programmer une apparition
glissante sur demande en plus, plus une gestion clavier/texte-ecran et le tour est
joué ...

http://www.dreamotion3d.com/PureBasic/console1.zip
@Progi: voila vite fait sur la gaz un truc qui ressemble a ce que tu souhaitais:
c'est tout simple, un Sprite et un texte, il suffit de programmer une apparition
glissante sur demande en plus, plus une gestion clavier/texte-ecran et le tour est
joué ...

http://www.dreamotion3d.com/PureBasic/console1.zip
Force et sagesse...
Apparemment, dans la dernière version tu as répondu à mes attentes! Il est possible de colorer les lignes en accédant au vertex je suppose?. Est-ce que ces lignes 3d sont triées (je suppose que oui)?
Tout cela va me servir pour mon chargeur d'objets lightwave, dans lesquels les faces peuvent avoir un nombre de côtés supérieur à 3. Je fais l'affichage en vectorlines, car utiliser des faces serait un peu compliqué.
Ah oui, il faudrait mettre la doc dans chaque mise à jour stp.
Tout cela va me servir pour mon chargeur d'objets lightwave, dans lesquels les faces peuvent avoir un nombre de côtés supérieur à 3. Je fais l'affichage en vectorlines, car utiliser des faces serait un peu compliqué.
Ah oui, il faudrait mettre la doc dans chaque mise à jour stp.