Hi jbradly,
thanks for your comments.
The whole process isn’t using any real benefits of the Flash Player for the interactive content
Could you perhaps explain what you mean with this? I personally think that this project actually does use the benefits of Flash, being easy user interaction with content. I don’t think that something has to be technically advanced to be able to work.
The panorama things you mentioned are definitely interesting, I’ll do some research on that. I agree that for a ‘look around’ type of viewer my method isn’t the most efficient.
One thing that it does have as a pro is that there are no distortions, but that is just a minor pro I think.
Considering the single object spin:
Even though the real flash 3d product you name are very interesting indeed, I personally think that they lack one thing: performance. Doing real 3d stuff with actionscript is great, I’ve spent quite some hours messing with it myself too, but in the end you’re going to hit a ceiling when it comes to performance. Rendering 5K tris with actionscript is probably a no-go.
Another thing that I’ve noticed in almost any real 3d project with flash using textures, are serious uv problems.
For me this was a reason not to use any real 3d rendering, but to try ‘faking’ it this way.
Some people may find this a bit lame or weak, but the thing is that it’s simple, straightforward and that it works. And for me that’s an important thing.
Obviously both methods (the prerendered frames and real 3d method) have their pros and cons. I think that everyone has to weigh them for themselves, depending on their goals.
ps. I think I’ll edit the opening post a bit and add a bit to avoid confusing about how it works when it comes to prerendering vs real 3d.
I was just having another look at it this morning, and flash crashed, and messed up the fla file…really quite stupid.
What I did was just duplicating the sprite MC, and tweening the alpha with each frame transition. It’s not possible to tween (or morph if you will) the actual data in the bitmap as far as I know, at least not in a simple and fast way, so I that’s why I gave a try at the alpha tweening.
If you are going to try something with the source yourself, please let me know about the result, it’d be great to get it more smooth indeed
Ok good! Perhaps I’ll make a seperate max8 version (so without the viewport drawing) of the installer next time.
Great. Thanks
I am getting ready to go back through this thread, but I am very curious about the f3dv format. I have googled a few different combinations and not been able to find anything useful to explain how it works and what it does.
It’s really nothing near as fancy as it sounds. It’s no more than an swf with another file extension. The reason I did this is to allow a CMS to automatically detect the filetype when you’d upload it. That way you can make sure that it won’t treat it as a normal swf.
At the MT project we’re now developing a CMS for the new website that will have one flash viewer stored somewhere, which will load any f3dv file that is uploaded by a user.
In v1.11 you can, if you want, select another filetype when rendering.
Agreed – I didn’t clarify myself that well.
Distortions are not necessarily needed. That actually is more difficult to implement in Actionscript than VR without distortion. The point I was making is that you’re much better off, and it will be a much higher quality project if you use a single panoramic image than a bunch of stills.
Performance? Not in the least. Considering software rendering alone, I’d say it’s almost as zippy as Java (Actionscript3, Flash 9 though).
PV3D can render 5k polys at over 30fps depending on your system (some people got 50+ fps playback). Double that if you include hidden surface removal in the numbers. From a performance standpoint, it’s quite impressive.
UV mapping is supported fully provided you texture appropriately. You can use Collada (experiments importing animation are in progress too). There are some experiements going on now to dynamically tesselate meshs to retain proper UV mapping.
Just a few thoughts, that’s all. Great script though.
I just figured I’d note that commenting everything in the ‘drawviewportUI’ function worked!
Thank you so much
I’m rendering now and can’t wait to see how it turns out.
Hi,
Do you have something like this for Maya? This would be very handy.
Oh no, the pressure! I have a bit of it done, and I have a fairly good idea about how I’m going to approach the rest of it. Seeing which bugs come up here will be helpful for my work. I’ve got some spare time now; I’m living at my parent’s and am just waiting to get a work permit to start a job in Sweden, so I should be able to get something together in the near-ish future.
Congrats on this taking off so well Pier, glad to see all those late nights of struggling with it have paid off in some recognition
I applaud the effort on the script part. But the Flash part is definitely behind the times from a technology standpoint. They’re both just a frame-changing script based on mouse position (and you can readily find Actionscript code online for these interactions). Of course, you’d need to know Flash.
The whole process isn’t using any real benefits of the Flash Player for the interactive content – or keeping the sizes small.
A few thoughts:
You can create panoramas in Flash using a single image and it’ll be 10x smaller in size. There’s panorama code in Actionscript2 all over the place for Flash using the BitmapData object and variations of perspective distortion. I definitely wouldn’t use something that I had to load 100 separate images – especially since the interaction is limited to still images instead of a smooth experience. All you need to do is render a 360 pano image in your application of choice – again a very common script for most applications, if not built in already.
For the single object spin, I’m not a fan of just spinning a bunch of pre-rendered images. I’d much prefer to use something like the Papervision3d project or another open-source Flash alternative such as Sandy. Papervision3d supports the parsing of DAE (Collada) files (full textures, and animation is supported). That also means you can bake your textures to the objects (including ambient occlusion) and actually interact with the object since it’s a full 3d engine.
Smaller and more effective than a 100 pre-rendered images.
Can you add the ability to compress the image output to make the files smaller. Sometimes it is not necessary to have 100% jpegs. Often, for the web, 60% is enough.
This might make the file sizes smaller.
I’ll see what I can do. Another thing that I want to experiment with is the ‘per image’ vs ‘global’ colour table for the stored frames. I’ve noticed somewhere in the documentation of the swfdotnet package that the method I’m using now is storing a colour table for the compression of each JPEG seperately. This I guess takes more space than having one colour table for all frames.
On the other hand, colour tables might vary significantly, when for example one side of the rendered frames have a lot of shadows, whereas the other has brighter colours.
Perhaps one colour table per row of images might be best.
I’m now working on v1.2, which will have the following updates, and perhaps a couple more:
[ul]
[li]Animation support.[/li][li]Statistics updated: added hFrames, vFrames, aFrames.[/li][li]Max 8 ‘fix’ included in install. (optional when installing).[/li][li]Automatic menu item creation. (optional when installing).[/li][li]Warning when trying to render more than 1000 frames.[/li][li]Auto rotate (horizontal) added to viewer.[/li][/ul]
How about the ability to compile the images in to a viewer with a different exe file. This way we can go in and do some post production work in Photoshop with all of the rendered images and then compile into the viewer after the fact.
Is this possible?
Paul
This is possible now too, but it’s a bit of a fuss. You’d have to deselect the ‘delete temporary files when done’ option, and then run the compiler manually. This would require you to pass a couple of parameters to the program (for details, run the compiler with the parameter /?, I made a little usage display).
These would have to be outputted by the maxscript somehow, because you probably won’t want to guess them.
The thing is that I made all this with simplicity and speed for the end-user in mind, so perhaps adding options to manually take some steps might decrease this. I will think about it though.