Friday, August 22, 2014

Eureka!

Tired of running and swimming in virtual worlds? I see people wanting to build their own vehicles in order to get around. When the time comes, their imagination should be free to create ships and airships in any form they like.

Voxels are a good help here. They are volumetric by nature, and we can always know what kind of material is there. Each material then can have its own specific weight. So wood is lighter than stone, and stone may be lighter than raw iron. These properties have a great deal of influence one how things interact with each other, also how they rotate, how their center of mass is computed.

Air is no different. It is meant to weight something. So what happens if you have a material lighter than air? Check out the following video:



Here the balloons are just regular voxels. They could be any shape. The trick is they have a material that is much lighter than air. As soon as they become free standing objects, they raise. This is because the air they displace weights more than themselves and this force may be big enough to overcome gravity.

We will be looking at the same principle for water in a next iteration.

16 comments:

  1. The idea has mind boggling potential! Is this your own physics engine?

    ReplyDelete
    Replies
    1. We run our own analysis over the voxel data to discover objects and their properties. Then these are fed to traditional physic engines like Havok, PhysX, etc. So in this case we are feeding the physics solver an additional force to every object. This is the Archiemedes force, which based on the weight of the medium (air or water) they have displaced.

      Delete
  2. Would anything else need to be implemented for a balloon to lift the user, standing on a platform? How much does your user weigh by the way?

    ReplyDelete
    Replies
    1. Nothing else would be needed. Not sure how much the avatar weights here.

      Delete
  3. So, when the object is separated, the voxel engine determines the center of mass of the object and the magnitude/direction of the gravitational force based on the cumulative sum of the mass (densities) of individual voxels? Does it also calculate mass moments of inertia for the object based on a sum of all the voxel densities/displacements from the mass center?

    ReplyDelete
    Replies
    1. Also, how do you handle generating model physics properties when the object that you separate exists in 2 or more different levels of detail? Do you fully generate the entire model at the highest mesh density? How well does this scale with increasingly massive model sizes?

      Delete
    2. Averaging the density is more appropriate than simply summing for determining buoyancy.
      I too am interested in how low LOD levels are handled since this could cause large errors in average density (say, for a thick shell which only has its dense surface present at low LOD).

      Delete
  4. So... extrapolating this in the direction I believe you are planning, building a model of a Ship of the line, and floating it upon a sea of voxels will be in my future? Because that, my friend, is awesome!

    The destructibility, and fragmentation effects you have been showing will look amazing when we fire a broadside into another ship :)

    ReplyDelete
  5. I see your vertex shadows take a while to be deleted on the ground.

    ReplyDelete
    Replies
    1. That was a rendering bug in the build used for the video. Check out the other video where there is a lot of destruction, shadows update constantly.

      Delete
  6. So, an obvious question: if you made a large stone cube, hollowed most of it out (thus filling it with air) and then cut it off from a land mass so it fell in a lake, could it float, given that your air-to-stone ratio is high enough?

    ReplyDelete
    Replies
    1. Yes that is the idea. Note we only do air now. Also it is tricky to define what hollow means. It would be nice to compute whether the thing really has air pockets. As we have it now, air is just one type of material. You would need to be sure to put it there.

      Delete
    2. Oh god, so many thoughts/ideas, it ends up being very tricky to make a program that will make a cup float when right side/upside down, but sink when sideways.

      Delete
  7. I just saw "Space Engineers". Sigh... another game that would have been awesomer if it was made with Voxel Farm.

    ReplyDelete
  8. just reiterating how i would like to see lightning strike said airship and then it makes a massive crater upon impacting the terrain x)

    ReplyDelete