Online Since 1995

About Frank

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:         Path.Fill>
   6:     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:         Path.Fill>
  11:     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:         Path.Fill>
  16:     Path>
  17: 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: Storyboard>

I've got a lot of ideas now that Swift3D is in my Silverlight Dev toolkit. :)

 

Technorati Tags: ,,,

 

 

 

Add a Comment