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 IE
   » Gadget für Windows
» 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
» 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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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
  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#!

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von MrSparkle am 20.09.2013 18:25.

03.11.2011 11:02 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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.

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?
  • (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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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-Team (Moderation)

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 3.549
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
Zwischen diesen beiden Beiträgen liegt mehr als ein Jahr.
MrSparkle MrSparkle ist männlich
myCSharp.de-Team (Moderation)

images/avatars/avatar-2159.gif


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

Themenstarter Thema begonnen von MrSparkle

MrSparkle ist offline

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

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:
  •  ROME - "3 Dreams of Black": Ein "interaktives Musikvideo" unter Mitwirkung des Google Chrome Teams und Danger Mouse
  •  Google Body: Ein anatomisch korrekter virtueller menschlicher Körper mit 1.4 Millionen Punkten
  • Das neue Google Maps und Google StreetView wird komplett in 3D gerendert
  • Die  Unreal Engine im Firefox: Eine Portierung der Spiele-Engine auf WebGL und JavaScript
  •  Cubify: Ein "Roboter-Editor" für 3D-Prototyping
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?
  • Leichter Einstieg dank verfügbarer OpenSource-Bibliotheken und großer Community
  • Grafisch ist alles möglich, was man auch mit einer OpenGL- oder DirectX-Anwendung auf dem Desktop erstellen könnte
  • Umfangreiche Web-Anwendungen mit einem 3D-User-Interface auf dem Client und einer ASP.NET MVC Anwendung mit Datenbank auf der Serverseite.
Was ist nicht möglich?
  • Es gibt kaum einen der bisher genannten Anwendungsfälle, der nicht damit umsetzbar wäre
  • Bisher nicht unterstützte OpenGL-Features wie Textur-Arrays oder 3D-Texturen erfordern einen Workaround
Wie finde ich den Einstieg?
  • Es gibt jede Menge Videos sowohl für Einsteiger als auch für Profis auf YouTube und ähnlichen Portalen
  • Der Code von THREE.js und die dazugehörigen Beispiel-Anwendungen sind auf GitHub verfügbar und mehr als einen Blick wert
Einige Anwendungsbeispiele
  • Spiele
  • Daten-Visualisierung
  • Spiele-Editoren, Karten-Editoren oder ähnliche interaktive Anwendungen
  • Jede Form der 2D- oder 3D-Grafik, die bisher Plugins wie VRML, Flash, Silverlight o.ä. erforderten

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MrSparkle am 20.09.2013 23:43.

20.09.2013 18:22 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Jahre.
Der letzte Beitrag ist älter als 10 Monate.
Antwort erstellen


© Copyright 2003-2014 myCSharp.de-Team. Alle Rechte vorbehalten. 24.07.2014 06:00