(14-08-2019, 09:23 PM)StudioTatsu Wrote: [ -> ]Will there be many code-breaking changes with Obi 5 vs Obi 4?
We have created several pipeline tools using Obi v4 to speed up our workflow, but before we continue making tools - we need to know how drastic the API changes will be.
Thanks.
Hi there,
In many aspects, Obi 5.0 is a major rewrite. I'd like to think that the API has become much simpler and succinct.
- The particle API remains largely unchanged. That is, actors still have a
particleIndices array, and the solver has arrays for all particle properties. Actors no longer have their own particle property arrays, so there's no Push/Pull operations. All data that you want modified can be modified directly in the solver. No new per-particle properties have been added.
- Actors are now automatically added to the first Solver up their hierarchy (similar to how UI
Panels are managed by the first
Canvas up their hierarchy). This makes moving actors between solvers much easier (simply reparent them). No need to manually set an actor's solver or call AddToSolver().
- Simulation always takes place in the solver's local space now, and you can control how much world space velocity/inertia to inject into the simulation.
- Constraint and particle data is serialized in a
Blueprint (as opposed to serialized in the actor itself, as in 4.x), which is an asset that stores to disk the particle/constraint configuration for an actor of any given type. You can have cloth blueprints, rope blueprints, soft body blueprints, etc. Actors then "instantiate" a Blueprint at runtime.
- For each Blueprint you can define particle
Groups, which are basically "named" particle sets. For instance, if you have a square piece of cloth, you can select all four corner particles and put them into a "corners" group, that is saved as a subasset of the cloth blueprint. At runtime you can retrieve the particle indices in the "corners" group and use them to perform operations on these particles.
- Particle groups can be attached to any transform. There are two attachment flavors: fixed and dynamic. A fixed attachment is similar to a handle in 4.x, a dynamic attachment behaves like pin constraints.
There's many more smaller changes. Once the API settles down in a few weeks, we will write a couple blog posts explaining all changes in more detail.