Swift3D and Silverlight
I've done a lot of work with Swift 3D in the past. [Sample 1 | Sample 2 | Sample 3 ]
Swift 3D is a 3D rendering environment for Flash that's been around for about eight years.
Now that version 5 includes Silverlight and WPF support, I decided it was time to take another look at the tool.
Check out this sample animation.
The tool works by rendering out each frame of a 3D animation into a vector graphic.
Here's an example of such a frame.
1: <Canvas x:Name="Canvas0" Width="400" Height="300" Opacity="0">
2: <Path Data="F1 M 84.25,85.25 L 176,70.75 L 318.5,106.75 L 207.25,132.75 L 84.25,85.25">
3: <Path.Fill>
4: <SolidColorBrush Color="#E9E3C5" Opacity="1"/>
5: < span>Path.Fill>
6: < span>Path>
7: <Path Data="F1 M 84.25,85.25 L 207.25,132.75 L 211.75,269 L 94.5,185.25 L 87,117 L 84,88.5 L 84.25,85.25">
8: <Path.Fill>
9: <SolidColorBrush Color="#827B6B" Opacity="1"/>
10: < span>Path.Fill>
11: < span>Path>
12: <Path Data="F1 M 318.5,106.75 L 314.75,228.75 L 224,264.75 L 211.75,269 L 207.25,132.75 L 318.5,106.75">
13: <Path.Fill>
14: <SolidColorBrush Color="#6D6759" Opacity="1"/>
15: < span>Path.Fill>
16: < span>Path>
17: < span>Canvas>
All the frames are stitched together by a StoryBoard that changes the opacity to 1 from 0 in a timely manner.
1: <Storyboard RepeatBehavior="Forever" FillBehavior="HoldEnd" BeginTime="0:0:0">
2: <DoubleAnimation Storyboard.TargetName="Canvas0" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0" Duration="0:0:0.0833333" FillBehavior="Stop"/>
3: <DoubleAnimation Storyboard.TargetName="Canvas1" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.0833333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
4: <DoubleAnimation Storyboard.TargetName="Canvas2" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.166667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
5: <DoubleAnimation Storyboard.TargetName="Canvas3" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.25" Duration="0:0:0.0833333" FillBehavior="Stop"/>
6: <DoubleAnimation Storyboard.TargetName="Canvas4" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.333333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
7: <DoubleAnimation Storyboard.TargetName="Canvas5" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.416667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
8: <DoubleAnimation Storyboard.TargetName="Canvas6" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.5" Duration="0:0:0.0833333" FillBehavior="Stop"/>
9: <DoubleAnimation Storyboard.TargetName="Canvas7" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.583333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
10: <DoubleAnimation Storyboard.TargetName="Canvas8" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.666667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
11: <DoubleAnimation Storyboard.TargetName="Canvas9" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.75" Duration="0:0:0.0833333" FillBehavior="Stop"/>
12: <DoubleAnimation Storyboard.TargetName="Canvas10" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.833333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
13: <DoubleAnimation Storyboard.TargetName="Canvas11" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:0.916667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
14: <DoubleAnimation Storyboard.TargetName="Canvas12" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1" Duration="0:0:0.0833333" FillBehavior="Stop"/>
15: <DoubleAnimation Storyboard.TargetName="Canvas13" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.08333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
16: <DoubleAnimation Storyboard.TargetName="Canvas14" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.16667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
17: <DoubleAnimation Storyboard.TargetName="Canvas15" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.25" Duration="0:0:0.0833333" FillBehavior="Stop"/>
18: <DoubleAnimation Storyboard.TargetName="Canvas16" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.33333" Duration="0:0:0.0833333" FillBehavior="Stop"/>
19: <DoubleAnimation Storyboard.TargetName="Canvas17" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.41667" Duration="0:0:0.0833333" FillBehavior="Stop"/>
20: <DoubleAnimation Storyboard.TargetName="Canvas18" Storyboard.TargetProperty="Opacity" From="1" To="1" BeginTime="0:0:1.5" Duration="0:0:0.0833333" FillBehavior="Stop"/>
21: < span>Storyboard>
I've got a lot of ideas now that Swift3D is in my Silverlight Dev toolkit. :)