Preston Hamlin wrote:
Hello, my name is Preston Hamlin and I am a current CS undergraduate at the Florida State University.
I was reading over the list of ideas provided and then referenced the source code libraries to get a feel for what was being asked for.
I found the prospect of writing an abstraction layer for PhysX or related libraries to be interesting. I am somewhat familiar with THREE.js which is an abstraction of WebGL. In THREE.js there is a heavy amount of abstraction to the degree of providing geometric primitives, particles effect presets, simple materials and basic data structures (matrices, vectors, etc...). Given the platform that THREE.js operates on, such a degree is understandable. How much of the physics library is to be abstracted away in generic structures and functions?
I would think that having a few simple primitives (cube, low-poly sphere, etc...) would be required since they are commonly used. However more advanced meshes like a torus might be better produced through using modifiers on said primitives rather than a built-in preset. I think the degree of abstraction is most important for modifiers, and I desire to get a feel for what is being looked for. I assume the end goal is to be able to produce Blender/Unity/3dsMax usable code as well as standalone utilities.
Hello, Cheers to you for choosing an interesting and, IMO, challenging topic. PhysX, Havok, Bullet, ODE, Newton are some good libraries to take a look at and perhaps see if you can lift shared Concepts from. I would expect something to provide a handful of colliders out of the box and support extension for supporting user defined colliders through proper Concept(s). Unity for example provides: - BoxCollider - SphereCollider - CapsuleCollider - MeshCollider - TerrainCollider - WheelCollider PhysX provides: - sphere - box - capsule - plane - heightfield - convex - triangle mesh Bullet supports slightly more: - btSphereShape - btBoxShape - btCylinderShape - btCapsuleShape - btConeShape - btMultiSphereShape - btConvexHull - btConvexTriangleMeshShape - btBvhTriangleMeshShape - btHeightfieldTerrainShape - btStaticPlaneShape - btCompoundShape To answer your question directly I think a good usable starting set would be: - Box - Sphere - Capsule - Plane - Convex Polyhedron You could probably easily represent all of those in any physics backend.