Blender 3D建模要点
3d模型可以为场景的仿真模拟带来真实感,它还有助于更轻松地识别场景中的所有内容。 例如,如果场景中的所有对象都是简单的形状,如立方体和圆形,则很难在仿真中区分对象。
1、碰撞形状与视觉形状
像立方体和球体这样的简单形状,通常被称为“基本体”,通常用作碰撞块。 与视觉网格相比,碰撞形状使用简化的几何体,因为它们在模拟中有不同的用途。
碰撞模型很重要,因为它们与物理环境相互作用,使用基本形状的计算开销更少。
视觉形状是详细的网格。 制作这些形状的目的是为模拟场景带来真实感。 这些形状在多边形中更密集,并且通常附有纹理。 这些形状是相机传感器拾取的,也是观看者在观看仿真时看到的。
2、创建3D模型
Blender 有很多工具可以创建简单/复杂的模型。 创建复杂对象的一个好方法是从简单的事物开始。 在下面的示例中,我们看到了一个从简单基元创建的复杂模型。 虽然这是一个很好的建模策略,但从简单的网格到复杂的网格通常需要使用很多工具。

因为我们使用了上面的车轮示例,所以我将使用该形状来完成我的建模工作流程。 我还将解释我使用的一些工具和修改器。 在开始本教程之前,建议对Blender热键有一些基本了解。
3、创建/添加简单网格
我们使用圆柱体网格用作这个建模的起点。

有建模对象的参考图像会有很大帮助,我们始终推荐这一点。
大多数 3D 建模过程都使用移动、旋转和缩放。 这三个动作通常称为变换 Gizmo。

变换 gizmos 热键:G,R,S
通常,将模型导入程序后出现问题是因为与这些变换相关的简单错误。 这些问题相当普遍,但并不难解决。 相应地更改其中一个属性并将其与更新一起导出可以解决大多数问题。
- 移动 Gizmo:允许你更改对象沿 x、y、z 轴的位置,热键 G。

- 旋转 Gizmo:允许你沿 x、y、z 轴旋转对象方向,热键 R。这用于为轮子垂直旋转圆柱体。

- 缩放 Gizmo:允许你缩放对象。 如果需要,还可以沿单个轴缩放对象,热键 S。

- 斜角:Bevel。允许你创建弯曲/倒角的边缘,这用于创建轮子的弯曲侧面。

- 挤出:Extrude。沿选定的面/边添加额外的几何体。 挤出工具可用于推出面或推入面。 此处给出了两个示例。

- 环切:Loop cut。允许你使用新的环状边缘分割面。 这样就可以对面部进行更详细的操作。结合使用挤出工具,你可以根据自己的形状制作小脊。

- 复制:Duplicate。允许你制作选定对象的相同副本。

- 其他修改器:在建模过程中使用的其他一些命令是:晶格函数、布尔值、平滑、抽取等。

4、多边形数量 vs.性能
3D模型由多边形组成,多边形越高,3D模型就越详细。 具有太多多边形的3D模型会使网格编辑过于复杂,或者会使仿真模拟运行非常缓慢。 这就是为什么优化形状很重要,这样它可以保留大部分细节,但又不会使多边形数量过高。
如果你发现3D模型过于密集而无法使用。 “抽取”命令(Decimate)可用于降低所述网格的多边形计数,同时仍保持其一般形状。
创建复杂模型需要很好地理解 3d 建模程序中的许多工具。 它们都服务于特定的目的并且非常强大。 它们必须以不同的方式相互叠加使用才能获得最终结果。 你添加/编辑的形状越多,从长远来看它看起来就越好。
6、导出模型
为 Gazebo 导出模型时,建议使用 .dae (COLLADA) 文件类型。 还支持 STL 和 OBJ 文件,但在导入到 Gazebo 时不太常见。
在点击导出后,将出现“Blender 文件视图”。 这是选择文件位置的地方,你还可以选择导出模型的方式。
仔细检查“global Orientation”可以节省时间,在这里你可以快速将“Up Axis”更改为 Z up。 这是 Gazebo 中的标准方向
同样确保如果3D模型要放置在地面上,请将原点放在底座上,并使模型面向 X(前向轴)。

7、故障排除
创建用于模拟仿真的 3d 形状时,需要考虑一些事项。 确保你的比例和方向设置为 Gazebo 标准可以为你节省大量时间。
- 检查比例/位置:如果将导入的形状以错误的单位导入 Gazebo,则它可能对于场景来说太大/太小。 确保你的建模单位与 Gazebo 中的单位是 1:1(Gazebo 使用米)。

要更改 Blender 中的单位以匹配 Gazebo,请转到“场景属性”。 将“单位系统”更改为公制并将“长度”更改为米。
要更改网格大小,请转到“Show Overlays”并更改“Scale”量。
- 检查轴心/原点: 导出3D模型时,通常最佳做法是确保模型位于栅格(0,0,0) ,除非该模型是更大场景的一部分。

形状的轴心是形状移动、旋转和缩放的起点。
在导出之前,你不仅需要确保形状位于正确的位置,还需要确保轴心点也位于正确的位置。

复杂的3D模型通常具有子/父关系。 当3D模型的较小部分连接到较大的部分时,具有不同的轴心点。
例如:本教程中使用的车轮是一个子形状。 它会附加到汽车的车身。 如图所示,轮子的枢轴点位于其中心轴上,但整个形状的一般枢轴将基于父形状附加在关节原点周围。 当你导出到 Gazebo 时,请确保选择了整个形状并且主体位于原点 (0,0,0),并且 X 轴朝前。
相关文章:
Blender 3D建模要点
3d模型可以为场景的仿真模拟带来真实感,它还有助于更轻松地识别场景中的所有内容。 例如,如果场景中的所有对象都是简单的形状,如立方体和圆形,则很难在仿真中区分对象。 1、碰撞形状与视觉形状 像立方体和球体这样的简单形状&a…...
网络安全实训Day8
写在前面 网络工程终于讲完了。这星期到了网络安全技术部分。 网络安全实训-网络安全技术 网络安全概述 信息安全:所有保障计算机硬件、系统、软件、数据不因有意或无意的行为导致的服务中断、数据损坏或丢失等安全事件的保障技术 网络安全:基于计算机…...
GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)
被测试的USB摄像头 效果 源码说明 主要功能模拟设备端,完成注册、注销、心跳等,同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****@remark: pes头的封装,里面的具体数据的填写已经占…...
Git工具的详细使用
一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…...
【prometheus-operator】k8s监控redis
1、准备exporter https://github.com/oliver006/redis_exporter oliver006-redis_exporter-amd64.tar # 安装镜像 docker load -i oliver006-redis_exporter-amd64.tar # 上传镜像 docker tag oliver006/redis_exporter ip/monitor/redis_exporter:latest docker push ip/mo…...
外包干了4年,技术退步明显.......
先说一下自己的情况,大专生,19年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...
xbackup 备份MySQL数据库脚本
#!/bin/bash ## 方法一:将回车符(\r)替换为换行符(\n) 替换不可见字符 报错问题:shell脚本执行错误 $‘\r‘:command not found ## sed -i s/\r// xtrabackup.sh ## 备份计划任务 ## ## 每天凌晨1:30一次全量备份 ## 每天间隔1小时一次增量备份 ## 30 1 * * * backup…...
npm常用命令详解
npm(Node Package Manager)是Node.js的包管理器,它提供了大量的命令来安装、管理、发布Node.js模块和包。以下是npm常用命令的详解及示例: 1. 查看npm版本 命令:npm -v 示例:npm -v 将输出当前安装的npm版…...
IPV6协议之RIPNG
目录 前言: 一、RIPNG与RIP的区别 二、如何配置RIPNG 如何解决RIPNG环路问题呢? 控制RIPNG的选路 1、修改RIPNG默认优先级 2.配置接口附加开销值从而干涉RIPNG的选路 RIPNG拓展配置 1.RIPNG的认证 配置RIPNG进程下的IPsec认证: 配…...
JVM垃圾收集器你会选择吗?
目录 一、Serial收集器 二、ParNew收集器 三、Paralle Scavenge 四、Serial Old 五、Parallel Old 六、CMS收集器 6.1 CMS对处理器资源非常敏感 6.2 CMS容易出现浮动垃圾 6.3 产生内存碎片 七、G1 收集器 八、如何选择合适的垃圾收集器 JVM 垃圾收集器是Java虚…...
游戏防沉迷系统相关内容
网站地址:网络游戏防沉迷实名认证系统 PHP代码: 创建对应文件,在需要的位置get传参请求即可,具体参数参考 网络游戏防沉迷实名认证系统接口对接技术规范v2.0 1、上传信息 <?php $url "https://wlc.nppa.gov.cn/test…...
每日OJ题_牛客_JD1 年终奖(动态规划)
目录 牛客_JD1 年终奖 解析代码 牛客_JD1 年终奖 年终奖_牛客题霸_牛客网 解析代码 #include <vector> class Bonus { public: int getMost(vector<vector<int> > board) {int m board.size(), n board[0].size();vector<vector<int>> dp(m…...
深度学习 tablent表格识别实践记录
下载代码:https://github.com/asagar60/TableNet-pytorch 下载模型:https://drive.usercontent.google.com/download?id13eDDMHbxHaeBbkIsQ7RSgyaf6DSx9io1&exportdownload&confirmt&uuid1bf2e85f-5a4f-4ce8-976c-395d865a3c37 原理&#…...
深度学习 线性神经网络(线性回归 从零开始实现)
介绍: 在线性神经网络中,线性回归是一种常见的任务,用于预测一个连续的数值输出。其目标是根据输入特征来拟合一个线性函数,使得预测值与真实值之间的误差最小化。 线性回归的数学表达式为: y w1x1 w2x2 ... wnxn …...
HBase在表操作--显示中文
启动HBase后,Master和RegionServer两个服务器,分别对应进程为HMaster和HRegionServe。(可通过jps查看) 1.进入表操作 hbase shell 2.查看当前库中存在的表 list 3.查看表中数据(注:学习期间可用&#…...
基于BusyBox的imx6ull移植sqlite3到ARM板子上
1.官网下载源码 https://www.sqlite.org/download.html 下载源码解压到本地的linux环境下 2.解压并创建install文件夹 3.使用命令行配置 在解压的文件夹下打开终端,然后输入以下内容,其中arm-linux-gnueabihf是自己的交叉编译器【自己替换】 ./config…...
连续子数组的最大和
问题描述: 输入一个整型数组,数组里有正数也有负数。求连续子数组中的最大和为多少。 举例: 数组:arry{1 , 2 ,-5 , 4 , 1 ,-2} 输出:5,数组中连续的位置相加最大值为5, 41 方法…...
Photoshop 工具使用详解(全集 · 2024版)
全面介绍 Photoshop 工具箱里的工具,点击下列表格中工具名称或图示,即可查阅工具的使用详解。 移动工具Move Tool移动选区、图层和参考线。画板工具Artboard Tool创建、移动多个画布或调整其大小。moVe快捷键:V 矩形选框工具 Rectangular Mar…...
C++函数返回机制,返回类型
return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。 return语句有两种形式 return;return expression; 无返回值函数 没有返回值的return语句只能用在返回类型是void的函数中。 返回void的函数不要求必须有return语句,因为这类函数的最后一句…...
[linux] Key is stored in legacy trusted.gpg keyring
修复 Ubuntu 中的 “Key is stored in legacy trusted.gpg keyring” 问题_key is stored in legacy trusted.gpg keyring (/etc/-CSDN博客 复制到trusted.gpd.d 目录中(快速但不优雅的方法) 如果你觉得手动做上面的事情不舒服,那么,你可以忽略这个警告…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
