I use two kind of models. The first kind is very simple, that is a Cube or a Sphere as shipped with Urho3D.
The second kind is an export from Blender, contains several materials and textures.
Both kinds are placed on a plane. However, when rescaling the models, the Blender exports behave as expected: they get smaller or bigger, but remain on the plane.
This is quite different when applying the same rescaling operation to the Cube or Sphere: they change their size but either grow through the plane when increased or float over the plane when decreased.
All models are set up in a similar way.
Especially these lines are same for all models:
auto* body = sphereNode->CreateComponent<RigidBody>();
body->SetCollisionLayer(2);
auto* shape = sphereNode->CreateComponent<CollisionShape>();
shape->SetTriangleMesh(sphereObject->GetModel());
I think I understand. To me, the primitives’ ‘symmetric’ origin seems more generic/natural (makes fewer assumptions about use/scene/gravity) – just translate as needed.
I suspect if the meshes’ origins changed, it would throw off nearly every program that used them.
The models that you mentioned which come with Urho have their origin at their center. It seems like you are placing the origin at floor level for your custom models. Both make sense in different situations.
It’s easier to align something with the floor if it has its pivot at its feet, but when things need to roll you want the pivot exactly at the center to prevent it from wobbling.