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 目录中(快速但不优雅的方法) 如果你觉得手动做上面的事情不舒服,那么,你可以忽略这个警告…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
