3D Editor



  • Hallo,

    ich möchte einen 3D Terrain Editor erstellen, wobei in die Panels mit DirectX10 oder DirectX9 gerendert werden soll.
    Jetzt frag ich mich, mit welcher Technologie man das am besten macht. Mir schweben im Moment folgende Möglichkeiten vor:

    1. Mit WinForms, C# und Managed DirectX9
      Vorteile: Sehr elegantes GUI Design; konsistente Technologien
      Nachteile: MDX wird nicht weiterentwickelt; etwas langsamer als natives DX
    2. Mit C++ und der MFC
      Vorteile: Schnell
      Nachteile: Komplizierter (für mich, hab noch nie was mit MFC oder WinAPI gemacht)
    3. Hybridlösung: GUI Editor mit C# + WinForms und Rendersachen mit C++ und native DX.
      Vorteile: Kombination der Vorteile von 1) und 2)
      Nachteile: Könnte recht frickelig werden.

    Was meint ihr wäre die beste Lösung? (hinsichtlich Performance und Einfachheit für mich). Gerne könnt ihr auch noch weitere gute Möglichkeiten/APIs nennen, mit denen es auch ginge.

    PS: Was ich unbedingt will ist die Erstellung der GUI Oberfläche in einem GUI-Editor. Ich möchte also auf keinen Fall im Sourcecode die Buttons usw. per Hand zentrieren (der Editor wird recht komplex).



  • Hi !
    Der folgende Vorschlag nutzt zwar OpenGL, ist aber relativ einfach umzusetzen.
    Es verwendet WinForms mit C++/CLI.
    Folge diesem Link:

    http://www.codeproject.com/managedcpp/OpenGLViewWinForms.asp

    Lese dir unbedingt auch die Kommentare am Ende des Artikels durch.
    Dort findest du Lösungsvorschläge für Probleme, die bei Befolgen des Tutorials mit ziemlicher Sicherheit auftreten werden. Dort werden auch Dinge wie Mausinteraktion und Resize-Probleme behandelt.

    Naja, wenn du bereit bist OpenGL zu nutzen ist das sicher ein guter Ansatz.
    Viel Erfolg

    Blue

    Edit: So sieht meine Anwendung bisher aus. Es ist nur provisorisch und das Design und die Aufteilung sind durchaus verbesserungswürdig...

    http://s120.photobucket.com/albums/o176/blue5teel/?action=view&current=anwendung.jpg



  • Mit OGL hast du richtig viel Auswahl. Es gibt für die großen GUI-Frameworks (wxWidget, GTK+, Qt) bereits fertige Einbindungen, usw.

    Wenn du directX verwenden willst wird sich das wohl auf deine Beiden Möglichkeiten beschränken, eine fertige GUI-Einbindung gibt es da wohl weniger



  • Ich hab da letzt noch in der CT was von XNA gelesen, such da mal nach, soll recht einfach sein, kann aber zur zeit noch nicht auf DX10 zugreifen.



  • Hm, also XNA möchte ich eigentlich meiden. Ich halte das irgendwie für ne Todgeburt...
    OpenGL kommt für mich auch nicht in Frage. Es muss definitiv native DX9/10 oder managed DX9 werden.

    Wie ist denn aktuell so die Entwicklung mit MFC? Kann man damit einigermaßen elegant sich eine (auch komplexe) GUI zusammenklicken, oder muss mann doch wieder viel Hintergrundinfos über den Aufbau der MFC/Winapi haben um was zu schaffen?
    Ansatz 3) fände ich garnicht so schlecht, nur sehe ich da Probleme mit der Eleganz bei der Interaktion. Alleine wenn der Benutzer z.B. mit der Maus etwas im 3D-Panel anklickt und in der GUI dann Infos zu dem Objekt erscheinen sollen, muss ich ja das MouseClick Event irgendwie an ne C++ Funktion (in ner DLL?) weiterdelegieren und diese Funktion muss dann wiederrum auf das WinForms GUI zugreifen. Hat damit (Winforms + native DX/C++) schon mal jemand was gemacht?



  • Hmm, also ich würde für eine derartige Anwendung, die nur unter Windows läuft prinzipiell zu C# raten, die WindowsForms sind schon sehr nett. Die Geschwindigkeit sollte dich bei einem Editor eher nicht interessieren müssen.
    Aber was hast du gegen OpenGL? Dazu gibts auch feine Einbindungen in .NET.

    (Eigentlich würde ich zu der Kombination C++/Python + OpenGL raten, wobei die GUI mit Python zur leichteren Portabilität implementiert ist, aber die scheinst du ja gar nicht zu wollen)



  • Richtig, Portabilität spielt für mich keine Rolle.
    Also im Moment tendiere ich auch zu Managed DX9 + C# + WinForms - die Entwicklung wäre dann doch sehr elegant und konsistent möglich. Allerdings ist Performance wichtig, da der Editor sehr (!) realistische Landschaften in Echtzeit darstellen soll (quasi wie im Sandbox Editor von Far Cry). Aber ich denke das wäre auch mit MDX möglich.



  • Du kannst dich später immernoch an ein Gefrickel mit C++ für die Graphik machen. Wenn du das jetzt ausreichend abstrahierst ist es später kein Problem. Die Geschwindigkeit der GUI spielt dafür absolut keine Rolle und sollte mehr als ausreichen.



  • Hat das schon mal wer konkret gemacht (also GUI in Winforms/C# und dann im Backend ne C++ API, wobei beide Schichten miteinander kommunzieren) und kann dazu ein paar Erfahrungen preisgeben?


Anmelden zum Antworten