Many CG artists are familiar with RayFire Tool – excellent plug-in for 3ds Max, focused on fracturing and objects demolition. Mir Vadim, RayFire Tool creator, was kind enough to answers some of our questions, and tell us about RayFire development history and PhysX SDK role in this process.
PhysXInfo.com: Hi, Vadim. Please tell us about your PhysX SDK based application.
Mir Vadim: Hi, RayFire Tool is 3ds Max destruction plugin. I have started development three years ago for my own purpose. I planned to create exciting reel with shooting, destructions, demolitions and a lot of other effects, but unfortunately default 3ds Max tools were unable to satisfy my needs, so I decided to create my own tool which will gather all abilities I want. Fortunately after few days I found video demonstration of Impact System Tool created by Daniel P. Ferreira at Blur Studio.
This tool was able to create very realistic shooting effect in a seconds, but it was closed in-house tool, so I decided to create something similar for myself. After 2 weeks first build was ready to use and surprisingly for myself it was even slightly better than Impact System Tool. Since it was based on ray intersection functions and it was created for shooting I named it RayFire Tool. Before making it avaialble for public I asked permission from Daniel and Blur Studio to do so. So, I published first build and got very positive feedback from CGTalk community.
During next year I added ability to prefragment objects, simulate them using Reactor (default 3ds Max dynamic engine), quickly explode objects and a lot of other cool features for VFX artists. Even though RayFire Tool was pretty popular it was simple free script with a lot of bugs, without help and proper support, so, after some time my friend Anselm von Seherr gave me advice to make it more professional, fix bugs, create proper help, open website and start selling it. As you see I did so and after a half of the year finally added support for PhysX engine, the reason why I am telling you all this story now.
First test with PhysX using RayFire in 3ds Max literally made me speechless for few minutes, I just couldn’t believe my eyes, it was magic, I simulated few hundreds of objects practically in real time. For me at that time it was like finding cure against cancer. For a week I couldn’t sleep at all, I didn’t stop working until version 1.4 with PhysX engine support was released.
After that RayFire became very popular in a few months. At that time it has very fast and useful shatter system, but with reactor it was pretty useless. With new PhysX engine support these two parts, Fragmentation and Dynamic simulation multiplied usefulness of each other. It was possible to take a solid object, shatter it and dynamically break in less then a minute. It was huge update.
One and a half of the year has passed since that moment and now RayFire Tool became a default plugin for artists who need to create dynamic simulation, demolition, explosions or just prebreak objects. A lot of famous companies purchased it and use now in their production: first one and it will be here always is Blur Studio, among others are Blizzard, Disney, Fox, Electronic Arts, Rockstar, Ubisoft, Codemasters, Crytek, Rocksteady, Sega, Boeing and even US Military.
You can check out latest production samples on my webiste in Videos section.
PhysXInfo.com: Initially, RayFire was using default physics engine in 3ds Max – Reactor, but since v 1.4 PhysX solver option was added. How can you compare PhysX against Reactor ? Does RayFire have any PhysX specific features ?
Mir Vadim: To be honest I don’t even want to compare these two engines because Reactor engine in 3ds Max is very old. This is simply not fair to compare current Nvidia PhysX engine and Havok Reactor. PhysX is hundred times faster, it is much more friendly and allows to affect on simulation during simulation. Reactor is closed engine, if you start simulation you can’t affect on it anyhow until it will finish. It is hard to compare how much faster PhysX because with a lot of objects Reactor will freeze max. The only advantage of Reactor for now is the support for concave dynamic objects, but if You will decide to use such simulation geometry, Reactor will simulate even more slower.
Don’t get me wrong, Havok engine itself is very good physical engine, but its representation in 3ds Max is very old and not competitive for PhysX. I hope Autodesk will update it in next versions, otherwise it will become completely useless.
As I said PhysX engine is pretty friendly engine and that is why RayFire has a lot of unique PhysX features which Reactor doesn’t support. For instance, it is possible to deactivate objects, so they will behave like Static or Kinematic objects, but then, during simulation, activate them and make dynamic, you can do this by affecting them by some default max force helpers, like wind or bomb. Or You can activate them hovering mouse cursor over them which is in more artistic way to design your own dynamic simulation.
Another awesome PhysX feature is Interactive Demolition System which tracks all collisions between objects during simulation and accordingly to their material, mass and collision force break them and continue simulation, each newly created fragment might be demolished further. So, you can start with only two objects and end with few thousands of tiny fragments.
PhysXInfo.com: Have you encountered any issues with PhysX SDK during development ? Can you point to PhysX limitations ?
Mir Vadim: The only PhysX limitation for now is unavailability to simulate concave objects. For now PhysX engine converts all simulated objects into simplified convex versions and simulate them. It supports concave geometry only for static objects, so, you can fill some cup with some objects, but only if cup is static, otherwise objects will lay on invisibly side of convex version of cup.
PhysXInfo.com: We’ve heard, that certain features of previous PhysX 3ds-Max plug-in were added under your influence, specific for RayFire – is that true ? Have you kept such relations with new dev. team (PhysX 2.0 plug-in) ?
Mir Vadim: Well, yes, that is true, not too much features, but there were few. Don’t want to say that they added them only thanks to me, maybe they had plans to add them later, but when I asked to add support for sleeping objects development team added it in a few days. Very friendly development team I can say so far. Having such opportunity want to say Thanks to Gavin Kistner and Jun Ma Jack for their work. PhysX 2.0 developing the same team and this is very good for all of us.
PhysXInfo.com: Is RayFire taking advantage of GPU PhysX acceleration, or is it calculating physics on CPU ?
Mir Vadim: First of all I want to mention that there is no big advantage in simulation speed for Rigid Body simulation.
GPU PhysX acceleration is mostly needed for cloth, fluids and soft body PhysX simulations, so because RayFire supports only Rigid Body dynamic simulation it will not use GPU PhysX acceleration advantage. Previous PhysX plugin version was 100% software, but current version 2.0, as I know, has GPU PhysX acceleration support, unfortunately there is no cloth, fluid and soft body support in it for now, but they will be added later.
PhysXInfo.com: In what direction are you planning to evolve RayFire ? Advanced particle system ? Deformable geometry ?
Mir Vadim: To be honest I don’t want to evolve RayFire continuously, otherwise it will became a big, slow and hard to learn tool.
During whole development my main goal was to keep it as easy to use and learn as possible. So even newbies will be able to spend a hour for tutorials and next hour to create some cool demolition simulation. With current deadlines it is very important to finish your job in time and that is why I tried to make RayFire as simple as it could be.
So, if there will be a ways to add more features keeping it as easy and fast as now I will do this.
You can discuss this article on our forums, or via comments section below.
7 Responses to 'PhysX From Inside Out: RayFire Tool'
Leave a Reply
You must be logged in to post a comment.