as3isolib Actionscript 3 Isometric Library for Flash/Flex

as3isolib is a great isometric library for actionscript 3 by Justin Opitz.  This is a lower level isometric library that could be used in building your own isometric gaming engine or learning more about the popular isometric view in games or other flash content.

From building basic blocks…

To constructing sprites and objects with individual iso objects with their own bounding boxes.


This sample shows a two piece tree, a common issue with sprites in isometric is where to slice them up.  This sample shows a tree with the leaves able to be in front of a character so that you could walk under the tree and be in front of the trunk but covered by the trees.  Essentially height is respected.

Sample code for the tree tutorial:

package
{
        import as3isolib.display.IsoSprite;
        import as3isolib.display.primitive.IsoBox;
        import as3isolib.display.scene.IsoGrid;
        import as3isolib.display.scene.IsoScene;

        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;

        public class IsoApplication extends Sprite
        {
                private var scene:IsoScene;
                private var assets:Object;

                private var loader:Loader

                private function loadAssets ():void
                {
                        loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.INIT, loader_initHandler);
                        loader.load(new URLRequest("assets/swf/assets.swf"));

                }

                private function loader_initHandler (evt:Event):void
                {
                        buildScene();
                }

                private function buildScene ():void
                {
                        scene = new IsoScene();
                        scene.hostContainer = this;
                        scene.container.x = 200;
                        scene.container.y = 200;

                        var treeTrunkClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("TreeTrunk") as Class;
                        var treeLeavesClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("TreeLeaves") as Class;

                        var grid:IsoGrid = new IsoGrid();
                        grid.showOrigin = false;
                        scene.addChild(grid);

                        var s0:IsoSprite = new IsoSprite();
                        s0.setSize(25, 25, 65);
                        s0.moveTo(50, 50, 0);
                        s0.sprites = [treeTrunkClass];
                        scene.addChild(s0);

                        var s1:IsoSprite = new IsoSprite();
                        s1.setSize(125, 125, 100);
                        s1.moveTo(0, 0, 75);
                        s1.sprites = [treeLeavesClass];
                        scene.addChild(s1);

                        scene.render();
                }

                public function IsoApplication ()
                {
                        loadAssets();
                }
        }
}

current features

  • simple scene creation
  • 3 primitive types
  • base class for displaying user-created content
  • plenty of styling option on vector based primitives
  • integrates well with a variety of tween engines
  • standard 3D isometric positional sorting

So get busy building the flash version of roller coaster tycoon…

Blender to .as3 Exporter for Papervision 3D, Away3D and Sandy3D Updated

If you are exporting from blender to actionscript directly so you can get your models into flash as script you can use the Blender to .as3 exporter which so kindly supports all flash 3d engines currently Away3D, Papervision3D and Sandy3D.  Dennis Ippel made the Blender exporter a while back but the update supports papervision 2.0.

The benefits of COLLADA are nice but there are so many differences that you can run into trouble.  With the exporter it is a direct faces and vector export without all the bloat of DAE/COLLADA xml.  This works if you are only developing for flash and dont’ need to use the models in other platforms/systems/engines that aren’t in flash.

Hardware of the Casual Gamer Revisited from Unity3d Creators

A few weeks ago the makers of Unity3d released some really valuable information about casual gaming and general hardware of users that play online games.  It was an interesting report and very beneficial to developers on the Unity platform and others.  We wish other plugin makers would do the same in such a thorough method.

Unity 3d creators listened to the market and have now posted updated numbers and information as well as a page that quarterly stats will be updated. Check the new, quarterly, hardware of the casual gamer stats.

I would have seen this earlier but I have been deep in a Unity 3d project myself :).  I am a big fan of all web based gaming platforms and Unity is almost a dream come true for 3d web gaming.  For the company to be this open that is a very good sign.

What can you do with Unity3D?  Here is a list of games made with Unity3D on the web.  The one great thing about this platform is that is was made for gaming specifically from the start.  Simulations and game development with Unity3D is very fun and productive. I still love Flash, Director etc but Unity3D development is now very much in my rotation.

Games made with Unity3D:

Hancock Movie Games

Tennis Stars Cup

Duckateers

Temploe (ninjas attack you)

RC Laser Warrior

Urban Race Star

FlashBang studios

TraceON

EPIC Tower Defense

InvinciCar

Besmashed (multi)

Global Conflicts

Phoenix Final

Doom Siege

Mario Galaxy like run (third one down)

Zombie Drive

Pocket Piglets

ChickenDemo

Castle Conquest

AS3 Zupko’s Reflections and Shadows with Raycasting in Papervision 3D

The Zupko show continues with reflections in Papervision 3D [demo].

Be sure to check out the shadow demo that this is based on:

After posting my shadow experiment, Patrick Matte posed a question wondering if I would be able to do real-time reflections in a similar manner. The next day I had it done, along with some nice iterations along the way: orthographic and perspective projection (I can release those later if anyone really wants them). I’ve been sitting on it every since and finally decided I would take the time to write a little description into how its done and give the code to those who are interested (and I fixed up some code for backface culling in the reflection this morning).

AS3 Plinko with APE 2D Flash Physics Engine

I rarely mention stuff I have worked on here but I got a chance to use APE and AS3 on the online Plinko game at the site for the Price is Right videogame for the famed pink Plinko Board.  Who doesn’t love Plinko?

I did the programming on this back when I still worked at emarketing/prizelogic.

I will be featuring a small iteration to APE with draggable particles and how I did it.  In the end I didn’t use the draggable particles but they are fun (i ended up changing my collision/border particles after testing).  I ended up controlling the drop location by swapping out a wheel particle after they dropped it.  So that it got the famous Plinko disc bounce and roll.

Why did I use APE? Well it is the least complex physics engine.  I started off with Box2dFlashAS3 and will post that one maybe as well but ended up going with APE mainly for integration it was easier that it was a less intensive codebase.  Box2DFlashAS3 can scare non C++ coders with it’s style let alone AS2 coders moving to AS3.

It is slower with all the other animation going on in the site but you can also play on my server here just the Plinko part.

Can you get 10,000?

Papervision 3D 2.0 Breaking Changes on Object yaw, roll, pitch

UPDATE: See comments and papervision list for revert of this change.  You can now use localRotationX, localrotationY and localRotation Z instead.  yaw(), pitch() and roll() are back by popular demand.

Hi List,

Sorry for this confusion, but we decided to revert back to pitch(
angle ), yaw( angle ) and roll( angle ) methods.

There are three new getter / setters now though:

do3d.localRotationX
do3d.localRotationY
do3d.localRotationZ

So:

pitch( 30 ) would be the same as doing localRotationX = 30;

Note that  localRotationX / Y /Z are rotations relative to the
rotation as set by rotationX / Y / Z.
Also note that after do3d.lookAt() localRotationX/Y/Z will be resetted to 0

Tim

ORIGINAL POST:

Papervision 3D 2.0 Alpha has been undergoing lots of changes and one you might want to know about is the object yaw, pitch and roll change.  Thisis changing on how you access them but only slightly.  This is good because you an read and write the values on the object not just set them. Per the papervision list from the man Tim Knip:

On many users request:

DisplayObject3D‘s methods pitch(), yaw() and roll() are now getters / setters.

Usage:

do3d.yaw = degrees;
do3d.pitch = degrees;
do3d.roll = degrees;

var myYaw : Number = do3d.yaw;

This means these values are now ‘absolute’ values instead of previous
‘relative’ values as in deprecated do3d.yaw( 1 );

Let me know any issues (as I’m sure there are…)

Tim

This only affects the latest and greatest revisions of papervision but is definitely a good change.  It is good to make changes that make more sense without worrying about breaking changes.

Google Tech Talk: Simple interactive 3D modeling for all – VideoTrace

3D models from basic video… This can be huge in all sorts of ways.  For exponential growth you need to go virtual.

  • This is a technology called VideoTrace from Australia
  • The Siggraph paper describing VideoTrace is available here (pdf 6MB)
  • Larger videos available here, with a more compressed version here.