我有一个网格与凸分解Collider使用bevy_rapier3d.

我怎么才能算出剑杆为这个对撞机计算的质量呢?

我的代码如下所示:

fn asset_loaded(
    mut commands: Commands, 
    my_object: Query<(Entity, &Handle<Mesh>), With<MyObjectMarker>>,
    meshes: Res<Assets<Mesh>>,
    asset_server: Res<AssetServer>,
    loaded: Local<bool>,
){
     if *loaded{
         return;
     }
     let (my_entity, my_mesh) = my_object.single();
     if asset_server.load_state(my_mesh) != LoadState::Loaded {
         return;
     }
     let collider = Collider::from_bevy_mesh(
         meshes.get(my_mesh).unwrap(),
         &ComputedColliderShape::ConvexDecomposition(VHACDParameters::default()),
     ).unwrap();

     // ??: how can i get the computed mass of the object here? 

     commands.get_entity(my_entity).unwrap().insert(collider);
     *loaded = true;
}


推荐答案

您可以这样使用函数mass_properties:

// ??: how can i get the computed mass of the object here?
println!("{:#?}", collider.raw.mass_properties(1.0));

请注意,您需要指定density(如果尚未指定).在上面的示例中,它被设置为1.

Rust相关问答推荐

值为可变对象的不可变HashMap

Pin<;&;mut可能将Uninit<;T>;>;合并为Pin<;&;mut T>;

如何正确重新排列代码以绕过铁 rust 借入判断器?

我可以在不收集或克隆的情况下,将一个带有Item=(key,val)的迭代器拆分成单独的key iter和val iter吗?

为什么Rust不支持带关联常量的特征对象?

如何使用Actix Web for Rust高效地为大文件服务

Rust将String上的迭代器转换为&;[&;str]

`actix-web` 使用提供的 `tokio` 运行时有何用途?

为什么将易错函数的泛型结果作为泛型参数传递 infer ()?不应该是暧昧的吗?

如何将 struct 数组放置在另一个 struct 的末尾而不进行内存分段

返回迭代器考虑静态生命周期类型

在Rust中实现Trie数据 struct 的更好方式

如何在 Rust 中按 char 对字符串向量进行排序?

不能将 `*self` borrow 为不可变的,因为它也被borrow 为可变的 - 编译器真的需要如此严格吗?

在 Rust 中,为什么整数溢出有时会导致编译错误或运行时错误?

当 T 不是副本时,为什么取消引用 Box 不会抱怨移出共享引用?

Rust,我如何正确释放堆分配的内存?

HashMap entry() 方法使borrow 的时间比预期的长

如何制作具有关联类型的特征的类型擦除版本?

加入动态数量的期货