Posts Tagged: 3D


22
Jun 10

How to correct 3-D projection on stage resize

The problem:
You're using Flash 10's native 3-D API and notice the projection goes a little skewiff when resizing the window.

The solution:
You need to reset the stage's projection centre on stage resize, like so...

var centre:Point = new Point(stage.stageWidth/2, stage.stageHeight/2);
root.transform.perspectiveProjection.projectionCenter = centre;


19
Jan 10

A History of the World

I just returned from a trip round SE Asia to see my last project launch. Called 'A History of the World in 100 Objects', it's a joint venture between BBC Radio 4 and the British Museum to chart human history in a new way. I developed the concept for the Flash 3D object explorer with the guys at GT and built it using Flash 10's native 3D capabilities. Users are able to explorer objects from throughout human history in a sort of 3D timeline and even make history by adding their own. Here's the TV advert for the series:

Since it is expected to grow to up to 10,000 objects over the next 5 years, I used all the tricks in the book to optimise loading, rendering and memory management - which will bore most people to tears, so that's for another time. Check out the Flash site itself here.


23
Oct 09

CoolIris type thing in 30 lines

package { // Piclens type thing in 30 lines (FP10+) Liam O'Donnell - spikything.com
    import flash.display.Sprite;
    import flash.events.Event;
    public class Main extends Sprite {
        private var container :Sprite;
        private var imageGrid :Sprite;
        private var images :Array = [];
        public function Main():void {
            container = addChild(new Sprite()) as Sprite;
            imageGrid = container.addChild(new Sprite()) as Sprite;
            for (var i:uint = 0; i <200; i++) images.push(getItem(i));
            images.sortOn("z", Array.NUMERIC | Array.DESCENDING);
            for each (var item:Sprite in images) imageGrid.addChild(item);
            addEventListener(Event.ENTER_FRAME, update);
        }
        private function getItem(index:uint):Sprite {
            var item:Sprite = new Sprite();
            item.x = -(200 / 3) * 210 / 2 + (index / 3) * 210;
            item.y = (index % 3) * 160 - 40;
            item.z = 100 + Math.random() * 2000;
            item.graphics.beginFill(Math.random() * 0xffffff);
            item.graphics.drawRect(0, 0, 200, 150);
            return item;
        }
        private function update(e:Event):void {
            imageGrid.x += ((stage.stageWidth / 2) - mouseX) * .2;
            container.rotationY = ((stage.stageWidth / 2) - mouseX) * .2;
        }
    }
}


20
Jun 09

Head tracking in 3D

I started trying to find useful things to do with face detection, but with limited success. I tried using the Libspark Haar Cascades implementation of face detection with Papervision3D to create a sort of head tracking effect, but it's a little flaky - partly because of poor tracking accuracy and partly because it's too CPU intensive. You can view it on its own page here.


10
Apr 09

You are here…

Playing around with Maxmind's GeoIP city database, I made this globe that 'should' look up your IP address and point to where you are on Earth - well, the nearest city at least:


4
Sep 08

Webcam controlled 3D Earth

Playing around some more with my webcam, I cooked up this 3D Earth with Papervision and made it controllable through a webcam (if you have one). The motion detection is rather flaky, since it tracks the centre-point of a whole area of motion - if you move a lot it will just get confused :)