WPF, 3D, Animation und Performance

Performance ist mit WPF immer wieder ein Thema, denn sobald Animationen vor allem im Zusammenhang mit 3D ablaufen, erscheinen diese auf "normal" ausgestatteten Rechnern (z.B. Core Duo II) schnell ruckelig.
Dazu einige Tipps, die Sie zur Zeit noch unbedingt befolgen sollten:
Möglichst wenig Grafik-Material verwenden, statt dessen XAML-Elemente einsetzen. Vor allem animierte Grafiken müssen erheblich aufwendig gerendert werden.
Keine Bitmap-Effekte auf bewegte Elemente.
Einige Effekte, z.B. Schlagschatten, lassen sich - wen zwingend notwendig - mit transparenten Hintergrundgrafiken, die mit Schatten versehen sind, simulieren.
Optimieren Sie 3D-Modelle so gut es geht.
Konvertieren Sie ein Bild direkt über Blend in ein 3D-Modell, so wird ein sehr umfangreiches Modell erstellt, welches bei Animationen gerne mal Ressourcen frisst. Statt dessen können Sie ein sehr einfaches Mesh verwenden, und dies über Transformationen in die gewünschte Form bringen.
So lässt sich der folgende von Blend generierte Code
<MeshGeometry3D Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1
0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1" Positions="-37.784395,-10,0 -29.387863,-10,0 -20.991331,-10,0 -12.594798,-10,0 -4.1982662,-10,0 4.1982662,-10,0 12.594798,-10,0 20.991331,-10,0 29.387863,-10,0 37.784395,-10,0 -37.784395,-7.7777778,0 -29.387863,-7.7777778,0 -20.991331,-7.7777778,0
-12.594798,-7.7777778,0 -4.1982662,-7.7777778,0 4.1982662,-7.7777778,0 12.594798,-7.7777778,0 20.991331,-7.7777778,0 29.387863,-7.7777778,0 37.784395,-7.7777778,0 -37.784395,-5.5555556,0 -29.387863,-5.5555556,0 -20.991331,-5.5555556,0 -12.594798,-5.5555556,0 -4.1982662,-5.5555556,0 4.1982662,-5.5555556,0
12.594798,-5.5555556,0 20.991331,-5.5555556,0 29.387863,-5.5555556,0 37.784395,-5.5555556,0 -37.784395,-3.3333333,0 -29.387863,-3.3333333,0 -20.991331,-3.3333333,0 -12.594798,-3.3333333,0 -4.1982662,-3.3333333,0 4.1982662,-3.3333333,0 12.594798,-3.3333333,0 20.991331,-3.3333333,0 29.387863,-3.3333333,0
37.784395,-3.3333333,0 -37.784395,-1.1111111,0 -29.387863,-1.1111111,0 -20.991331,-1.1111111,0 -12.594798,-1.1111111,0 -4.1982662,-1.1111111,0 4.1982662,-1.1111111,0 12.594798,-1.1111111,0 20.991331,-1.1111111,0 29.387863,-1.1111111,0 37.784395,-1.1111111,0 -37.784395,1.1111111,0 -29.387863,1.1111111,0
-20.991331,1.1111111,0 -12.594798,1.1111111,0 -4.1982662,1.1111111,0 4.1982662,1.1111111,0 12.594798,1.1111111,0 20.991331,1.1111111,0 29.387863,1.1111111,0 37.784395,1.1111111,0 -37.784395,3.3333333,0 -29.387863,3.3333333,0 -20.991331,3.3333333,0 -12.594798,3.3333333,0 -4.1982662,3.3333333,0
4.1982662,3.3333333,0 12.594798,3.3333333,0 20.991331,3.3333333,0 29.387863,3.3333333,0 37.784395,3.3333333,0 -37.784395,5.5555556,0 -29.387863,5.5555556,0 -20.991331,5.5555556,0 -12.594798,5.5555556,0 -4.1982662,5.5555556,0 4.1982662,5.5555556,0 12.594798,5.5555556,0 20.991331,5.5555556,0
29.387863,5.5555556,0 37.784395,5.5555556,0 -37.784395,7.7777778,0 -29.387863,7.7777778,0 -20.991331,7.7777778,0 -12.594798,7.7777778,0 -4.1982662,7.7777778,0 4.1982662,7.7777778,0 12.594798,7.7777778,0 20.991331,7.7777778,0 29.387863,7.7777778,0 37.784395,7.7777778,0 -37.784395,10,0
-29.387863,10,0 -20.991331,10,0 -12.594798,10,0 -4.1982662,10,0 4.1982662,10,0 12.594798,10,0 20.991331,10,0 29.387863,10,0 37.784395,10,0" TextureCoordinates="0,222.639 93.469778,222.639 186.93956,222.639 280.40933,222.639 373.87911,222.639 467.34889,222.639 560.81867,222.639 654.28844,222.639 747.75822,222.639 841.228,222.639 0,197.90133 93.469778,197.90133 186.93956,197.90133 280.40933,197.90133 373.87911,197.90133 467.34889,197.90133 560.81867,197.90133 654.28844,197.90133 747.75822,197.90133 841.228,197.90133 0,173.16367 93.469778,173.16367 186.93956,173.16367
280.40933,173.16367 373.87911,173.16367 467.34889,173.16367 560.81867,173.16367 654.28844,173.16367 747.75822,173.16367 841.228,173.16367 0,148.426 93.469778,148.426 186.93956,148.426 280.40933,148.426 373.87911,148.426 467.34889,148.426 560.81867,148.426 654.28844,148.426 747.75822,148.426 841.228,148.426 0,123.68833 93.469778,123.68833 186.93956,123.68833 280.40933,123.68833 373.87911,123.68833 467.34889,123.68833
560.81867,123.68833 654.28844,123.68833 747.75822,123.68833 841.228,123.68833 0,98.950667 93.469778,98.950667 186.93956,98.950667 280.40933,98.950667 373.87911,98.950667 467.34889,98.950667 560.81867,98.950667 654.28844,98.950667 747.75822,98.950667 841.228,98.950667 0,74.213 93.469778,74.213 186.93956,74.213 280.40933,74.213 373.87911,74.213 467.34889,74.213 560.81867,74.213 654.28844,74.213 747.75822,74.213
841.228,74.213 0,49.475333 93.469778,49.475333 186.93956,49.475333 280.40933,49.475333 373.87911,49.475333 467.34889,49.475333 560.81867,49.475333 654.28844,49.475333 747.75822,49.475333 841.228,49.475333 0,24.737667 93.469778,24.737667 186.93956,24.737667 280.40933,24.737667 373.87911,24.737667 467.34889,24.737667 560.81867,24.737667 654.28844,24.737667 747.75822,24.737667 841.228,24.737667 0,0 93.469778,0
186.93956,0 280.40933,0 373.87911,0 467.34889,0 560.81867,0 654.28844,0 747.75822,0 841.228,0" TriangleIndices="0 1 10 1 11 10 1 2 11 2 12 11 2 3 12 3 13 12 3 4 13 4 14 13 4 5 14 5 15 14 5 6 15 6 16 15 6 7 16 7 17 16 7 8 17 8 18 17 8 9 18 9 19 18 10 11 20 11 21 20 11 12 21 12 22 21 12 13 22 13 23 22 13 14 23 14 24 23 14 15 24 15 25 24 15 16 25 16 26 25 16 17 26 17 27 26 17 18 27 18 28 27 18 19 28 19 29 28 20 21 30 21 31 30 21 22 31 22 32 31 22 23 32 23 33 32 23 24 33 24 34 33 24 25 34 25 35 34 25 26 35 26 36 35 26 27 36 27 37 36 27 28 37 28 38 37 28 29 38 29 39 38 30 31 40 31 41 40 31 32 41 32 42 41 32 33 42 33 43 42 33 34 43 34 44 43 34 35 44 35 45 44 35 36 45 36 46 45 36 37 46 37 47 46 37 38 47 38 48 47 38 39 48 39 49 48 40 41 50 41 51 50 41 42 51 42 52 51 42 43 52 43 53 52 43 44 53 44 54 53 44 45 54 45 55 54 45 46 55 46 56 55 46 47 56 47 57 56 47 48 57 48 58 57 48 49 58 49 59 58 50 51 60 51 61 60 51 52 61 52 62 61 52 53 62 53 63 62 53 54 63 54 64 63 54 55 64 55 65 64 55 56 65 56 66 65 56 57 66 57 67 66 57 58 67 58 68 67 58 59 68 59 69 68 60 61 70 61 71 70 61 62 71 62 72 71 62 63 72 63 73 72 63 64 73 64 74 73 64 65 74 65 75 74 65 66 75 66 76 75 66 67 76 67 77 76 67 68 77 68 78 77 68 69 78 69 79 78 70 71 80 71 81 80 71 72 81 72 82 81 72 73 82 73 83 82 73 74 83 74 84 83 74 75 84 75 85 84 75 76 85 76 86 85 76 77 86 77 87 86 77 78 87 78 88 87 78 79 88 79 89 88 80 81 90 81 91 90 81 82 91 82 92 91 82 83 92 83 93 92 83 84 93 84 94 93 84 85 94 85 95 94 85 86 95 86 96 95 86 87 96 87 97 96 87 88 97 88 98 97 88 89 98 89 99 98"/>
</GeometryModel3D.Geometry>
durch folgende Vereinfachung und entsprechende Transformation darstellen:
<MeshGeometry3D x:Key="PlaneMesh" Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
- Anmelden oder Registrieren um Kommentare zu schreiben
-

Systemvorraussetzungen?
Gerade bezüglich der Performance würde mich interessieren von welchen Systemvorraussetzungen man generell bei bzw. für eine fertige Blend-Anwendung ausgehen sollte.
Kann man sich hier die vorgegebenen Vorraussetzungen für Blend als Grundlage nehmen (wenn man davon ausgeht, das man eine nüchterne Anwendung erstellt ohne Animationen und 3D)?
Das kann man nicht pauschal
Das kann man nicht pauschal sagen. Und Blend hat damit nichts zu tun. Auch wenn Blend die erste reine WPF-Anwendung aus dem Hause Microsoft ist, kann man nicht von da auf andere Anwendungen schließen! Vergleich: Man kann auch nicht von Excel auf die Dateigröße einer Excel-Datei schließen. Hat nix miteinander zu tun.
Das sind schon mal gute
Das sind schon mal gute Tipps, ich bin gerade auch eifrig dabei 3D zu testen, aber da gibt es auch noch einigen Nachholbedarf. Nicht nur bei der Performance, sondern auch bei dem Thema Viewport, Kamera, Lichter usw. Eine Szene aufzusetzen und in Blend damit zu arbeiten ist im Moment noch sehr mühsam.
:
Da kann ich Dir nur das Buch
Da kann ich Dir nur das Buch von Charles Petzhold empfehlen (3D-Programming for Windows" oder so ähnlich). Das hat mir damals einige Geheimnisse gelüftet!
Das hier:
Das hier:
http://www.amazon.com/Programming-Windows-Three-Dimensional-Presentation... ?
: