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 :

Editeur d'objet CAD dans programme Windows


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Par défaut Editeur d'objet CAD dans programme Windows
    Bonjour à tous !


    Je dois réaliser un programme permettant la visualisation d'un objet 3D et également la modification de certaines de ses propriétés. En particulier, changer la couleur de certaines parties de l'objet 3D ou encore remplacer des parties de l'objet. Pour être plus précis, par exemple s'il s'agit d'une maison l'utilisateur doit avoir la possibilité de remplacer la gouttière par un autre type de gouttière.

    Le nombre de remplacement de ce genre est limité et restreint, tout est sous contrôle. Je dois modéliser moi même une quinzaine de ces objets 3D puis permettre l'édition de certaines propriétés (couleur, inclinaison du toit etc...) et sa visualisation en 3D depuis le programme. Ce n'est vraiment que de la visualisation, c'est une sorte de catalogue en fait. Eventuellement il faudrait permettre l'impression du rendu mais aucun besoin de sauvegarder par exemple.

    Donc voilà, je pars d'une feuille blanche et le choix des technologies est libre qu'il s'agisse de la modélisation ou de la library 3D pour le soft. Pourriez-vous m'indiquer des solutions qui pourrait m'aider à résoudre mon besoin ? Je ne cherche pas des choses sophistiquées mais ce qu'il y a de plus simple à appréhender et d'efficace. J'aimerais faire un programme Windows Form.

    Merci pour votre aide !

  2. #2
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Vu que tu postes sur le forums C#, j'imagine que tu as envie d'utiliser cette techno.

    Perso pour la réalisation d'un moteur 3D perso j'ai choisi la solution suivante :

    1. Modélisation : Blender 2.6, Libre,efficace, plein de format d'export par défaut, mais pour le fun j'en ai profité pour écrire des script pour un format spécifique a mon soft en mode texte qui peut être converti en binaire par mon soft histoire de réduire la taille et le temps de chargement.

    2. C# Pour le code du moteur avec OpenTK qui permet d'exploiter OpenGL dans un mode fenêtré et donc d'utiliser les composants Winforms et en particulier le PropertyGrid qui te permet, si tu as codé un minimum proprement et en respectant le paradigme Objet de récupérer les propriétés de tes objets et de les modifier facilement sans te soucier de la partie interface graphique.
    En gros tu as la même grille que dans l'éditeur de GUI de visual studio mais avec tes objets et leurs propriétés dedans....

    3. Pour la partie Scripting qui permet une fois sa mise en place de faire évoluer ton moteur sans avoir a recompiler ton soft a chaque fois, je suis parti sur Lua avec LuaInterface qui permet de faire communiquer les deux techno en profitant simplement d'un maximum de fonctionnalités.

    Il existe certainement des meilleurs choix (DirectX, XNA) mais ceux énoncés ci dessus m'ont donné entière satisfaction en terme de complexité , de résultat par rapport au temps investi mais aussi de performances qui pour des projets de tailles raisonnable.

    Lua est tout de même pas mal représenté dans l'industrie audio visuelle http://en.wikipedia.org/wiki/Categor...ed_video_games

    C# possède des éléments intéressants pour le développement des application 3D lourdes(Jeux &co )http://unity3d.com/

    En espérant avoir un peu eclairé ta lanterne.

    Bonne journée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Par défaut
    Un grand merci pour cette réponse très complète et qui m'éclaire énormément! C'est vraiment sympas d'avoir pris le temps de me présenter les choses de manière si structurée, je suis vraiment reconnaissant, mais vraiment.

    Après une étude attentive de ce post voici les questions que j'aimerais te poser, je dois préciser que je suis encore étudiant en école d'ingénieurs et que donc ma virtuosité et mon degré de familiarité avec les technologies de développement - même celles très utilisées- sont limitées.

    Effectivement je souhaite développer le programme en C#!
    Si j'ai bien compris:
    1. Je peux utiliser Blender pour modéliser les objets 3D - il est gratuit et propose un grand nombre de formats d'export.
    2. OpenGL est le moteur qui me permettra de travailler avec ces objets dans mon programme.
    3. Cependant pour utiliser OpenGL dans un programme en mode fenêtré (comme j'utiliserai des composants WinForm), je dois passer par la librairie OpenTK.


    Pourrais-tu me citer un exemple de format d'export Blender qui peut ensuite être exploité via OpenTK ? J'ai parcouru la documentation mais je n'ai rien vu sur le fait d'ouvrir des objets 3D mais je pense que c'est surtout la terminologie et la maitrise des concepts OpenGL qui me manquent.

    Ensuite je suis troublé lorsque tu parle de "code du moteur" et de faire évoluer le moteur, cela signifie t-il que je devrai faire le moteur moi-même ? Dans ce cas à quoi sert OpenGL, n'est-ce pas un moteur 3D ?

    Je suis d'ailleurs dans le flou pour ce qui concerne le scripting, je me suis renseigné en lisant ton post mais je n'avais pas vraiment entendu parlé des langages de script auparavant. Dans la mesure où mes idées ne sont pas très claires pour ce qui concerne le moteur 3D, je n'arrive pas à comprendre dans quelle mesure du scripting peut être utile pour ce genre d'application.


    Mais en tout cas, les solutions que tu me proposes m'ont l'air à ma portée même s'il est clair que je passerai un bon moment avant de bien maitriser ces choses.

    Autre question annexe comme tu as de l'expérience: quelle est - en gros - la technique pour repérer depuis Blender les propriétés d'un objet appellées à être modifiée dans mon programme. Je te remercie pour tes éclaircissements!

  4. #4
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Tout dépends du travaille que tu souhaites réaliser toi même,

    Tu peux tres bien utiliser un export vers un format comme le obj,VRML ,DXF, MDL... et utiliser un loader tout fait que tu trouveras assez simplement je pense sur le net.
    Si tu es aventureux, que tu connais python et que tu n'as pas forcément besoin de toutes les informations contenues dans les formats d'exports proposés tu peux coder ta propres routine d'export en python dans Blender pour en exporter les données qui intéressent : vertex, liste des polygones, couleur des poly, position, echelles rotation... bref tout ce dont tu aura besoin.
    L'avantage de cette solution, c'est que tu peux déterminer ce que tu vas exporter et dans quel format tu vas l'exporter.
    Par contre, il faut au minimum savoir ou tu vas.

    OpenTK est un wrapper C# pour pouvoir utiliser OpenGL et openGL n'est pas un moteur 3D, c'est un ensemble de routines, comme DirectX qui vont te permettre d'afficher un univers en 3D a partir d'informations telles que des points 3D, des informations sur les matériaux, couleurs, lumières, d'appliquer des transformations simples comme des translations, des rotations, des changements d’échelles.

    Après tu peux aussi avoir plein de temps pour réaliser ton projet et écrire les routines de rasterisation toi même, mais dans ce cas, c'est ton code qui va devoir dessiner chaque pixels a l'écran, tu devras effectuer tous les calculs que fait OpenGL pour toi lorsque tu lui demande d'afficher un triangle. Mais la aussi méritoire que soit cette solution, il s'agit d'un projet a part entière.

    Si tu souhaites utiliser un moteur tout fais avec des possibilités d'import/d'export d'objets déjà tout fait je te conseille de te tourner vers http://www.ogre3d.org/tikiwiki/tiki-...age=Ogredotnet dont je ne te détaillerais pas les fonctionnalités. La documentation à disposition est suffisamment alimentée.

    Le scripting n'est pas une obligation dans le cadre des petits projet mais lorsque tu as un moteurs assez abouti, tu peux l'utiliser pour scénariser ton application, charger des scènes, scripter tes objets pour leur donner un comportement particulier sans inclure ce code dans ton soft, créer une console, mettre en place un système de plugins.... en bref ca t'offre une grande souplesse dans la réalisation de ton application. Tu peux aussi l'étendre sans plus toucher au code de celle ci.

    Voici un endroit ou tu pourras trouver toutes les informations nécessaires a ton développement.
    http://jeux.developpez.com/tutoriels/?page=gl
    Je pense qu'il te faudra commencer par assimiler les concepts de bases du développement d'applications/jeux 3D.

    Bonne continuation

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2012, 10h32
  2. Ma class n'apparait pas dans la liste des objets de mon programme.
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 25/04/2007, 15h20
  3. mon programme refuse de faire comme il devrais quand mes objets sont dans des tableau
    Par alain57 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 08/02/2007, 08h29

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