background

Posts Tagged ‘technology’

andengine – Android 2D Open GL ES Game Engine Similar to cocos2d-iphone for iOS

Posted in Shared on July 24th, 2010 by herkulano – Be the first to comment

A sweet engine for getting started with Android game development is the andengine 2D OpenGL ES engine. This is very simple and compares with cocos2d-iphone for iOS development in 2D with OpenGL ES.  They both support a wide range of 2d techniques with an OpenGL renderer.  Some great videos are posted on the andengine google code page showing a box2D example, multiplayer example and more.

Mobile games are on slower hardware, similar to later 90′s computers so native is a great way to go for 3d and 2d game development because of this limitation at the current time and well into the next few years.  Take this time to learn you some native gamedev. andengine isn’t native directly as it is Java based but compiled with the Dalvik JIT virtual machine. Another way to go native on Android is the Android NDK which allows C and C++.

The engine also has extensions that can be easily added and some great ones exist already.

Google Chooses WebGL and Moves O3D to a WebGL Javascript Library

Posted in Shared on May 8th, 2010 by herkulano – Be the first to comment

Google has decided to put weight behind WebGL and stop actively developing O3D as a plugin, rather they will make O3D a Javascript library on top of WebGL. This will focus the 3D plugin development efforts from Google into just WebGL on top of the OpenGL ES 2 spec, which in turn runs in the html5 <canvas> tag.

WebGL is pretty exciting offering browser based OpenGL and hardware rendered graphics. When this becomes mainstream this will change up gaming and interactive on the web immensely. Unity 3D and Flash 3d engines add lots of immersive environments and WebGL will be just as exciting, if all browsers adopt it (canvas/webgl).

At Google, we’re deeply committed to implementing and advancing standards, so as of today, the O3D project is changing direction, evolving from its current plug-in implementation into a JavaScript library that runs on top of WebGL. Users and developers will still be able to download the O3D plug-in and source code for at least one year, but other than a maintenance release, we plan to stop developing O3D as a plug-in and focus on improving WebGL and O3D as a JavaScript library.

About WebGL

WebGL is a cross-platform, royalty-free web standard for a low-level 3D graphics API based on OpenGL ES 2.0, exposed through the HTML5 Canvas element as Document Object Model interfaces. Developers familiar with OpenGL ES 2.0 will recognize WebGL as a Shader-based API using GLSL, with constructs that are semantically similar to those of the underlying OpenGL ES 2.0 API. It stays very close to the OpenGL ES 2.0 specification, with some concessions made for what developers expect out of memory-managed languages such as JavaScript.

WebGL brings plugin-free 3D to the web, implemented right into the browser. Major browser vendors Apple (Safari), Google (Chrome), Mozilla (Firefox), and Opera (Opera) are members of the WebGL Working Group. “It feels like, someone’s missin-ing”


Creative coding with Cinder

Posted in Shared on April 29th, 2010 by herkulano – Be the first to comment

Andrew Bell, Robert Hodgin, and The Barbarian Group just released LibCinder, a creative coding framework in C++.

It’s a cross platform, open-source project, very similar to Processing or OpenFrameworks, but with better memory management and OpenGL support. Features include standalone applications and screensaver creation, Cocoa touch support (iPhone, iPad), OpenGL texture classes, webcam capture support and full Quicktime support. Besides the tech specs, what can it really do?


The most famous example is probably the Augmented Reality cover on Esquire but there’s lot of video goodness by Robert Hodgin (aka flight404) below.


For starters, the usual “Hello, Cinder” tutorial.

tip by Peter Kirn


Content under a Creative Commons License. (Digital Fingerprint: bfff8c3002d3e0f3f95495bddf32fef0)

Also of Interest

Core Animation

Posted in Shared on February 11th, 2010 by herkulano – Be the first to comment
Amazing, so many things have happened in the Flash Player engineering team over the past year. Lots I would love to talk about. But the purpose of this post is to deep dive into a subject Kevin Lynch touched upon recently, specifically Mac performance and his comment about Core Animation. Whenever performance is mentioned in the context of Flash it gathers a lot of the attention and some of the technical background is lost in the PR.

So what's the deal with Core Animation in Flash Player 10.1? Let's look at how Apple's documentation summarizes what Core Animation does:

Core Animation is an Objective-C framework that combines a high-performance compositing engine with a simple to use animation programming interface.

Sounds like perfect match for Flash does it not? So yes, Flash Player 10.1 is attempting to leverage this framework to work around a few specific technical issues we've had in Safari and all other browsers on OS X.

The drawing model jungle on OS X

Before going into more specifics of why we are going towards Core Animation lets get an overview about how plugins on OS X draw into the browser window. There 4 possible ways (compared to one on Windows):

  1. QuickDraw. Default mode used by Opera, older Firefox and Safari versions.
  2. Quartz 2D (a.k.a. Core Graphics). Supported by newer versions of Firefox and Safari.
  3. OpenGL. No browser I know of supports this properly today.
  4. Core Animation. Only available in Safari 4 + OS X 10.6 right now, with caveats in the current version.

In addition to these drawing models designers can embed Flash content in 3 different ways by specifying wmode:
  1. Normal
  2. Opaque
  3. Transparent
Normal means that you can't have overlapping HTML sitting on top of your SWF, Opaque allows it and Transparent means that the SWF is transparent and underlying HTML content will show through. Taking all these variables into account we come up with these tables which shows when a particular drawing model is used (and subject for change before we release Flash Player 10.1):

Flash Player 10.0:
Safari 4Firefox 3Opera 10
NormalQuartz 2DQuickDrawQuickDraw
OpaqueQuartz 2DQuickDrawQuickDraw
TransparentQuartz 2DQuickDrawQuickDraw


Flash Player 10.1:
Safari 4 (*)Firefox 3Opera 10
NormalCore AnimationQuartz 2DQuickDraw
OpaqueQuartz 2D(**)Quartz 2DQuickDraw
TransparentQuartz 2D(**) Quartz 2DQuickDraw
(*) Actually using nightly builds of WebKit because support for Core Animation is work in progress.
(**) Core Animation is used when the SWF is the front most object on the HTML page.

What are the issues with Quartz 2D?

The basic premise of Quartz 2D as Apple describes it:

Quartz 2D is an advanced, two-dimensional drawing engine available for iPhone application development and to all Mac OS X application environments outside of the kernel. Quartz 2D provides low-level, lightweight 2D rendering with unmatched output fidelity regardless of display or printing device.

Quartz 2D is not designed for multimedia applications, like animation or video playback. That's where OpenGL, Core Video, Core Animation shine. Safari's use of Quartz 2D to draw HTML content makes perfect sense as its content is static in most cases. Everything works well until Flash comes into the picture. For instance when the Flash Player plays a SWF using the Quartz 2D drawing model is has to do so with the full involvement of the browser. The sequence of events looks like this (you can follow the stack traces in Shark):
  1. Whenever the Flash Player is ready to display a new frame, the Flash Player requests a refresh of its region using NPN_InvalidateRect.
  2. The browser adds the the rectangle provided by the Flash Player to its dirty region.
  3. The browser traverses its own display list (the HTML DOM) and paints every node which is part of the dirty region.
  4. When the browser finds a node with a Flash Player instance it first draws the HTML background and then posts an event to the Flash Player to tell it that it has to paint over the requested region now.
  5. The Flash Player then finally draws its frame.

So far so good, makes sense I hope. So what's the technical issue? Think of a fairly complex HTML page, for instance a page with a CSS gradient in the background. Add to add a SWF which runs at 30 frames/sec. You will see that a lot of time is spent in the browser, not in the Flash Player. This is where Core Animation kicks in: step 3 and 4 pretty much go away (as long as the SWF is the top most object).

Core Animation in the Flash Player

Flash Player 10.1 implements the Core Animation drawing model to fix this technical issue, among others. Instead of using a CGImageRef + CGContextDrawImage to get the bits to screen we pass a CAOpenGLLayer to Safari and use an OpenGL texture of type GL_TEXTURE_RECTANGLE_ARB to get our bits to the screen.

The support for the Core Animation drawing model was originally driven by Apple and we have worked feverishly to finish the engineering work on both sides. Yes that's right: This was and is a joint effort between Apple and Adobe engineers. Given the now almost perfect integration of Core Animation plugins into Safari I hope that future versions of the Flash Player will take advantage of more capabilities of OpenGL. And that without the requirement of setting any special wmode. I am pretty stoked about it.

As of today (2/10/2010) we are getting closer to having it stable enough for public consumption. That means though: You will need Flash Player 10.1, OS X 10.6 and updated version of Safari (or the nightly WebKit build), otherwise you will not see anything.

What difference does it really make?

This is by no means panacea for all performance issues in the Flash Player. Far from it. But it is a small step to a larger goal which is to improve the experience in the browser with the ever more complex web content out there. That said here is a comparison between Flash Player 10.0 and Flash 10.1 using this test case (this only works in Safari). Keep in mind that that is an extreme test case which has little to do with real world web content.

Flash Player 10.0 + nightly WebKit + OS X 10.6


Flash Player 10.1 + nightly WebKit + OS X 10.6


PS: You might have noticed that Core Animation is a Cocoa API. Yes, Flash Player 10.1 is a true Cocoa app now (with a Carbon fallback to support Firefox and Opera which are not Cocoa yet).

Light Touch interactive projector turns any flat surface into a touchscreen

Posted in Shared on January 6th, 2010 by herkulano – Be the first to comment

light touch_01

A CES Innovations Honoree in both the Media Player and Personal Electronics categories, the “Light Touch” from the house of Light Blue Optics is an interactive projector that featuring multi-touch technology turns any flat surface into a touchscreen. Liberating the multimedia content from the small screen, thanks to Holographic Laser Projection (HLP) technology, the Light Touch produces bright, high-quality video images in WVGA resolution, so you could access the content as you do on other portable devices. Moreover, you can control the projector and interact with applications by touching the image with your finger, as it comes integrated with infrared sensors which transform the projected image into a 10.1″ virtual touch-sensitive display. Be it retail, living or workplace, you can interact with multimedia content and create your own environment with minimum fuss.

light touch_06
light touch_07
light touch_02
light touch_03
light touch_04
light touch_05
light touch_08

Via: Light Blue Optics

Unity for Web Interactives Kicked Up A Notch By Carlos Ulloa/HelloEnjoy

Posted in Shared on December 3rd, 2009 by herkulano – Be the first to comment

If the question is if Unity can do interactives as smooth and stylish as Flash I think you may soon find out.  Carlos Ulloa of Papervision 3D fame has kicked it up a notch in Unity 3D with this interactive very reminiscent of the Ford Focus demo that helped bring in Papervision 3D for flash in style. Gotta say though a mini is much better than a Ford Focus.

Flash is still the leader in web interactives and even marketing interactive 3d, Unity largely replaced Director and tools like it and high-end hardware rendered required interactives and games. This interactive by HelloEnjoy has loads of polygons, unity physics system, lighting, environment mapping, showroom cameras, reflection, skid decals, highly detailed mesh and more.  Just take a peek inside the vehicle and at the rims for the detail that is impossible with the 2000 poly limit of Flash 3D software rendered engines.

Web interactives this heavy aren’t doable in a non hardware rendered player like Flash.  Unity is looking to pretty much own this level of quality in a browser.  I don’t think I have seen another interactive looking this good with Unity 3D.

Unity still is lacking many features that Flash has in support of making interactives for the web such as webcam support, mic support, better video support, better gui system, html support (although flash barely) and a larger install base but Unity could easily take the high-end advertising market in addition to owning highly immersive games that need hardware rendering which it is already doing for web gaming.  It is 2010 soon, most computers have a decent video card.  Put them to use!

TapIt: a water bottle refilling network

Posted in Shared on July 28th, 2009 by herkulano – Be the first to comment

tapit2.jpg

TapIt has partnered with hundreds of cafes in New York City to help on-the-go urbanites find places to refill their water bottle for free. These spots can be located visually (all partners display a TapIt sticker on their window), online, or with their handy iPhone app. And, if you're a cafe in the New York City area and want to help with this intiative, become a partner today!

The TapIt website, designed by Tom Klinkowstein and Christie Shin of Media A, won a Communicator Award of Excellence in the Green Eco-Friendly category.

(more...)

Nearest Subway Augmented Reality App

Posted in Shared on July 23rd, 2009 by herkulano – Be the first to comment

Maybe the most practical, real-world application of augmented reality I've seen yet.