Away3D is the weapon of choice for 3D content on the Stage3D platform. Away3D offers a great deal of support for many model formats and integrates well with many other as3 libraries. You will find that it is actually easy to integrate Away3D with several popular physics libraries including but not limited to Bullet and [...]
-
I posted to i-create.org
Away3D Bullet Physics and MD2 and Waves
http://i-create.org/2012/01/08/away3d-bullet-physics-and-md2-and-waves/
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- Adobe
- Game Creation
- Air
- away3d
- Experiment
- Stage3D
- 3D computer graphics
- MD2
January 8 2012, 8:34pm | Comments »
-
I posted to i-create.org
Garden of Joy webGL Social Experiment
http://i-create.org/2011/08/28/garden-of-joy-webgl-social-experiment/
What is this? It is a simple webGL social experiment. It allows you to share ideas and passions with your friends on facebook by doing so you help build the garden. You can also view other flowers by using your arrow keys to move with the mouse and clicking on other flowers to view what [...]
August 28 2011, 8:03pm | Comments »
-
I posted to i-create.org
BSP Map in threeJS and AWAY3D using Molehill and webGL
http://i-create.org/2011/06/12/bsp-map-in-threejs-and-away3d-using-molehill-and-webgl/
First off I know have the JSONObj parser working with shaders and materials so! So in short it has I believe all of the current functionality of the OBJParser that is currently in the AWAY3D broomstick build it may even have more functionality. I have been testing it rigorously and will need to re-factor some [...]
- Tags:
- 3d
- ActionScript
- Flex
- i-create
- as3
- javascript
- away3d
- Experiment
- quake
- threejs
- 3D computer graphics
- BSP
- Computer graphics
- Obj
- PK3
June 12 2011, 8:43pm | Comments »
-
I posted to i-create.org
Thoughts on Android and WWDC perdictions
http://i-create.org/2011/06/05/thoughts-on-android-and-wwdc-perdictions/
With android at home we as developers should take notice and feel free to invade the home. Now is the time for hardware hacking with android as the remote. Think of all the things we can accomplish and with Google’s open accessories api’s we don’t need to pay Google a fee to play with the [...]
June 5 2011, 7:38pm | Comments »
-
I posted to i-create.org
ThreeJS model parser for Away3D Broomstick running on Molehill
http://i-create.org/2011/05/30/threejs-model-parser-for-away3d-broomstick-running-on-molehill/
This JSONOBJ parser will take three.js and parse them for preFab to allow prefab to also export in the JSONOBJ three.js format. Their are many similarities in these projects and I think it would be nice to see the projects working and communicating more between each other maybe they already do. Some things that I would like to point out about the three.js format it supports morphing targets. If you are familiar with the project then you might already know the morphing abilities were used in the J3D that will parse Unity3D scenes I am curious to play around with this because I think it would be nice for Away3d to have this functionality as well. So how does the Three.js obj This demo requires FlashPlayer 11 stage3D OBJ parser and borrowed a great deal of the functionality that was already built in the OBJ parser. I will still have to add materials which I don’t believe will be difficult so I have left the OBJ code in this class it will be re-factored later to work with the JSONOBJ converter. I will also need to explorer the binary format and the Morph targets in the future. I hope the community will find this useful! Another thing I like about Away3D and three.js is the ability to use JigLib and I will have a demo out soon the shows utilizing JigLib in Away3D and in three.js Check out JigLib JS What is threeJS here is a good video that discuss the creation of the ROME project that utilizes threeJS
- Tags:
- 3d
- ActionScript
- i-create
- Adobe
- Open Source
- javascript
- away3d
- json
- Experiment
- webGL
- threejs
- demo
May 30 2011, 8:58pm | Comments »
-
I posted to i-create.org
Molehill Away3D Dancing Fish Demo Part 1
http://i-create.org/2011/05/16/molehill-away3d-dancing-fish-demo-part-1/
Launch Demo flash player is such a leap from the previous versions its really quite astounding. So if you haven’t downloaded that latest flash sdk and plugged it into your flash builder you are really missing out on a great deal. With Flash Player 11 support on mobile it will be a big deal not to mention all the new cool 3D capabilities that will run on literally any desktop and most mobile devices! It will allow you to quickly create games and interactive experiences and easily share them and sell them trough app stores so the time to learn it is truly now! Be proactive build today for tomorrow. You won’t have to purchase multiple product suites to accomplish your goal with web premium you can simply get it done quickly. I have been waiting for this product for awhile and I am really looking forward to taking full advantage of it as a developer! As a teenager I can remember downloading Wolfenstein off of a BBS and running it on my 486 that ran windows and dos-shell. I thought it was the coolest thing on earth! I spent coupious amounts of time palying it because it was the first true 3D experince on copmuters and it was shareware! In the past we have been able to create compleling 3D experinces on flash but never before to this extent! Stage3D formerly Molehill will allow us as developers to build emmersive interactive enviorments that are more engaging than Quake3 because it scales not to mention we have a rather large amount of libraries at our finger tips like the Hype Framework, TweenLite, Tweener, Download Example / Molehill, Silverlight all going at it we as developers profit! Three.js was prominetly displayed on at google IO and the Ro.me project is simply amazing check it out! I am anxious to see where webGL will take us. You can view the interactive film that Chris Milk and Google Developer
- Tags:
- 3d
- ActionScript
- Flash
- Flex
- i-create
- Adobe
- as3
- Silverlight
- Open Source
- away3d
- json
- android
- Experiment
- molehill
- Adobe Flash Player
- ADOBE SYSTEMS INCORPORATED
- fp11
- really cool technology
- Stage3D
- Twitter Inc
- web premium
- wegGL
May 16 2011, 9:50pm | Comments »
-
I posted to i-create.org
Simple Star Wars webGL Arcade Game
http://i-create.org/2011/04/10/simple-star-wars-webgl-arcade-game/
Arcade games are simple visually appealing, fun, and if your lucky extremely addicting. This example is not meant to be an artistic expression it is a simple example of what is possible in a couple of hours with Molehill and I will be producing some examples shortly so please don’t make this a JavaScript vs. ActionScript thing. I love all technologies and will utilize them all to my benefit if the situation is correct. I would also expect to see this demo re-done shortly with Warning Processor Intensive Game Chrome 9+ only! Launch Demo I used Blender3D to edit all the models and was able to find them on blendswap.com. You can also find numerous other opensource / free models on other websites like OurBricks and Google 3D warehouse. Blender3D is a complex opensource 3d modeling solution and it is widely used for hobbyist and professionals. Blender3D has been opensource now for several years it is currently going through a major overhaul as far as the user interface is concerned. The new beta is extremely easy to use in comparison with older versions and is worth using if you haven’t yet. You can find numerous news letters and on-line magazines that detail how to utilize blender3d it has an active community supporting it. I also used Blender3d because the three.js library supports many formats that can easily be exported out of blender3d and into three.js in the form of a model JSON object. I won’t be discussing how to utilize blender3d for modeling but you can find numerous tutorials on the web on how to use Blender3D.
I chose three.js for several reasons. It is relatively light weight and it is similar to PaperVision3d. Three.js also has some cool shading / texturing functions in the library that will really make your projects stand out. Three.js is also flexible and fun to use what it doesn’t offer you can simply create yourself.
You will find it easy to create a webGL project with three.js and their aren’t a great deal of tutorials out yet on how to utilize it but if you read the source files you will be able to quickly pick it up and after you download the source their is a comprehensive list of example source code provided on how to use the library. So if your new to this sort of thing start there.
In my example below I initialize my models and then I have functions that are run in a continuous loop “the Game Loop”. The game loop is where the magic happens. In short you have a player character (PC) and the PC object of course has attributes like a life meter as do the enemy objects. The PC also has other abilities such as the ability to fire a bullet and move through space. While the loop is progressing the game also has functions to tell the computer what scene to play. An example of this would be to stop the game if the player character has died and then offer the player the ability to play the game again essentially resetting the loop. Really basic and simple stuff. One of the cool new features of JavaScript is requestAnimationFrame. I strongly suggest reading Paul Irish explanation of its benefits here (excellent read). I utilize requestAnimationFrame as my game loop in the example below. I am also using HTML5 to create a life meter for the PC. One of the nice things about javascript is because you are in the browser it is a cinch to create a heads up display (HUD) for your game with HTML5/CSS3.
if ( ! Detector.webgl ) { Detector.addGetWebGLMessage(); document.getElementById( 'container' )[removed] = ""; }
//global variables var container, stats, firedown, Points = 0, gameOn, enemeyInit=false, playerKilled = false; var genSpheres1, genSpheres2, genTiefighters, hitCountTest = 0; var rebel, rebelGeo, tieGeo, tieArr = new Array(), water; var camera, scene, renderer; var ninX, ninY; var zBullet, pBullets = new Array(), eBullets = new Array(), eBulletsOn = 0; startEBullets = 0; var mesh, texture,geometry, material; var worldWidth = 128, worldDepth = 128, worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2; var rotType;
function startGame(){ gameOn = true; //time to make some cool shit happen init(); animate(); }
function init() { playerKilled = false; container = document.getElementById( 'container' ); camera = new THREE.QuakeCamera( { fov: 45, aspect: window.innerWidth / window.innerHeight, near: 1, far: 3000, movement_speed: 30, look_speed: 0.004, nofly: false, look_vertical: true } );
scene = new THREE.Scene(); //fog it helps to hide objects and lower the proceeing power needed scene.fog = new THREE.FogExp2( 0xaaccff, 0.002 ); try{ camera.target.position.z = - 0; camera.position.y = 500; camera.target.position.y = camera.position.y; }catch(e){ console.log('oops some bad shit went down ->'+ e); } geometry = new Plane( 2000, 2000, worldWidth - 1, worldDepth - 1 ); var i, j, il, jl; for ( i = 0, il = geometry.vertices.length; i < il; i ++ ) { geometry.vertices[ i ].position.z = 200 * Math.sin( i/2 ); } for( i = 0; i < geometry.uvs.length; i++ ) { var uvs = geometry.uvs[ i ]; for ( j = 0, jl = uvs.length; j < jl; j++ ) { uvs[ j ].u *= 5; uvs[ j ].v *= 5; } } geometry.computeFaceNormals(); geometry.computeVertexNormals(); var texture = ImageUtils.loadTexture( "textures/water.jpg" ); texture.wrap_s = texture.wrap_t = THREE.RepeatWrapping; material = new THREE.MeshBasicMaterial( { color:0x0044ff, opacity:1, map: texture } ); water = new THREE.Mesh( geometry, material ); water.rotation.x = - 90 * Math.PI / 180; water.rotation.z = - 90 * Math.PI / 180; scene.addObject( water ); loader = new THREE.Loader( true ); document.body.appendChild( loader.statusDomElement ); //load the rebel ship / player character loader.loadAscii( { model: "models/arc-170.js", callback: function(geometry){ try{ rebelGeo = geometry; var path = "textures/cube/skybox/"; var format = '.jpg'; var urls = [ path + 'px' + format, path + 'nx' + format, path + 'py' + format, path + 'ny' + format, path + 'pz' + format, path + 'nz' + format ]; var textureCube = ImageUtils.loadTextureCube( urls, new THREE.CubeRefractionMapping() ); var material = [ new THREE.MeshFaceMaterial() , new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube, refraction_ratio: 0.95, opacity: 0.4 } )]; rebel = SceneUtils.addMesh( scene, geometry, 1, 0, 500, 40, 0, 0, 0, material); rebel.pcType = true; //obviously if the player character is going to die and have a life meter we need to assign it a life variable to know when the game is finished rebel.life = 500; jQuery(loader.statusDomElement).hide(); //over writing the normal camera behavior belowcamera.onMouseMove = function (event) { ninY = event.clientY; ninX = event.clientX; camera.mouseX = event.clientX - camera.windowHalfX; camera.mouseY = event.clientY - camera.windowHalfY;
}; camera.domElement.addEventListener( 'mousemove', bind( camera, camera.onMouseMove ), false );
camera.update = function() { try{ camera.target = rebel; if ( camera.moveForward ){ rotType = "forward"; camera.translateZ( - camera.movement_speed, camera.nofly );
} if ( camera.moveBackward ){ rotType = "backward"; camera.translateZ( camera.movement_speed, camera.nofly ); }; if ( camera.moveLeft ){ rotType = "left"; camera.translateX( - camera.movement_speed, camera.nofly ); }; if ( camera.moveRight ){ rotType = "right"; camera.translateX( camera.movement_speed, camera.nofly ); }; camera.lon += camera.mouseX * camera.look_speed; if( camera.look_vertical ) camera.lat -= camera.mouseY * camera.look_speed; camera.lat = Math.max( - 85, Math.min( 85, camera.lat ) ); camera.phi = ( 90 - camera.lat ) * Math.PI / 180; camera.theta = camera.lon * Math.PI / 45; var target_position = camera.target.position,position = camera.position; camera.supr.update.call( camera ); }catch(e){ console.log(e); } }; }catch(e){ console.log(e); } } }); //load the enemy characters genSpheres1 = new generateRandomSpheres(); genTiefighters = new generateTieFighters(); //render all the cool stuff renderer = new THREE.WebGLRenderer( { clearColor:0xaaccff, clearAlpha: 1 } ); renderer.setSize( window.innerWidth, window.innerHeight ); container[removed] = ""; container.appendChild( renderer.domElement ); stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.top = '0px'; container.appendChild( stats.domElement );} function generateTieFighters(){ // enemy chracter model loader.loadAscii( { model: "models/tie-fighter.js", callback: function(geometry){ try{ tieGeo = geometry; var material = [ new THREE.MeshFaceMaterial() ]; for(var i=0; i< 50; i++){ try{ var tieFighter = SceneUtils.addMesh( scene, geometry, 1, getRandomPosition(), getRandomPosition(), getRandomPosition(), camera.rotation.x, camera.rotation.y, camera.rotation.z, material); }catch(e){ console.log('oops some bad shit went down ->'+ e); } enemeyInit = true; //may be latter we will add life to our enemys so it takes longer to kill them tieFighter.life = 500; tieFighter.sceneID = scene.children.length - 1; tieFighter.pcType = false; tieFighter.locID = i; tieFighter.locType = 'tie'; //I like to keep these objects in an array so I can loop through them tieArr.push(tieFighter); } jQuery(loader.statusDomElement).hide(); }catch(e){ console.log(e); } } });
}
function getRandomPosition(){ var randomPos = Math.random() * 10000 - 5000; return randomPos; }
function generateRandomSpheres(){ var sphere = new Sphere( 100, 32, 16 ); sphere.sortFacesByMaterial(); var path = "textures/cube/skybox/"; var format = '.jpg'; var urls = [ path + 'px' + format, path + 'nx' + format, path + 'py' + format, path + 'ny' + format, path + 'pz' + format, path + 'nz' + format ];
var textureCube = ImageUtils.loadTextureCube( urls, new THREE.CubeRefractionMapping() ); var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube, refraction_ratio: 0.95 } ); var meshArr = new Array(); for ( var i = 0; i < 70; i ++ ) { var mesh1 = new THREE.Mesh( sphere, material ); try{ mesh1.position.x = Math.random() * 10000 - 5000; mesh1.position.y = Math.random() * 10000 - 5000; mesh1.position.z = Math.random() * 10000 - 5000; mesh1.scale.x = mesh1.scale.y = mesh1.scale.z = Math.random() * 4 + 1; mesh1.sceneID = scene.children.length - 1; mesh1.pcType = false; mesh1.locType ='sphere'; mesh1.locID = i; }catch(e){ } scene.addObject( mesh1 ); meshArr.push(mesh1); } this.MeshArr = meshArr;}
function generateSpheres(){ var sphere = new Sphere( 100, 32, 16 ); sphere.sortFacesByMaterial(); var path = "textures/cube/skybox/"; var format = '.jpg'; var urls = [ path + 'px' + format, path + 'nx' + format, path + 'py' + format, path + 'ny' + format, path + 'pz' + format, path + 'nz' + format ]; var textureCube = ImageUtils.loadTextureCube( urls, new THREE.CubeRefractionMapping() ); var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: texture, refraction_ratio: 0.95 } ); var randomLocation = Math.random() * 10000 - 10500; var meshArr = new Array(); for ( var i = 0; i < 100; i ++ ) { var mesh1 = new THREE.Mesh( sphere, material ); try{ mesh1.position.x = randomLocation; mesh1.position.y = randomLocation; mesh1.position.z = randomLocation + i + 16; mesh1.locType ='sphere'; mesh1.locID = i; }catch(e){ console.log('oops some bad shit went down ->'+ e); } scene.addObject( mesh1 ); meshArr.push(mesh1); } this.MeshArr = meshArr; } //make the objects move towards the player chracter and check for hits function gameLogic(){ for( var i=0; i < tieArr.length; i++){ try{ var type = 'tie'; if (tieArr[i].position.x > camera.position.x){ tieArr[i].position.x -= 5; }else{ tieArr[i].position.x += 5; }
if (tieArr[i].position.z > camera.position.z){ tieArr[i].position.z -= 5; }else{ tieArr[i].position.z += 5; } if (tieArr[i].position.y > camera.position.y){ tieArr[i].position.y -= 5; }else{ tieArr[i].position.y += 5; } if((tieArr[i].position.x >= camera.position.x && tieArr[i].position.x = camera.position.y && tieArr[i].position.y = camera.position.z && tieArr[i].position.z camera.position.x){ genSpheres1.MeshArr[i].position.x -= 1; }else{ genSpheres1.MeshArr[i].position.x += 1; } if (genSpheres1.MeshArr[i].position.z > camera.position.z){ genSpheres1.MeshArr[i].position.z -= 1; }else{ genSpheres1.MeshArr[i].position.z += 1; } if (genSpheres1.MeshArr[i].position.y > camera.position.y){ genSpheres1.MeshArr[i].position.y -= 1; }else{ genSpheres1.MeshArr[i].position.y += 1; } if((genSpheres1.MeshArr[i].position.x >= camera.position.x && genSpheres1.MeshArr[i].position.x = camera.position.y && genSpheres1.MeshArr[i].position.y = camera.position.z && genSpheres1.MeshArr[i].position.z = genSpheres1.MeshArr[s].position.x && pBullets[i].position.x = genSpheres1.MeshArr[s].position.y && pBullets[i].position.y = genSpheres1.MeshArr[s].position.z && pBullets[i].position.z = tieArr[t].position.x && pBullets[i].position.x = tieArr[t].position.y && pBullets[i].position.y = tieArr[t].position.z && pBullets[i].position.z = camera.position.x && eBullets[i].position.x = camera.position.y && eBullets[i].position.y = camera.position.z && eBullets[i].position.z 200){ if(scene.objects[i].type === 'ebullet' && !scene.objects[i].pcType){ scene.objects[i].visible = false; scene.removeObject(scene.objects[i]); } } } for(var i=0;i< scene.children.length;i++){ if(scene.children[i].type === 'kill' && !scene.children[i].pcType){ scene.children[i].visible = false; scene.removeObject(scene.children[i]); } } }catch(e){ console.log('oops some bad shit went down ->'+ e); }}
//enemy bullets only fire when close to the player character function enemyBulletLoop(){ startEBullets = 1; setTimeout( function(){ eBulletsOn = 1; for(var i=0; i < tieArr.length; i++){ try{ if ((tieArr[i].position.x < camera.position.x + 100 && tieArr[i].position.x > camera.position.x - 100) && (tieArr[i].position.z < camera.position.z + 100 && tieArr[i].position.z > camera.position.z - 100) && (tieArr[i].position.y < camera.position.y + 100 && tieArr[i].position.y > camera.position.y - 100)){ enemyBullets(tieArr[i].position); } }catch(e){
} } enemyBulletLoop(); },1000);}
function bulletLogic(){ try{ var currentZ = camera.position.z; var maxBullets = currentZ + 500; }catch(e){ console.log(e); }
for(var i =0; i < pBullets.length; i++){ try{ if(pBullets[i].position.z < maxBullets){ pBullets[i].position.z+=5; }else{ pBullets[i].visible = false; delete pBullets[i]; pBullets.splice(i); } }catch(e){ console.log('oops some bad shit went down ->'+ e); } }}
function enemyBulletLogic(){ for(var i =0; i < eBullets.length; i++){ try{ if(eBullets[i].position.z < maxBullets){ eBullets[i].position.z+=5; } }catch(e){ //console.log('oops some bad shit went down ->'+ e); } } }
function enemyBullets(enemyPosition){ if(eBullets.length < 5){ var bullet = new Torus (80, 20, 8, 6) ; bullet.sortFacesByMaterial(); var material = new THREE.MeshPhongMaterial({ambient:0xb03e3e, specular:0xd5dcfc, opacity:0.9}); var meshArr = new Array(); var meshBullet = new THREE.Mesh( bullet, material ); try{ meshBullet.position.x = enemyPosition.x; meshBullet.position.y = enemyPosition.y; zBullet = enemyPosition.z; meshBullet.position.z = zBullet+200; this.z = meshBullet.position.z; }catch(e){ console.log('oops some bad shit went down ->'+ e); } meshBullet.sceneID = scene.children.length - 1; meshBullet.pcType = false; meshBullet.type = 'ebullet'; eBullets.push(meshBullet); scene.addObject( meshBullet ); }else{ try{ for(var i=0; i < eBullets.length; i++ ){ eBullets[i].visible = false; eBullets.splice(i); eBullets.pop(i); } }catch(e){ console.log('oops some bad shit went down ->'+ e); } } }
// player character bullets function fireBullets(){ var bullet = new Torus (80, 20, 8, 6) ; bullet.sortFacesByMaterial(); var material = new THREE.MeshPhongMaterial({ambient:0x04971c, specular:0x03fd2c, opacity:0.9}); var meshArr = new Array(); var meshBullet = new THREE.Mesh( bullet, material ); try{ meshBullet.position.x = rebel.position.x; meshBullet.position.y = rebel.position.y; zBullet = rebel.position.z; meshBullet.position.z = zBullet+200; this.z = meshBullet.position.z; }catch(e){ console.log('oops some bad shit went down ->'+ e); } pBullets.push(meshBullet); scene.addObject( meshBullet ); if(firedown === true){ setTimeout(function(){ fireBullets(); if(pBullets.length > 10){ pBullets[i].visible = false; delete pBullets[i]; pBullets.splice(i); } }, 500); } }
function render() { var time = new Date().getTime() * 0.01; for ( var i = 0, l = geometry.vertices.length; i < l; i ++ ) { geometry.vertices[ i ].position.z = 35 * Math.sin( i/5 + (time + i)/7 ); } water.geometry.__dirtyVertices = true; renderer.render(scene, camera); }
$(window).keydown(function(event) { if (event.keyCode == '18') { firedown = true; fireBullets(); } }); $(window).keyup(function(event) { if (event.keyCode == '18') { firedown = false; } }); // make the rebel plane roll a little bit:) function rebelTilt(){ if(rotType === 'right' && rebel.rotation.z = -0.9 ){ water.rotation.z -= .025; } if(rotType === 'forward' || rotType === 'backward'){ if(rebel.rotation.z > 0){ rebel.rotation.z -= .025; } if(rebel.rotation.z < 0){ rebel.rotation.z += .025; } } } // Player killed stop the game function playerKilled(){ playerKilled = true; enemeyInit = false; Points = 0; jQuery('#Points').html('Points:'+Points); $('body').css('background-color', '#000'); $('#currentScene').attr('src','images/yourdead.jpg'); $('#lifemeterHP').hide(); $('#lifemeter').width(500); jQuery('#lifemeterHP').text('Life:100%'); rebel.life = 500; $('#Points').hide(); $('#lifemeterRed').hide(); $('#lifemeter').hide(); $('#container').html(''); $('#startGame').show(); for(var i=0; i < scene.objects.length; i++){ scene.children[i].visible = false; delete scene.children[i]; scene.children.splice(i); scene.objects[i].visible = false; delete scene.objects[i]; scene.objects.splice(i); } $('#startGame').click( function(){ $('#startGame').hide(); $('#lifemeterHP').show(); $('#Points').show(); $('#lifemeterRed').show(); $('#lifemeter').show(); $('body').css('background-color', '#ACF'); startGame(); }); //remove the scene and create a new scene variable delete scene; new scene; } //check to see if all tie fighters are dead function check4Win(){ for(var i=0; i < tieArr.length; i++){ if(tieArr[i].type === 'kill'){ tieArr[i].visible = false; delete tieArr[i]; tieArr.splice(i); } } if(tieArr.length === 0){ enemeyInit = false; for(var i=0; i < scene.objects.length; i++){ scene.children[i].visible = false; delete scene.children[i]; scene.children.splice(i); scene.objects[i].visible = false; delete scene.objects[i]; scene.objects.splice(i); } Points = 0; jQuery('#Points').html('Points'+Points); $('body').css('background-color', '#000'); $('#currentScene').attr('src','images/youwon.jpg'); $('#lifemeterHP').hide(); $('#lifemeter').width(500); jQuery('#lifemeterHP').text('Life:100%'); rebel.life = 500; $('#Points').hide(); $('#lifemeterRed').hide(); $('#lifemeter').hide(); $('#container').html(''); $('#startGame').show(); $('#startGame').click( function(){ $('#startGame').hide(); $('#lifemeterHP').show(); $('#Points').show(); $('#lifemeterRed').show(); $('#lifemeter').show(); $('body').css('background-color', '#ACF'); startGame(); }); //remove the scene and create a new scene variable delete scene; new scene; } } jQuery(document).ready(function() { $('#lifemeterHP').hide(); $('#Points').hide(); $('#lifemeterRed').hide(); $('#lifemeter').hide(); $('#startGame').click( function(){ $('#startGame').hide(); $('#lifemeterHP').show(); $('#Points').show(); $('#lifemeterRed').show(); $('#lifemeter').show(); $('body').css('background-color', '#ACF'); startGame(); }); });Launch Demo This game is far from perfect it has ridiculously simple AI. It would be nice if the enemy flight patterns were more random. I also need to make some changes to account for some unexpected results in Firefox 4 although it isn't a bad for a proof of concept so I hope you enjoy it. The game has no explosions and no sound. Please don't think I spent a great deal of time on this because I didn't. I just wanted to test out three.js and this is my first three.js project. I am very impressed with three.js and will enjoy using it in the future and I might go back and update this simple arcade example. I had fun making it so feel free to download the code do anything you want with it or use it as a base to build something completely different with. Whatever it's cool. I believe webGL will be available in mobile devices soon. I have a strong feeling that in iOS5 we will see it become available. Adobe is also enabling Molehill for mobile devices with AIR. In short I believe we will see loads of indie games start to pop up. I see more and more people buying mobile devices and the tech stack for building applications improving so the next year will be really interesting! mobile site! We created it with the LearningWebGLMr. DoobMolehill
- Tags:
- 3d
- i-create
- opensource
- javascript
- blender
- html5
- Experiment
- webGL
- Media Temple
- opensource 3d modeling solution
- threejs
April 10 2011, 8:53pm | Comments »
-
I posted to i-create.org
webGL Crystal Demo
http://i-create.org/2010/12/21/webgl-crystal-demo/
This demo utilizes Audio Data Api that is currently in the Firefox 4 Beta. I have been playing around with the processingJS and I have found they complement each other and they can easily be utilized together. One of the many cool features found in the energizeGL is the ability to easily utilize a 2d Firefox 4 Beta“. This demo will show you how to: 1. Embed ProcessingJS to a texture on a 3d object in EnergizeGL 2. Embed a video in EnergizeGL on a 3d plane. 3. How to analyze Audio data to create a simple 3d Visualization Only View this in “
Transmission","Interactive Development","1010101010101010101010");
$().mousemove( function(e) { mouseX = e.pageX; mouseY = e.pageY; });function radian(){ var rad = Math.atan2(mouseY, mouseX); return rad; }; function degree(){ var deg = radian() * 180 / Math.PI; return deg; }; function _xRotation(){ _xRot += Math.cos(degree() * Math.PI / 180); return _xRot; };
jQuery(function($) { _currentX = -40 + (deltaM * 10); //myXRotation = new _xRotation(); $('body') .bind('mousewheel', function(event, delta) { var dir = delta > 0 ? 'Up' : 'Down', vel = Math.abs(delta); deltaM = delta; _currentX = _currentX+deltaM*15; return false; });
// Mozilla Specific Audio Code /////////////////
audio = document.getElementById('mediaElement'); // not really a test for Firefox 4, but should avoid error messages in browsers // that don't support audio or Float32Array (as used in FFT constructor below) if (typeof audio.currentSrc === "undefined" || typeof Float32Array === "undefined") { alert("This example requires Firefox 4: \n\nwww.mozilla.com/firefox/beta"); } else {
function loadedMetadata() { channels = audio.mozChannels; rate = audio.mozSampleRate; frameBufferLength = audio.mozFrameBufferLength; fft = new FFT(frameBufferLength / channels, rate); } function audioAvailable(event) { var fb = event.frameBuffer,i, t = event.time,signal = new Float32Array(fb.length / channels); for (i = 0, fbl = frameBufferLength / 2; i < fbl; i++) { // Assuming interlaced stereo channels, // need to split and merge into a stero-mix mono signal signal[i] = (fb[2*i] + fb[2*i+1]) / 2; } fft.forward(signal); for (i = 0; i < fft.spectrum.length; i++) { magnitude = fft.spectrum[i] * 4000; } } audio.addEventListener('MozAudioAvailable', audioAvailable, false); audio.addEventListener('loadedmetadata', loadedMetadata, false); // FFT from dsp.js, see below var FFT = function(bufferSize, sampleRate) { this.bufferSize = bufferSize; this.sampleRate = sampleRate; this.spectrum = new Float32Array(bufferSize/2); this.real = new Float32Array(bufferSize); this.imag = new Float32Array(bufferSize); this.reverseTable = new Uint32Array(bufferSize); this.sinTable = new Float32Array(bufferSize); this.cosTable = new Float32Array(bufferSize); var limit = 1, bit = bufferSize >> 1, i; while (limit < bufferSize) { for (i = 0; i < limit; i++) { this.reverseTable[i + limit] = this.reverseTable[i] + bit; } limit = limit > 1; } for (i = 0; i < bufferSize; i++) { this.sinTable[i] = Math.sin(-Math.PI/i); this.cosTable[i] = Math.cos(-Math.PI/i); } }; // FFT FFT.prototype.forward = function(buffer) { var bufferSize = this.bufferSize, cosTable = this.cosTable, sinTable = this.sinTable, reverseTable = this.reverseTable, real = this.real, imag = this.imag, spectrum = this.spectrum; var i; if (bufferSize !== buffer.length) { throw "Supplied buffer is not the same size as defined FFT. FFT Size: " + bufferSize + " Buffer Size: " + buffer.length; } for (i = 0; i < bufferSize; i++) { real[i] = buffer[reverseTable[i]]; imag[i] = 0; } var halfSize = 1, phaseShiftStepReal, phaseShiftStepImag, currentPhaseShiftReal, currentPhaseShiftImag, off, tr, ti, tmpReal; while (halfSize < bufferSize) { phaseShiftStepReal = cosTable[halfSize]; phaseShiftStepImag = sinTable[halfSize]; currentPhaseShiftReal = 1.0; currentPhaseShiftImag = 0.0; for (var fftStep = 0; fftStep < halfSize; fftStep++) { i = fftStep; while (i < bufferSize) { off = i + halfSize; tr = (currentPhaseShiftReal * real[off]) - (currentPhaseShiftImag * imag[off]); ti = (currentPhaseShiftReal * imag[off]) + (currentPhaseShiftImag * real[off]); real[off] = real[i] - tr; imag[off] = imag[i] - ti; real[i] += tr; imag[i] += ti; i += halfSize Audio API to their browser as well; although you have to download it from a ChromeOS currently has webGL capability and with it being present on the WebKit nightly, and extensions to be built and this in my opinion will probably work out really well for mobile devices. I will look forward to seeing webGL on the iPhone and Android in the near future. Mobile drives html5 and with an average life span of a phone and contract being 2 years. I see the browser landscape rapidly changing. People will utilize newer browsers in less time due to the shelf lives of their phones. In short everything needs to be rewritten in the next 5 years to deal with mobile to stay valid.If you missed it their was a webGL camp recently. I didn't have the opportunity to be there although I have seen the screen casts. The screen casts were very informative check them out Mozilla Firefoxs App Store as well. I am glad to see browsers supporting this functionality directly within the browser. I believe this will provide a great deal of web developers a way to directly capitalize off their skill sets. I have been utilizing here. On the server I recently installed Media Temple I am looking forward to utilizing NodeJS for the backend for some of my new apps and games. I really like the idea of writing everything in one language javascript and Node seems to simplify a great deal for me. If you are not familiar with nodeJS check it out it is server-side JavaScript.
December 21 2010, 7:36pm | Comments »
-
I posted to i-create.org
Simple SpiroGraphic with processingJS
http://i-create.org/2010/11/19/simple-spirographic-with-processingjs/
ProcessingJS is almost fully implemented. If you hit the toggle you will see that the current implementation of processingJS supports just about every feature of the java implementation. It also now supports the 3d canvas. I have mostly been using processing for 2d experiments and I have found it extremely easy to use. I also like the fact some many other libraries mimic Processing. I have also been dabbling in
November 19 2010, 8:12pm | Comments »
-
I posted to i-create.org
Adobe Leverages HTML5
http://i-create.org/2010/11/16/adobe-leverages-html5/
Adobe Loves HTML5 and it is obvious in their latest offerings. Edge a new project that will allow developers to utilize a timeline and export animations as CSS3 and JavaScript. Flash designers will also be able to easily convert their flash .fla files in to HTML5 animated documents. For those of you out their that might be living under a rock and haven’t heard hear are some of the Cool features in HTML5/CSS3. It would also be nice to see Flash export as3 to the canvas tag. I believe adobe has the team to do and if Alchemy can convert AS3 to C++ why not convert to JS in the canvas. It would be nice to see this sort of functionality in the future. It is really nice to see Adobe embracing the new standards and dramatically improving their tool chain to support HTML5. When I speak of HTML5 I am using this as an umbrella term that includes HTML5, Audio Working Group.
Edge PrototypeHTML5 now has a storage capability which will make off-line applications a breeze. HTML5 allows for new Tags and Attrs without breaking( You will find some pretty interesting examples of this on asynchronous nature that will allow for rendering pages with JavaScript rapidly.
CSS3 has vast improvements like 3D capabilities into CSS which are extremely easy to use and relatively stupid human proof. CSS3 also includes 2d transforms and the ability to easily add tweening to just about any html element. In short most of what Flash7 was capable we are now able to execute in simple html. Adobe also is throwing all of its weight around Molehill looks like it will be great for flash developers after all we have been asking for this functionality for a number of years. WebGL will becoming out soon although IE will of course not support it which is a downer but I guess understandable because M$ will not promote OpenGL when it has its own proprietary technology Direct X to promote. Molehill will be able to take advantage of both DirectX and OpenGL and will also be supported on mobile devices (Hopefully they also allow this functionality for the iPhone exporter). Adobe / Macromedia has plenty of experience in creating 3D APIs after all Director had that capability almost 8 years ago. It would be nice to see them extending the GPU acceleration to all actionscript and flash rendering. Personally I believe I will really enjoy this and I am looking forward to seeing new versions of Away3d and all of the other flash libraries taking advantage of the new performance increase. It would also be nice to see Adobe integrate WebGl into AIR. AIR does have webkit embedded in it might be kind of cool to use it to distribute webGL content as well. Firefox frennec supports webGL out of the box although it isn’t on many devices you will soon see webgl on many mobile devices.The browser wars are heating up and I know we will see speedier browser updates and release schedules. Javascript is running faster and faster in the browser. 2D and 3D rendering in the browser will also be accelerated by the GPU. This healthy competition has already given way to a great deal of innovation. This same competition at the browser level will also filter down to tooling innovation and I believe in the next few years we are going to see more and more innovation in the tools we use as developers. So what is driving all the innovation? The mobile devices of course. While this market appears to be fragmented it is not as fragmented as you would think. They all take advantage of the HTML5 iPhone/Android/WebOS this appears to be what they all share in common. Webkit is the dominant mobile web browser. I would also like to point out the Firefox group has really been innovative with Firefox beta 4. I believe in many ways the Firefox browser is ahead of the pack in the browser race as far as innovation goes. I find myself most of the time playing with html5, webGL, and the new CooperLicht(CooperCube), C3DL, and Firefox 4.7 beta. This feature will also most likely be available in Chrome and Safari both nightly builds have webGL capabilities. I believe webGL has a great deal of potential and it is kind of nice to just program with notepad nothing else is really needed. I have been playing around with unity3d and they do have a great platform and a great tool chain although; I do believe they should allow export to webGL. I think this would benefit them greatly. Unity is by far the most refined tool for this niche. Unity3D also accounts for most of the top twenty hotest iPhone games so it is an excellent platform. Sites Worth Visiting: ZenBullets Mozilla Labs Audio Demos Chromium Web-Gl Demos
November 16 2010, 4:43pm | Comments »
-
I posted to i-create.org
Virtual Painting with Hype
http://i-create.org/2010/08/03/virtual-painting-with-hype/
The hypeframe work is truly a unique library it offers generative artists a new tool to quickly create generative art. I believe it also provides flash developers with a rich actionscript library that does a great deal of heavy lifting. The library allows you to quickly create swarming effects that you can use to create stunning artwork rapidly. In the example below I am using hype to paint a picture it does this by grabbing the pixel value and then applying it to the canvas. As a result you can simulate a painting effect that can really turn out stunning results. This is one of the many things I really like about this library, is how quickly you can create art with it! Simple Hype Painting Example:Download Example / Launch DemoSo what have I been up to lately? I have really been diving into html5 with webGL coming out soon I think combining html5, webgl, and flash developers will be able to create a whole new breed of rich internet applications. I have also been shifting my focus on mobile, because it is the only way truly creative developers can rapidly create applications and profit off of them quickly. It has the lowest barrier of entry and with mobile really starting to take off most applications will have to be completely re-written for these low power, light weight devies that everyone will use. I am excited about what I see and I believe webGL will be supported in both the iphone, android, and hopefully palm! I also believe that javascript development will be needed more and more simply because javascript is the glue that holds the web together and it is supported by all mobile platforms. So you may see a variety of experiments here and I don’t think of development as javascript vs. actionscipt I just view them as working more together instead of against each other so this is not an HTML5 vs. Flash thing. I wouldn’t be surprised one bit by adobe releasing a Flash to Canvas feature for CS6. What makes flash so compelling to me is the amount of libraries available to developers. I would also be willing to bet in the near future flash will also support 3d hardware acceleration this would really allow for lots of new games on the flash platform. Not too mention it doesn’t look like Internet Explorer is going to support any type of 3d in the near future.Download Example / Launch DemoSo you showed me some actionscipt can you show me some javascript? Of course, I have been playing around a little with three.js. As you can see below I built a simple panoramic sphere with javascript Mr. Doob created a really cool 3-D library that has lots of similar characteristics too PaperVision3D and it has some basic primitives so it makes it really easy to work with. I will warn you ahead of time this example is a processor hog and it runs really, really slow, but it is some where to start. JavaScript libraries are still a long way from where ActionScript is right now. I have been working on a new version of my memorial panoramic with flash, only it will have 3-D sound that will be dynamically created by user interaction so stop by in about a month.Simple HTML5 Example Chrome or Safari only!:Download Example / tablets, phones, and Bit-101 sound synthesisCool JavaScript Libraries:PhoneGap three
August 3 2010, 9:28pm | Comments »
-
I posted to i-create.org
HTML5 jQuery jqPanoramic Plugin Alpha
http://i-create.org/2010/06/01/html5-jquery-jqpanoramic-plugin-alpha/
A simple jQuery plugin that allows for creation of Cubic Panoramic Images. This plugin utilizes on Safari Nightly builds it has been tested against on an Apple running the latest webkit nightly build on Snow Leopard. This plugin should also be compatible for the iPad although I have not had time to test it yet. I will be adding more features to this plugin on a semi weekly basis. I am an extremely busy person and if you email me for support it might take me awhile to respond. Cubic panoramics have long been available in Flash and Java. The reason for creating this was simply to test out the new CSS3 3D properties and hopefully to make a great plugin that will work well on the iPad so users can view panoramics easily on their mobile devices. Download Plugin /
May 31 2010, 10:24pm | Comments »
-
I posted to i-create.org
Tweet Tank in Away3D and Hype pt. 2
http://i-create.org/2010/05/16/away3d-with-hype-fish-tank-part-2/
I have now added support to search twitter. Once you search twitter it repopulates the fish bowl with fish that once clicked will navigate to that twitter search result. I have been working on optimizing the content. Specifically the fish models are very processor intensive. I have been looking at different ways to improve this. Away3Dlite is new than the other versions and it does have many benefits. The main build has other techniques like level of detail and fogging. These help to reduce the over all processor hit. I believe in the near future some of these features will hopefully be ported over to the Away3Dlite version if not then within in the next couple of weeks I will port this over. I think utilizing fogging and level of detail will greatly reduce the overall processor hit. Processor Intensive Experiment:
You will notice that when it renders it is rendering 110+ DisplayObject3D I have also been working on Garbage Collection I have found that after doing several searches the Memory is increasing greatly. So I have added some techniques like removing the objects and then nullifying them although it doesn’t appear to be helping much. I will have to look into this again soon. I would also like to super impose a Google map on the top make it click-able and then have the camera zoom in on that particular fish which should not really be difficult at all because I can use tween lite to simply zoom the camera to the objects position. So I am not done with this and I will be revisiting these issues. Memory management can be difficult. I will also be scouring the web for flash tools that help profile and reduce memory so if anyone has any suggestions feel free to chime in. I have also been reading the 3D in Flash Book from Friends of Ed it does have a whole chapter on optimizing 3D content for the web so I will be reading that chapter soon. I have also been looking at gSkinners blog it has a considerable amount in Launch Experiment I also like what I have been seeing in the WebGL community. I think it would be really cool if haXe created a library for exporting to webGL/JavaScript I think this would have many benefits namely I could use my Away3D skills and export to webGL. They do currently export to Canvas but at this time I am not aware of any WebGL support within haXe. HaXe does support openGL for use in its vitual machine Neko so it seems that a library will likely be available soon.
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- as3
- away3d
- Experiment
- hype
- interactive
- data visualization
May 16 2010, 9:09pm | Comments »
-
I posted to i-create.org
WebGL Renering of BSP Maps
http://i-create.org/2010/05/14/webgl-renering-of-bsp-maps/
It has never been a better time to be a developer. I am really looking forward to full implementations of HTML5 everywhere I believe HTML5 / JavaScript / ActionScript will be an extremly potent combination! I believe their will be proliferation of new devices in the mobile arena. JavaScript and HTML are also becoming more powerful. I have been reading about WebGL and experimenting with it for awhile now and the other day I heard about Irrlicht Engine and I was immediately curious. It is basically a world editor / game engine for the web that supports Flash and WebGL output. I have to be honest I think for Flash, I will definitely stick with Away3D. For WebGL output I am extremely impressed It was easy to use and in the next few months, I will be studying their web website to be insightful not only on Raytracing with flash. You will only be able to see the example below if you have a webGL compatiable browser. Click Here to View
To create the environment that are displayed above it was easy. I was able to download Quake3 maps from a few sites like Map Factory. Once the maps have been downloaded and unzipped notice that it has a .pk3 extension change it to a zip file and then extract it. You will find all you need in that folder from their all you have to do to get it into CopperCube is navigate to the folder named Map and select the .bsp file and from that point on you are good to go. I have also been attempting to convert these files to Click Here to View
WebGL Libraries: Canvas #D Library” target=”_blank”>C3DL Learning WebGL HTML5 Planes and Cubes CSS3 Cube NetTuts Premium Tutorial
May 14 2010, 4:42pm | Comments »
-
I posted to i-create.org
I love that idea!
http://i-create.org/2010/05/13/i-love-that-idea/
Show support submit a work of multiple operating systems on my cell phone if that is a possibility without voiding my warranty. I am the user, I am the owner, I pick what goes on and how not some governmental official or CEO. That is my concern why can’t you clarify your policy at least so can I not use the Scratch? “It doesn’t make much difference how the paint is put on as long as something has been said. Technique is just a means of arriving at a statement.” -Jackson Pollock As the creators we should be able to pick whatever programming language etc and run it on the device. It is up to the consumer to choose what they want and what works out best for them on that device. Create something cool in the shape of a heart tell the community how you created it and share it.
May 13 2010, 4:39pm | Comments »
-
I posted to i-create.org
Tweet Tank in Away3D and Hype
http://i-create.org/2010/05/10/tweet-tank-in-away3d-and-hype/
Alright so I know everyone associates Twitter with birds well all the bird models in the away3dlite, TweetTank I believe this one performs better. It also doesn’t heat up my Mac book like it is going to take off for space (I have noticed that in Firefox it does heat up when using webGL although it is a pre-alpha). I was also able to add sound to this version and use away3dlite a really solid 3d library for flash. This project was pretty easy didn’t take long to create and PreFab really speed up the process. The Experiment:
PreFab is an Air application that allows Awary3d scene designers to easily import and export models for use with away3d. It is also important to note that away3d has spent a significant amount of time to optimize 3d away3d support Away3d I suggest this Amazon book I haven’t read it yet but I look forward to it I just received it today in the mail. Away3d is easy to use and I also highly recommend looking at Launch Experiment Cool Links: Hype Relly Cool Hype Away3d Example Away3D
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- as3
- away3d
- Experiment
- hype
- interactive
- data visualization
May 10 2010, 9:05pm | Comments »
-
I posted to i-create.org
Away3D with Hype Fish Tank
http://i-create.org/2010/05/03/away3d-with-hype-fish-tank/
Well for awhile I was experimenting with hype framework. I would like to make the fish in the Tank have a swarming effect. The swarming effect utilizes a point. I would like to look at modifying this so it could also except a vector. I will look at diving into this in the future. RIght now if you click on them they will not go to a twitter result this functionality and twitter search will be built into it at a later date probably next weekend. If you click on the spacebar the camera will zoom randomly if you spin the mouse wheel you will pivot around the center points. I will add more control in the near future. I really like the amount of control I have with the combination of Hype and Away3D this experiment was fun to put together. I am looking forward to refining it. The fish also currently dance to the music (Only if sound is not currently running in another tab like Youtube) I will work on smoothing these features out. I did get into a gotcha with mouse events in away3d and it was caused by a blur feature I added to a bitmap canvas it took me awhile to track down the issue and I found this helpful chunk of code on my quest to debug it. book coming out from Friends of Ed. I personally can’t wait to receive it in the mail. I also hope to see a HypeFramework book in the near future as well. It is definetly an exciting time to be a flash developer. I am really looking forward to flash being on Android. It will be fun to use the HypeFramework with the accelerometer etc.. I have been busy working. I have really been studying HTML5 and I am really excited about it. I think WebGL is really cool although I also think the browsers should open up sound streams in the browser so they can be interpreted. Currently Flash can interpret sound but you can’t make a mashUp with youtube and interpret sound from that location because that would not be inline with the Flash Security model. I have also been keeping my eye on javascript frameworks that are geared toward mobile. I recommend looking at jQTouch and Sprout Core they have lots of potential. CSS3 is definitely the holy grail of CSS. The CSS transforms that are allowed on Webkit are awesome. Hopefully all the other browsers will follow suit (I won’t hold my breath for Internet Exploder). I am looking forward to putting together more content that is just geared at mobile devices. I also have been playing around with the iPhone SDK I got Wolfenstein to run on my iPhone emulator this week:) Flash Links: Learning WebGL Energize Sprout Core Scripty ProcessingJS
May 2 2010, 10:29pm | Comments »
-
I posted to i-create.org
WebGL TweetTank Built with C3DL Part 2
http://i-create.org/2010/04/26/webgl-tweettank-built-with-c3dl-part-2/
I have added the ability to search twitter and re-populate the fish tank. So now you can place a search in like “Tool” or “Toledo” or whatever you query it will pull results from twitter. I have noticed this experiment is resource intensive. In part three of this experiment I will look for ways to tidy up the code make it more reusable and less resource intensive. I also noticed in c3dl they already have a nice Secena is also working on this library I believe they have ported most of the new functions. I also added two sliders with jQuery to control the camera I am currently using an orbitCamera I think I will change this in the future to utilize a free camera and use the animateAxis function to animate around a vector with an angle. Currently I am using the Yaw and Pitch functions of the orbitCamera of course it looks kind of awkward to spin it. I will try to find ways to speed this experiment up, fix the picking result to be more sensitive, clean up the look and feel of it for part three. If there is a part four it will be about making the fish bound to the sphere and maybe making them so the swim back and forth not in a straight line. I might also be making a similar experiment with Sandy3D experiments on Google Experiments. Launch Experiment /
April 26 2010, 9:27pm | Comments »
-
I posted to i-create.org
WebGL TweetTank Built with C3DL Part 1
http://i-create.org/2010/04/18/webgl-tweettank-built-with-c3dl-part-1/
First of all let me mention you will not be able to run this demo unless your browser is WebGL ready. So that means if you want to see this then you have to download a nightly build of FireFox, Chrome, or Safari. You can read how to do this flash benchmarks that are currently out their it definitely shows you how fast the flash player is in comparison. In short canvas tag is not even remotely as fast. In the news their has been lots of discussion about flash being dead but this simply isn’t true. Here is why forthcoming C3DL and jQuery. C3DL is an awesome opensouce library put together by the wonderful people at download a nightly build of Firefox. Launch Experiment / I found this cool silverlight examples and would like to study it! I have installed Visual Studio 2010 on my Windows boxes and it is awesome! I have also been eying a new tutorial on the ComputerArts latest issue(174). Has a really cool example that teaches you how to use Hype to make music drawings created by Stewart Hamilton-Arrandale. I will learn from this code. I could add this type of functionality into my KulerSplash. I also found this resource recently on Objective-C really C3DL CopperLicht SceneJS
- Tags:
- 3d
- i-create
- MashUp
- javascript
- jquery
- Experiment
- webGL
- C3DL
April 18 2010, 6:04pm | Comments »
-
I posted to i-create.org
Is Apple Becoming the New Big Brother?
http://i-create.org/2010/04/11/is-apple-becoming-the-new-big-brother/
Once upon a time their was young Steve Jobs and he fearlessly forged ahead and helped shape the landscape of today’s personal computing. To tell you the truth Macintosh was for the most part based off of the work that was done at PARC ( LISA which was the first GUI (Graphical User Interface) for personal computing. Some of the brightest luminaries in Computer history worked at PARC like Douglas Engelbart who ran the Recently though Apple has made in my mind some rather bothersome decisions. I fully understand them not wanting to include Flash as a part of their ecosystem. This definitely comes from the need to dominate their platform and insure the sales of apps on the iTunes store. If everyone had the flash player would so many apps actually be sold?? I don’t believe they would be. Up until now Apple devices have had relatively low computing power but this is no longer the case with the iPad. Lots of developers have banded together and created some really cool tools out their like Corona SDK, Google search on Easing Equations you will find Robert Penner at the top. I love both technologies and I really don’t want to be in one of those childish conversations where to whiners, whine about which one is better and which one will when over. It is a silly argument to have in the first place. As a developer it is important to have knowledge of both and not let your opinions cast doubt on one or the other platform. HTML5 will advance to where flash is now but when it does flash will be well beyond where it is today. So I guess I am upset at Apples decision to really kind of flip the bird to the development community and tell everyone they can only use their tools to create content or they have to use HTML5. To be honest with you, I have been thinking about using HTML5 simply to escape the whole Apple approval process. I will definitely be putting my weight around HTML5 and Flash for all the other Mobile platforms. The people at Adobe are not lazy Steve. They worked extremely hard to put together something that they believed would help your iTunes app store and consumers as well and it is not just the people at Adobe you have alienated by this decision.
With the people at Apple making decisions like this you can’t help but wonder how far they will reach to control content. I believe that content is up to the user hopefully they won’t extend policies like this to their bookstore. Really the fact of the matter is people will purchase these devices in mass numbers because it was created by Apple and Apple does have a killer marketing strategy and team. They won’t so much think about the lack of freedom or the buyer lockin to the iTunes ecosystem. In many ways their ecosystem for entertainment is ridiculously far ahead of the competitors. In short it is nothing short of a Monopoly you may not see it yet but it is definitely there. On the other hand their moves may force the development community to swing to Microsoft and Google the Bruce Jawn released his source code for Alchemy compiling of this RayCaster you can find the code
April 11 2010, 9:33pm | Comments »











