Frank La Vigne

Fear and Loathing in .NET

MVP Logo
Tablet PC MVP

Social Networks

Subscription Options

Add to Google

Subscribe in Bloglines

My Links


Post Categories

Archives

Image Galleries

Cached @ 9/3/2010 2:47:21 AMControl ASP.skins_marvin3_controls_archivelinks_ascx

GamerTag

Dev Community Events

Blog Stats

Cached @ 9/3/2010 2:47:21 AMControl ASP.skins_marvin3_controls_blogstats_ascx  

News


Blog Roll

Favorite Sites

Gadget Blogs

Tablet PC Links

Cached @ 9/3/2010 2:47:21 AMControl ASP.skins_marvin3_controls_categorydisplay_ascx

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: ,,,

 

 

 

posted on Sunday, July 06, 2008 12:27 AM

============ Debug Build ============
Dottext Version: 0.95.2004.102
Machine Name: IIS07902
.NET Version: 2.0.50727.3053
No User
============ Debug Build ============