Jan27th

When Flex Builder doesn’t want to build

Nicolas Antille Flash/Flex Read on

A very short arti­cle here about a prob­lem that is not a prob­lem that still remains a problem.

Say you got a nice shiny Flex project with Locales and inter­na­tion­al­iza­tion all around. You want to trans­fer the whole project to another developer’s work­space on another machine. The tar­get has got a fresh Flex Builder install, noth­ing cus­tomized and all. You import your project within the work­space and everything’s fine EXCEPT Flex Builder starts yelling about its inabil­ity to open a Locale (in this case a Frog).

A quick google-pet-sniffing tells the poor tar­get that he has to run a script on DOS or on the Ter­mi­nal to copy a bunch of files (see Adobe labs and Herreman’s arti­cle). Fine, he’s got a French locale. So he goes on the Flex Builder again which is still yelling with a deadly cross. First thing you do : close the project and re-open it. Sec­ond : close Flex and re-open it. Third : close the com­puter and re-open it. Fourth : close the office and…(what would you do next ?)

I’ll save you a cou­ple of min­utes here. The only solu­tion is to kill the project, delete it (not the files, just the project) and import it anew. And THAT WORKS ! Don’t ask me why.

It hap­pened to us a few times, not only in this case but on some other con­fig­u­ra­tions where Flex Builder shows PTSD symp­toms and still wants to dis­play a white on red cross when everything’s fine. Here, the fact that we imported the project after the mod­i­fi­ca­tion fixed some­thing. But some­times you haven’t done any­thing like that and Flex Builder (or I’d rather say Eclipse) is stuck in a state with your project. Just cre­ate it again even if it’s a hassle.

By the way, it’s not lim­ited to the Flex Builder. Flash got sim­i­lar prob­lems some­times. Like you want to save a class and com­pile but noth­ing looks like the changes were applied, except your file IS saved. You’d have to recre­ate an .fla and it’d work.

The Answer

The Answer

That’s about the same solu­tion as kick­ing a device to make it work prop­erly again. I can’t wait to see in the next bad movie a hacker clos­ing the project and import­ing it again. “Haha look at that !”. He might not look as cool as beat­ing an engine in a spa­tial mod­ule with a wrench (remem­ber Armaged­don, that ris­i­ble movie ?) but given what you can see in block­busters, I say, why not ?

Jan16th

AIR crashes upon PDF display on MacOSX">AIR crashes upon PDF display on MacOSX

Nicolas Antille Flash/Flex Read on

Work­ing with pdf doc­u­ments is really nice now that it’s part of the work­flow of a major­ity of com­pa­nies. But the Adobe AIR team still has a lot of work ahead of them to let flash han­dle pdf. Now, the only pos­si­bil­ity we have to com­mu­ni­cate with a pdf within an air appli­ca­tion requires four platforms/languages : as3->html->javascript->pdf. No won­der there are bugs com­ing one after the other.

Toxic snow con­t­a­m­i­nates the AIR

Or is it the other way around ?

We recently put to use the fea­ture of dynamic pdf load­ing in AIR and we met a lit­tle prob­lem. If you try to open a pdf doc­u­ment within the HTM­L­Loader on a MacOSX Snow Leop­ard, your appli­ca­tion mis­er­ably crashes. I’m sur­prised I didn’t find much infor­ma­tion but a few forum threads about this.

-

Ran­dom fact n°2401 : snow leop­ards do eat any­thing you throw at them

You can read about it on google groups but you won’t find any clue to a solu­tion what­so­ever. Doing what Hit­omi Kudo from the AIR team advises doesn’t change anything.

The prob­lem either comes from Adobe air + pdf or from Snow Leop­ard. There were many changes under the hood of Snow Leop­ard. The after effects were quite sim­i­lar to the release of Vista. A lot of things didn’t work and required new dri­vers and blabla. So I wouldn’t be sur­prised Adobe didn’t see this one com­ing. — Just like Apple’s sly attempts to avoid the Flash Player on the iPhone — (sub­lim­i­nal message).

Still we’re stuck with this prob­lem and there is no way to dis­play a pdf in an air appli­ca­tion under snow leopard.

We also tried an advice on this post on the adobe forum with­out suc­cess. It basi­cally says you should add “file://” when you call a file on MacOSX.

Alpha…ville

It is only nat­ural that you would enable the alpha on your appli­ca­tion so that your rounded bor­ders or what­ever look nice. Well for­get that if you intend to use pdf doc­u­ments ! Enabling the alpha on the appli­ca­tion level is cause to so many issues that it reminds me of the “trans­par­ent wmode” beast to avoid at all cost on web­sites. This isn’t the web though. Per­haps if we shout all together at once “we want alpha”, some Adobe devel­op­ers will hear us wher­ever they lurk.

WE-WANT-ALPHA ! *pretty please !*

Überlays

To com­plete the pic­ture, we found yet another annoy­ing bug. In the same con­fig­u­ra­tion, an air appli­ca­tion with a pdf within an htm­l­loader, the htm­l­loader is mask­ing every­thing that should be on top of it. So if you have a com­bobox just over your htm­l­loader, try and click on the com­bobox and the panel which expends down will be masked, as if it were in a lesser child index than the htm­l­loader instance. What a drag.

Inte­grat­ing the PDF reader into AIR does seem to be a huge task for the amount of bugs we get with each update…

How about AIR 1.5.4 ? or AIR 2.0 ? Let us be patient.

Jan14th

3DS Max with proxies">Heaps of clones in 3DS Max with proxies

Nicolas Antille 3D/Compositing Read on

Play­ing around with a lot of meshes in Max is an easy way to crash it. The autosave fea­ture is put a lot to con­tri­bu­tion (viva autobak.max !). Same rou­tine for After Effects by the way…

In an under­go­ing project, we needed at some point an array of 96*16 (not a zil­lion) meshes, sim­ple ones as they are. So I hap­pily used the Array tool, cloning en masse. As Max started to cough, I saw a repet­i­tive pat­tern of the pre-crash effect. Noth­ing I could do to save him. And even when there was no crash, the UI was utterly slow.

Purokushi

I lookep up solu­tions about han­dling lots of meshes at once and I found mrProxy to be exactly what I needed. This arti­cle on cgso­ci­ety talks about the new fea­tures of Max 2010 and shows a lit­tle what you can do with mrProxy and huge forests in archi­tec­tural ren­ders. It is def­i­nitely a great thing like the Archi­tec­tural Mats and Pro Mats that the arti­cle men­tions. The thing is how­ever, prox­ies are noth­ing new. I don’t really know why they talk about it as a new fea­ture here. Per­haps the fact it is “new” is that it is shipped with Max…

If you’re on VRay, there are also vRayProx­ies but let’s talk about Men­tal Ray Prox­ies here.

Gen­er­ally speak­ing, a proxy is a kind of por­tal, a gate­way you must pass through in order to use some resource or pro­duce something.

In net­work­ing that’d be to use a con­nec­tion with the advan­tage of secu­rity and dis­ad­van­tage of slower speed depend­ing on where your proxy is phys­i­cally located.

In pro­gram­ming, a proxy is often thought as a design pat­tern and imple­mented as a com­mu­ni­ca­tor with some data source for instance, you don’t deal directly with the data source but use prox­ies instead.

Metal type models in typography

Metal type mod­els in the early print­ing, a proxy you can take in your hand !

In 3D, there are sev­eral kinds of prox­ies too. By default, Max has a bitmap proxy fea­ture in the ren­der­ing options but let’s talk about mrProxy which is here an object like any other you can use on your scene.

mrProxy is a tem­po­rary replace­ment for your mesh on the scene. That helps to save some pre­cious mem­ory that men­tal ray won’t feed upon, hun­gry as it is.

What the proxy does is, it rep­re­sents your model with a cloud of ver­tices, not too many so as not to slow the Max UI and you han­dle it in place of the real model. So you can repli­cate thou­sands or more instances of the mrProxy and Max is less of a slug.

Meshes, unite !

A few things to note. A Proxy by default doesn’t have the same mate­r­ial as the model, it doesn’t have any in fact. You might want to shift tex­tures from one proxy to another to make them look dif­fer­ent. Don’t worry about your uvw map­ping and mate­r­ial ids, they’re all work­ing as if it were the real model. So you can apply the same mate­r­ial from the model to the proxy with­out worries.

Now a very impor­tant thing : you can’t make a proxy out of a group or what­ever con­tainer it might be. That’s too bad and it will force you to clone your model and make it into one sin­gle mesh. For­tu­nately, Max han­dles the mate­r­ial ids pretty well.

Another thing you might won­der, prox­ies work with any kind of mesh, nurbs comprised.

So if for instance you have two multi-sub mate­ri­als, each made of sev­eral mate­ri­als, you’ll often have two series of mate­r­ial ids start­ing from 1. Let’s say you got a model of a human cyborg whose left arm is a robot, the rest is all weak human flesh. For some rea­sons, you have made the human as a poly and the robot arm as a nurbs. Either you’ll choose to make two prox­ies, for the body and arm, or you’ll con­vert the nurbs mesh to a poly mesh and attach it to the body.

Then you got a “human” multi-mat made of

  1. skin
  2. eyes
  3. mouth

And another multi-mat, say “cyborg”,

  1. shiny metal
  2. plas­tic

There’s obvi­ously a mate­r­ial id con­flict if you are to merge your meshes together.

If you’d want to make a sin­gle mesh out of all this, you’d first clone the whole joe, turn the poly into a mesh and attach the robot arm to the flesh body. Max in all his wis­dom would then ask you how you want to man­age the mate­r­ial ids, the first option is your best choice as it will reas­sign the mate­r­ial ids of, say, the robot arm so that the parts of the arm whose mate­r­ial ids are 1 don’t look like skin.

Here’s a sam­ple gen­gon in action with two mate­ri­als. The red ver­tices are the mul­ti­ple proxy clones.

Proxy model

Dol­lies

When your base mesh is ready, you only need to write it onto an exter­nal .mib file using this panel below.

To access it, you need to cre­ate a new mrProxy instance and place it on the scene.

Proxy panel

The mrProxy panel

After the file browser, you’re prompted with these parameters.

mrProxy write to file box

mrProxy write to file box

In still mode, you need to write only one tem­po­rary file that your proxy will refer to. If you want your proxy to repli­cate some kind of ani­ma­tion, you’ll need to write all the animation’s frames into tem­po­rary files. So yes, you’ll have to update your prox­ies if you decide to mod­ify the ani­ma­tion of the model.

Ver­tex and topol­ogy ani­ma­tions are sup­ported by mrProxy so that cov­ers most of your needs.

I observed a lit­tle prob­lem with the scal­ing of imported meshes. It doesn’t hap­pen all the time and is in fact quite rare but if you don’t see your proxy either in the UI or in the ren­der, it’s often because of a too low scale value in the proxy.

So here’s what it looks like, hav­ing many proxy instances of your mesh on the scene. Looks messy but at least it’s fast in the UI.

Proxy vertices cloud

Ver­tices cloud of your replicas

All this ren­ders at a decent speed, it’s a mat­ter of a few min­utes with the default men­tal ray params.

Proxies render

Ren­dered proxies

What’s more ?

A list of some scripts that might or might not help you on scriptspot.com

A nice util­ity called Proxy Painter on 3rdpole.com, it works both with VRay and Men­tal Ray.

A good intro to mrProxy is avail­able on hagerman.com.

Dec30th

AS3">Sound spectrum visualizer from a NetStream in AS3

Nicolas Antille Flash/Flex Read on

We recently had to work on some sound spec­trum in AS3 for DJ ANDY’s new web­site and the idea was to use the RSS feed of his exist­ing iTunes pod­cast on the infa­mous m4a for­mat. Here I found out a silly thing. You can’t load any­thing else than mp3s in a Sound instance. I know the sound geeks will cru­cify me but it’s like the old Flash who could only load some jpeg images and was unable to load pngs. Every­thing looks com­pli­cated when it comes to the Sound.

Any­way, I fig­ured I’d use a Net­Stream to load the m4a song. My google pet told me there were other help­less peo­ple ask­ing how to pull a Sound­Chan­nel out of a Net­Stream but it doesn’t seem to be the way to do it.

The answer is rather sim­ple but its imple­men­ta­tion is a bit weird :

var ba:ByteArray;
//computeSpectrum(output:ByteArray, FFTMode:Boolean=false, stretchFactor:int=0)
SoundMixer.computeSpectrum(ba);

Basi­cally you’ll need to start the usual Net­Con­nec­tion and Net­Stream stuff, grab your song and lis­ten on ENTER_FRAME events to ana­lyze the sound spec­trum with this method.

Here’s what the doc says about it :

Takes a snap­shot of the cur­rent sound wave and places it into the spec­i­fied ByteAr­ray object. The val­ues are for­mat­ted as nor­mal­ized floating-point val­ues, in the range –1.0 to 1.0. The ByteAr­ray object passed to the out­putAr­ray para­me­ter is over­writ­ten with the new val­ues. The size of the ByteAr­ray object cre­ated is fixed to 512 floating-point val­ues, where the first 256 val­ues rep­re­sent the left chan­nel, and the sec­ond 256 val­ues rep­re­sent the right channel.

If you want to use this bytear­ray as a source for a spec­trum visu­al­izer, you’ll have to exper­i­ment doing some maths and bit­wise cal­cu­la­tions, all that in some loops. Using ba.readFloat() will give you the next value in the byte array. So your loop will likely per­form 512 (or 256 if you only want one chan­nel) iter­a­tions to use all the val­ues of the spectrum.

This method of ana­lyz­ing the sound spec­trum on the fly has two major weaknesses :

  1. if you got mul­ti­ple sounds play­ing, you can’t tell them apart with this method as it gives you a spec­trum for all the sounds together.
  2. if you intend to use it for seri­ous sound appli­ca­tions, you’ll want to enable FFT (using a Fourier trans­for­ma­tion) and the cal­cu­la­tion will gen­er­ate a notice­able lag, mak­ing your ana­lyzer appear unsyn­chro­nized, late.

Luck­ily for us and in most appli­ca­tions, the sound spec­trum is meant as a visual enter­tain­ment, noth­ing more.

There’s a very good sam­ple on todaycreate.com with insight­ful com­ments in case you don’t really know where to start.

Addi­tional and detailed expla­na­tions are avail­able on the Flex 3 lan­guage ref­er­ence.

A great thing how­ever, is the way you can get a lot of infor­ma­tion on an m4a input. There are three events cur­rently supported :

  • onText­Data gives you the cur­rent text of the play­ing m4a. It could be any­thing and in our case it’s the name of the cur­rent track.
  • onIm­age­Data gives you the cur­rent image of the pod­cast. Just like the texts, the image can change if your pod­cast got chapters.
  • onMeta­Data is impor­tant to get the dura­tion of the stream. Addi­tion­ally, the event object tells you of a lot of things about the stream like the sam­ple rate, the chan­nels, the tags, etc.

Depend­ing on how the m4a is doc­u­mented by the pod­cast cre­ator and the soft­ware one’s using, you could even chap­ter­ize a pod­cast in order to get some­thing sim­i­lar to cue points in the chap­ters prop­erty in the meta­data. You won’t get every­thing you want though. I would have appre­ci­ated to get a list of all the text data and their seek time but you can’t get them before­hand. You must play the stream in order to get the events one by one so if you really need a list of the “text points” (they aren’t cue points), you’ll have to make one manually…

Dec18th

3DS Max">Solidworks or ProE to 3DS Max

Nicolas Antille 3D/Compositing Read on

In an under­go­ing project, we were required at some point to use 3d objects made in ProE by another com­pany closer to CAD engi­neer­ing. So we obtained some .stp (STEP) files which, indeed, can­not be imported by the stan­dard max (even max 2010) importers. Big deal. Well it sure is !

I thought I’d make it a post as I haven’t found deci­sive infor­ma­tion on the net.

So we had a few choices :

  1. export to another exchange for­mat like .igs (set to NURBS at export-time)
  2. play your luck with an .stl (stere­olitho file)
  3. bet your money on a plu­gin that will take care of the import of the STEP

In the end, it all comes down to two main ideas :

  • either work with nurbs
  • or con­vert them into poly meshes with a lot of faces to match the curves

Just to make it clear, in CAD, mod­els are based on splines, b-splines and all the joy­ous fam­ily. 3DSMax and Maya have always sucked at han­dling nurbs. Isn’t that great ?

Now, you don’t have to read all that’s writ­ten below if you haven’t had prob­lems before. The best way to have a proper model from CAD is to han­dle it in nurbs. If pos­si­ble at all, avoid con­vert­ing it to a poly mesh because most likely, it will lack some faces  here and there and what’s more, the tes­se­la­tion will dam­age the look of the curves of your orig­i­nal model. Addi­tion­ally, con­vert­ing the nurbs model to a poly mesh won’t make it any faster to manip­u­late in the 3D UI and the wire­frame of a nurbs model looks much sim­pler than with a poly mesh.

1. IGS and the likes

IGS is sim­i­lar to STEP as they are both based on curves. The lat­ter is a bit bet­ter as it keeps the hier­ar­chy and orig­i­nal names of the objects, which is a handy fea­ture when you got com­plex mod­els. I can’t pro­vide you with screen­shots here as the guy from the CAD com­pany (too) early dis­missed IGS as being a hin­drance in Maya (even though in this case we’re on Max…). Nev­er­the­less, the point is not about the for­mat itself but about the kind of model you get. IGS is a good option if you don’t want to use a STEP importer though I haven’t been able to import a test model to see if there could be some com­pat­i­bil­ity issues or things that might make your dear Max go haywire.

2. Stere­olitho

Talk about stere­olitho and you look like the pro­fes­sional out there. Shorts for stere­olith­o­g­ra­phy, it is just a “3d print­ing” tech­nique that uses lay­er­ing of resin cut by lasers to shape an object. An importer exists for this for­mat in Max so why not try it ?

From what I found here and there, infor­ma­tion was a bit con­tra­dic­tory. Some peo­ple posted tuto­ri­als about how to import IGS files with­out say­ing any­thing about would-be prob­lems and some other peo­ple talked about how you’d bet­ter stick to stere­olitho exports (rav­ing about the so-called “chord height”). Import­ing files from Solid­works or ProE to Max seems as obscure as back alley in the out­skirts of a big city by a freez­ing night.

Let’s take a sam­ple, a tuto­r­ial from the year 2000 (I haven’t found many of them which look recent) called “Solid­works to 3DSMax”. The tuto­r­ial is all nice and easy but when you get to the last part, the ren­der­ing that is, you may be dis­ap­pointed a lit­tle. If you look at the reflec­tions and refrac­tions on the tyre, you’ll notice some jagged, unnat­ural reflec­tions. Not good.

But noth­ing beats doing it your­self. So did I. The model was slightly more com­plex than the wheel in cadmonkey’s tuto­r­ial and look at the result :

proe-stl-yuk

STL input with the stan­dard Max importer

Eewww. The poly mesh has more than 70000 faces but it’s all ugly. This export was done using a chord height of 0.2 mm (around 0.008″), all the other para­me­ters are the same as in the monkey’s tuto­r­ial. Even with the “coarse” export option, you could believe that you’d only have to apply a tur­bosmooth (or meshsmooth) once the “low­poly” is imported in Max BUT it is not so easy. If you do that, you will have to set man­u­ally every smooth­ing group on your mesh and the final model will look dif­fer­ent than the one made in sur­faces because you can­not rely on a meshsmooth to make the same curves as the orig­i­nal surfaces.

By the way, there’s a very pow­er­ful trick to increases the amount of faces in your mesh while smooth­ing it slightly. It’s an option con­cealed in the Pro­Boolean mod­i­fier (made by…nPowerSoftware) called the Quad Tes­se­la­tion. Here’s what it looks like applied to the ugly mesh above :

proe-stl-better

Attempt to fix the STL import

You can still see some bizarre cuts on the bor­ders of some curves and holes so this trick isn’t enough to cor­rect the bad tes­se­la­tion I had to begin with.

Per­haps STL is fit for CAD model print­ing but it’s bet­ter to look for another exchange for­mat in this case.

3. Plu­g­ins at your service

From this point on, we’re look­ing at com­mer­cial solutions.

The main soft­ware com­pa­nies who are into import/export plu­g­ins for Max (and Maya) are nPower Soft­ware and Okino. From an outsider’s per­spec­tive, nPower looks more pro­fes­sional with their web­site but also ten times as much expen­sive as Okino’s solu­tion. I can’t help but notice Okino’s web site fea­tures about all the kinds of bad clichés in web design with the fonts, the old 1999 pho­to­shop effects *bow to the bevel fil­ter*, kind of “geek wel­come for math lovers”. That aside, it isn’t nec­es­sar­ily rep­re­sen­ta­tive of the qual­ity of their soft­ware at all.

3.1. nPow­er­Soft­ware plugins

If you install both nPower Power Trans­la­tor Pro and Okino Poly­trans plu­g­ins for Max (v. 2010 here), you’ll notice a slight dif­fer­ence in the way you have to import a model. With Power Trans­la­tor, it’s quite easy, you go to File > Import > Import and in the drop down list there’s a few extra for­mats han­dled by npwr.

npower-step-translator

nPower Trans­la­tor STEP importer panel

Upon choos­ing your STEP file, you get a lit­tle con­fig menu and what is really cool with this plu­gin is that it’s not lim­ited to an import pro­ce­dure. It adds a mod­i­fier on top of all the imported mod­els with a ton of cus­tomiz­able para­me­ters so you really have con­trol of the model you import. Can’t do bet­ter than that for now.

npower-nurbs

nPower Spe­cial Nurbs modifier

Look at the smooth and clean result !

proe-stp-shaded

Shaded view of the imported STEP model — nPowerSoftware’s Trans­la­tor Pro

proe-stp-wireframe

Wire­frame of the imported STEP model — nPowerSoftware’s Trans­la­tor Pro

3.2. Okino’s plugins

Okino Polytrans’s way of import­ing is less sim­ple. The way the plu­gin works is kind of old-fashioned (like their site, aw… for­give me). You have to go to the util­ity panel and load the Poly­trans I/O. Then you got a big list of var­i­ous for­mats and as soon as you select one, a browser pops up, ask­ing for a file. So you feed the lit­tle ani­mal with a STEP file and another panel appears with two main options : begin­ner or expert mode. A good thing because the “chord height” and such terms could scare some peo­ple who aren’t into CAD. The prob­lem is, even when you boost things and ask for the best qual­ity for the import, I ended up with a poly mesh that looks like our so-called swiss cheese, the holes look­ing a bit triangular…

Blue cheese - stereolitho import as a triangle mesh

STEP cheesy import — Okino Poly­Trans plugin

I gave it sev­eral attempts and even used the built-in import of raw ProE mod­els which lead nowhere.

More blue cheese - this time a ProE import

ProE “scratched” import — Okino Poly­Trans plugin

I even tried to import the infa­mous stere­olitho model…

STEP import with the Okino plugin

STL garbage — Okino Poly­Trans plugin

Per­haps Okino should increase their pric­ing in order to pro­vide a truly func­tional plugin…I do hope that other peo­ple had a bet­ter expe­ri­ence with this plu­gin than I had.

Another solu­tion would be to use the 3D stand­alone soft­ware Poly­Trans, load the exported model into it, re-export into another for­mat like .obj or .fbx and load all that into Max. Not viable in my opinion.

4. Con­clu­sion

The huge dif­fer­ence between nPower’s way and Okino’s way is that the for­mer uses Nurbs and the lat­ter con­verts every­thing to poly meshes so it is more prone to errors. This case isn’t rep­re­sen­ta­tive of all cases so it might hap­pen to you that Poly­trans is a good tool. Here, it just doesn’t do the job.

No sur­prise here, nPowerSoftware’s plu­g­ins stand out in terms of qual­ity. The down­side to all this is the cost of the solu­tion : between $1000 to $3000 if you need Power Trans­la­tor Univ. That is how­ever the best solu­tion avail­able right now for Max and it is avail­able for Maya as well.

Dec1st

Noir ignition

Nicolas Antille Noir Mat Read on

Our year-long silence on this blog and slow evo­lu­tion of our web­site could be the signs of yet another com­pany going down for some mys­te­ri­ous causes. To begin with, we had some “extra pro­fes­sional activ­i­ties” like stud­ies and army duties, the lat­ter being absolutely incom­pat­i­ble with hav­ing a job. In Octo­ber we became free to fully ded­i­cate our­selves to Noir Mat.

After three years of steady growth, we’re now able to go full speed ahead.

We have there­fore moved in our new office in the cen­ter Le Flon of Lau­sanne. What’s more, we’ve recruited an exper­i­mented graphic designer, Julien Palmilha, and we expect to grow our staff steadily over the com­ing years.

Among a lot of inter­est­ing projects, we’re work­ing on our new web­site. Unlike the cur­rent one, it will fea­ture all our ref­er­ences, prod­ucts and doc­u­men­ta­tion. Noth­ing fancy or unseen before. This is sim­ply a nec­es­sary step.

From now on, we will also keep this blog alive as we have much to share with the community.

2010 is going to be dyed in Noir.

Nov29th

Thermo turned to be a Catalyst

Nicolas Antille Flash/Flex Read on

Nei­ther Ther­mo­stat nor Ther­monu­clear, just Thermo. Adobe Thermo. A weird name for a prod­uct that many have been wait­ing for. It was intro­duced at Adobe MAX Chicago in 2007 but apart from a few screen­shots and one or two videos, it was hard to find detailed infor­ma­tion about this “upcom­ing” soft­ware.

At that time, Sean Cor­field wrote a good sum­mary of Thermo.

Start­ing with a Pho­to­shop PSD file, Thermo imported this and con­verted it to MXML. Design ele­ments can then be selected and with a sim­ple right-click they can be con­verted from art­work to Flex con­trols. The auto­matic infer­ence of design-time data sets so you could test UI inter­ac­tions with “real” data was very impressive.

Mark Anders, vice pres­i­dent of engi­neer­ing for Adobe, also told this.

Thermo, which is in the early stages of devel­op­ment, is built on the Flex Builder devel­op­ment envi­ron­ment, a tool the com­pany already offers to help bridge the gap between devel­op­ers and design­ers. Flex pro­vides work­flows devel­op­ers can rec­og­nize to ren­der visual parts of the appli­ca­tion so it’s eas­ier for them to add visual ele­ments to an RIA. Design­ers using Thermo don’t have to write code for their appli­ca­tions, but they can choose to view the source code and see it in a Flex Builder edi­tor that they can work with if they want to, Anders said.

Rejoice (should we ?) for it is called Thermo no more. From now on, it’s Adobe Cat­a­lyst. The name isn’t bad con­sid­er­ing it will speed up project devel­op­ments (hopefully !).

Wait­ing for the release, you can already drool over the video that Adobe pub­lished on their Labs web­site.

As it seems focused on Flex, I won­der what will become of Flash itself as Cat­a­lyst will fill the gap between graphic design­ers and flex devel­op­ers but not between graphic design­ers and flash developers.

An early release of Cat­a­lyst was avail­able to those attend­ing MAX at San Fran­sico but it’s still gone pub­lic. You can signup on Labs if you want to be noticed of the release.

For more con­crete sam­ples, go take a look at the Cat­a­lyst team blog.

Jul6th

Google Search reaches out to Flash content

Nicolas Antille Flash/Flex Read on

In my pre­vi­ous arti­cle about RIAs and SEO, I talked about a solu­tion to expose HTML pages through XSL trans­for­ma­tion of dynamic con­tent. I also men­tioned an attempt of Google to crawl Flash con­tent, inef­fi­cient as it could only read sta­tic data. Well now the sit­u­a­tion evolved and looks very promising.

Adobe, with it’s recent “open mania”, has lifted the SWF (and FLV) for­mat spec­i­fi­ca­tions and cre­ated the Open Screen project on the fly to help Adobe increase the Flash Player embed­ding into var­i­ous devices (any­thing with a screen basi­cally). Fol­low­ing this, Adobe has been work­ing in coop­er­a­tion with Google in order to make Flash more index­able by search engines.

Pros

Google was given a spe­cial ver­sion of the Flash Player so that its index­ing robots could retrieve data directly from a SWF. The player just behaves like a stan­dard human user and accesses data, writes it in a com­pre­hen­sive robot-language and gives it back to the robot. So Google­bot is now able to crawl dynamic data !

Soon Yahoo will fol­low in the ven­ture and prob­a­bly other ven­dors as well.

Here are a few arti­cles you’ll want to read :

Google sums it up with this short news :

Now that we’ve launched our Flash index­ing algo­rithm, web design­ers can expect improved vis­i­bil­ity of their pub­lished Flash con­tent, and you can expect to see bet­ter search results and snippets.

Cons

Ron Adler and Janis Stip­ins from Google relieve the designers :

Basi­cally, you don’t need to do any­thing. The improve­ments that we have made do not require any spe­cial action on the part of web design­ers or web­mas­ters. If you have Flash con­tent on your web­site, we will auto­mat­i­cally begin to index it, up to the lim­its of our cur­rent tech­ni­cal ability.

So they say. Oh wait. Per­haps it’s not that sim­ple. There are two impor­tant prob­lems. Ron and Janis said there are still three tech­ni­cal lim­i­ta­tions, two of them being the following.

1. Google­bot does not exe­cute some types of JavaScript. So if your web page loads a Flash file via JavaScript, Google may not be aware of that Flash file, in which case it will not be indexed.

If you’re a Flash designer, you’ll imme­di­ately think of SWFOb­ject which is actu­ally based on Javascript. Lots of Flash web sites use it. We don’t know whether it is of a type that won’t be exe­cuted by Googlebot.

2. We cur­rently do not attach con­tent from exter­nal resources that are loaded by your Flash files. If your Flash file loads an HTML file, an XML file, another SWF file, etc., Google will sep­a­rately index that resource, but it will not yet be con­sid­ered to be part of the con­tent in your Flash file.

It is a major prob­lem because a lot of Action­Script devel­op­ers use a light SWF files that loads the rest of the appli­ca­tion on demand. Sec­tions are often bro­ken down into sev­eral mod­ules, some­times meant for re-usability (an Object Ori­ented convenience).

Search­a­bil­ity

Andrea Hill wrote some inter­est­ing thoughts on this topic.

Another major chal­lenge in open­ing appli­ca­tions up to search is being able to direct the searcher to the rel­e­vant sec­tion within the experience.

I couldn’t agree more with that. There is a huge dif­fer­ence between RIAs and HTML in that the RIAs aren’t acces­si­ble auto­mat­i­cally, you have to decide what is to be acces­si­ble. Adobe’s answer is in the SWF Search­a­bil­ity FAQ (listed above) :

To gen­er­ate URLs at run­time that reflect the spe­cific state of SWF con­tent or RIA, devel­op­ers can use Adobe Flex com­po­nents that will update the loca­tion bar of a browser win­dow with the infor­ma­tion that is needed to recon­struct the state of the application.

For com­plex sites that have a finite num­ber of entry points, you can high­light the spe­cific URLs to a search spi­der using tech­niques such as site map XML files. Even for sites that use a sin­gle SWF, you can cre­ate mul­ti­ple HTML files that pro­vide dif­fer­ent vari­ables to the SWF and start your appli­ca­tion at the cor­rect sub­sec­tion. By cre­at­ing mul­ti­ple entry points, you can get the ben­e­fits of a site that is indexed as a suite of pages but still only need to man­age one copy of your appli­ca­tion. For more infor­ma­tion on deep-linking best prac­tices, visit www.sitemaps.org/faq.php.

With all this in mind, it is not safe yet to think Flash web sites will be indexed eas­ily. Google is already work­ing on the lim­i­ta­tions of the Google­bot and I’m look­ing for­ward to hear­ing news of their progresses.

Jun22nd

Are you Singularity ?

Nicolas Antille Flash/Flex Read on

What is Sin­gu­lar­ity ? It is a (huge) web con­fer­ence, sched­uled on Octo­ber 24–26, 2008. This event is orga­nized by Aral Balkan, an active fel­low in the Flash com­mu­nity, and he’s plan­ning to gather thou­sands of peo­ple for this large-scale video stream­ing con­fer­ence. The speak­ers list is already impressive.

Update on 23 July 2008 : “Reserve your tick­ets today. Early-bird tick­ets to Sin­gu­lar­ity are just $99 USD (inc. VAT) until the end of August.”

Singularity sneak peek

A site teaser has been released some days ago on Google app engine. As Aral wrote :

You can sign up for the site, which will go live in July, and reg­is­ter your inter­est in the conference[…]

Even though it’s a web con­fer­ence, it does not mean it’ll be free. The atten­dees will have to buy tick­ets that will be on sale on July 1, 2008 with the launch of the new site. The pric­ing is still unknown but Aral said it’s afford­able.

Can’t make a cer­tain ses­sion? No wor­ries, it’s all recorded. And atten­dees have exclu­sive access to the ses­sions for six months, at which time the record­ings for the 2008 con­fer­ence will be released under a Cre­ative Com­mons license for the ben­e­fit of all and to form a time cap­sule defin­ing Web ’08 as pre­sented by our amaz­ing line-up of speakers.

If you want to hear some words of him, the Télévi­sion Suisse inter­viewed Aral while he was attend­ing the LIFT con­fer­ence some months ago.


Jun18th

3D engines for Flash">3D engines for Flash

Nicolas Antille Flash/Flex Read on

I’ve been fol­low­ing from afar the pro­gresses in 3D engines for Flash for some years. Recently I wanted to dive in the Z dimen­sion, be it fake nev­er­the­less. So here’s an overview of the cur­rent situation.

The good

Per­for­mances

Until the likes of Paper­vi­sion, dynamic 3D ren­der­ing was rarely used in Flash web­sites. The lat­est Flash Play­ers brought some con­se­quent changes upon pro­cess­ing speed. Hence it allowed some 3D engines with rea­son­able per­for­mances to peek their nose in the community.

3D engines give an extra dimen­sion to cre­ativ­ity, though they aren’t fit for com­plex scenes yet. Even the Alter­na­tiva engine has its lim­its, those of the Flash Player. It’s been a few years since the com­mu­nity asked for hard­ware sup­port so that we can get rid of some slow per­for­mances. Well, with the Flash Player 10, you will be able to choose dif­fer­ent dis­play modes like nor­mal, direct and GPU. You have to be very care­ful if you decide to set the GPU mode.

These modes in gen­eral should be con­sid­ered still in beta, there may be a lot of bugs until pos­si­bly Flash Player 11 so use caution.

This quote is by Jody Brew­ster who gives some pre­cious Flash Player 10 GPU accel­er­a­tion tips on his blog.

Gimme the sources

Most of the 3D engines in Flash are free, both for per­sonal and com­mer­cial use. And most of them are open source (except Alter­na­tiva, to my knowledge).

The bad

Looks

3D engines also mean an extra dimen­sion of com­plex­ity, and increased risks to make bad visual designs. This can lead to an “UGH” fac­tor where the 3D looks either dull or slow or complicated.

It usu­ally holds true that the big­ger the scene, the slower and lag­gier. Same goes for details and the amount of objects on the scene. Your bitmaps may also look very jaggy or ali­aised so you will loose the “smooth” graph­ics fac­tor. You can always try to make up with nice 3D motions.

Do not expect your 3D to look as smooth as a 3D video ren­der from a soft­ware like 3DSMax. Depend­ing on the engine, you might as well endure back­face culling prob­lems, basi­cally mean­ing some poly­gons of your 3D object won’t show up when sup­posed to do so.

Flash 3D display problems

In the image above, you can see a part of msnbc Spec­tra. You can eas­ily dis­tin­guish that the text on the vio­let panel is weirdly dis­torted with the Paper­vi­sion engine. The “wow” effect is here but this visual bug makes it a lit­tle less impres­sive. FIVe3D would have been com­mand­able here as it dis­plays fonts using the vec­tor API of Flash. That “detail” aside, Spec­tra is still a very nice exam­ple of a good 3D user interface.

Update on 23 July 2008 (by Seb) :

The rea­son for that dis­tor­tion is that the Flash­Player can only per­form skew trans­for­ma­tions on bitmaps; in order to get any kind of 3D stretch we need to resort to using this hack.

Things are how­ever improved with Flash­Player ver­sion 10 — we now have the abil­ity to do proper 3D per­spec­tive stretch­ing on bitmaps, and so this hor­ri­ble dis­tor­tion should be a thing of the past.

Overkill

You have seen it com­ing, why not build 3D Flash ban­ners ? A 3D engine (in activ­ity) con­sumes a lot of CPU power. Think twice before going all out with a super-3d-banner-of-the-death which plays con­tin­u­ously heavy 3D stuff. Who said com­mon sense ?

Hack and slack

In the end, Flash is still not ready for 3D. The Z dimen­sion is now afford­able thanks to the devoted work of some flash­ers but their engines are built on a weak plat­form, that is the Flash Player. It still can­not han­dle bitmap pro­cess­ing quickly, which is the biggest bar­rier to 3D. Alex Cove (author of the 2D physics engine APE), asks “does it always have to be a hack ?” truth­fully. Is Adobe wait­ing for some mir­a­cles from the com­mu­nity to move on to 3D ? Flash Player 10 is a begin­ning to this but it doesn’t even include Z-sorting so you end up doing it manually…You end up tak­ing Away3D and wait­ing for the Flash Player 11 patiently.

Still, Adobe has been lis­ten­ing a tad bit to the community’s requests (busi­ness obliges), as Macro­me­dia did in the past. Changes like that take some time, espe­cially for the Flash Player which wasn’t meant for 3D in the first place.

3D real time engines

Sandy

Sam­ple : Telenor Body Lan­guage, Sandy demo

Orig­i­nally, the project had sev­eral mem­bers but it is bit of a run­down now, with only one mem­ber left, Thomas Pfeiffer.

Sandy is not to be over­looked how­ever. It’s the first open source 3D engine and it has some very pow­er­ful fea­tures with light rendering.

Paper­vi­sion

Sam­ples : Audi Rhythm of lines and msnbc Spec­tra

Paper­vi­sion rose with a bet­ter com­mu­ni­ca­tion and is backed by some noto­ri­ous Flash per­son­al­i­ties. All that Sandy didn’t have.

It’s by far the most famous of the 3D engines avail­able, and one of the most com­plete too. It is avail­able at ver­sion 1.5 on the blog’s down­load links. The next Paper­vi­sion 2, called Great­White, is in beta cur­rently and only avail­able on SVN repository.

Away3D

Sam­ple : Fifa Street 3

It is con­sid­ered as an exten­sion of Paper­vi­sion, though the two authors had to rewrite a lot of the base classes. The project is hosted on away3d.com.

Away3D still lacks doc­u­men­ta­tion a lot. From what Rob Bate­man said, this will be solved soon.

As announced in an arti­cle on Papervision’s blog, Away3D is planned to merge with Paper­vi­sion Great­White. Update on 12 July 2008 (thanks Seb) : Paper­vi­sion has by now inte­grated a part of Away3D’s fea­tures. Both projects are still on going.

Fifa Street 3

WoWEngine

Sam­ple : tech­ni­cal demo

Jerôme Birem­baut devel­opped the WoWEngine and nicely made it avail­able to every­one on his blog.

This engine is very inter­est­ing because it mixes some bases of Sandy with an exten­sion Jerome wrote of the 2D physics engine APE. The result is a 3D engine with physics fea­tures like col­li­sions, cloth and rope sim­u­la­tions to name a few.

It is very likely you’ll use this engine if you want both 3D and physics inter­ac­tions within your application.

Alter­na­tiva

Sam­ple : 3 demos on their web­site.

This engine is a killer. It is devel­opped by a russ­ian team. They’re invited at the com­ing Adobe MAX at Milan, in decem­ber (2008), one extra rea­son to attend this huge event.

Alter­na­tiva has been pub­licly released but it is free for per­sonal use only. Licences must be pur­chased for com­mer­cial use. You should take a look at what this engine can do. One word for them : Отлично !

FIVe3D

Sam­ples : FIVe3D home­page itself which includes 5 samples

Math­ieu Badi­mon wrote a small 3D Engine as “an open source code for the con­cep­tion of inter­ac­tive vector-based 3D ani­ma­tions”. The FIVe3D home­page is a good imple­men­ta­tion of the engine.

This engine relies upon the Flash Player to han­dle vec­tors, rather than bitmaps with the afore­men­tionned engines.

One of its strengths, aside from being very light (10KB), comes from the way the engine han­dles fonts. With FIVe3D, you can use any font you want to any size with­out barely any ali­ais­ing or ugly text arti­facts you might see in Paper­vi­sion. A good choice for titles and head­ers. The lit­tle short­com­ing to this is that you have to use addi­tional font data (stored as an AS3 class). It is for­tu­nately gen­er­ated auto­mat­i­cally by the tool Math­ieu pro­vided on the FIVe3D web site but it still weighs around 50KB for sim­ple fonts.

FIVe3D render sample

Update on 23 July 2008 (thanks Seb, again) : attempt­ing to ren­der a lot of text with FIVe3D will result in a fram­er­ate drop due to the heavy cal­cu­la­tions that the vec­tors imply for the Flash Player.

What engine shall I pick for my project ?

You don’t nec­es­sar­ily have to choose only one 3D engine. You can eas­ily use mul­ti­ple engines, each for a dif­fer­ent use. This point was dis­cussed last month at the AUGG (Adobe User Group of Geneva) meet­ing about real time 3D engines.

So for instance you could make some intro with large titles with FIVe3D, then dis­play some sim­ple tex­tured objects with Paper­vi­sion and con­straint them phys­i­cally with WoWEngine. Even among the sam­ples listed above, there are cer­tainly some cases where sev­eral engines were used together.

Not to men­tion many projects don’t rely on sole 3D but also blend some videos of 3D ren­ders as you can see in the Fifa Street 3 sample.

Can I import 3D models ?

Yes you can. Sandy, Paper­vi­sion and Away3D can import Col­lada files to dis­play com­plex meshes (read less sim­ple than just a sphere or a few boxes).

Some 3D soft­wares can’t export do not have a built-in exporter for Col­lada files yet. If you want to export using this for­mat, you’ll cer­tainly find some free exporters since Col­lada is an open stan­dard based on XML.

Another pos­si­bil­ity is to use the AS3 Geom Class Exporter either for 3DSMax or Blender. It will gen­er­ate .as files and the advan­tage is that the engine won’t have to parse the file since it’s Action­Script already.

Isn’t Flash CS4 going to wipe out those engines ?

No it isn’t. If ever Adobe adds a fully fledged 3D plat­form within the Flash Player, the 3D engines of then will adapt and make use of its new ben­e­fits. Some engines like FIVe3D might be in direct chal­lenge with the next Flash CS4 fea­tures. How­ever I don’t think Flash CS4 will be released before late 2008 and it’s not even sure if the so-called “3D” fea­tures will be as easy to use for coders as what’s avail­able cur­rently through open source projects.

Is it worth it to go 3D finally ?

With­out a doubt, yes it is ! Just imag­ine : you can dynam­i­cally ren­der basic 3D. For instance, the amount of Cov­er­Flow com­po­nents for Flash/Flex has exploded thanks to those 3D engines listed above. A proof that sim­ple and effec­tive UIs are also rel­e­vant in 3D sometimes.

And it is not lim­ited to com­mer­cial enter­tain­ment web­sites at all. Embed­ded user inter­faces are yet another mar­ket you can tar­get. The InteliSea appli­ca­tion pre­sented last year at MAX 2007 includes some sim­ple 3D to dis­play the sea state for a boat. Another proof you can make “seri­ous” appli­ca­tions with 3D (and some­times it might be mandatory).

I will talk in a fur­ther arti­cle about GIS (Geo­graphic Infor­ma­tion Sys­tem) and 3D with Flex. It’ll be a nice follow-up.

Monthly Archives

Calendar

  • March 2010
    M T W T F S S
    « Jan    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  

Categories