myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » FAQ » [FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig


MrSparkle ist offline

[FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zusammenfassung

"Wie findet man den Einstieg in die 3D-Programmierung?" ist eine oft gestellte Frage im Forum. Leider lässt sie sich nicht so ohne weiteres beantworten. Zuerst muss man sich darüber klar werden, was man erreichen möchte und welche Mittel dafür notwendig sind. Deshalb haben wir eine Liste mit den verschiedenen Technologien zusammengestellt, die Euch bei dieser Entscheidung helfen soll.


Voraussetzungen

Die wichtigsten Voraussetzungen für den Einstieg in die 3D-Programmierung gelten für alle Varianten:
  • Fortgeschrittene C#-Kenntnisse
  • Dreidimensionales Vorstellungsvermögen
  • Mathematik-Grundkenntnisse
  • Durchhaltevermögen

Überblick

Im Folgenden findet ihr eine Übersicht über die Technologien, mit deren Hilfe man unter .NET Hardware-beschleunigte 3D-Grafik darstellen kann. Bei allen genannten Varianten ist übrigens auch eine Hardware-beschleunigte Darstellung von 2D-Grafik möglich. Die Liste ist in keiner bestimmten Reihenfolge geordnet, und erhebt keinen Anspruch auf Vollständig- oder gar Richtigkeit. Wer eine Information hinzufügen oder berichtigen möchte, wendet sich bitte an den  Autor oder das  Team von myCSharp!
  1.  Managed DirectX (MDX)
  2.  XNA
  3.  SlimDX
  4.  Tao-Framework/OpenTK
  5.  Game Engines
  6.  Visualization Toolkit (VTK)
  7.  WPF

Fazit


Die 3D-Entwicklung ist kein Pappenstiel und erfordert einiges an Lern- und Leidensbereitschaft. Gute Programmier- und C#-Kenntnisse sind dafür eine unbedingte Voraussetzung, und auch dann ist selbst ein einfaches Spiel eine große Herausforderung. Wer sich aber nicht zu schade ist, das eine oder andere Buch auf Englisch zu lesen und seine Mathe-Kenntnisse aufzufrischen, wird bald sehr eindrucksvolle Resultate vorweisen können. Wie man den Einstieg findet, oder auf welche Technologie man setzt, hängt von den eigenen Beweggründen genauso ab, wie von den Anforderungen an die zu entwickelnde Software. Es gibt dafür also keine Faustregel, trotzdem würden wir folgende Empfehlung abgeben:
Buchempfehlungen:
Und jetzt viel Spaß beim Einstieg in die 3D-Entwicklung mit C#!

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von MrSparkle am 03.11.2011 14:32.

03.11.2011 11:02 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

1. Managed DirectX (MDX)

MDX ist eine veraltete API von Microsoft für die Verwendung von DirectX unter .NET. Es gibt noch viele Tutorials zum Thema Managed DirectX im Internet, und daher scheint es nach wie vor weit verbreitet zu sein. MDX wird allerdings von Microsoft seit Jahren nicht mehr unterstützt oder weiterentwickelt und ist nur noch unter dem Aspekt "Wie hat alles mal angefangen" interessant.

Der inoffizielle Nachfolger von Microsoft, XNA (siehe unten), ist wesentlich besser in die .NET-Umgebung integriert. In der Open-Source-Szene ist der inoffizieller Nachfolger allerdings SlimDX, das sich viel näher am ursprünglichen DirectX-Konzept hält, und mittlerweile auch neuere Versionen als DirectX 9 unterstützt.

Trotzdem gelten die meisten hier genannten Punkte auch für alle anderen DirectX-basierten APIs wie SlimDX oder XNA.

Was ist möglich?
  • Alles, was mit DirectX 9 möglich ist
  • Hardware-basierte Darstellung von 3D-Objekten mit Texturen und Shadern mit  HLSL
  • Linien
  • Software-Fallback, wenn keine Hardware-Unterstützung zur Verfügung steht
  • Benutzer-Interaktion über DirectInput
Was ist nicht möglich?
  • Szenenverwaltung
  • UI-Elemente
  • Features von DirectX 10+
Wie finde ich den Einstieg?
  • Bücher sind unumgänglich zum Thema Hardware-Rendering und Shader (HLSL, GraphicsGems GameGems usw.)
  • Tutorials im Internet, Probieren
  • DirectX-Debugging-Modus, DebugView
Einige Anwendungsbeispiele
  • Mit einfachsten Mitteln und unter größten Anstrengungen einen möglichst hardwarenahen Einstieg zu finden.
03.11.2011 11:02 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

2. XNA

XNA steht für "XNA's not an acronyme" und ist Microsofts Weiterentwicklung von Managed DirectX. Es unterscheidet sich in erster Linie durch eine komfortablere Programmierung und dem gut dokumentierten XNA-Framework, und erleichtert dadurch den Einstieg enorm. Mit dem XNA Game Studio Express bietet Microsoft eine kostenlose Entwicklungsumgebung für die Game-Entwicklung mit C# oder VisualBasic.NET. Außerdem gibt es eine sehr aktive Community und viele gute Tutorials im Internet.

Was ist möglich?
  • (wie MDX, aber nicht so umständlich und in den gewohnten .NET-Workflow und die IDE integriert)
Was ist nicht möglich?
  • Eigentlich kaum irgendetwas (?)
Wie finde ich den Einstieg?Einige Anwendungsbeispiele
  • Spiele-Entwicklung für PC und XBox und WindowsPhone
  • Komplexe 3D-Anwendungen
03.11.2011 11:02 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

3. SlimDX

SlimDX ist eine konsequente OpenSource-Neuentwicklung des MDX-Frameworks und basiert damit ebenso wie XNA auf DirectX. Es gibt eine große und aktive Community, und neue DirectX-Versionen werden sehr schnell implementiert. SlimDX steht unter der MIT-License, und kann daher zu kommerziellen Zwecken in OpenSource- und ClosedSource-Anwendungen eingesetzt werden.

Was ist möglich?
  • (wie MDX aber auch neuere DirectX Features)
  • 64Bit-Unterstützung
  • Auflistung der Features und Vergleich mit anderen APIs:  SlimDX Features
Was ist nicht möglich?
  • (wie MDX)
Wie finde ich den Einstieg?
  • SlimDX-Seite:  http://slimdx.org/
  • In der Community von  GameDev.Net erreicht man die Entwickler und viele Anwender von SlimDX
  • Bücher zum Thema Hardware-Rendering und Shader mit DirectX
Einige Anwendungsbeispiele
  • Hardware-nahe Programmierung für Spiele und 3D-Anwendungen
03.11.2011 11:03 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

4. Tao-Framework/OpenTK

Das Tao-Framework war eine .NET-Library, um die OpenGL-API in .NET-Sprachen zu verwenden. Mittlerweile ist der Open Toolkit (OpenTK) der offizielle Nachfolger. OpenTK hat im Wesentlichen die gleichen Features wie SlimDX, nur eben auf OpenGL-Basis. Wie SlimDX wurde es unter der MIT-License veröffentlicht und kann daher in Open-Source- und kommerziellen Anwendungen eingesetzt werden.

Was ist möglich?Was ist nicht möglich?
  • (in etwa wie MDX)
Wie finde ich den Einstieg?
  • (in etwa wie MDX)
  • http://www.opentk.com/
  • Bücher zum Thema OpenGL und GLSL
Einige Anwendungsbeispiele
  • Hardware-nahe Programmierung für Spiele und 3D-Anwendungen
03.11.2011 11:03 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

5. Game Engines

Eine Game Engine nimmt einem den schwierigsten Teil der Arbeit ab, nämlich das Programmieren der Hardware-nahen Routinen. Je nach Engine werden DirectX und/oder OpenGL unterstützt, es gibt kommerzielle und OpenSource-Engines mit den unterschiedlichsten Konzepten. Eine sehr umfassende Übersicht mit einer Suchfunktion findet man in der  DevMaster's Game and Graphics Engines Database.

Was ist möglich?
  • Alles, was mit DirectX oder OpenGL darstellbar ist
  • Integrierte Szenenverwaltung, Beleuchtungssysteme, Animation
  • z.T. auch Audio, Netzwerk, Gameplay, KI, Physik, GUI
Was ist nicht möglich?
  • schneller Einstieg
Wie finde ich den Einstieg?
  • Einstieg ist (je nach Engine mehr oder weniger) schwierig, aber die Möglichkeiten sind grenzenlos, am besten die Beispiel-Projekte auf den Webseiten der Engines runterladen und ausprobieren
  • Wichtige Anlaufstelle ist  GameDev.Net
  • Bücher zu OpenGL oder DirectX Shader-Entwicklung
Einige Anwendungsbeispiele
  • Komplexe Spiele in überschaubarer Zeit entwickeln
  • Komplexe 3D-Anwendungen
03.11.2011 11:03 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

6. Visualization Toolkit (VTK)

Ähnlich den Game Engines gibt es auch für die wissenschaftliche Visualisierung Toolkits, die einen Großteil der routinemäßigen Tätigkeiten abnehmen und viele Darstellungsmöglichkeiten bieten. Auch sind oftmals viele Filter für das Pre-Processing der Rohdaten vorhanden. Einen Quasi-Standard stellt dabei das auf OpenGL basierende  VTK - The Visualization Toolkit dar. Für .NET gibt es kommerzielle und nicht-kommerzielle Wrapper wie z.B.  ActiveVize od.  .NET Wrappers for VTK 5

Es sei noch erwähnt, dass es mit  ParaView und  VolView zwei auf VTK basierende (Open-Source-) Programme gibt, mit denen die Visualisierungen auch erstellt werden können.

Was ist möglich?Was ist nicht möglich?
  • Für alles außerhalb der wissenschaftlichen Darstellung wird es unhandlich
  • Schneller Einstieg, da die Lernkurve relativ steil ist
Wie finde ich den Einstieg?Einige Anwendungsbeispiele
03.11.2011 11:04 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 2.992
Entwicklungsumgebung: VS.NET 2010, ReSharper
Herkunft: Leipzig

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

7. WPF

Seit der .NET-Version 3.0 stehen im Namespace  System.Windows.Media.Media3D die  Viewport3D-Klasse sowie weitere Klassen zur Verfügung, um mit einfachsten Mitteln eine 3D-Szene zu beschreiben und in WPF-Oberflächen anzuzeigen. Unterstützt werden zur Zeit Materialien mit Texturen und Shadern, Beleuchtung und verschiedene Kameras, inklusive Animation.

Die Ansteuerung der Grafikkarte übernimmt dabei das Betriebssystem mit Hilfe der Low-Level-Funktionen von DirectX. Deshalb geht es hier mehr um die Beschreibung der Szenen und weniger um "Programmierung" im eigentlichen Sinn. Die Szenen können in XAML sehr komfortabel beschrieben werden, wobei die Szenen-Objekte wie Kameras, Lichtquellen, 3D-Modelle selbstverständlich auch DataBindung und Animationen unterstützen.

Nicht unterstützt werden bisher jedoch das Hardware-beschleunigte Rendern in eine Textur sowie Normal-Maps, was der Entwicklung von aufwendigen Effekten Grenzen setzt. Als Alternative besteht dann die Möglichkeit, XNA oder SlimDX unter WPF zu verwenden.

Was ist möglich?
  • Hardwarebeschleunigte Darstellung von 3D-Modellen mit Texturen
  • Szenen können per Code oder per XAML definiert werden
  • Interaktion mit 3D-Objekten, 3D-Linien ( The Petzold.Media3D Library)
  • Direkte Integration in WPF-Anwendungen
Was ist nicht möglich?
  • NormalMaps, aufwändige Shader, komplexe Beleuchtung
  • Szenenverwaltung
  • Silverlight wird nicht unterstützt
Wie finde ich den Einstieg?Einige Anwendungsbeispiele
  • 3D-Diagramme, Datenvisualisierung
  • Einfache 3D-Anwendungen
  • Grafische Spielereien für die GUI
03.11.2011 11:04 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 20.05.2013 08:09