Archive for the 'Papervision 3D' Category

Red Bull Flugtag Flight Lab - Mini Hangar Widget

Tuesday, July 1st, 2008 by Carsten Schneider

As a practical add-on for our loyal Flight Lab users we created a mini hangar widget that users can embed on their blog, social platform profile etc.

We happily used Clearspring as the platform for our widget, just click “Get this and Share” and take it away. If you enter the e-mail address you registered with at Flight Lab, the widget display your own planes to show off your flight machine building skills.

Related Posts:
Red Bull Flugtag Flight Lab
Developing Flight Lab

Stofanel Investment AG

Saturday, May 10th, 2008 by Thomas

We’ve recently completed the website for the German/Italian property investment firm Stofanel Investment AG.

A subtle use of Flash and Papervision 3D creates an abstract, dreamy and atmospheric paper space to reflect the company’s vision of a harmonious relationship between nature, architecture, community and self.

The corporate identity we developed in collaboration with yippieyeah is based on botanic patterns (Phyllotaxy) as you would find in the growth patterns of sun flowers for example - it underlines the companies dedication to nature and community.

Regular readers will be pleased to find the site equipped with our usual technical treatment: fully dynamic, browser-button- and deeplink enabled (thanks to SWFAddress) and HTML-version for search engine optimization.

O2 The Memory Project

Tuesday, April 22nd, 2008 by Luis

Last Friday we launched the first part of The Memory Project, an online 3D image bank (made with PV3D) of the 21st century ‘cyclorama’ created by artist Jason Bruges.


Inspired by Bluebook, the artist Jason Bruges has created The Memory Project - a 21st century ‘cyclorama’. The structure camera-captures panoramic moments in time and stores them within its digital memory bank. Inside, visitors can explore the stored history of the installation and interact with the displayed 360 degree images.

The Memory Project tours in April 2008, collating the mass memory of London, Edinburgh and Liverpool en route. You can delve even deeper into these public memory banks at www.o2memoryproject.com from Friday 18th April 2008.


BBC NEWS: Life in London captured digitally

DESIGN WEEK: O2 to launch Bluebook installation by Bruges.

Red Bull Flugtag Flight Lab

Wednesday, February 20th, 2008 by Carsten Schneider

Bring on the wood and sheet metal! Break out your saw! Cut the pieces to size, assemble them, paint them and… voila! You’ve built your own airplane. Now it’s time to get it off the ground… will it fly…?

As of today, Less Rain’s new 3-D model application with integrated flight simulator, the Red Bull Flugtag Flight Lab, will be online, a 3-part game based on Red Bull’s Flugtag event.

Step One: The fuselage, wings and pitch elevator are cut out of Styrofoam, cardboard, wood or scrap metal. The pieces are then automatically assembled into a 3-D airplane. Material and shape will later play an important role in the machine’s flying properties.

Step Two: Customizing the parts. This can be done by uploading your own photos, designs and patterns or, alternatively, using brushes to paint the machine ‘by hand’. The results might be anything from a realistic looking airplane to an abstract flying artwork.

Step Three: The prospective pilot can test the quality of his custom-designed aircraft and its flying capabilities amidst stunning natural scenery in the 3-D flight simulator. The machine is launched from a floating launch pad using the arrow keys. First the wings beat softly then the plane takes off energetically into the big blue sky.

The goal now is to cover as much distance as possible. To achieve this, users may experiment with acrobatic maneuvers, collect cans of Red Bull to refuel and employ the thermal updrafts – but they must beware of the bumpy crosswinds!

Points are given after each flight for distance covered and piloting style. Loops, drifts, rolls, low-level flight and other maneuvers are rewarded. In addition, the other users rate the plane’s design. A total score is calculated which, if it’s good enough, may be included on a high score table.

Pilots can store their planes in a hangar where they can develop them further or try out new designs anytime. Another unique aspect of the game is that any user can take-off with any airplane and, what’s more, can change and improve it to their own tastes.

The back-end and user administration part of Flight Lab has been developed by Signal7, our partner of choice when it comes to enterprise level, tailor-made database solutions.

Related Links:
Red Bull Flugtag Flight Lab
Pilot avatar motion capture demo and the original Paperdude post
Signal7

Update:
We’re Site of the Day at the FWA! Cheers, Rob!

Update II:
We made it Site of the Month at the FWA! That’s just fantastic, thanks everybody at the FWA!

Update III:
Thank you UltraShock, for the BombShock Award! And we are Adobe Site of the Day for March 4th!

Continue reading: Developing Flight Lab

Public Service Anouncement:
WordPress decided to delete the original post. This is a re-post, meaning the original comments got lost. We’re sorry about that.

Developing Flight Lab

Wednesday, February 20th, 2008 by Patrick Juchli

At the beginning it’s always simple. “Everybody draw crazy airplanes and then fly them.” We wanted a fun experience, no boring modeling session, no nerdy flight simulation.

Just draw an outline, booom!, airplane wing

Flight Lab uses Papervision3D to show 3-D models and these models have to be created in a very specific way. Drawing an arbitrary free hand line is the opposite of that, you can draw everything, in any way. That’s why the Flight Lab builder has to do a lot of interpretations. Did you just draw a correction to an existing outline? Are there intersections? Can we simplify the outline while preserving its characteristic look so the Flash Player has less stuff to compute? Next, Flight Lab has to break up the shape into triangles because Papervision3D only understands models made out of triangles. At the end, we add thickness and create the final model by extruding the outline. We’re done! Now let’s head over to the game.

Fly like birds do and crash like airplanes

Flight Lab gives you the real thing: It’s a 6DOF (degrees of freedom) flight simulator modeled by a physics engine in 3D using rigid body dynamics. Real airplane wings can be described by specific lift and drag coefficients, depending on how quickly and from which angle the air flows over a wing section. That’s what Flight Lab does.

On the other hand you’re flying by flapping wings. The flying experience had to be as physical as possible using as few buttons as possible. So we put a bird into the simulator, added additional forces and offered the user the same control a bird has over its body – if it’s not a chicken. 4 keys, 2 optional keys and one space bar (hint!) oughta be enough for everyone.

Flying Pigs

The flight behaviour depends on the material you choose and the shape of the airplane. But to be honest, we ended up limiting this influence a little bit. As an aviation engineer you just have to design some things exactly the right way or the airplane won’t fly at all. Crazy airplanes can quickly become impossible to handle in a real flight simulator. However, we wanted people to create imaginative planes and fly them in our simulator even though they may never take off in the real world. So we decided on a compromise. Huge wings for example will do what you expect them to do but they can have any shape and any position. In the end though, a well engineered aircraft will still fly better and bring you more score points.

Hand-crafted, with a lot of love

The game itself has a lot of elements running at the same time and a lot of effort went into making this possible. Flight Lab is using Papervision3D 1.5 and builds on the efforts of a vivid open-source community. Nevertheless, there are limits when it comes to creating a game experience of this scale. Nearly every element you see in the game posed a significant problem of its own. Be it quality of graphics, a panorama, a water surface, airplane shadow, clouds, wind or general depth-sorting problems. And often something feasible turned out to be too slow in context. Game logic, stunt analysis, sound and physics simulation quickly add up.

paperdude

Guest Star

PaperDude! Of course you know him and he’s back big time. He will be acting as your avatar so treat him with respect. His body follows motion capture data from Lord of the Rings and Saturday Night Fever. Real time, baby!

Plus everything else

Next to all this fancy game and 3D stuff, Flight Lab is also a website which offers saving, browsing and sharing airplanes. It’s a Rich Internet Application in the true sense of the word and a site that supports deep linking and browser history. If you want your friend to play the game directly using a specific airplane, just send him the link in the browser address bar.

Flight Lab is a prominent example of what you can do today with Flash Player 9. It was a fun ride and we learned a lot. Let’s see what the future holds, the flying pigs are here to stay.

Dreams Are Electronic

Tuesday, January 15th, 2008 by Vassilios



www.dreamsareelectronic.com
Update: Archived Version

We have been commissioned by the Coventry School of Art and Design to create a website showcasing 20 works from the last 20 years of their New Media Arts MA, lead by installation artist Darryl Georgiou and including in its staff one of the pioneers of multimedia installations, Rolf Gehlhaar, www.gehlhaar.org, the creator of the SOUND=SPACE installation .

The interface allows the user to view the material in a playful, creative way - just click on the screen to find out… And if you want to have some extra fun, press Shift-I or Shift-k. Press Shift-r to go back to normal!

Flash PV3D: BVH mocap importer

Thursday, October 4th, 2007 by Luis

Interesting BVH mocap importer class for Papervision 3D.

BVH mocap

Related posts:

Recent Papervision achievements:

Papervision3D 1.5 (AS3) Official Release

Saturday, July 21st, 2007 by Torsten

So now it’s official. The latest release of Papervision3D comes with merged and cleaned code, new objects and materials, interactive materials and performance updates.

John Grden gives an overview of the change list:

  1. Optimized main render loop.
  2. Implemented ‘plugable’ face culler - 1 extra available at this time.
  3. Moved rendering from Face3D to materials, adjusted all current materials to override drawFace3D().
  4. New Materials : BitmapWire, BitmapColor, and CompositeMaterial (add multiple materials to this one single material).
  5. Moved all instances to their respective classes…fixed stars, vertices and DisplayObject3D to do so.
  6. Face normals are implemented.
  7. BitmapFileMaterial bug fixed - if used more than once, bitmap was displayed flat within the model’s body.
  8. Added progress events to BitmapFileMaterial and Collada objects
  9. Integrated InteractiveScene3D to 1.5
  10. Added Interactive materials for use with InteractiveScene3D - makes displayObjects that use an interactive material dispatch mouse events via InteractiveSceneManager.

Have a look at the Demo and Download Papervision3D 1.5

And now let’s have a closer look at it. Thanks papervision!

Flash: How to add Video texture in Papervision 3D

Sunday, April 15th, 2007 by Luis

I have received loads of requests asking how to diaplay a FLV as a texture in Papervision 3D using AS3.

The concept is very basic, you need to snapshot the video object where the video is running using BitmapData.draw(), and then set the result in the texture, and the rest is done by the 3D engine. ( See demo here)

papervideo

Notice in the code below a small hack by Chris Chen to be able to draw a media source in AS3 bypassing security errors.

Code Updated for latest Flash player and PV3D GreatWhite:

Actionscript:
  1. package com.lessrain.projects.luis.pv3dWhite.video3d
  2. {
  3.     import flash.display.BitmapData;
  4.     import flash.display.Sprite;
  5.     import flash.events.AsyncErrorEvent;
  6.     import flash.events.Event;
  7.     import flash.geom.Point;
  8.     import flash.geom.Rectangle;
  9.     import flash.media.Video;
  10.     import flash.net.NetConnection;
  11.     import flash.net.NetStream;
  12.     import flash.system.Security;
  13.  
  14.     import org.papervision3d.cameras.Camera3D;
  15.     import org.papervision3d.materials.BitmapMaterial;
  16.     import org.papervision3d.objects.DisplayObject3D;
  17.     import org.papervision3d.objects.primitives.Plane;
  18.     import org.papervision3d.render.BasicRenderEngine;
  19.     import org.papervision3d.scenes.Scene3D;
  20.     import org.papervision3d.view.Viewport3D;   
  21.  
  22.     /**
  23.      * @author Luis Martinez, Less Rain (luis@lessrain.com)
  24.      */
  25.     public class Video3D
  26.     {
  27.         private var _target : Sprite;
  28.         private var _container : Sprite;
  29.         private var _viewport : Viewport3D;
  30.         private var _renderer : BasicRenderEngine;
  31.         private var _scene3D : Scene3D;
  32.         private var _camera : Camera3D;
  33.         private var _rootNode : DisplayObject3D;
  34.         private var _connection : NetConnection;
  35.         private var _stream : NetStream;
  36.         private var _video : Video;
  37.         private var _videoWidth : Number = 320;
  38.         private var _videoHeight : Number = 240;
  39.         private var _videoTexture : BitmapData;
  40.         private var _planeTexture1 : BitmapData;
  41.         private var _planeTexture2 : BitmapData;
  42.         private var _srcRect1 : Rectangle;
  43.         private var _srcRect2 : Rectangle;
  44.         private var _basePoint : Point = new Point(0, 0);
  45.  
  46.         public function Video3D()
  47.         {
  48.             Security.loadPolicyFile("http://www.yourdomain.com/cross-domain.xml");
  49.         }
  50.  
  51.         public function initialize() : void
  52.         {
  53.             _srcRect1 = new Rectangle(0, 0, _videoWidth>> 1, _videoHeight);
  54.             _srcRect2 = new Rectangle(_videoWidth>> 1, 0, _videoWidth>> 1, _videoHeight);
  55.             _videoTexture = new BitmapData(_videoWidth, _videoHeight);
  56.             _planeTexture1 = new BitmapData(_videoWidth>> 1, _videoHeight);
  57.             _planeTexture2 = new BitmapData(_videoWidth>> 1, _videoHeight);
  58.            
  59.             initialize3D();
  60.             loadVideo();
  61.             createPlanes();
  62.            
  63.             _container.addEventListener(Event.ENTER_FRAME, loop3D);
  64.         }
  65.  
  66.         private function initialize3D() : void
  67.         {
  68.             _container = new Sprite();
  69.             _target.addChild(_container);
  70.             _viewport = new Viewport3D(990, 600, false, false);
  71.             _container.addChild(_viewport);
  72.             _renderer = new BasicRenderEngine();
  73.             _scene3D = new Scene3D();
  74.             _camera = new Camera3D();
  75.             _camera.zoom = 8;
  76.             _camera.focus = 200;
  77.             _rootNode = new DisplayObject3D();
  78.             _scene3D.addChild(_rootNode);
  79.         }
  80.  
  81.         private function loadVideo() : void
  82.         {
  83.  
  84.             var customClient : Object = new Object();
  85.  
  86.             customClient["onCuePoint"] = cuePointHandler;
  87.             customClient["onMetaData"] = metaDataHandler;
  88.            
  89.             _connection = new NetConnection();
  90.             _connection.connect(null);
  91.  
  92.             _stream = new NetStream(_connection);
  93.             _stream.checkPolicyFile = true;
  94.             _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
  95.             _stream.client = customClient;
  96.             _video = new Video(_videoWidth, _videoHeight);
  97.             _video.attachNetStream(_stream);
  98.        
  99.             _stream.play('http://www.blog.lessrain.com/wp-content/upload/papervideo/myvideo.flv');
  100.         }
  101.  
  102.         private function cuePointHandler(infoObject_ : Object) : void
  103.         {
  104.         }
  105.  
  106.         private function metaDataHandler(infoObject_ : Object) : void
  107.         {
  108.         }
  109.  
  110.         private function asyncErrorHandler(event : AsyncErrorEvent) : void
  111.         {
  112.         }
  113.  
  114.         private function createPlanes() : void
  115.         {
  116.  
  117.             var material1 : BitmapMaterial = new BitmapMaterial(_planeTexture1);
  118.             material1.oneSide = false;
  119.             var plane1 : DisplayObject3D = _rootNode.addChild(new Plane(material1, _videoWidth>> 1, _videoHeight, 4, 4), "plane1");
  120.             plane1.x = -_videoWidth>> 2;
  121.             var material2 : BitmapMaterial = new BitmapMaterial(_planeTexture2);
  122.             material2.oneSide = false;
  123.             var plane2 : DisplayObject3D = _rootNode.addChild(new Plane(material2, _videoWidth>> 1, _videoHeight, 4, 4), "plane2");
  124.             plane2.z = _videoWidth>> 2;
  125.             plane2.rotationY = -90;
  126.         }
  127.  
  128.         private function loop3D(event_ : Event) : void
  129.         {
  130.    
  131.             _rootNode.rotationY += ((-_container.mouseX * 0.5) - _rootNode.rotationY) / 10;
  132.             _rootNode.rotationX += ((-_container.mouseY * 0.5) - _rootNode.rotationX) / 10;
  133.             _videoTexture.draw(_video);
  134.             _planeTexture1.copyPixels(_videoTexture, _srcRect1, _basePoint);
  135.             _planeTexture2.copyPixels(_videoTexture, _srcRect2, _basePoint);
  136.             _renderer.renderScene(_scene3D, _camera, _viewport);
  137.         }
  138.  
  139.         public function get target() : Sprite
  140.         {
  141.             return _target;
  142.         }
  143.  
  144.         public function set target(target_ : Sprite) : void
  145.         {
  146.             _target = target_;
  147.         }
  148.     }
  149. }


Some Bits and Pieces…

Sunday, March 25th, 2007 by Luis

The past two weeks loads of new things have happened around, I'm not talking about Adobe Apollo which it's public alpha release has been already covered for the whole week all over the place without interruption.

The week started in a new office with loads of work to do, new people coming in, and the discovery of a new (I mean 'new' for me) music band which maybe is not 'Avant garde enough' for some people, but caught my attention dramatically.

This week I had the opportunity to play for the first time with the Nintendo Wii . Yes, I'm aware that playing with the Wii is nothing specially new , but I'm coming from a place where important things are around this instead of the latest video game technology, so my delay in this matter is completely understandable.
I have been thinking for weeks to buy a new PS3 but after playing with the Nintendo Wii I have decided that my money is going to end up in Nintendo's pocket rather than Sony's bault.

In terms of work and 'Flashy stuff' as I wrote above, the release of Apollo public beta hasn't been in my priority list since I don't have time to play around with it. This does NOT mean that I consider Apollo a good tool or not, I just simply don't know and I don't need Apollo for my daily work yet (I would give it a try soon).

Three blog entries from 3 different blogs in my daily "must read because this guys can go bananas" list caught my attention last week when I think in 'Flashy stuff', all of them are related with flash and 3D:

Papervision 3D: PaperVideoRocky-Dudes

Sunday, March 4th, 2007 by Luis

New Tortilla recipe, just mix 100 grams of Paperdude with 250 grams of PaperVideo and leave them cook in Papervision 3D for 20 minutes, then you get the PaperRockyDudeTribute with tofu head.

You need the latest Adobe Flash plugin to see the demo.

PaperRockyVideo-Dude.

Click here to see the demo.

NOTE: If you use Firefox and you experience problems displaying the 3 videos of the demo at the same time, you can change http.max-persistent-connections-per-server settings in about:config.

Just for paperFun.

More Papervision and Video Links:

Related Papervision 3D stuff:

3D in Flash?

Friday, February 23rd, 2007 by Luis

Yes, well, as usual Papervision 3D topic, but so far until something else comes out, Papervision 3D is the best realistic option to generate and visualize 3D Flash content and 3D content in Flash.

Here some interesting views about PaperVision 3D and the future of 3D Flash content :