Papervision3D Essentials - Out now!

After more than 8 months of hard work, at least 1600 man-hours, writing 13 chapters and 428 pages, Jeff Winder and I are proud to let the world know that our book has finally been published!

With this book we had the goal to write a book for beginners. A book which we would like to read when we were starting with Papervision3D. Taking nothing for granted and gradually work to more advanced topics. Hopefully we have achieved that goal, which will become clear once the copies are sold and we will get feedback from our readers. Now the book is on sale we can finally get feedback from more people other than the very valuable reviewers Trevor Burton, Stuart Caunt and Patrick Rushton.

The book covers many topics in detail, which results to that the book could be used as a reference guide. More than once I've looked back to the chapters that we've written and see how things work. We have chapters dedicated to the following topics:

  • Setting up
  • Building your first application
  • Primitives
  • Materials
  • Cameras
  • Moving things around
  • Shading
  • External models
  • Z-sorting
  • Particles
  • Filters and effects
  • 3D Vector drawing and text
  • Optimizing performance

Together with releasing this book, our publisher posted an example chapter on their website. Which is chapter 8 about modeling. I think this chapter gives a good impression on how thouroughly we tried to explain certain topics.

More information about the topics of our book can be found on the website of our publisher. Make sure you'll check out:

In the next couple of weeks you can expect some articles here on my blog about subjects that have not made it to the book. So keep an eye on this blog.

But for now, I'm going to enjoy my vacation first and I want to say a big THANK YOU!, to those who have supported us during the writing. Our reviewers Trevor, Patrick and Stuart. The Flash community for posting valuable articles and last but not least the Papervision3D team for their help and answers while writing the book.

Papervision3D Essentials - A Book By Paul Tondeur and Jeff Winder Officially Announced

Papervision3D Essentials Book Cover

I'm very delighted to finally announce that I have been working on the first Papervision3D book that will be released ever. The book is in cooperation with my good friend and co-author Jeff Winder and will be published by Packt Publishing. Since the beginning of this year we have been working extremely hard on the writing of this book. We are ready with the writing of all chapters and are preparing all final drafts right now. So you can expect this book to be published really soon.

The result of our hard work is that we have a book that will be useful for both experienced as non-experienced Papervision3D users. The first few chapters take no knowledge for granted and guides the reader through all steps for getting started with Papervision3D. It describes how to get Flash CS3, Flash CS4, Flex Builder and Flash Builder correctly configured for running Papervision3D code. This includes downloading Papervision3D (SWC, ZIP and a step-by-step guide for downloading from SVN). Once an example project has been compiled, a short introduction to OOP and classes is given for those who have no experience in this. From there the reader book gradually works through more advanced topics, such as loading external models, shading, z-sorting, viewport layers, particles, filters and effects, vector drawing and performance optimizations.

As the book contains much information on a variety of topics it is also interesting for those who already have experience in Papervision3D, but want to extend their knowledge and understanding. It was not aimed to be a reference guide, however it turns out that many topics are thoroughly described and can be used for this purpose as well. (I personally already did this while working on commercial projects that make use of Papervision3D)

Today the book has been announced on the website of our publisher, Packt Publishing and will soon be announced on other websites, like Amazon for example. For both Jeff and myself this is the first book we have ever written. Seeing our book and names listed is already very exciting.

We can't wait to have our book finished and hold the final copy in our hands. We did our best (and still do) to make this a very good book and we are looking forward to hear responses from our readers.  But for now we will continue writing on the last bits. Once there's more news about the exact release date I will post it here on my blog.

[Update 2009-07-29] Papervision3D Essentials - Now listed on Amazon

Serious multiplayer 3D games using Unity, Flash and Red5 - Presentation slides

Today's meetup of the Dutch Adobe Usergroup has been a very successful day. Not only because I did one of the presentations. The other presentations where very interesting as well. It was very interesting to hear experiences from other people that are involved with game development. The line-up was top of the notch, with speakers like Senne de Jong from Little Chicken Game Company, Tim Hudson and Sander Wichers from Virtual FairGround, Quinten Beek from MediaMonks Games, Daniël van Gils from Kamerblauwlicht and more. Check out the Adobe Usergroup website for more details.

Couldn't make it to this meeting? Don't worry, all sessions will be available on the Adobe Usergroup website soon (I'll dedicate a new post on this once it is available).

I've been asked to do a presentation about what I'm doing with Unity, Flash and Red5. Hopefully it gave some new insights to at least a few of the 250 attendees. I really liked talking about my recent passions and want to thank the Adobe Usergroup for inviting!

I've just posted my presentation slides to SlideShare, while waiting for the session videos that will become available soon:

3D Web meeting after FITC Amsterdam

On Wednesday the 25th there will be a 3D web meeting at the Waag in Amsterdam. This will be the day after FITC Amsterdam ends and this is no co-incidence. Members from as well the Flash3D and Unity3D community will join this meeting and discuss about questions like: “What should the 3D Web look like?”, “How could we create a 3D version of Wordpress?”, “What should the 3D Web be capable of doing?” and “What roles can Flash 3D and Unity 3D play in Web 3D development?”.

Robert Shepherd from Eduverse invited me to join this event. It's awesome people are organising such events. Hopefully he'll get an interesting group of people together. Since it's the day after FITC, I don't think that should be much of a problem? A bigger problem might be the space, which is limited to 25 people. So sign up ASAP!

For more details and sign up, go to: http://www.eduverse.org/index.php/2009/02/13/3d-web-meeting/

New DNBmedia Papervision3D site!

I'm delighted to show you all a new website where we have been working on during the last couple of months. This website will be for our AV department and is made using Papervision3D, BulkLoader and Tweener.

DNBmedia av screenshot

This website pushes Papervision3D to it's limits. We've optimized it a lot to get it "acceptable" for average computers. Beside using all the "standard" optimizations we used some custom optimizations as well. I think the best example of this is the usage of 3D Sprites where I've posted earlier about. This causes a bigger download, but it can add much more detail to your scene and is very light to render.

Make sure you have your sound turned on before you have a look at av.dnbmedia.com.

I'm interested in your feedback! Let me know your thoughts about this! In case you have some questions about how we solved some issues, you're off course free to ask!

Sprite3D update

Since my last post about the Sprite3D object, I found out it wasn't working perfectly. It's behaviour wasn't constant when using different Papervision3D versions. Beside there where some small bugs in my code and I had to make it a bit more flexible to use.

  • Sprite3D doesn't correct rotations anymore by do3d.rotationX/Y/Z values, but based on Matrix3D information (Number one on my personal wish-list). Because of this change you're able to rotate the object on the x, y and z axis at the same time. Before, this would distort the sprite3D. This also solved some small unnoticed issues.
  • You're able to set it's "rotationAxis", which is the axis on which your materials in the materialsList are rotating. Before, this was only possible on the Y axis.
  • Compatible with all recent Papervision3D revisions. I've not tested this with all of them. It's developed using revision 651.
  • Compatible with new localRotationX/Y/Z, which is introduced since revision 651.

Wish-list:

  • Support animated textures.
  • Support multiple axis rotations with textures.
  • Support Sprite3D as a nested object (should be directly added to the scene right now).

It's probably gonna take a while, before these wishes can be implemented. So feel free to do it yourself :-)

Download the update here

Papervision3D “Sprite3D” object

[UPDATE] Added a yawing example to make more clear what's going on. [/UPDATE]

It's been quite a while since my last post. In between I've been on vacation for a couple of weeks and had some strong deadlines to deliver my daily work. I've many cool idea's to work out and write about on this blog. One of them is called a "Sprite3D", which name is based on Sprite 3D from Sandy.

The concept is that you'll have just a basic plane which is always faced up to the camera. Depending on the angle between a camera and a sprite3D object it will change it's texture. When you have for example 360 images of an object which rotates 360 degrees, you can show for each angle a different texture, which will give a 3D effect to this plane. This makes it possible to show advanced models without actually rendering them! Because it's all shown at a plane, it's all very light for your CPU.

I've put this all together in a class which extends DisplayObject3D. Working with this class is like working with standard objects like cubes or planes, so it's pretty straightforward like you will see in the following example.

 
var materialList:MaterialsList = new MaterialsList();
// angle range -45 (315)  - 45
materialList.addMaterial(new BitmapFileMaterial("assets/image1.png"));
// angle range 45 - 135
materialList.addMaterial(new BitmapFileMaterial("assets/image2.png"));
// angle range 135 - 225
materialList.addMaterial(new BitmapFileMaterial("assets/image3.png"));
// angle range 225 - 315
materialList.addMaterial(new BitmapFileMaterial("assets/image4.png")); 
 
//Just enter your materialList and dimensions
sprite3D = new Sprite3D(materialList,300,150);
//add sprite3D to the scene, like you would do with any object.
scene.addChild(sprite3D);

Depending on how many materials you'll add to the sprite3D it will automatically calculates on which angle it should change a texture. In case you'll add just one MovieMaterial to the materiallist, it will look at the number of frames within this MovieClip as your textures. This is especially useful when you have a 360 frames render of an object. You don't want to add 360 separate materials to the materiallist.

Below you'll find two working examples of a rotating car. You can change your position by using your arrow keys.


Same example, but with a yawing sprite3D:

I have to say this approach also has it's downsides:

  • You'll get bigger downloads, since you need to load image sequences.
  • You can't get too close with a camera, this will make it feel unnatural.
  • Only rotation on the Y axis is implemented. Implementing another axis will end up with an even bigger download (360*360 images if you want the best quality)
  • Animation of a texture should be possible, however you'll end up here as well with a big download.

Anyway, I think it's a very useful object type, below you'll find the source files. Hopefully it will also be useful for you. Let me know if you have any ideas of what to implement, how to improve performance or adjustments you did yourself. I would like to hear your feedback!

Downloads:


Example model used from Troyano

Paperworld 3D v0.1 released!

Go check out yourself: http://www.paperworld3d.com

Later on this weekend, I'll post my thoughts and examples about this very promising project!

[Update 2008-04-06]
During this weekend I've been looking into the source code. It's all well organized and Trevor Burton did an excellent job!
Since it's a first release, without any tutorials yet, it is kind of hard to get it all running right now. Errors found in the project could mean that I've misconfigured something, or that I've found a bug.
Trevor showed his will to help me out which I really appreciate. As soon as I have some working examples I'll write down my experiences on this blog.

Multiplayer Papervision3D using Red5

With Paperworld3D coming to us very soon I've been experimenting with a multiplayer papervision3D application. I've been using Adobe Media Server before to build some multiplayer applications, but this time I want to build it in red5, since I was inspired by Chris Allen's session at FITC Amsterdam about a month ago.

To keep it all very simple for now, I just made a simple cube with some textures. Each visitor of the application will be represented as an avatar, which is in this case just a plane with a random colored texture. The avatar can be controlled by using your arrow key's in combination with the mouse.
Locally the avatar is moving in a 3D environment and pushes it's position (x/y/z/rotationX) every half a second to the server. Every half a second each avatar in the 3D environment will look where all the other avatars are positioned at that moment and tweens each plane to that position, so it will all happen smoothly with a delay of half a second.

(more...)

Papervision3D 2.0 The Great White from the ground up

In this article you'll learn about some basic functionality with the latest version of Papervision3D. After reading and understanding this article whith it's examples you should be able to build something like the simple example from above.

(more...)