Posts Tagged ‘JigLibFlash’

JigLibFlash FIVe3D Dominos

Thursday, October 1st, 2009

JigLibFlash FIVe3D Dominos

So far the only FIVe3D JigLibFlash example I have shown is the Falling Cube Demo. So it was time to create something a little more practical. Dominos.

In this demo you can create, position and rotate dominos, then knock them over. You can also move the camera around the scene to get a better view.

This demo is my first use of flat shading in FIVe3D , which is a new feature in V2.1.2. Flat shading couldn’t be easier to implement, I simply set scene.ambientLightIntensity=.05 and then set all the sides of my dominos to flatShaded=true. I’m impressed with how easy it was to add and how much more visually appealing it made this demo.

This demo is also my first since joining the JigLibFlash team and adding FIVe3D support to the JigLibFlash library. This means the sample source does not contain any JigLibFlash classes, as they are now within the JigLibFlash library itself. Make sure you update your version of JigLibFlash rev 101 or higher.

To check out the demo click here.

To get the demo source click here.

Source Requirements: You will need both FIVe3D 2.1.2 and JigLibFlash to compile the demo source.

JigLibFlash FIVe3D Support and FIVe3D Cube

Monday, August 3rd, 2009

FIVe3D JigLibFlash Demo 1 Screenshot

Last week I spoke at ‘Flash in the Peg‘ – Winnipeg’s Adobe User Group. Here I got the opportunity to show a demo of JigLibFlash FIVe3D support that I have been working on for the last few weeks. After more hours than I would like to admit JigLibFlash FIVe3D support is now available for download. Like both JigLibFlash and FIVe3D these classes are released under the MIT License.

If you have used FIVe3D before you will know that there are no 3D object primitives built into the library, because of this I have also wrote a Cube class primitive for FIVe3D. Even if you do not need to use physics in your project you can still use this new Cube primitive.

Setting up JigLibFlash to work with FIVe3D is not quite as easy as Papervision3D, but it’s not a lot harder. The reason for this is FIVe3D does not allow for direct transformation matrix manipulations. In simpler terms a  few small changes needed to be made to the Sprite3D class within FIVe3D. You can use my modified version of the Sprite3D class to replace your current version, or just add it directly to your project using the same package folder structure. An example of how to do this is in my source below. The modifications to the Sprite3D class are small and should have no impact on your projects (with or without JigLibFlash).

To check out the demo click here.

To get the demo source, including all required files click here.

To just download the required files (JigLibFlash FIVe3D Plugin, modified Sprite3D class and new Cube primitive) click here.

Source Requirements: You will need both FIVe3D 2.1.2 and JigLibFlash to compile the demo source.

Update: As I am now a JigLibFlash contributor, JigLibFlash library now has built-in FIVe3D support. For more information click here.

JigLibFlash Rewrite – Video Game Case Physics Example

Monday, April 13th, 2009

Video Game Case Physics Screenshot

Over the past 2 months the JigLibFlash team has been re-architecting the whole JigLibFlash project and the new version is now available. Using this re-architected library is quite a bit different from the old version. So before I convert some of my older stuff over, I decided to making a new demo of the updated library in action.

In this demo randomly positioned and oriented video game cases drop one on top of the other until 7 cases are on the screen. Then it resets and starts all over again. It is a very simple example, but it will give you a place to start.

To play the demo click here.

To get the source click here.

Source Requirements: You will need Papervision3D , JigLibFlash and bulk-loader to compile the source.

Note: The case is a scan of my copy of ‘Left 4 Dead’, if you want to read a good article on how the actual case artwork came to be, check out this link: http://www.l4d.com/blog/post.php?id=2353

JigLibFlash Object Rotation – Pitch, Yaw and Roll

Friday, March 27th, 2009

JigLibFlash Rotation Example Screenshot

I get asked the following question a lot: “How do I rotate a JigLibFlash object?”. I do understand why people have this question as rotating pieces of geometry in JigLibFlash is not very straight forward. It also can end up being kind of challenging if your not familiar with exactly how rotation matrix work. The bottom line is it is not as easy as Papervision3D ( ex: pitch(10) ). So instead of me trying to explain any formulas I decided to add a few functions to the RigidBody class in JigLibFlash to make it easier for people to use.  I have created the following functions.

public static var toDEGREES:Number = 180/Math.PI;
public static var toRADIANS:Number = Math.PI/180;
 
public function pitch(angleDeg:Number):void
{
	SetOrientation(JMatrix3D.multiply(CurrentState.Orientation, JMatrix3D.rotationX(angleDeg*toRADIANS)));
}
 
public function yaw(angleDeg:Number):void
{
	SetOrientation(JMatrix3D.multiply(CurrentState.Orientation, JMatrix3D.rotationY(-angleDeg * toRADIANS)));
}
 
public function roll(angleDeg:Number):void
{
	SetOrientation(JMatrix3D.multiply(CurrentState.Orientation, JMatrix3D.rotationZ(angleDeg*toRADIANS)));
}
 
public function setRotationsDegrees(xRotation:Number, yRotation:Number, zRotation:Number):void
{
	SetOrientation(JMatrix3D.euler2matrix(new JNumber3D(xRotation, yRotation, zRotation)));
}
 
public function get rotationX():Number
{
	return JMatrix3D.matrix2euler(CurrentState.Orientation).x;
}
 
public function get rotationY():Number
{
	return JMatrix3D.matrix2euler(CurrentState.Orientation).y;
}
 
public function get rotationZ():Number
{
	return JMatrix3D.matrix2euler(CurrentState.Orientation).z;
}

You can copy this into the RigidBody Class within JigLibFlash (jiglib/physics/). Or you can click here to download a modified version of the RigidBody class to add to your JigLibFlash source. Once complete you can now use these functions from any standard JigLibFlash geometry object.

What you might notice is this source is missing a set function for rotationX, rotationY and rotationZ. I have included commented out version of my function in the source, but be advised that they are commented out because they can cause some weird results when rotating on more then one axis. You are free to use them, but you have been warned. I’m not a math genius so if anyone has any optimizations or additions please let me know.

These functions should hold everyone over until the JigLibFlash team has finished its rewrite of this project.  To read more about what the new syntax will be when completed, check out this recent post by drojdjou.
http://code.google.com/p/jiglibflash/wiki/New_API_Very_Short_Tutorial

To play the demo click here.

To get the demo source click here.

Update: As of April 12 (rev. 81), these functions are now part of JigLibFlash source, so you will no longer need to copy in these functions into your project. :)

3D Ball Adventure (JigLibMotionSpringCamera3D) Part 3

Sunday, February 22nd, 2009

3D Ball Adventure Version 3 Screenshot

Over the passed week and an half, I went through almost every line of code in this project and rewrote and refactored it. After a bit of work, I discovered the cause of the major camera bug that would cause the camera to freak out when pointed north. This issue is now fixed. The springiness of the camera has also been loosened up a bit, so the camera motion is a lot smoother.

Since I got the new camera system to work, I decided to make it a nice and programmer friendly class called JigLibMotionStringCamera3D. I am aware that this name is terrible and long, but it describes the camera’s function perfectly. The camera uses a JigLibFlash RigidBody object as its target and moves based on its motion not the direction it is facing. Part of the camera’s smooth motion is achieved by extending the SpringCamera3D class. While this camera does have specific job, I know that there are a lot of uses for a camera like this. If you find a cool use for it, drop me a line.

The viewable area of this version has been increased and a little challenge has been added to the end of the level for those who played the last version.

If anyone has created any cool levels using the xml level creator send me an email. I would love to incorporate them in my next version.

To play the demo click here.

To get the source click here.

Note: You will need Papervision3D, JigLibFlash and Tweener to compile the source.

Update: The swf example has been updated to fix an issue when viewed on any page but the main page. Thanks to Chris Hill for pointing this out.

3D Ball Adventure (JigLibFlash, SpringCamera3D, Papervision3D) Mashup Part 2

Monday, February 9th, 2009

I have been busy over the past week improving the ‘3D Ball Adventure’ game. While the use of the SpringCamera3D in the last version was usable, it did have a problem, it was locked onto to two planes of motion and had no rotation. So I under took the challenge of creating an easy to use 3rd person camera view using SpringCamera3D. I greatly under estimated the challenge of creating a camera system that competently followed the motion of the ball but also gave the user the freedom to make camera corrections. While this version isn’t perfect, it is still pretty cool.

I also have updated the xml level generator with new features like object groups, player start position, standardized objects. Also instead of x,y,z being the center of a box, it is now the top, close, left corner (which is way easier to design for).

To play the demo click here.

To get the source click here.

Note: As before you must have Papervision3D and JibLibFlash to run the source.

3D Ball Adventure (JigLibFlash, SpringCamera3D, Papervision3D) Mashup Part 1

Monday, February 2nd, 2009

3D Ball Adventure Version 1 Screenshot

A couple of weeks ago a new 3D physics engine for AS3 called JigLibFlash was released into early alpha. I’ve been playing around with different 3D physics engine for Papervision3D for a little while now. The problem was I could not get the ease of use and performance I wanted out of anything that was currently available. This finally changed when I came across JigLibFlash. This library is relatively easy to use and the performance is quite good. Check out the code base at http://code.google.com/p/jiglibflash/ or jump over to their blog at http://www.jiglibflash.com/blog/. Important Note: This library is currently undocumented, has no tutorials and is in early alpha so it is not for the faint of heart, but if that does not bother you go check it out, you will be impressed.

I have been working on a new camera type for a while that would realistically follow around a 3D buggy. I thougth this class was starting to get pretty good, that was until Benoit Beauséjour release his SpringCamera3D class, which blew the version I’ve been working on out of the water. This class is easy to use and will make your 3D apps look a lot more profession. For a good example on how to use the new SpringCamera3D class in Papervision3D check out a demo at http://pv3d.org/2009/01/23/springcamera3d-and-driving-a-car/

So while playing around with both these very cool new developments I thought wouldn’t it be great if I mashed these two together and create a cool game. At that moment 3D Ball Adventure was born.

Continue reading for a working demo and source code.

(more…)