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…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...