Blender创建物体堆的模型并将模型导入Gazebo

本文介绍了如何使用Blender创建一个物体堆模型,并将其导入Gazebo进行仿真。首先,创建基础场景并设置立方体粒子属性以形成金字塔形堆。接着,添加地面并设置物理属性。然后,给小立方体赋予物理属性,使其能堆叠在地面上。在模拟过程中调整物体状态并应用变换。最后,导出dae格式模型以供Gazebo使用。注意避免物体间碰撞及正确设置刚体属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建一个常规场景

这里用不到相机和光照,可以把这两个删掉,只保留立方体(不删也没啥影响),再新建一个立方体(shift+a新建网格->立方体),用于待会选这个立方体为渲染对象。
在这里插入图片描述

2.设置立方体的粒子属性

选中立方体,然后点右侧的粒子属性,再点加号创建新的粒子设置。
在这里插入图片描述
设置数量,起始帧和结束点都设置成0,在里面发射源选择体积,分布可以是抖动,也可以选栅格,选择栅格后可以通过改分辨率来调整数量,下面也可以加旋转属性。
在这里插入图片描述
在渲染属性中,将渲染为选成物体,在物体属性中,点吸管工具,选择刚才的另一个立方体,显示发射体取消勾选;
视图显示属性中,显示发射体取消勾选。
在这里插入图片描述
现在得到的结果是这样的:
在这里插入图片描述
选中物体,按Tab进入编辑模式,再按一下数字3,鼠标点击最上方的面,然后按s缩放,使得整体的形状像一个金字塔形。再按Tab就可以回到物体模式。
在这里插入图片描述

3.添加地面

shift+a添加网格->平面,添加一个平面,当做地面,让所有小立方体能够落到这个平面上形成堆。添加平面后,移动平面放到物体堆的下方,按s将平面放大。
在这里插入图片描述

选中平面,按下图所示,先选物理属性,然后点刚体。
在这里插入图片描述
将刚体类型改成被动。
在这里插入图片描述

4.给小立方体添加物理属性

为了后面选物体方面操作,先在右上角场景集合处新建集合,可以按键盘上的c,然后可以双击重命名。
在这里插入图片描述
选中模型中的小立方体后,点右侧的修改器属性,点击实例独立化,紧接着按m,将这些独立化的立方体移动到新建的集合中,删除原来的cube。
在这里插入图片描述
右键点击这个新建的集合,然后选择物体,和刚才对平面的操作类似,选择物理属性,点击刚体,这里的类型选为活动项表面响应中将摩擦调到最大,动力中将阻尼变换旋转都调到0.5左右,否则物体会停不下来。
在这里插入图片描述
点左上角的物体,依次选刚体->从活动项复制,然后按空格,可以看到小立方体掉落在平面上,在感觉已经到了自己想要的形状时,就可以再次按空格来暂停模拟。
在这里插入图片描述
这时如果拖动下方的帧,会回到原来未掉落的状态,可以选任意一帧进行应用,步骤如下:拖动帧进度条,找到想要的状态,然后再通过集合选中所有的小立方体,点击左上角物体,选择刚体->应用变换,然后再点左上角的物体,这次选择刚体->移除,现在拖动帧进度条已经不会再变了。最后可以删除平面,以及创建的另外一个立方体。
在这里插入图片描述
现在,一个简单的物体堆就做好了,如果要更复杂的,可以多做几次,多次让另外的小立方体掉落,就可以做成比较大的堆。另外,还可以加入别的形状的物体,只要在吸管工具那里选择不同的物体就行了。

5.导出模型

Gazebo中一般用dae格式的模型比较方便。这里为了保险起见,可以把所有的小立方体合并成一个物体。按一下a,可以全选所有模型,然后右键,选择合并,就成了一个整体。最后点左上角文件,选择导出dae就行了。
在这里插入图片描述
将dae模型导入Gazebo后就可以进行仿真了,这种模型可以用来用作SLAM中激光雷达和视觉摄像头的扫描,进行三维重建等仿真实验。

  • 要注意的几个点:
    1.在缩放物体时,注意不要让物体之间有碰撞,否则模拟的时候会炸开
    2.作为渲染参照的物体,进行缩放后,要按ctrl+a应用变换后才会起作用

参考视频:B站

### 配置支付宝支付中的 `app_notify_url` 和 `return_url` 在 Python 实现支付宝支付集成的过程中,配置异步通知地址 (`app_notify_url`) 和同步跳转地址 (`return_url`) 是非常重要的环节。这两个参数用于指定交易完成后支付宝服务器向商户发送的通知以及用户完成支付后的页面重定向。 #### 定义 AliPay 类 为了更好地管理这些 URL 设置,在定义 `AliPay` 类时可以将它们作为初始化参数传递给类实例[^3]: ```python from urllib.parse import quote_plus class AliPay(object): """支付宝支付接口(PC端支付接口)""" def __init__(self, appid, app_private_key_path, alipay_public_key_path, notify_url=None, # 异步通知地址 return_url=None, # 同步跳转地址 ): self.appid = appid self.app_private_key_path = app_private_key_path self.alipay_public_key_path = alipay_public_key_path self.notify_url = notify_url self.return_url = return_url ``` #### 使用示例 当创建 `AliPay` 对象时,可以通过传入具体的 URL 来设置 `notify_url` 和 `return_url` 参数: ```python # 假设这是你的应用ID和其他密钥路径 appid = 'your_app_id' app_private_key_path = "path/to/your/private/key" alipay_public_key_path = "keys/alipay_public_2048.txt" # 这里设置了两个URL:一个是处理后台通知的API endpoint;另一个是在前端展示成功消息后返回用户的页面 ali_pay = AliPay( appid=appid, app_private_key_path=app_private_key_path, alipay_public_key_path=alipay_public_key_path, notify_url="http://example.com/api/v1/payment/notify", return_url="http://example.com/payment/success", ) print(f"Notify URL: {ali_pay.notify_url}") print(f"Return URL: {ali_pay.return_url}") ``` 通过这种方式,可以在每次请求支付链接之前确保已经正确指定了回调和跳转的目标位置。这有助于提高用户体验并及时接收到支付状态更新的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值