Categories
AS3 Flash

Hello box2D – part 3

In my previous post I update the “Hello world” for box2D so that you can see something visual happening.
You can find the original here: AS3: Hello Box2D.

Today I will make it a little bit more attractive (remove trace).

First we change some settings to make it more fun to watch at!

The groundBodeDef (strange name for something that is the ceiling) is moved more down so you can see where the bodyDef is bouncing off.
[as]
//groundBodyDef.position.Set(0.0, -10.0); // [mck]: old code
groundBodyDef.position.Set(0.0, -9.0);
[/as]

The bodyDef is moved to the center and dropped a little higher
[as]
//bodyDef.position.Set(0.0, 4.0); // [mck]: old code
bodyDef.position.Set(10.0, 10.0);
[/as]

And the shapeDef is bouncy so that you can see what box2D can do:
[as]
shapeDef.restitution = 0.8; // [mck]: extra new code
[/as]

And delete the trace:
[as]
var position:b2Vec2 = body.GetPosition();
var angle:Number = body.GetAngle();
trace(position.x +’,’+ position.y +’,’+ angle);
[/as]

End result

The document class (HelloWorld.as) will look like this:

[as]
package {

import flash.display.*;
import flash.events.*;
// Box2D Classes used in this “Hello world”
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;

// [SWF(width=”640″, height=”480″, backgroundColor=”#000000″, frameRate=”60″)]
public class HelloWorld extends Sprite {

private var body:b2Body;
private var world:b2World;

// constructor
public function HelloWorld() {
trace( “HelloWorld.HelloWorld” );

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_World
////////////////////////////////////////////////////////////////////////////////////////////////////
// Create world AABB
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);

// Define the gravity vector
var gravity:b2Vec2 = new b2Vec2 (0.0, -10.0);

// Allow bodies to sleep
var doSleep:Boolean = true;

// Construct a world object
// var world:b2World = new b2World(worldAABB, gravity, doSleep); // [mck]: old code
world = new b2World(worldAABB, gravity, doSleep);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Ground_Box
////////////////////////////////////////////////////////////////////////////////////////////////////
var groundBodyDef:b2BodyDef = new b2BodyDef();
groundBodyDef.position.Set(0.0, -10.0);

var groundBody:b2Body = world.CreateBody(groundBodyDef);

var groundShapeDef:b2PolygonDef = new b2PolygonDef();
groundShapeDef.SetAsBox(50.0, 10.0);

groundBody.CreateShape(groundShapeDef);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Dynamic_Body
////////////////////////////////////////////////////////////////////////////////////////////////////
var bodyDef:b2BodyDef = new b2BodyDef();
bodyDef.position.Set(0.0, 4.0);
// var body:b2Body = world.CreateBody(bodyDef); // [mck]: old code
body = world.CreateBody(bodyDef);

var shapeDef:b2PolygonDef = new b2PolygonDef();
shapeDef.SetAsBox(1.0, 1.0);
shapeDef.density = 1.0;
shapeDef.friction = 0.3;
body.CreateShape(shapeDef);
body.SetMassFromShapes();

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Debug_Drawing
////////////////////////////////////////////////////////////////////////////////////////////////////
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = new Sprite();

addChild(debugDraw.m_sprite);

debugDraw.m_drawScale = 30;
debugDraw.m_fillAlpha = .25;
debugDraw.m_lineThickness = 1;
debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit ;
world.SetDebugDraw (debugDraw);

//
addEventListener(Event.ENTER_FRAME, onUpdateHandler, false, 0, true);
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Simulating_the_World_.28of_Box2D.29
////////////////////////////////////////////////////////////////////////////////////////////////////
public function onUpdateHandler(e:Event):void{

var timeStep:Number = 1.0 / 60.0;
var iterations:Number = 10;

world.Step(timeStep, iterations);

}

} // end class

} // end package

[/as]

So all you need to do is CTRL+ENTER.

And you will have something like this:

[swf]http://www.matthijskamstra.nl/blog/wp-content/uploads/helloworldbox2d_nice.swf,520, 390[/swf]

Is this it? No, lets make it better.
Tomorrow more

Categories
AS3 Flash

Hello box2D – part 2

In my previous post I started with a “Hello world” for box2DFlash.
You can find the original here: AS3: Hello Box2D.

When you get it working you will not be satisfied: a black swf, with only a trace in the output panel.

Today I will make the “Hello world” more visible.

Debug_Drawing

This the preferred method of drawing these physics entities for debugging, rather than accessing the data directly. The reason is that much of the necessary data is internal and subject to change.

source: Debug_Drawing

Box2D has a debugDraw class that lets you see what you have built, they call it DebugDraw.
Take the code from yesterday and place this code before Simulating_the_World code.
[as]
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = new Sprite();

addChild(debugDraw.m_sprite);

debugDraw.m_drawScale = 30;
debugDraw.m_fillAlpha = .25;
debugDraw.m_lineThickness = 1;
debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit ;
world.SetDebugDraw (debugDraw);
[/as]

Thx Boy Wonder for pointing me to a little mistake in the part of the code: I forgot the last piece of code world.SetDebugDraw (debugDraw);. The class at the bottom of the page was correct!

So all you need to do is CTRL+ENTER.

Nice effect isn’t it? Almost? Well at least you see something although it’s not impressive…
Yeah, it’s isn’t much. Lets see how we can improve this.

Improve Debug_Drawing

The problem is that the debug window is created and executed 60 times, but because it is done in a for loop, you only see the end result (after 60 updates).
To see animation (if you follow the trace you see that something is moving) we need to update (visible) the data in dbgDraw more and we will use the frame rate to update it (yesterday set to 60 frames).
But for that there needs to be changed more than just a couple of lines

First we need to add some variables:
[as]
private var world:b2World;
private var body:b2Body;
[/as]
and change some related code:
[as]
// Construct a world object
// var world:b2World = new b2World(worldAABB, gravity, doSleep); // [mck]: old code
world = new b2World(worldAABB, gravity, doSleep);
[/as]
and
[as]
// var body:b2Body = world.CreateBody(bodyDef); // [mck]: old code
body = world.CreateBody(bodyDef);
[/as]

and remove the code add at Simulating_the_World with
[as]
addEventListener(Event.ENTER_FRAME, onUpdateHandler, false, 0, true);
[/as]

and add
[as]
////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Simulating_the_World_.28of_Box2D.29
////////////////////////////////////////////////////////////////////////////////////////////////////
public function onUpdateHandler(e:Event):void{

var timeStep:Number = 1.0 / 60.0;
var iterations:Number = 10;

world.Step(timeStep, iterations);

var position:b2Vec2 = body.GetPosition();
var angle:Number = body.GetAngle();
trace(position.x +’,’+ position.y +’,’+ angle);
}
[/as]

End result

The document class (HelloWorld.as) will look like this:

[as]
package {

import flash.display.*;
import flash.events.*;
// Box2D Classes used in this "Hello world"
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;

// [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
public class HelloWorld3 extends Sprite {

private var body:b2Body;
private var world:b2World;

// constructor
public function HelloWorld() {
trace( "HelloWorld.HelloWorld" );

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_World
////////////////////////////////////////////////////////////////////////////////////////////////////
// Create world AABB
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);

// Define the gravity vector
var gravity:b2Vec2 = new b2Vec2 (0.0, -10.0);

// Allow bodies to sleep
var doSleep:Boolean = true;

// Construct a world object
// var world:b2World = new b2World(worldAABB, gravity, doSleep); // [mck]: old code
world = new b2World(worldAABB, gravity, doSleep);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Ground_Box
////////////////////////////////////////////////////////////////////////////////////////////////////
var groundBodyDef:b2BodyDef = new b2BodyDef();
groundBodyDef.position.Set(0.0, -10.0);

var groundBody:b2Body = world.CreateBody(groundBodyDef);

var groundShapeDef:b2PolygonDef = new b2PolygonDef();
groundShapeDef.SetAsBox(50.0, 10.0);

groundBody.CreateShape(groundShapeDef);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Dynamic_Body
////////////////////////////////////////////////////////////////////////////////////////////////////
var bodyDef:b2BodyDef = new b2BodyDef();
bodyDef.position.Set(0.0, 4.0);
// var body:b2Body = world.CreateBody(bodyDef); // [mck]: old code
body = world.CreateBody(bodyDef);

var shapeDef:b2PolygonDef = new b2PolygonDef();
shapeDef.SetAsBox(1.0, 1.0);
shapeDef.density = 1.0;
shapeDef.friction = 0.3;
body.CreateShape(shapeDef);
body.SetMassFromShapes();

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Debug_Drawing
////////////////////////////////////////////////////////////////////////////////////////////////////
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = new Sprite();

addChild(debugDraw.m_sprite);

debugDraw.m_drawScale = 30;
debugDraw.m_fillAlpha = .25;
debugDraw.m_lineThickness = 1;
debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit ;
world.SetDebugDraw (debugDraw);

//
addEventListener(Event.ENTER_FRAME, onUpdateHandler, false, 0, true);
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Simulating_the_World_.28of_Box2D.29
////////////////////////////////////////////////////////////////////////////////////////////////////
public function onUpdateHandler(e:Event):void{

var timeStep:Number = 1.0 / 60.0;
var iterations:Number = 10;

world.Step(timeStep, iterations);

var position:b2Vec2 = body.GetPosition();
var angle:Number = body.GetAngle();
trace(position.x +’,’+ position.y +’,’+ angle);
}

} // end class

} // end package
[/as]

So all you need to do is CTRL+ENTER.

Now we see something moving, and we have an endless stream of trace data.

It’s better, but there is more room for improvement…
tomorrow more.

Categories
AS3 Flash

Hello box2D – part 1

In programming the Hello world is probably the first you will ever make in a new language.
In the box2D wiki you can find a “Hello world” in box2DFlash style: AS3: Hello Box2D.

Easy as it should be … or is it?
This is not the “Hello world” I expected, so I’ll post one that helps you more on your way.

As irongleet mentions in the comments, this is not really a tutorial. There is already a tutorial on the page I mention above AS3: Hello Box2D. It’s not a bad tutorial, but you need to have some knowledge of AS3 to follow it and I personally don’t like the end result. So this is the first part of a series which will help you make more out of the previously mentioned tutorial. But I’m not going to copy past the tutorial written somewhere else and present it here. That’s why you should read the links to the source for more information. And the next Hello box2d – part 2 will have some more input from me.

Hello_Box2D

source: Hello_Box2D

Lets start with a Flash document width 640px, height 480px, backgroundColor=”#000000″ and a framerate 60.
And add a document class: HelloWorld.
Save this .fla (for example HelloWorldBox2d.fla).

Now get your favorite code-editor (I suggest FlashDevelop) and create that document class, name it HelloWorld.as:
[as]
package {

import flash.display.Sprite;
import flash.events.Event;
// Classes used in this example
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;

public class HelloWorld extends Sprite{

// constructor
public function HelloWorld() {
trace( “HelloWorld.HelloWorld” );
}

} // end class

} // end package
[/as]
and save it next to the HelloWorldBox2d.fla.

You can see that I already add the import needed for Box2D.

The last thing you need to do is download the box2D classes: http://sourceforge.net/projects/box2dflash
Extract the zip file and copy the folder box2d next to the HelloWorldBox2d.fla and the HelloWorld.as

And now you are set…

Creating_a_World

Every Box2D program begins with the creation of a world object. This is the physics hub that manages memory, objects, and simulation.

source: Creating_a_World

The next piece of code can be placed in the constructor (public function HelloWorld() )
[as]
// Creat world AABB
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);

// Define the gravity vector
var gravity:b2Vec2 = new b2Vec2 (0.0, -10.0);

// Allow bodies to sleep
var doSleep:Boolean = true;

// Construct a world object
var world:b2World = new b2World(worldAABB, gravity, doSleep);
[/as]

Creating_a_Ground_Box

source: Creating_a_Ground_Box

[as]
var groundBodyDef:b2BodyDef = new b2BodyDef();
groundBodyDef.position.Set(0.0, -10.0);

var groundBody:b2Body = world.CreateBody(groundBodyDef);

var groundShapeDef:b2PolygonDef = new b2PolygonDef();
groundShapeDef.SetAsBox(50.0, 10.0);

groundBody.CreateShape(groundShapeDef);
[/as]

Creating_a_Dynamic_Body

We can use the same technique to create a dynamic body. The main difference, besides dimensions, is that we must establish the dynamic body’s mass properties.

source: Creating_a_Dynamic_Body

[as]
var bodyDef:b2BodyDef = new b2BodyDef();
bodyDef.position.Set(0.0, 4.0);
var body:b2Body = world.CreateBody(bodyDef);

var shapeDef:b2PolygonDef = new b2PolygonDef();
shapeDef.SetAsBox(1.0, 1.0);
shapeDef.density = 1.0;
shapeDef.friction = 0.3;
body.CreateShape(shapeDef);
body.SetMassFromShapes();
[/as]

Simulating_the_World

So we have initialized the ground box and a dynamic box. Now we are ready to set Newton loose to do his thing. We just have a couple more issues to consider.

source: Simulating_the_World
[as]
var timeStep:Number = 1.0 / 60.0;
var iterations:Number = 10;

for (var i:Number = 0; i < 60; ++i) { world.Step(timeStep, iterations); var position:b2Vec2 = body.GetPosition(); var angle:Number = body.GetAngle(); trace(position.x +','+ position.y +','+ angle); } [/as]

End result

The document class (HelloWorld.as) will look like this:

I didn’t wrote the code for this tutorial, so this is collection of code copy/paste from the original AS3: Hello Box2D tutorial. But I did, as many probably did, the original tutorial and I was a little disappointed at the end result… so my addition to the original tutorial can be read in the next part of this series (Hello box2d – part 2)

[as]
package {

import flash.display.Sprite;
// Box2D Classes used in this “Hello world”
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;

public class HelloWorld2 extends Sprite {

// constructor
public function HelloWorld() {
trace( “HelloWorld.HelloWorld” );

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_World
////////////////////////////////////////////////////////////////////////////////////////////////////
// Create world AABB
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);

// Define the gravity vector
var gravity:b2Vec2 = new b2Vec2 (0.0, -10.0);

// Allow bodies to sleep
var doSleep:Boolean = true;

// Construct a world object
var world:b2World = new b2World(worldAABB, gravity, doSleep);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Ground_Box
////////////////////////////////////////////////////////////////////////////////////////////////////
var groundBodyDef:b2BodyDef = new b2BodyDef();
groundBodyDef.position.Set(0.0, -10.0);

var groundBody:b2Body = world.CreateBody(groundBodyDef);

var groundShapeDef:b2PolygonDef = new b2PolygonDef();
groundShapeDef.SetAsBox(50.0, 10.0);

groundBody.CreateShape(groundShapeDef);

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Creating_a_Dynamic_Body
////////////////////////////////////////////////////////////////////////////////////////////////////
var bodyDef:b2BodyDef = new b2BodyDef();
bodyDef.position.Set(0.0, 4.0);
var body:b2Body = world.CreateBody(bodyDef);

var shapeDef:b2PolygonDef = new b2PolygonDef();
shapeDef.SetAsBox(1.0, 1.0);
shapeDef.density = 1.0;
shapeDef.friction = 0.3;
body.CreateShape(shapeDef);
body.SetMassFromShapes();

////////////////////////////////////////////////////////////////////////////////////////////////////
// http://www.box2d.org/wiki/index.php?title=Manual/AS3#Simulating_the_World_.28of_Box2D.29
////////////////////////////////////////////////////////////////////////////////////////////////////
var timeStep:Number = 1.0 / 60.0;
var iterations:Number = 10;

for (var i:Number = 0; i < 60; ++i) { world.Step(timeStep, iterations); var position:b2Vec2 = body.GetPosition(); var angle:Number = body.GetAngle(); trace(position.x +','+ position.y +','+ angle); } } } // end class } // end package [/as] So all you need to do is CTRL+ENTER. Nice effect isn't it? No? Only some numbers in the output panel? Yeah I know that was not very useful... So next post will be a better/improved version of the Hello world box2D style >> read Hello box2d – part 2

Categories
AS3 Flash

Box2DFlashAS3 Refactored

If you are a Flex/Flash developer (and not familiar with another programming language), you will agree that the syntax for Box2DFlash is not following the AS3 coding conventions and seems funny.

Not that I’m so good at it (seem to have a lot of problem shaking the suffix “_mc”) but other people have the same problem: read this, this and this.

And one of them refactored the code, and not just someone: it done by John Lindquist (box2D user-name is pv3d).
John is one of the “Committer team” (?) of papervision3D and writes tutorials for papervision3D on pv3d.org.

You can find the code at http://code.google.com/p/box2dflash/ and John started working on tutorials (http://box2dflash.org/) but stopped after completing one… 🙁

[swf]http://box2dflash.org/sites/default/files/flash/RefactoredBox2dSpeedTest.swf, 520, 390[/swf]

I’ve took a quick look in the examples made by John, and I must confess that it seems more familiar/easier.
Conventions are you friend…

But what to do? Use the box2D port to AS3 from C++ or use the refactored one.
I’m using the original Box2DFlash AS3 2.0.1, not only for this reason (shaktool is one of two programmers responsible for the C++ to AS3 conversion and maintenance) but a lot of tutorials are based upon the original.

But I can’t wait for Box2DFlash AS3 2.0.2 and see what skatehead, shaktool and borisTheBrave have decided (I’m secretly cheering for John’s version!)

Categories
AS3 Flash

Box2DFlashAS3 documentation

In a previous post I started my journey into Flash physics by using Box2D.
And I “complained” about the documentation.

So I decided to create one for the boys & girls at the box2d Flash AS3 forum using ASDoc…..

Someone beat me to the punch: BorisTheBrave created a script to convert the current comment into ASDoc style comments and the result is posted here:
The unofficial Box2DFlashAS3 Documentation.

BorisTheBrave has made an update to the documentation: read more about that. I have really no idea what he did, I downloaded the files, but just over write existing files… why?
Anyway the Box2dAS3 documentation looks very nice, and that is the most important stuff he did!!
Categories
AS3 Flash

AS3 Flash Physics Engine Box2D

I was looking for a physics engine for Flash so I started looking for one… there are a lot of engines…
I won’t mention them all, there are enough people who did that already (here, here, here and here)

If the list is that big, how to choose?
Well I also want to use it with papervision3d so I googled on that and if someone checked out a couple of engines (this guy checked out 3).
And in one of my rss feeds there is a guy who builds games, and now it writing tutorials for box2d 😉

So I decided on box2d.

Box2D is an open source physics engine written primarily for games. As the name suggests, Box2D is a purely 2D engine. However, Box2D has grown beyond it’s humble box simulating roots, and can now handle convex polygons and other shapes coming soon.

Box2D is written in C++, but there is a port to as3: AS3 Flash Physics Engine Box2DFlashAS3 2.0.1.

[swf]http://box2dflash.sourceforge.net/PhysTest201.swf, 520, 292[/swf]

Box2DFlashAS3 is an open source port of Erin Catto‘s powerful c++ physics library Box2D.

There is not a lot of information about Box2DFlashAS3 and tutorials are even harder to find.
So here some useful links:

Emanuele Feronato (an Italian PROgrammer) has written an extremely useful tutorial: box2d tutorial for the absolute beginners/. This one is a very good starting point!

I will write about the problems that I encounter with Box2D, I hope that will help you in your quest to understand box3DFlash.


Because I’m quite lazy, I didn’t mention all the as3 physics engines but you can: just make a comment about any engine and perhaps why you are working with that engine…

Categories
Flash Open source / Freeware

Convert SWF to AVI – part 3

Update #1: when I wrote this post, this all worked… And I have good hope that the site will return. For now I can only say: try again later…. 🙁
Update #2: well the site didn’t return: it’s as dead as a doorknob … that’s too bad. I couldn’t find a place where you can download it now, so I searched my external harddrive if I had the original zip-file, and I did. So you can download the file at http://www.box.net/shared/u5utxytazn#swfdrop
Update #3: Today I needed this for a good export to AVI and found out that swfdrop only works if the animation is on the main (root) timeline… so I used the trick introduced by swf2avi > read more here

Flash is not very good in converting animations in to AVI’s because you lose the animations in the nested movieclips. You can export to .MOV but that’s not a native Windows video codex.

So you want to convert a SWF to AVI (SWF2AVI) or another videofile/codex (without spending any cash)?
As the title of this post suggest: I have written about this subject before: in part 1 and part 2.

And I found a new freeware tool to help you convert your SWF: www.swfdrop.com.
SWF DROP: Version 0.9c

Download: it think this program is very useful, but the creators think different and killed the original site. I still have the original swfdrop.zip and that one can be downloaded here:http://www.box.net/shared/u5utxytazn#swfdrop.
Remember: I have nothing to do with this program, I only think it’s useful.

This project is also freeware and more up-to-date: October 2007 (swf2avi is last updated in 27-08-2002 & swf>>avi is last update in 07.20.2005).

“SWFDROP” is the SWF converter for Windows to convert Flash SWF file format to AVI format. It’s the best tool to successfully convert any Flash 6/7/8/9 SWF file into a video AVI file that you can play with Windows Media Player (or any video player), where all other tools dont work. These, along with a variety of video encoding options, make SWFDROP the best choice for you productivity!

A little preview: you can figure it out, trust me.

It’s very easy to use, you can use the codex installed on you computer and it’s very fast

Create a movie that will load the movie that you want to export.

  • make this movie the same size as the original
  • use the same frame rate
  • only difference with to movie you want to load is the number of frames: use the number that you want (for example: 1000)

Because swf2avi is based upon as2, this code is also as2
[as]
// code in frame 1
loadMovieNum(‘name_of_the_movie_you_want_to_render.swf’, 1);
stopAllSounds();
[/as]

Categories
Design Open source / Freeware

Free PDF viewer

Most of the time you can download papercraft stuff in .JPG or .PDF, and I just realized that I never have written about .PDF.

So here we go: I will only explain how to view a .PDF file, not how to create one. All pdf reader here are for free, if you need to pay for them is that because then you get the option to edit the pdf, and that is not what I want to cover here…

First of course we have to mention the mothership: Adobe Acrobat Reader.
Adobe Acrobat Reader
I use this one when I need to be sure that complex patterns in some of my illustrations are visible without errors. It’s for Windows, Apple, Linux and many more. Downside is the extreme size: 33.5MB.

Adobe Acrobat Profession

So I have two smaller pdf-reader who are very good, and I use it for almost anything because it’s faster and small footprint.

This is the one I use: Foxit Reader. You can use it on a memory stick, it’s made for Windows and Linux and I love it. In the past I had some “bugs” in prints that I made (didn’t show the pattern correctly) but that sort of bugs seems to disappear as this program gets worked on more and more. When I started using this program it was 1MB, now it’s 2.5MB and the bugs I had before are now disappeared.

Foxit

The other one I want to mentions is Sumatra PDF. This is the one I use on my memory-stick. This pfd reader is the smallest to download: 1.2MB. It’s only a Window application and it’s a minimalistic design. Simplicity has a higher priority than a lot of features.

SumatraPDF

Categories
Design Open source / Freeware

List of good, free Graffiti fonts

I wanted to write about this for a long time (about a year now). A list of good, free graffiti fonts.
But I’m not really into fonts, so it seems out-of-place on this blog.

Recently I needed a good free graffiti font, and saw that there was nobody who had made that list. Well that’s not entirely true, I found one: 12-fantastically-free-graffiti-fonts/ but I don’t agree with this list.

So instead of complaining about lists that other people make, I will start my own.
I used dafont to find the font used here, because every free font ends up there.

When I see designers using a graffiti font, they tend to use: Aaaiight!/Aaaight! fat, 5cent or Bring tha noize. Although they are nice, there are better graffiti fonts.

As every list is a personal reflection of the list-makers own taste and this list is made with stuff I like.
I like the condensed, tightly spaced, big marker tags and that’s what I like in the fonts. But I’m also a designer and it’s difficult to explain to your boss, that the font is “dope” but nobody can read the message. So I also looked at lower case, upper case, if it’s more a headline font or a body font, if it’s readable, the fonts has numbers, special characters, and that is use with a very scientific method to come to this list (my guts).

But I must say, I understand why nobody ever made this list… there are not a lot of good, complete fonts out there. Probably because good graffiti artists don’t go sit down and create a font for us, they are out there creating art! To everybody on this list (and not on this list), thanks for the free fonts and the time spend on making the font.

My list is cut up in two parts:

  1. tag fonts
  2. piece fonts

Tag fonts

A “tag” is the most basic writing of an artist’s name in either spray paint or marker. A graffiti writer’s tag is his or her personalized signature.

source Wikipedia

#7. Hardkaze

Hardkaze by Pizzadude
http://www.dafont.com/hardkaze.font

Hardkaze""

  • Only Upper case. Special characters. Number
  • Readable from font size 18, good for body text and headers

[mck] This is the font that graphic designer should have chosen if he didn’t know better. It’s close to a normal handwriting and I get a “comic” vibe of it. It’s not graffiti enough, but better than the previous fonts.

#6. Vandalism

Vandalism by Julien Saurin
http://www.dafont.com/vandalism.font

Vandalism

  • Only upper case. Special characters
  • Number
  • Readable from font size 24, the bigger the better readable
  • headline fon

[mck] Really awesome font, but this one is probably not readable for “normal” viewer. But it’s freaking awesome!.


#5. Searfont

Searfont by bartolD & Sear
http://www.dafont.com/searfont.font

Searfont

  • Only upper case.
  • Special characters
  • Number
  • Readable from font size 36, the bigger the better readable
  • headline font

[mck] Really awesome font, but this one is probably not readable for “normal” viewer. But it’s freaking awesome!.

#4. Whoa!

Whoa! by Johan Waldenstrm
http://www.dafont.com/whoa.font

Whoa!

  • Only upper case.
  • Limited special characters (!*?).
  • No Number
  • Readable from font size 18, the bigger the better readable, headline font

[mck] Wow!

#3. Tagster

Tagster by SDFonts
http://www.dafont.com/tagster.font

Tagster

  • Only upper case.
  • Limited special characters (!*?;:”‘)
  • No Number
  • Readable from font size 24, the bigger the better readable
  • headline font

[mck] Could easily have been number 2, but it’s not complete.

#2. IllegalEdding

Illegal Edding by Maurice van de Stouwe
http://www.dafont.com/illegal-edding.font

IllegalEdding

  • Only upper case. Special characters
  • Number
  • Readable from font size 18, good for body text and header

[mck] And from now a graphic designer should use this font. Love this one! And it has a complete font set

#1. PhillySans

Philly Sans by Kosal Sen
http://www.dafont.com/philly-sans.font

  • Write in lower case, but the effect is uppercase (no upper case, lower is upper case)
  • No Numbers
  • no special character
  • Readable from font size 18, good for body text and header

[mck] Very clean, readable, and still it has a graffiti vibe. It shouldn’t have been number 1 because it has a very limited character set, but I love this font.

Piece fonts

A “piece” is a more elaborate representation of the artist’s name, incorporating more stylized “block” or “bubble” letters, using three or more colors. This of course is done at the expense of timeliness and increases the likelihood of the artist getting caught.
…..
These pieces are often harder to read by non-graffiti artists as the letters merge into one another in an often undecipherable manner.

source wikipedia

If you need to make a piece in a design, you can also use the tag fonts, but never the other way around!

#6. Throw-up Font

Throw-up Font by Graffilia Fetn
http://www.dafont.com/throw-up-font.font

Throw-up Font

  • Only upper case
  • No special characters (except !)
  • No Number
  • Readable from font size 36, the bigger the better readable
  • headline font

[mck] This list wouldn’t be complete if we didn’t have a throw-up font. I’m having trouble reading it.:(

#5. Cancontrol

Cancontrol by Johan Waldenstrm
http://www.dafont.com/dht.font

Cancontrol

  • Only upper case.
  • No special characters (except !).
  • No Number
  • Readable from font size 36, the bigger the better readable
  • headline font

[mck] Nice one

#4. Aerosol

Aerosol by Bright Ideas
http://www.dafont.com/aerosol.font

Aerosol

  • Only upper case
  • Special characters
  • Number
  • Readable from font size 24, the bigger the better readable
  • headline font

[mck] This font is made to color in. Not my style, but very nice!

#3. Homeboy

Homeboy by Johan Waldenstrm
http://www.dafont.com/homeboy.font

Homeboy

  • Only upper case
  • No special characters (except !).
  • No Number
  • Readable from font size 36, the bigger the better readable
  • headline font

[mck] Nice one

#2. Zit Graffiti

Zit Graffiti by Olivier “Zitoune” D.
http://www.dafont.com/zit-graffiti.font

Searfont

  • Only upper case (there is a difference between upper and lower case: upper case is an outline character).
  • Limited special characters (!)
  • No Number
  • Readable from font size 24, the bigger the better readable
  • headline fon

[mck] A oldskool graffiti font. Nice

#1. Bboy

B-Boy by Johan Waldenstrm
http://www.dafont.com/bboy.font

Bboy

  • Only upper case.
  • Limited special characters (!).
  • No Number
  • Readable from font size 24, the bigger the better readable
  • headline font

[mck] A very oldskool graffiti font, I like this one very much.

Update #1: I just read this post about
44 Free Stylish Graffiti Fonts for Designers
on NaldzGraphics. It’s a big list of free graffiti fonts: the same comments that I mentioned earlier goes for this list: it a list with all available free graffiti fonts out there…
Update #2: With a little help from google this popped up:
20 Free Graffiti Fonts You Should Already Have. I think a list with “Urban Hook-Ups”, “Detroit Ghetto” or “Raslani Underground” is not a list that is created with love…

At Over 30 free high quality graffiti fonts I found one that is worth looking into: “KZ Gravity

I found my font at dafont.com, but there are some nice font to be found at deviantart.com which I need to do (some time :P)
This one tricked me into it:
Grafitti_Font_Beta_test_by_astayoga
Sadly the font is copy of the image you see here, and the sizes are to radical. would be awesome I think

Update #3: found another free graffiti font list: 50 Free Graffiti Fonts for Urban Artworks. The same applies to this is list what I mentioned before: it’s a list with a lot of fonts that range from good to very bad.
But in this list 3 fonts from deviantart.com (yes, I need to search there for some addition to my dafont list).
The first is Sprayerz Font by beraka
Sprayerz Font
and
KevoeWestFont by KevoeWest
KevoeWestFont
and
Crawn Fat by beraka
Crawn Fat

Categories
Custom Design Grumm Urban papercraft

Little Grummerboy – a Grumm custom by Hardy

I feel ashamed, and I should! This custom is laying around on my virtual desktop for a long time now.
And it’s really great!

I present: Little GrummerBoy a Grumm custom by Hardy
Little Grummerboy by Hardy, a Grumm Custom

The .ZIP file contains a .PDF
(You can use freeware like FilZip or 7zip to extract a .ZIP-file and read a .PDF with Acrobat or Foxit)

Little Grummerboy by Hardy, a Grumm Custom

So lets start introducing: Hardy a German graphic designer and allround creative.
You can visit Hardy on his own blog: thepaperjam.de, it’s in German so not readable for everyone 🙁 .
More into English? Perhaps you should visit him on myspace: Hardy has the most awesome myspace I have ever seen which is dedicated to his papertoy Bottecc.

Bottecc
You can download the Bottecc templates at the bottom of page, just search for “bottecc beta template”. (it’s a illustrator EPS, he should to change that to PDF… oh well!)

But that’s not all, Bottecc is a papertoy wrestler… Yes you heard it correct.. This papertoy can busta move:

As Hardy put it:

i started working on bottecc with the idea to make a papercraft that can really move and wrestle like the good old wwf-stars.

The subtitle of Hardy’s site is “Paper wrestling association“!
Too bad that the idea is not finished yet. I would love to send a Grumm into the ring 🙂
I don’t think there many papertoys out there that can beat Grumm 😀