【Chrono Engine学习总结】6-创建自定义场景-6.1-3D场景获取

news2024/9/23 15:22:07

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。

Chrono可以导入自定义的三维模型,所以想自己搭建一个3D仿真环境。过程中遇到了一些问题,记录与整理。

1、3D环境的创建方法

Chrono的Irrlicht模块支持导入mesh贴图,因此可以用任何可以创建obj格式的工具创建一个3D环境。如何制作一个3D场景?我尝试了使用图像拍照环境然后重建、激光雷达扫描仪扫描真实环境重建、公开激光雷达数据集点云重建、以及直接绘制三维模型这几种方法。

1.1 COLMAP

首先是大量拍照然后采用COLMAP工具重建,总的来说效果一般,在没有纹理区域重建效果很差,而且重建的时间非常长。建的车棚,效果图如下,有大量的空缺区域:
在这里插入图片描述

1.2 手持激光雷达三维扫描仪

  • 其次,用尝试了用手持激光雷达扫描仪进行重建,使用的是留形科技的留形机360,建造了室内场景。客观评价,虽然点云看着很不错,但重建的效果有些差,而且探测距离只有40m左右,在大范围场景下效果肯定更差。下图分别是室外的(带颜色)点云,以及室内的重建。可以看出,重建效果有些差,不太能直接用于仿真。
    在这里插入图片描述
    在这里插入图片描述

1.3 高精度点云数据重建

还尝试了用高精度的公开点云数据集进行重建,采用的是MCD数据集,下图右下角是高精度的点云,真的精度非常高,但由于该数据集是用于SLAM任务,所以角度覆盖不是很好。用meshlab进行重建,可以看出,对于规则的平面/曲面重建还行,但树木效果就极差,同时还有大量的错误连通区域,造成后处理复杂。所以也没有采用。
在这里插入图片描述

1.4 三维设计软件进行制作

最后,可以尝试用三维设计软件进行制作,只要能够到处obj格式文件即可,solidwork、autocad等都行。我采用的是sketchup草图大师。

2、SketchUp草图大师绘制场景

这里略过SketchUp的基本操作,只放一下绘制的结果,以及一些注意事项。
在这里插入图片描述注意事项

  • SketchUp2024比2023优化的好一些,不容易卡顿;
  • 卡顿的解决方法,参考知乎:
  • 在这里插入图片描述
  • 模型尽量选择面元较少的,一般一个几十K上百K还能接受,如果有好几M,最终到处obj时会非常大,在chrono里面仿真会非常的卡。
  • 导出obj文件时,注意单位,以及把贴图也一并导出,配置如下:
  • 在这里插入图片描述

3、Chrono中代码

Chrono中关键部分的代码如下,即添加obj格式的mesh,然后添加到system当中即可。注意chrono默认的添加单位是米,如果sketchup中设置不是m,或者solidwork等导出的可能是英寸/mm,需要在Transform函数中进行缩放。

std::string scene_3d = "C:/Users/larrydong/Desktop/sketchup-obj/outdoor_simple.obj";
auto mmesh = chrono::geometry::ChTriangleMeshConnected::CreateFromWavefrontFile(scene_3d, true, true);
double inch_2_mm_scale = 0.0254;
mmesh->Transform(ChVector<>(-0, -0, -0.5), ChMatrix33<>(1));
auto trimesh_shape = chrono_types::make_shared<ChVisualShapeTriangleMesh>();
trimesh_shape->SetMesh(mmesh);
trimesh_shape->SetName("scene mesh");
trimesh_shape->SetMutable(false);
auto mesh_body = chrono_types::make_shared<ChBody>();
mesh_body->SetPos({ 0, 0, 0 });
mesh_body->AddVisualShape(trimesh_shape, ChFrame<>());
mesh_body->SetBodyFixed(true);
std::cout << "<-- Adding mesh. " << std::endl;
sys.Add(mesh_body);

运行截图:
在这里插入图片描述左侧是lidar的扫描,右侧是场景。可以明显看出,场景中的东西颜色不正确,这是因为光照设置不合理。参考下一篇文档解决方法。

tif格式贴图加载的Bug:
导出obj格式时,sketchup有些贴图是tif格式,有些是png/jpg。tif格式在chrono加载时会出现路径的斜杠方向不正确:
在这里插入图片描述
显然,所有jpg格式的路径中都是/,而tif格式的前半部分路径变成了\,这个路径是通过obj所在路径自动加载的,所以没法修改。我也不知道为什么会出这个问题。如果出了这个问题,仿真时是会崩溃的。解决办法,就是把tif另存为png/jpg格式,然后修改xxx.mtl文件中的tif为png/jpg即可。

我也不知道为啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1696000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何从头搭建一个自己的java库并上传到maven官方仓库

创建代码 在代码库根目录执行maven命令&#xff0c;用于快速生成一个基础的Maven项目 mvn archetype:generate \-DgroupIdcom.mycompany \-DartifactIdmy-maven-project \-Dversion1.0.0 \-DarchetypeArtifactIdmaven-archetype-quickstart \-DinteractiveModefalse 这个命令…

初学Echart

创建一个html文件 1.引入 点击链接----快速上手网址&#xff1a;快速上手 - 使用手册 - Apache ECharts 复制这一串【这个是引入echart路径】 引入到这里 2.使用 我们在上一步---点击返回--往下翻---找到完整代码--复制黏贴 复制粘贴后--总体长这样 <!DOCTYPE html> &…

【YOLOv10训练教程】如何使用YOLOv10训练自己的数据集并且推理使用

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Oracle Graph 入门 - RDF 知识图谱

Oracle Graph 入门 - RDF 知识图谱 0. 引言1. 查看 RDF Semantic Graph 安装情况2. 创建一个语义网络4. 创建一个模型5. 加载 RDF 文件6. 配置 W3C 标准的 SPARQL 端点 0. 引言 Oracle Graph 的中文资料太少了&#xff0c;只能自己参考英文资料整理一篇吧。 Oracle 数据库包括…

【学习笔记】计算机组成原理(八)

CPU 的结构和功能 文章目录 CPU 的结构和功能8.1 CPU的结构8.1.1 CPU的功能8.1.2 CPU结构框图8.1.3 CPU的寄存器8.1.4 控制单元CU和中断系统 8.2 指令周期8.2.1 指令周期的基本概念8.2.2 指令周期的数据流 8.3 指令流水8.3.1 指令流水原理8.3.2 影响流水线性能的因素8.3.3 流水…

从0开始带你成为Kafka消息中间件高手---第二讲

从0开始带你成为Kafka消息中间件高手—第二讲 那么在消费数据的时候&#xff0c;需要从磁盘文件里读取数据后通过网络发送出去&#xff0c;这个时候怎么提升性能呢&#xff1f; 首先就是利用了page cache技术&#xff0c;之前说过&#xff0c;kafka写入数据到磁盘文件的时候&…

深入探索:中文字符的编码与转移字符的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;探索字符编码的世界 二、字符编码基础&#xff1a;理解ASCII与Unicode…

面向未来AI算力中心的电能消耗及优化策略

AI苏妲己&#xff1a;面向未来AI算力中心的电能消耗及优化策略 在人工智能&#xff08;AI&#xff09;和大模型技术加速发展的今天&#xff0c;智算中心对电力需求爆发式递增。如何降低这些中心的能耗成本&#xff0c;关于电能消耗趋势、新能源发电、以及源网荷储一体化解决方…

高级卫生专技资格考试报名流程及照片尺寸审核处理指南

高级卫生专业技术资格考试是卫生专业技术人员职业发展的重要环节&#xff0c;它不仅关系到个人职称的提升&#xff08;副高、正高职称&#xff09;&#xff0c;也是对其专业能力和水平的权威认证。随着考试季的临近&#xff0c;许多考生开始关注报名流程及照片尺寸审核处理等细…

代码随想录算法训练营第36期DAY39

道心破碎的一天&#xff0c;继续加油吧&#xff0c;坚持努力。 DAY39 738单调递增的数字 暴力法&#xff1a; 没有想到用int in;i>0;i--来遍历。 class Solution {private: bool checknum(int num){ if(num<10) return true; while(num/10!0){ …

详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)

目录 前言1. 基本知识2. Demo3. 实战4. 模版 前言 由于需要在登录时&#xff0c;附上一些用户说明书的弹窗 对于ElMessageBox的基本知识详细了解 可通过官网了解基本的语法知识ElMessageBox官网基本知识 1. 基本知识 Element Plus 是一个基于 Vue 3 的组件库&#xff0c;其中…

C++ Primer Plus第十八章复习题

1、使用用大括号括起的初始化列表语法重写下述代码。重写后的代码不应使用数组ar。 class z200 { private:int j;char ch;double z; public:Z200(int jv,char chv&#xff0c;zv) : j(jv), ch (chv), z(zv){} };double x 8.8; std::string s "what a bracing effect ! …

前端---闭包【防抖以及节流】----面试高频!

1.什么闭包 释放闭包 从以上看出&#xff1a;一般函数调用一次会把内部的数据进行清除--但是这种操作却可以一起保留局部作用域的数据 // 优点:1、可以读取函数内部的变量 2、让这些变量始中存在局部作用域当中 2.闭包产生的两种业务场景&#xff1a;防抖、节流 2.1防抖 举…

Mysql教程(0):学习框架

1、Mysql简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域&#xff0c;MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版&#xff0c;社区版完全免费&#xff0c;并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0…

【Windows】 IDimager Photo Supreme 2024(图片管理软件)安装教程

软件介绍 IDimager Photo Supreme 2024是一款专业的图片管理软件&#xff0c;旨在帮助用户有效地组织、管理和浏览他们的照片收藏。以下是该软件的一些主要特点和功能&#xff1a; 图片管理&#xff1a;Photo Supreme提供强大的图片管理功能&#xff0c;可以帮助用户轻松地整理…

笔记89:LeetCode_135_分发糖果

前言&#xff1a; 注&#xff1a;代码随想录中没有很清楚的提起想出方法的思路&#xff0c;只是给出了解决这个问题的大致思路和代码&#xff1b;下面我将介绍一下我的思考过程&#xff0c;并贴出实现代码&#xff1b; a a a a 思考过程&#xff1a; 思路1&#xff1a;为了…

Win32 API

个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 : C语言 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 一.Win32 API 1.Win32 API介绍 Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外&#xff0c;它同时也是…

【408真题】2009-15

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

nginx服务器执行的过程

一:打包 1.打包前的分析 文件路径下npm run preview -- --report 生成打包之后的内容 2.解决有些内容体积过大的问题 1.删除有些不使用但是占用较多的,将main.js上import删除,打包时不会有 2.不能删除但是内容较大的 vue.config.js文件夹下 externals: { vue: Vue,…

mysql5.5版本安装过程

mysql是关系型数据库的管理系统 将安装包放在 c盘根目录 名称为mysql 在该路径下cmd进入命令执行窗口 出现此页面说明安装成功 需要修改配置文件内容 将my-medium.ini 复制粘贴并改名为 my.ini 并添加如下内容 改好之后在mysql目录下cmd进入命令执行窗口 切换到cd bin …