Model Rendering and Shader Tutorial: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Benni (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Langenfeld (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Stub}}
{{Stub}}
{{löschen}}




Zeile 15: Zeile 16:
* [[Media:ShaderHLSL_SS08.pdf|Shader (HLSL) - Softwarepraktikum SS08]] ''(Der Vortrag ist modifiziert, die Codebeispiele wurden entfernt da sie in besserer Form im neuen Video-Tutorial zu sehen sind.)''
* [[Media:ShaderHLSL_SS08.pdf|Shader (HLSL) - Softwarepraktikum SS08]] ''(Der Vortrag ist modifiziert, die Codebeispiele wurden entfernt da sie in besserer Form im neuen Video-Tutorial zu sehen sind.)''


== Konvertierung von XNA 3.0 zu XNA 4.0 ==


== XNA Framework & Architecture Setup ==
Die Video Tutorials wurden ursprünglich für XNA 3.0 erstellt, damit sie auch mit XNA 4.0 funktionieren müssen bei [[Model_Rendering_and_Shader_Tutorial#Teil_3:_Custom_Shader_Implementation_for_Drawing_Models|Teil 3]] und [[Model_Rendering_and_Shader_Tutorial#Teil_4:_Rigid_Body_Animations_for_Models|Teil 4]] je zwei kleine Änderungen vorgenommen werden:
 
<u>Airplane.cs</u>
 
Die Zeile
<source lang="csharp">modelMeshPart.Effect = effect.Clone(ModelRendering.GraphicsDevice);</source>
muss geändert werden zu
<source lang="csharp">modelMeshPart.Effect = effect.Clone();</source>
 
<u>MyShader.fx</u>
 
Alle vorkommen von
<source lang="csharp">PixelShader = compile ps_1_1 ...();</source>
müssen zu
<source lang="csharp">PixelShader = compile ps_2_0 ...();</source>
geändert werden weil das Pixel Shader Modell 1.x nichtmehr unterstützt wird. [[Kategorie:Code-Beispiele]]
 
== Teil 1: XNA Framework & Architecture Setup ==
[[Image:RenderTut_01.png|150px|thumb|right|Architektur - Klassen]]
[[Image:RenderTut_01.png|150px|thumb|right|Architektur - Klassen]]
=== Video Tutorial ===
=== Video Tutorial ===
* Der erste Teil dieses Videotutorials beschreibt den Aufbau einer kleinen objektorientierten Struktur für die Verwaltung von Spielobjekten. Es vermittelt ein paar grundlegende Konzepte der objektorientierten Programmierung, dient aber hauptsächlich als Fundament für die nachfolgenden Tutorials zum Rendern von Modellen im XNA Framework.
* Der erste Teil dieses Videotutorials beschreibt den Aufbau einer kleinen objektorientierten Struktur für die Verwaltung von Spielobjekten. Es vermittelt ein paar grundlegende Konzepte der objektorientierten Programmierung, dient aber hauptsächlich als Fundament für die nachfolgenden Tutorials zum Rendern von Modellen im XNA Framework.
* Part 1: [[sopracrew:video_tutorials/ModelRendering/architecture.swf|XNA Framework & Architecture Setup]] (27:20 Minuten)
* Part 1: [[sopracrew:video_tutorials/ModelRendering/1_architecture.swf|XNA Framework & Architecture Setup]] (27:20 Minuten)
=== Resourcen & Links ===
=== Resourcen & Links ===
''... TBA ...''
''... TBA ...''
Zeile 26: Zeile 45:
<br clear="All">
<br clear="All">


== Model Integration & Drawing with ''BasicEffect'' ==
== Teil 2: Model Integration & Drawing with ''BasicEffect'' ==
[[Image:RenderTut_02.png|thumb|right|Flugzeug - BasicEffect]]
[[Image:RenderTut_02.png|thumb|right|Flugzeug - BasicEffect]]
=== Video Tutorial ===
=== Video Tutorial ===
* Der zweite Teil dieses Videotutorials behandelt die Integration des [[3D-Modell|3D-Modells]] aus dem [[BlenderTutorial|Blender Tutorial]] (FBX) in das Framework aus Teil 1. Darunter fallen sowohl die Aufnahme des Modells in das Content-Projekt und das Zuweisen eines [[Content Processor|Content Processors]], als auch der Code für das Zeichnen des Modells unter Zuhilfenahme des ''BasicEffect''<ref name="basiceffect"/> von XNA.
* Der zweite Teil dieses Videotutorials behandelt die Integration des [[3D-Modell|3D-Modells]] aus dem [[BlenderTutorial|Blender Tutorial]] (FBX) in das Framework aus Teil 1. Darunter fallen sowohl die Aufnahme des Modells in das Content-Projekt und das Zuweisen eines [[Content Processor|Content Processors]], als auch der Code für das Zeichnen des Modells unter Zuhilfenahme des ''BasicEffect''<ref name="basiceffect"/> von XNA.
* Part 2: [[sopracrew:video_tutorials/ModelRendering/basiceffect.swf|Model Integration & Drawing with BasicEffect]] (23:34 Minuten)
* Part 2: [[sopracrew:video_tutorials/ModelRendering/2_basiceffect.swf|Model Integration & Drawing with BasicEffect]] (23:34 Minuten)
=== Resourcen & Links ===
=== Resourcen & Links ===
''... TBA ...''
''... TBA ...''
* Das Model vom Blender Tutorial im FBX Format: [[Datei:Flux135.zip]]
* MSDN: [http://msdn.microsoft.com/en-us/library/bb203926.aspx How To: Use BasicEffect]
* MSDN: [http://msdn.microsoft.com/en-us/library/bb203926.aspx How To: Use BasicEffect]


<br clear="All">
<br clear="All">


== Custom Shader Implementation for Drawing Models ==
== Teil 3: Custom Shader Implementation for Drawing Models ==
[[Image:RenderTut_03.png|thumb|right|Flugzeug - Custom Diffuse-Lighting Shader]]
[[Image:RenderTut_03.png|thumb|right|Flugzeug - Custom Diffuse-Lighting Shader]]
=== Video Tutorial ===
=== Video Tutorial ===
''... TBA ...''
* Der dritte Teil dieses Videotutorials beschreibt wie man einen sehr einfachen Shader in [[HLSL]] implementiert und wie man die Architektur aus Teil 2 erweitern kann um Modelle auch mit selbst geschriebenen Shadern zu rendern.
* ''Hinweis:'' Die in diesem Tutorial beschriebene Variante zum Rendern von Modellen über die [[Model (XNA)|Model-Klasse von XNA]] (Integration des Effect in das Model und nutzen der Draw()-Funktion der ModelMesh-Klasse<ref name="modelmesh">[http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.modelmesh.aspx ModelMesh-Klasse in der MSDN]</ref>)ist zwar die einfachste, aber nicht die einzige Möglichkeit Objekte in XNA darzustellen. Andere Möglichkeiten sind zwar etwas komplexer umzusetzen, bieten dafür aber die Möglichkeit den Zeichenvorgang zu optimieren und bessere Rendering Performance zu erzielen. Wer nicht tiefer in diese Thematik einsteigen will muss sich aber keine Sorgen machen, das hier vorgestellte Verfahren kann für das SOPRA ausreichen.
* Part 3: [[sopracrew:video_tutorials/ModelRendering/3_shader.swf|Custom Shader Implementation for Drawing Models]] (49:43 Minuten)
=== Resourcen & Links ===
=== Resourcen & Links ===
''... TBA ...''
''... TBA ...''
* MSDN: [http://msdn.microsoft.com/en-us/library/bb509611(VS.85).aspx Intrinsic Functions (DirectX HLSL)]
* MSDN: [http://msdn.microsoft.com/de-de/library/6fawty39(VS.80).aspx Versionsverwaltung mit den Schlüsselwörtern "override" und "new" (C#-Programmierhandbuch)]
* MSDN: [http://msdn.microsoft.com/en-us/library/bb509635(VS.85).aspx Programming Guide for HLSL]
* MSDN: [http://msdn.microsoft.com/en-us/library/bb203872.aspx How To: Create and Apply Custom Effects]
* MSDN: [http://msdn.microsoft.com/en-us/library/bb203872.aspx How To: Create and Apply Custom Effects]
* Links zu guten externen [[Shader#Shader_Tutorials|Shader Tutorials]]
* [[3D Rendering Pipeline]] (Direct3D 9)


<br clear="All">
<br clear="All">


== Rigid Body Animations for Models ==
== Teil 4: Rigid Body Animations for Models ==
 
{{BA|Greitschus|Hier muss noch eine Anmerkung rein, dass das Model Bones beinhalten soll(!) und das Tut. nicht funktioniert, wenn keine Bones drin sind. (Ich weiß, man sollte die Tuts vorher gemacht haben, dann sind die auch drin, aber wenn man sein eigenes Model nimmt, dann hat man das u.U. auch schon.}}
 
[[Image:RenderTut_04.png|thumb|right|Flugzeug - Propeller mit Rigid-Body Animation (Symbolbild)]]
[[Image:RenderTut_04.png|thumb|right|Flugzeug - Propeller mit Rigid-Body Animation (Symbolbild)]]
=== Video Tutorial ===
=== Video Tutorial ===
''... TBA ...''
* Der vierte und letzte Teil dieses Videotutorials zeigt wie man mit dem [[Rigid Body Animation|Rigid-Body-Animation Verfahren]] sehr einfach primitive Animationsbewegungen für einzelne Teile eines [[3D-Modell|3D-Modells]] umsetzen kann. Um einzelne Modellteile unabhängig voneinander zu animieren, muss das Modell korrekt zusammengebaut und exportiert werden. Neben Animationen für Flugzeugpropeller (wie hier im Video vorgestellt) lassen sich hiermit beispielsweise auch die Bewegungen für Autoreifen simulieren und vieles mehr.
* Part 4: [[sopracrew:video_tutorials/ModelRendering/4_rigidbodyanim.swf|Rigid Body Animations for Models]] (17:30 Minuten)
=== Resourcen & Links ===
=== Resourcen & Links ===
''... TBA ...''
''... TBA ...''
Zeile 62: Zeile 93:
<references />
<references />
[[Kategorie:Tutorials]]
[[Kategorie:Tutorials]]
[[Kategorie:Entwurf]]
[[Kategorie:MS01]]
[[Kategorie:MS02]]
[[Kategorie:MS03]]
[[Kategorie:MS04]]

Aktuelle Version vom 16. Oktober 2019, 17:07 Uhr


Inhalt des Tutorials



  1. Der erste Teil dieses Videotutorials gibt einen ganz kurzen Überblick über die Basisfunktionalität des XNA Frameworks und zeigt die Erstellung eines einfachen und kleinen objektorientierten Achritektur-Frameworks das nachfolgend zum Einsatz kommt.
  2. Im zweiten Teil wird gezeigt wie man 3D-Modelle ohne weitere Kenntnisse zu Shadern etc. zeichnen kann (mit dem BasicEffect[1] von XNA 3.0).
  3. Im dritten Teil implementiert man einen eigenen sehr einfachen Shader und lernt wie man seine 3D-Modelle damit zeichnet.
  4. Der vierte und letzte Teil zeigt abschließend noch kurz wie man (vorausgesetzt das Modell wurde dafür richtig konstruiert) sehr einfach Teile des Modells mit dem Rigid-Body-Animation Verfahren animieren kann.


Dieses Tutorial wird lediglich die Anwendung von Konzepten präsentieren. Hintergrundinformationen zu Shadern und HLSL sind beispielsweise in Kurzform im Shader-Vortrag vom Softwarepraktikum im SS08 zu finden:

Konvertierung von XNA 3.0 zu XNA 4.0

Die Video Tutorials wurden ursprünglich für XNA 3.0 erstellt, damit sie auch mit XNA 4.0 funktionieren müssen bei Teil 3 und Teil 4 je zwei kleine Änderungen vorgenommen werden:

Airplane.cs

Die Zeile

modelMeshPart.Effect = effect.Clone(ModelRendering.GraphicsDevice);

muss geändert werden zu

modelMeshPart.Effect = effect.Clone();

MyShader.fx

Alle vorkommen von

PixelShader = compile ps_1_1 ...();

müssen zu

PixelShader = compile ps_2_0 ...();

geändert werden weil das Pixel Shader Modell 1.x nichtmehr unterstützt wird.

Teil 1: XNA Framework & Architecture Setup

Architektur - Klassen

Video Tutorial

  • Der erste Teil dieses Videotutorials beschreibt den Aufbau einer kleinen objektorientierten Struktur für die Verwaltung von Spielobjekten. Es vermittelt ein paar grundlegende Konzepte der objektorientierten Programmierung, dient aber hauptsächlich als Fundament für die nachfolgenden Tutorials zum Rendern von Modellen im XNA Framework.
  • Part 1: XNA Framework & Architecture Setup (27:20 Minuten)

Resourcen & Links

... TBA ...


Teil 2: Model Integration & Drawing with BasicEffect

Flugzeug - BasicEffect

Video Tutorial

Resourcen & Links

... TBA ...


Teil 3: Custom Shader Implementation for Drawing Models

Flugzeug - Custom Diffuse-Lighting Shader

Video Tutorial

  • Der dritte Teil dieses Videotutorials beschreibt wie man einen sehr einfachen Shader in HLSL implementiert und wie man die Architektur aus Teil 2 erweitern kann um Modelle auch mit selbst geschriebenen Shadern zu rendern.
  • Hinweis: Die in diesem Tutorial beschriebene Variante zum Rendern von Modellen über die Model-Klasse von XNA (Integration des Effect in das Model und nutzen der Draw()-Funktion der ModelMesh-Klasse[2])ist zwar die einfachste, aber nicht die einzige Möglichkeit Objekte in XNA darzustellen. Andere Möglichkeiten sind zwar etwas komplexer umzusetzen, bieten dafür aber die Möglichkeit den Zeichenvorgang zu optimieren und bessere Rendering Performance zu erzielen. Wer nicht tiefer in diese Thematik einsteigen will muss sich aber keine Sorgen machen, das hier vorgestellte Verfahren kann für das SOPRA ausreichen.
  • Part 3: Custom Shader Implementation for Drawing Models (49:43 Minuten)

Resourcen & Links

... TBA ...


Teil 4: Rigid Body Animations for Models

Flugzeug - Propeller mit Rigid-Body Animation (Symbolbild)

Video Tutorial

  • Der vierte und letzte Teil dieses Videotutorials zeigt wie man mit dem Rigid-Body-Animation Verfahren sehr einfach primitive Animationsbewegungen für einzelne Teile eines 3D-Modells umsetzen kann. Um einzelne Modellteile unabhängig voneinander zu animieren, muss das Modell korrekt zusammengebaut und exportiert werden. Neben Animationen für Flugzeugpropeller (wie hier im Video vorgestellt) lassen sich hiermit beispielsweise auch die Bewegungen für Autoreifen simulieren und vieles mehr.
  • Part 4: Rigid Body Animations for Models (17:30 Minuten)

Resourcen & Links

... TBA ...




Referenzen