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:
We will be looking at the same principle for water in a next iteration.
The idea has mind boggling potential! Is this your own physics engine?
ReplyDeleteWe 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.
DeleteWould 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?
ReplyDeleteNothing else would be needed. Not sure how much the avatar weights here.
DeleteSo, 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?
ReplyDeleteAlso, 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?
DeleteAveraging the density is more appropriate than simply summing for determining buoyancy.
DeleteI 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).
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!
ReplyDeleteThe destructibility, and fragmentation effects you have been showing will look amazing when we fire a broadside into another ship :)
I would love to see that too.
DeleteI see your vertex shadows take a while to be deleted on the ground.
ReplyDeleteThat 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.
DeleteSo, 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?
ReplyDeleteYes 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.
DeleteOh 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.
DeleteI just saw "Space Engineers". Sigh... another game that would have been awesomer if it was made with Voxel Farm.
ReplyDeletejust reiterating how i would like to see lightning strike said airship and then it makes a massive crater upon impacting the terrain x)
ReplyDelete