IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Faire de la 3D en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut Faire de la 3D en C#
    Bonjour à tous!

    Alors j'ai quelques petites questions, auxquelles j'ai cherché des réponses, mais c'était trop fouilli sur internet.

    Donc:
    - Est-il possible de faire de la 3D en C# ? (bon la je pense que oui, mais on sais jamais )
    - Comment faire de la 3D en C#? Suis-je obligé de trouver des librairies qui permettent de le faire, ou bien est-ce prévu à la base?
    - Pour les librairies: quelqu'un en connait-il des correctes? Quels sont les modèles 3D qui sont gérés (.nif, .x, .map ...) ?
    - Comment mettre en oeuvre la 3D dans l'application? Une picture box suffit-elle?

    Voilà, ce sont les principales questions qui se posent à moi.
    Merci à tout ceux et celles qui prendront un moment pour me répondre

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Mouais.

    Sinon tu as DirectX ...

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par dev01 Voir le message
    Mouais.
    Pourquoi ? DirectX c'est bien pour les puristes, mais XNA est plus facile à prendre en main surtout s'il s'agit de réaliser un jeu (même si je ne sais pas si c'est le cas de l'auteur du sujet).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    en tant que programmeur OpenGL, je peux au moins te parler de ca:

    - oui, c'est possible de faire de l'openGL directement en C#. cherche "C# openGL" dans google et tu verras que les exemples pullulent (le 1er hit : http://csgl.sourceforge.net/, mais aucuine idée de ce que ca vaut). Apres tu peux aussi diviser ton application de sorte a garder la partie OpenGL en c++ et avoir tout le reste en C# (dans mon cas, j'utilise C++ pour programmer une fenêtre OpenGL encapsulée dans un contrôle ActiveX, qui est lui placé dans une interface en C#. Bon pour commencer y a plus simple mais en tout cas ca marche. L'avantage est que le c++ n'est pas un language interpreté, comme l'est le C#, ca tourne plus vite quoi)

    - OpenGL, mais aussi Direct3D et XNA oui. Je n'ai pas utilisé les deux derniers (et a ce que je sais XNA est une sur-couche de direct3D) mais c'est sûr que ca passe en c#

    - Pas obligatoirement besoin de librairies (par exemple dans le cas de l'activeX...), mais c'est pas ca qui manque sur le NET

    Tiens, regarde par là si tu veux utiliser OpenGL http://cs-sdl.sourceforge.net/index....penGL_Tutorial
    connaissant la qualité de leurs tutoriels OpenGL en c/c++, il y a de bonnes chances que tu prennes un bon départ avec celui là

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    C# n'est pas un langage interprété. C'est un langage compilé. Il est compilé en deux étapes. La première étape est de transformer en MSIL. La compilation en code natif est effectuée à l'exécution, mais il ne s'agit quand même pas d'une interprétation.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    Je vais essayer de te répondre dans la mesure ou cela fait quelques années que j'évolue dans le monde de la 3D, et du .Net....

    Pour ce qui est de l'utilisation de librairie, tu as plusieurs approches possibles.

    1/ Tu peux utiliser OpenGL (wrapper C# ou librairie, google est ton ami)

    2/ tu peux utiliser DirectX directement.

    Si tu veux utiliser DirectX, plusieurs approches possibles...

    1=> MDX (Managed Direct X) ==> Plus de dev en cours par microsoft et support uniquement jusqu'à DirectX 9.0c

    2=> SlimDX ou MDX10 ==> Ce sont des wrappers sur DirectX 10 fait par des communautés opensource

    3 => Microsoft ne support plus MDX et à décider de changer de philosophie par rapport à .Net. Plutot que de fournir un Wrapper à DirectX, M$ a décidé de fournir gratuitement XNA. XNA est basé sur DirectX9 (pas prévu pour la 10 à ma connaissance aujourd'hui). XNA est à la base un framework pour développer des jeux pour XBox. Bien sur,M$ le fourni pour developper des jeux sur Windows. XNA est donc une surcouche de DirectX 9 mais n'est pas un moteur 3D. La philosophie d'XNA a ses détracteurs et partisans. Je ne prendrais pas de position dessus. Par contre, XNA a zappé certaines choses de DirectX (notamment les aspects Sons en proposant une solution pas forcément meilleurs que DirectX). Donc, tu peux choisir XNA mais en connaissance de cause


    Pour ma part, j'ai travaillé sur quelques projets 3D en C#. Le choix que la société (basé à Toulouse) avait fait était le suivant : On utilise un moteur 3D C# et basta (il se trouve que se moteur etait basé sur MDX et que les auteurs de se moteurs écrivent (ils doivent l'avoir fini d'ailleurs), un wrapper pour DirectX 10 (d'ailleurs, quand j'avais mangé avec eux ils étaient plutot mécontent de Microsoft (bien qu'étant Gold Partner de m$) d'avoir abandonné MDX.

    L'usage du moteur 3D peut etre une approche tout à fait sympathique. Par contre, il est clair que tu auras un "peu" moins de maitrise sur le code. Pour avoir developpé des simulateurs avec un moteur 3D, je ne pense pas que cela soit un reel frein.

    Pour les moteurs 3D qui sont "compatibles" C#, je pourrais te donner la liste suivantes :

    Gratuits : Ogre , Irrlicht
    Payant : TrueVision (que je trouve pas cher et très sympa), Nova (très sympa, mais prix entre 4000 et 15000€ suivant version (genre SDK plutot chere).. et d'autres que je n'ai pas utilisé


    Voila

    The Monz, Toulouse

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 125
    Par défaut
    Je trouve les premières réponses un peu ... orientées !
    (J'ai commencé à écrire ce mail après les 3 premiers posts...)

    Voici les miennes:

    Citation Envoyé par cs_ntd Voir le message
    - Est-il possible de faire de la 3D en C# ? (bon la je pense que oui, mais on sais jamais )
    Oui, sans aucun problème ! Nous sommes mêmes assez nombreux à en faire !

    Citation Envoyé par cs_ntd Voir le message
    - Comment faire de la 3D en C#? Suis-je obligé de trouver des librairies qui permettent de le faire, ou bien est-ce prévu à la base?
    Réponse rapide, OUI: les 3D "efficace" (jeux vidéos et toute autre application qui affiche beaucoup de choses) necessitent des librairies en plus. Les plus connues: DirectX et OpenGL biensur !
    Pour DirectX, l'API de Microsoft permet de faire de la 3D mais aussi tout ce qui est multimédia; il y a beaucoup de tutoriaux sur le net et le SDK donnent beaucoup d'infos. Par ailleurs MS a encapsulé ce gros bébé pour le rendre plus facile d'accès: XNA est né !
    Il y a aussi OpenGL, qui ne permet, lui de faire que de la 3D, mais pour certains (dont je fais partie !), est aussi plus facile à appréhender.
    La bible de l'OpenGL: (en anglais, mais permet de TOUT comprendre !) http://nehe.gamedev.net/lesson.asp?index=01

    Citation Envoyé par cs_ntd Voir le message
    - Pour les librairies: quelqu'un en connait-il des correctes? Quels sont les modèles 3D qui sont gérés (.nif, .x, .map ...) ?
    Oups, j'ai déjà commencé à répondre !
    Pour les modèles 3d gérés, il y a quelques années, quand je faisait de l'OpenGL, je m'était recodé mes parsers, mais il doit en exister de tout faits...
    Direct gère en natif les fichiers X et mesh je crois. (Quelqu'un confirme ?)

    Citation Envoyé par cs_ntd Voir le message
    - Comment mettre en oeuvre la 3D dans l'application? Une picture box suffit-elle?
    Si ce que tu veux dire, c'est que tu veux une application WinForms avec un "cadre 3D" dedans (par opposition à une appli 3D fullscreen), alors DirectX sera probablement plus simple à utiliser.
    Je sais que quelqu'un a fait un composant qui fait ça (je retrouve plus l'adresse d'ici, mais je peux poster ça ce soir) et qui marche pas trop mal

    Pour finir, il existe aussi beaucoup de moteurs 3D prêts à intégrer (OGRE, Irrlicht, pour ne citer que les plus connus)
    Et plein de bons sites de reference, dont celui-ci (!):
    http://jeux.developpez.com/

    Bonne lecture !

    --
    ElTchoupi

  9. #9
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Bien bien, merci à tous de vos nombreuses réponses, je ne m'attendais pas à tant !

    Pour (essayer) de commenter tout ce qui fut dit et d'apporter quelques précisions:

    Ce n'est pas pour faire véritablement des jeux au sens propre, mais plus pour inclure dans une fenêtre des éléments 3D (non-statique par exemple, et avec lesquels on pourrait intéragir). D'ou ma question "une picture box suffit-elle?", car je ne veut qu'une partie de ma fenêtre qui affiche des éléments 3D, et pouvoir ajouter des éléments ordinaires ensuite dans la fenêtre.

    Mais, ce n'est pas pour autant que je ne vais mettre qu'"un petit graphique à barre", je risque de plus charger la fenêtre: on peut résumé l'idée de base à celle d'un "visualiseur de modèles 3D", ou l'utilisateur pourrait visualiser ses modèles, la partie 3D de mon application ne serait donc "que" d'afficher des objets 3D et de les animer. Mais comme c'est l'utilisateur qui incluerais ce qu'il veut, il y a donc risque de modèles complexes.

    Après avoir entre-aperçu ce qu'XNA proposait, je n'ais pas vraiment l'impression qu'on puisse facilement incorporer du contenu 3D au mileu de contenu ordinaire, car tous les exemples vus ne présentait que des jeux...

    Ensuite revient régulièrment DirectX et OpenGL: je vais potasser tous les liens qui m'ont étés donnés, je vais aussi regarder pour WPF qui a l'air interessant.

    Par contre: quelqu'un pourrait il m'expliquer la différence entre par exemple DirectX (qui a été classifié comme librairie) et Ogre (classifié comme moteur 3D), je ne saisis pas la différence

    ElTchoupi : tu parle d'un composant qui permet d'ajouter un cadre 3D dans l'application : ça ressemble bigrement à ce que je souhaite faire! Si jamais tu retrouve le lien, oublie pas de le poster, ça m'interresse

    Et encore merci à tout le monde pour les réponses !

  10. #10
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    Par contre: quelqu'un pourrait il m'expliquer la différence entre par exemple DirectX (qui a été classifié comme librairie) et Ogre (classifié comme moteur 3D), je ne saisis pas la différence
    DirectX et OpenGL sont des API (Application programming interface), c'est à dire un ensemble de fonctions que tu peux appeler dans ton programme.
    En OpenGL, tu dis par exemple que tu veux dessiner un triangle a tel endroit, avec telle couleur ou texture, telle normale, etc etc.... (note: c'est plus ou moins pareil avec direct3D)

    Un moteur 3D utilise ces API pour fournir un ensemble de fonctionnalités un peu plus avancées. C'est un niveau au dessus quoi. Par exemple un moteur peut te permettre de faire du bump mapping en un appel de fonction, alors que si tu fais ca directement en OpenGL il faut le programmer toi même.

    En gros, un moteur te simplifie la vie, mais limite aussi ta liberté puisque tu n'a plus forcément accès à l'API qui se cache derrière.

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut


    Question:
    Différence entre Moteur 3D et Librairie (DirectX ou Opengl) ?

    Réponse:
    Une librairie (comme DX ou OpenGL) te fournisse des primitives, des fonctions, des classes, des enumérés pour manipuler de la 3D et cela à bas niveau.

    Un moteur 3D va se placer au niveau au dessus et te fournir les notions de Scènes, objets 3D, déplacement d'objet 3D, rotation, translation. Le moteur 3D va gérer aussi pour toi les effets, la gestion de système de particule, la gestion des textures, l'affichage de texte 2D, les ombrages etc... Suivant les moteurs 3D, tu auras aussi un système d'import de format autre que .X ou Mehs pour DirectX.

    Bref, le moteur 3D te permet en quelques lignes de code d'afficher une scène 3D ou tu vas pouvoir intéragir avec tes objets. Le moteur 3D gérera pour toi les collisions, etc...

    Moi, perso, je travaille avec TrueVision (pas cher et correcte) et j'intègre ma scène 3D dans mon application winform via une pictureBox. En fait, un moteur 3D souvent à besoin d'un Handle de fenetre. Apres, que ce handle soit celui d'une picturebox, un panel, une fenetre, peu importe du moment que ce handle de fenetre est valide.

    Voila

    The Monz, Toulouse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2002, 08h31
  2. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo