myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Knowledge Base (https://www.mycsharp.de/wbb2/board.php?boardid=68)
-- FAQ (https://www.mycsharp.de/wbb2/board.php?boardid=70)
--- [FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#? (https://www.mycsharp.de/wbb2/thread.php?threadid=99520)


Geschrieben von MrSparkle am 03.11.2011 um 11:02:
  [FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?
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:
Ü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
  8.  WebGL

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#!


Geschrieben von MrSparkle am 03.11.2011 um 11:02:
 
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?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:02:
 
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.

Inoffiziellen Berichten zufolge entwickelt Microsoft XNA allerdings seit 2013 nicht mehr weiter. Open-Source-Implementierungen wie  MonoXNA haben aber nach wie vor eine aktive Community.

Was ist möglich?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:03:
 
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?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:03:
 
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?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:03:
 
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?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:04:
 
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?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 03.11.2011 um 11:04:
 
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?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


Geschrieben von MrSparkle am 20.09.2013 um 18:22:
 
8. WebGL

Inzwischen besitzen alle neueren Browser Unterstützung für hardwarebeschleunigte Grafik.  WebGL basiert auf  OpenGL 2.0 und bietet nahezu alle Möglichkeiten, wie sie mit OpenGL oder DirectX für Desktop-Anwendungen zur Verfügung stehen. Wer bereits Erfahrungen mit OpenGL hat, wird keine Schwierigkeiten haben, seine Anwendungen in den Browser zu portieren.

Aber auch für Einsteiger ist WebGL bestens geeignet, denn es gibt bereits sehr gute Bibliotheken, die einem das Ansteuern der Hardware abnehmen und auch die benötigten Datentypen für Geometrie, Texturen oder Transformationen mitliefern. Eine große Verbreitung hat die Bibliothek  THREE.js gefunden. Damit ist man selbst als Anfänger in der Lage, sehr schnell beeindruckende Anwendungen zu erstellen. Einige Beispiele gibt es hier zu sehen:  WebGL-Beispiele.

Wer jetzt gleich abwinkt und denkt, "3D-Grafik und Internet passt nicht zusammen, was soll da schon bei rauskommen?", der sollte sich mal folgende Beispiele anschauen:Wie man sieht, ist es schon jetzt möglich, aufwändige Grafiken zu erzeugen und flüssig anzuzeigen. Die Performance der 3D-Grafik ist dabei im Prinzip die gleiche, wie bei nativen OpenGL-Anwendungen, da die aufwändigen Berechnungen auf der Grafikkarte ablaufen. Lediglich die Programmteile, die in JavaScript laufen (z.B. das GamePlay, Kommunikation mit dem Server oder Physics) sind immernoch fühlbar langsamer als mit C# oder gar C++. Das liegt in der Natur der Sache, denn JavaScript ist eine Skript-Sprache. Trotz allem haben heutige Browser - allen voran Chrome und Firefox - inzwischen sehr effiziente JavaScript-Implementierungen.

Nicht unterstützt werden bisher leider die meisten Mobilgeräte, aber es ist davon auszugehen, dass sich das in den nächsten Monaten ändern wird.

Was ist möglich?Was ist nicht möglich?Wie finde ich den Einstieg?Einige Anwendungsbeispiele


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.11.2019 12:16