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
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
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
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 delicious.com
AS3 Sound Synthesis III – Visualization and Envelopes @bit101 - excellent tutorials in regards to generating sound with flash! Thanks
http://www.bit-101.com/blog/?p=2675
- Tags:
- ActionScript
- Flash
- as3
- sound
July 22 2010, 3:45pm | 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
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 delicious.com
Prefab creator closier blog and tutorials for #away3d
- Tags:
- 3d
- ActionScript
- away3d
- engine
April 29 2010, 4:05am | Comments »
-
I posted to i-create.org
Simple Flip3D in ActionScript3
http://i-create.org/2010/04/11/simple-flip3d-in-actionscript3/
This code will show you how to develop a simple native actionscript3d Class it shows you two different methods you could use to develop your own flip 3d effect in ActionScript3 this uses Flash Player 10. This code also only uses the built in functionality of Flash with the exception of the use of OOP) of there own rapidly! I have written code that basically once applied to a movie clip will randomly display a frame you will see this in the class you can expand it add new frames to the array etc.. What it does is randomly picks a frame displays the image and then once clicked will rotate the X property of the movie to about 84 degrees and disappear. It also shows you two different ways you could accomplish this task. One way the way I like the best is to use Tweener an animation library that has been around in the Flash community for years. Tweener frees you from the time line in other words your animation is time based instead of frame based. Time based is completely the way to go this ensures your users that they will have the same effect and performance regardless. Time based animation effects have been around in the Flash community for years actually Call the Class from the Frame
var flipID:uint = new uint(1); var sc9MainPortImg1:sc9MainPortImg = new sc9MainPortImg(); addChild(sc9MainPortImg1); sc9MainPortImg1.x=0; sc9MainPortImg1.y=55; sc9MainPortImg1.name = "sc9Img"+flipID; sc9MainPortImg1.buttonMode = true; sc9MainPortImg1.addEventListener(MouseEvent.MOUSE_DOWN, sc9PortClick); function sc9PortClick(e:MouseEvent){ var sc9MainPortImg1:sc9MainPortImg = new sc9MainPortImg(); addChildAt(sc9MainPortImg1,1); sc9MainPortImg1.x=0; sc9MainPortImg1.y=55; sc9MainPortImg1.name = "sc9Img"+flipID++; trace(sc9MainPortImg1.name); sc9MainPortImg1.buttonMode = true; sc9MainPortImg1.addEventListener(MouseEvent.CLICK, sc9PortClick); }
The actual Simple Flip 3D Class
package { import flash.display.MovieClip; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.display.*; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; import flash.net.LocalConnection; import fl.transitions.*; import caurina.transitions.Tweener; import flash.external.ExternalInterface; public class sc9MainPortImg extends MovieClip { public var n:Number; public function sc9MainPortImg():void { randomFrame(); this.addEventListener(MouseEvent.CLICK, spinClick); } public function randomFrame():void{ var frameArray:Array = new Array(); frameArray[0]=1; frameArray[1]=2; frameArray[2]=3; frameArray[3]=4; // Get random number created n=randRange(1,4); trace(n); trace(frameArray); // gotoAndStop Frame lable name this.gotoAndStop(frameArray[n]); } public function spinClick(e:MouseEvent):void{ //this.addEventListener(Event.ENTER_FRAME, spin); --> Enable for Frame Based Animation Example var open_tween={rotationX:-84,alpha:0.0,time:20,transition:"easeoutelastic",delay:0}; Tweener.addTween( this, open_tween); } public function spin(e:Event){ this.rotationX -= 2; if(this.rotationX == -84){ this.visible = false; this.removeEventListener(Event.ENTER_FRAME, spin); } } public function randRange(min:Number, max:Number):Number { // Generate a number between and including min - max var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min; return randomNum; } } }
Download Code
April 11 2010, 2:31pm | Comments »
-
I posted to delicious.com
Memory Management
http://tomgabob.blogspot.com/2009/11/as3-memory-management.html
April 1 2010, 9:30pm | Comments »
-
I posted to delicious.com
Ray casting in Flash
http://bruce-lab.blogspot.com/2009/07/ray-casting-in-flash.html
- Tags:
- ActionScript
- as3
- raycasting
March 31 2010, 4:24pm | Comments »
-
I posted to i-create.org
404 Errors Hyped With PaperVision3d pt. 2
http://i-create.org/2010/02/07/404-errors-hyped-with-papervision3d-pt-2/
gotoandlearn.com, web designer magazine. I might modify this swf later to have youtube results and render them as planes. If you go to seacloud9.org and look for a page that you know is not on that web server it will serve up google results and display them in three dimensions randomly. This page is distracting on purpose but It was kind of fun to make. You can go to the page results by clicking on the sphere. You can move the viewport of the search results by moving the sliders. JavaScript to retrieve the url location and parse it:
var gResult; var gResultL; function getQueryString(){ var qString = [removed]; myReg = new RegExp("http://seacloud9.org/"); var url = qString.href.replace(myReg, ""); return url; }function googleResultArray(googleResult){ gResult = googleResult; } function getGoogleTitle(titleNum){ return gResult[titleNum]; }
ActionScript 3 Code behind for SWF all Google Search code and Debugging
package { import flash.display.*; import flash.events.*; import flash.events.Event; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; import fl.transitions.*; import flash.media.Sound; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.navigateToURL; import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.typography.Font3D; import org.papervision3d.typography.Text3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.special.Letter3DMaterial; import org.papervision3d.typography.fonts.HelveticaBold; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.*; import org.papervision3d.events.InteractiveScene3DEvent; import hype.framework.core.TimeType; import hype.framework.rhythm.SimpleRhythm; import hype.framework.sound.SoundAnalyzer; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.shadematerials.CellMaterial; import flash.external.ExternalInterface; import be.boulevart.google.events.*; import be.boulevart.google.ajaxapi.search.web.*; import be.boulevart.google.ajaxapi.search.web.data.*; import be.boulevart.google.ajaxapi.search.*; public class e404 extends MovieClip { public var viewport:Viewport3D; public var scene:Scene3D; public var camera:Camera3D; public var viewport2:Viewport3D; public var scene2:Scene3D; public var camera2:Camera3D; public var plane:Plane; public var plane2:Plane; public var plane3:Plane; public var sphere:Sphere; public var font3d:Font3D; public var text3d:Text3D; public var fontMat:Letter3DMaterial; private var cell:CellMaterial; private var sphereArr:Array; public var light:PointLight3D; public var renderer:BasicRenderEngine; public var renderer2:BasicRenderEngine; public var googleTitle:Array = new Array(); public var googleLink:Array = new Array(); public var googleWebSearch:GoogleWebSearch=new GoogleWebSearch(); public var googURL:URLRequest; public function e404():void { addEventListener( Event.ENTER_FRAME, e404Go ); } private function onWebResults(e:GoogleSearchEvent):void { var resultObject:GoogleSearchResult=e.data as GoogleSearchResult; ExternalInterface.call( "console.log" ,"Estimated Number of Results: "+resultObject.estimatedNumResults); ExternalInterface.call( "console.log" ,"Current page index: "+resultObject.currentPageIndex); ExternalInterface.call( "console.log" ,"Number of pages: "+resultObject.numPages); for each (var result:GoogleWebItem in resultObject.results) { googleTitle.push(result.title); googURL = new URLRequest (result.url); googleLink.push(googURL); ExternalInterface.call( "console.log" ,"link:"+result.url+"title:"+result.title ); } ExternalInterface.call( "googleResultArray" , googleTitle ); //build 3d world now that we have our google search! init3D(); createSearch(); addEventListeners(); } private function onAPIError(evt:GoogleAPIErrorEvent):void { trace("An API error has occured: " + evt.responseDetails, "responseStatus was: " + evt.responseStatus); } public function e404Go(e:Event):void { removeEventListener(Event.ENTER_FRAME,e404Go ); // Create the container Sprite stage.scaleMode=StageScaleMode.NO_SCALE; stage.align=StageAlign.TOP_LEFT; //this javascript function returns the query string from the window location googleWebSearch.search(ExternalInterface.call( "getQueryString" ),0,"english"); googleWebSearch.addEventListener(GoogleAPIErrorEvent.API_ERROR,onAPIError); googleWebSearch.addEventListener(GoogleSearchEvent.WEB_SEARCH_RESULT,onWebResults); } private function init3D():void { // VIEWPORT viewport=new Viewport3D(0,0,true,false); viewport2=new Viewport3D(stage.width,stage.height,true,true); addChild( viewport ); addChild( viewport2 ); // // RENDERER renderer = new BasicRenderEngine(); renderer2 = new BasicRenderEngine(); // // SCENE scene = new Scene3D(); scene2 = new Scene3D(); // // CAMERA camera = new Camera3D(); camera.zoom=11; camera.focus=100; camera2 = new Camera3D(); camera2.zoom=11; camera2.focus=100; } private function createSearch():void { // Set some colors so we can see if loading is still happening, // or if it failed BitmapFileMaterial.LOADING_COLOR=0x000000; BitmapFileMaterial.ERROR_COLOR=0xFF0000; // var material:BitmapFileMaterial=new BitmapFileMaterial("404e.png"); material.doubleSided=true; var material2:BitmapFileMaterial=new BitmapFileMaterial("404e2.png"); material2.doubleSided=true; var material3:ColorMaterial=new ColorMaterial(0xFC0606,.3); material3.doubleSided=true; light=new PointLight3D(true); light.z=0; light.y=randomRange(-30,280); light.x=randomRange(-350,500); // plane=new Plane(material,300,100,10,10); plane.x=-350; plane.y=265; // Second ViewPort objects sphere and text from google sphereArr = new Array(); for (var i:int = 0; i < googleTitle.length; i++) { var myPattern:RegExp = /<b>/g; var myPattern2:RegExp = /<\/b>/g; var googSearch:String = new String(googleTitle[i].toString()); googSearch = googSearch.replace(myPattern, ""); googSearch = googSearch.replace(myPattern2, ""); sphere=new Sphere(buildCell(),randomRange(10,100),randomRange(5,20),10); sphere.x=randomRange(-500,500); sphere.y=randomRange(-500,500); sphere.z=randomRange(-500,500); try{ var colorPoolCell:Array = new Array(0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1); var colorID:int = randomRange(7, 0);
fontMat = new Letter3DMaterial(colorPoolCell[colorID]); font3d = new HelveticaBold(); text3d = new Text3D(googSearch, font3d, fontMat); text3d.x = sphere.x + googSearch.length + 10; text3d.y = sphere.y + 10; //text3d.z = sphere.z + 10; sphere.addChild(text3d); sphere.id = i; scene2.addChild( sphere ); sphereArr.push(sphere); } catch(e:Error){ // Sometimes the google title font3D will fail but we can catch it so it doesn't // have a nasty flash epic fail warning.. ExternalInterface.call( "console.log" , "Error Reached = " + e); } } //create the 3D planes for the first ViewPort plane2=new Plane(material2,300,100,10,10); plane2.x=-350; plane2.y=265; plane2.z=-60; plane3=new Plane(material3,800,150,10,10); plane3.x=-350; plane3.y=285; plane3.z=80; // scene.addChild( plane ); scene.addChild( plane2 ); scene.addChild( plane3 ); addListner(); } function addListner():void{ for(var i:int = 0; i < sphereArr.length; i++){ try{ sphereArr[i].addEventListener( InteractiveScene3DEvent.OBJECT_PRESS, callLink ); ExternalInterface.call( "console.log" , "Event Added" + i); }catch(e:Error){ ExternalInterface.call( "console.log" , e); } } } function callLink(e:InteractiveScene3DEvent):void { try { navigateToURL(googleLink[e.target.id], '_blank'); ExternalInterface.call( "console.log" , "link Clicked --" + e.target.id + "Link Called - " + googleLink[e.target.id]); } catch (err:Error) { ExternalInterface.call( "console.log" , err + " id: " + e.target.id + "Errored on: " + googleLink[e.target.id].toString() ); } } function buildCell():CellMaterial { var colorPoolCell:Array = new Array(0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1); var colorID:int = randomRange(7, 0); var colorID2:int = randomRange(7, 0); //random color material generation returns cellMaterial //cell=new CellMaterial(light,Math.round(Math.random()*0xFFFFFF),Math.round(Math.random()*0xFFFFFF),100); cell=new CellMaterial(light,colorPoolCell[colorID],colorPoolCell[colorID2],100); cell.interactive=true; return cell; } function randomRange(max:Number, min:Number = 0):Number { return Math.random() * (max - min) + min; } private function addEventListeners():void { addEventListener( Event.ENTER_FRAME, __onEnterFrame ); } private function removeEventListeners():void { removeEventListener( Event.ENTER_FRAME, __onEnterFrame ); } /*===================================================================\ ||Listener Functions || \===================================================================*/ private function __onEnterFrame( e:Event ):void { //moves the error planes viewort according to mouse position plane.rotationY=viewport.mouseX/4; plane.rotationX=viewport.mouseY/4; plane2.rotationY=viewport.mouseX/4; plane2.rotationX=viewport.mouseY/4; plane3.rotationY=viewport.mouseX/4; plane3.rotationX=viewport.mouseY/4; light.rotationX=viewport2.mouseY/4; light.rotationY=viewport2.mouseY/4; // sldWorld.addEventListener("change", updateWorldAxisValue); sldZoomCam.addEventListener("change", updateCamerValue); this.setChildIndex(sldWorld, this.numChildren-1); this.setChildIndex(sldZoomCam, this.numChildren-1); renderer.renderScene( scene, camera, viewport ); renderer2.renderScene( scene2, camera2, viewport2 ); } function updateWorldAxisValue(argument) { var sldWorld_value:Number=this.sldWorld.value; camera2.rotationY=sldWorld_value; } function updateCamerValue(argument) { var sldZoomCam_value:Number=this.sldZoomCam.value; camera2.zoom=sldZoomCam_value; } } }ActionScript3 Timeline Code for Sound Analysis and Image Effects
import hype.extended.behavior.FunctionTracker; import hype.extended.behavior.Oscillator; import hype.extended.color.ColorPool; import hype.extended.layout.GridLayout; import hype.framework.display.BitmapCanvas; import hype.framework.sound.SoundAnalyzer; import hype.extended.behavior.FixedVibration; var myWidth = stage.stageWidth; var myHeight = stage.stageHeight; var clipCanvas:BitmapCanvas = new BitmapCanvas(myWidth, myHeight); addChild(clipCanvas); var clipContainer:Sprite = new Sprite(); var soundAnalyzer:SoundAnalyzer = new SoundAnalyzer(); soundAnalyzer.start(); var colorPool:ColorPool = new ColorPool( 0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1 ); // xStart, yStart, xSpacing, ySpacing, columns var layout:GridLayout = new GridLayout(0, myHeight / 2, 10, 0, 34); var numItems:int = 64; var freq:int = 120; for (var i:uint = 0; i < numItems; ++i) { var clip:MySquare = new MySquare(); layout.applyLayout(clip); colorPool.colorChildren(clip); // object, property, soundAnalyzer.getFrequencyRange, [startRange, endRange, min, max] var aTracker:FunctionTracker = new FunctionTracker(clip.myFill, "alpha", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.25, 1.0]); var sTracker:FunctionTracker = new FunctionTracker(clip.myFill, "scaleY", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.5, 30.0]); aTracker.start(); sTracker.start(); // target Object, property, waveFunction, frequency, min, max, start value var yOsc:Oscillator = new Oscillator(clip, "y", Oscillator.sineWave, freq, 60, 600, i/(180/2));
yOsc.start(); clipContainer.addChild(clip); } clipCanvas.startCapture(clipContainer, true); var sound:Sound = new Sound(); sound.load(new URLRequest("http://i-create.org/actionscript/404e/shortCircuitE1.mp3")); sound.play(); var aVibration:FixedVibration = new FixedVibration(cBagHead, "alpha", 0.9, 0.1, 0.0, 1.0, false); aVibration.start();You find working examples of this 404 error page working at the following location: http://seacloud9.org/Context Free Art Web development will become much more complicated
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- MashUp
- API
- javascript
- Experiment
- Adobe Flash
- Computer programming
February 7 2010, 12:14pm | Comments »
-
I posted to i-create.org
Reloaded..
http://i-create.org/2010/01/29/reloaded/
Quick Tip: Utilize Firebug with ActionScript to trace out tough Bugs Add the import statment at the Top and then call it anywhere Handy:) Note I was having troubles getting it to work with Firebug 1.5 but on On a side note – I am looking forward to reading the Essential Guide to 3D in flash it goes over the Away3D engine indepth Processing on Android and my initial reaction to programming with Processing and Android in my opinion have been very positive. I have a couple of books that I have been reading and I might put together a video tutorial of my new apps I have been working on. I am also really looking forward to Verizon updating to Android 2.1! Processing / Android kit targets 2.0 and higher. I think Android has lots of potential for developers in my opinion it is an excellent time to be a developer things are really booming and changing in the tech industry and they will trickle down to everyday life and really change the way people go about everyday tasks. Reading lately: Tutorial on Away3D
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- android
- quick tip
- Firebug
- Internet Explorer 6
- Panoramic
- Smartphones
January 28 2010, 9:56pm | Comments »
-
I posted to delicious.com
Can Event Performance be improved in AS3? - InsideRIA
http://www.insideria.com/2009/12/can-event-performance-be-impro.html
improving event performancs
- Tags:
- ActionScript
- Flex
- as3
December 24 2009, 9:37am | Comments »
-
I posted to i-create.org
404 Errors Hyped With PaperVision3d
http://i-create.org/2009/12/20/404-errors-hyped-with-papervision3d/
404 Error Pages don’t have to be boring. Especially if you develop rich internet applications and have access to awesome tools like PaperVision3d and Hype! This is a two part example. This example just shows you simple code to create a planes in PaperVision3d make them follow your mouse. I also used SoundSnap to snag some short-circuit static for background noise. I also used Hype to analyze the sound this is literally an out of the box example of Hype. What is hype? Hype is a new framework for quickly putting together highly interactive eye-candy. Hype was created by Joshua Davis and Brendan Hall. It has special methods like Color Pool, Grids, Vibrations Effects, Sound Analysis, just to name a few in short its wicked cool. I am looking forward to playing around with it more it’s just a matter of finding the time. This was just something I was thinking about placing on my new interactive portfolio. I am going to create a 404 page that utilizes these libraries. This part only shows you the audio analysis, papervision3d plane code, and vibration effect applied to a movie. In part two I will add a parallax effect to give this error page more depth. Mash it with a search that pulls results from i-create and also has hidden gems in it. I will hope to really dig into hype more. Sometimes it can be fun to make websites that are distracting on purpose read like a choose your own adventure album. I can show an example like this and now show you one of my favorite sites. You have to go out and check out ABC (Abnormal Behavior Child) I think he originally made this style and his site is setup more like a personal odyssey.
Code for the Class Code Behind:
?View Code ACTIONSCRIPTpackage { import flash.display.*; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; import fl.transitions.*; import flash.events.Event; import flash.events.MouseEvent; import flash.media.Sound; import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.*; import hype.framework.core.TimeType; import hype.framework.rhythm.SimpleRhythm; import hype.framework.sound.SoundAnalyzer; public class e404 extends MovieClip { public var viewport:Viewport3D; public var scene:Scene3D; public var camera:Camera3D; public var plane :Plane; public var plane2 :Plane; public var plane3 :Plane; public var renderer:BasicRenderEngine; public function e404():void { addEventListener( Event.ENTER_FRAME, e404Go ); } public function e404Go(e:Event):void { removeEventListener(Event.ENTER_FRAME,e404Go ); // Create the container Sprite stage.scaleMode=StageScaleMode.NO_SCALE; stage.align=StageAlign.TOP_LEFT; // init3D(); createPlane(); addEventListeners(); private function init3D():void { // VIEWPORT viewport=new Viewport3D(0,0,true,false); addChild( viewport ); // // RENDERER renderer = new BasicRenderEngine(); // // SCENE scene = new Scene3D(); // // CAMERA camera = new Camera3D(); camera.zoom=11; camera.focus=100; } private function createPlane():void { BitmapFileMaterial.LOADING_COLOR=0x000000; BitmapFileMaterial.ERROR_COLOR=0xFF0000; // var material:BitmapFileMaterial=new BitmapFileMaterial("404e.png"); material.doubleSided=true; var material2:BitmapFileMaterial=new BitmapFileMaterial("404e2.png"); material2.doubleSided=true; var material3:ColorMaterial=new ColorMaterial(0xFC0606,.6); material3.doubleSided=true; // plane=new Plane(material,300,100,10,10); plane.x=-350; plane.y=265; plane2=new Plane(material2,300,100,10,10); plane2.x=-350; plane2.y=265; plane2.z=-60; plane3=new Plane(material3,800,150,10,10); plane3.x=-350; plane3.y=285; plane3.z=80; // scene.addChild( plane ); scene.addChild( plane2 ); scene.addChild( plane3 ); } private function addEventListeners():void { addEventListener( Event.ENTER_FRAME, __onEnterFrame ); } private function removeEventListeners():void { removeEventListener( Event.ENTER_FRAME, __onEnterFrame ); } private function __onEnterFrame( e:Event ):void { plane.rotationY=viewport.mouseX/4; plane.rotationX=viewport.mouseY/4; plane2.rotationY=viewport.mouseX/4; plane2.rotationX=viewport.mouseY/4; plane3.rotationY=viewport.mouseX/4; plane3.rotationX=viewport.mouseY/4; // renderer.renderScene( scene, camera, viewport ); } } }
Below are the actions that are applied to the time-line with in the Movie
?View Code ACTIONSCRIPTimport hype.extended.behavior.FunctionTracker; import hype.extended.behavior.Oscillator; import hype.extended.color.ColorPool; import hype.extended.layout.GridLayout; import hype.framework.display.BitmapCanvas; import hype.framework.sound.SoundAnalyzer; import hype.extended.behavior.FixedVibration; var myWidth = stage.stageWidth; var myHeight = stage.stageHeight; var clipCanvas:BitmapCanvas = new BitmapCanvas(myWidth, myHeight); addChild(clipCanvas); var clipContainer:Sprite = new Sprite(); var soundAnalyzer:SoundAnalyzer = new SoundAnalyzer(); soundAnalyzer.start(); var colorPool:ColorPool = new ColorPool( 0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1 ); // xStart, yStart, xSpacing, ySpacing, columns var layout:GridLayout = new GridLayout(0, myHeight / 2, 10, 0, 34); var numItems:int = 64; var freq:int = 120; for (var i:uint = 0; i < numItems; ++i) { var clip:MySquare = new MySquare(); layout.applyLayout(clip); colorPool.colorChildren(clip); // object, property, soundAnalyzer.getFrequencyRange, [startRange, endRange, min, max] var aTracker:FunctionTracker = new FunctionTracker(clip.myFill, "alpha", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.25, 1.0]); var sTracker:FunctionTracker = new FunctionTracker(clip.myFill, "scaleY", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.5, 30.0]); aTracker.start(); sTracker.start(); // target Object, property, waveFunction, frequency, min, max, start value var yOsc:Oscillator = new Oscillator(clip, "y", Oscillator.sineWave, freq, 60, 600, i/(180/2)); yOsc.start(); clipContainer.addChild(clip); } clipCanvas.startCapture(clipContainer, true); var sound:Sound = new Sound(); sound.load(new URLRequest("shortCircuitE1.mp3")); sound.play(); var aVibration:FixedVibration = new FixedVibration(cBagHead, "alpha", 0.9, 0.1, 0.0, 1.0, false); aVibration.start();
Sometimes it can be fun to make something that is distracting. Kind of reminds me of my college days. Life drawing for about 3 hours(which beats the hell out of Biology and Business lectures) in the morning and then off to do some display work at the Hitchin Post a clothing store I worked at for years. I always had opportunities to use my creative skills with display work their. You know you’ve created great display work when people ask for things out of the window. Display work also used to make retail work easy people see something like it and want to buy hence you don’t need to talk to them. It can be fun to make things interactive! People like eye-candy. Anyway exercises like these help make you a little bit more creative. At least that was the case for these well known display artists Jasper Johns and Andy Warhol. Anyway enough ranting it is Saturday night. I can’t wait until my Media Temple migration is complete and my new interactive portfolio is done. Than I can work on new projects. Ya thanks Josh and Brendan the Hype Framework is like an awesome set of paints! Cool Sites to Check Out: ABC Choose Your Own Adventure and Informatics Cool Frameworks to Check Out: PaperVision3D Hype Bookmark and Share More »Powered by Bookmarkify™
December 19 2009, 10:12pm | Comments »
-
I posted to i-create.org
The Internet == ice9 for Business
http://i-create.org/2009/12/19/the-internet-is-equal-tooice9-for-business/
Ice-nine is a fictional material conceived by writer Kurt Vonnegut in his novel Cat’s Cradle. It is supposed to be a more stable polymorph of water than common ice (Ice Ih) which instead of melting at 0° Celsius (32° Fahrenheit), melts at 45.8°C (114.4°F). When ice-nine comes into contact with liquid water below 45.8°C (which is thus effectively supercooled), it acts as a seed crystal, and causes the solidification of the entire body of water which quickly crystallizes as ice-nine. A global catastrophe involving freezing the Earth’s oceans by simple contact with ice-nine is used as a plot device in Vonnegut’s novel. – http://en.wikipedia.org/wiki/Ice-nine As technology progresses we will see more and more people using thin-client systems again. They will store data in the cloud and mobile devices will proliferate and rapidly change the landscape of personal computing small is the new big. Our cell phones will morph into powerful desktop like devices(oh and this is predictable just study
December 19 2009, 8:59pm | Comments »










