山岭隧道及道路3D建模教程【Blender】

ops/2024/10/21 11:30:57/

创建具有恒定坡度的山路、隧道的信息和技术似乎散布在互联网上。 在这篇文章中,我将它们全部收集在一起。

这篇文章的大纲如下:

  • 创建一座山
  • 创建一条路
  • 挖一条隧道

道路的坡度将固定为常数,从而消除颠簸。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

1、创建一座山

选择“编辑”->“首选项”->“附加组件”,搜索 A.N.T Landscape 并安装:

随心所欲地创造一座山:

放大山体以符合现实世界中山体的大小:

为了避免视口剪切,请将 View->End 增加到 10000。

2、创建一条路

让我们按键盘上的 7 转到顶视图,并添加贝塞尔曲线。

延伸、旋转和调整分段点的位置。

确保曲线完全平坦,以便我们创建的道路具有恒定的坡度。

还要确保曲线的扭曲方法是 Z-Up。

然后,添加一个具有所需坡度的道路平面。 在这里,我使用 12% 的斜率。 (道路每100米抬高12米)。

请注意,原点位于道路平面的下侧。 (可以通过Shift+S放置3D光标,菜单Object->Set Origin->Origin to 3D Cursor来实现。

现在,将道路平面放置在曲线的起点,通过选择曲线,进入编辑模式,然后按 Shift+S,选择“光标至选定”。

然后选择道路平面,再次按 Shift+S,然后选择“选择到光标”。

添加阵列修改器(选择 x 和 z 偏移)和曲线修改器(选择曲线)。

现在的场景是这样的:

注意:

如果道路的方向与路径不相符,则可能是由于道路平面的旋转所致。 尝试沿 z 轴将道路平面旋转 90 度。

另外,如果曲线的手柄不平坦,可能会导致奇怪的结果,如下所示:

在继续之前请确保没有任何问题。

接下来,选择山,添加收缩包裹修改器(包裹方法->项目,轴->Z,负值和正值,目标->道路平面)。

景观的较高部分将被道路切入,景观的较低部分将被添加以匹配道路底部的高度。

3、挖一条隧道

首先,选择路径上你想要作为隧道路径的顶点。

Shift+D 进行复制。

按P键分开。

再次按 Shift+D,并在地形上方抓住这条曲线。

添加收缩包裹(shrink wrap)修改器,并沿 z 轴投影到道路平面。

我发现如果在这里应用修饰符会很奇怪。

因此,请勿在此处应用修饰符。

将曲线转换为网格,然后将其转换回曲线将得到正确的结果。

接下来,选择斜角(bevel)设置,并更改深度和分辨率,以创建管。

Shift+D(保留原始曲线,以供以后将道路延伸到隧道之外),并将其转换为网格。

向景观添加布尔修改器以减去隧道形状。

但好像没有什么效果,为什么呢?

因为管子的两端都没有封闭,所以我们来解决这个问题。

进入编辑模式,选择最外层边,然后按 F 创建一个面。

和另一边一样。

之后,我们应该有一条隧道。

然后,要在隧道内创建道路,请选择隧道起点处的折点,并将 3D 光标移动到该折点。

Shift+D 复制道路平面,并移动到 3D 光标。

选择隧道曲线的曲线对象(位于地面上的曲线,而不是我们用来创建隧道网格来切割景观的曲线)。

请注意,地面上参考曲线的原点应位于曲线第一个点的位置。 参见下面的 3D 光标

之后,道路就位。

还有一个问题需要解决,隧道路基也要填平。

向景观添加收缩包裹修改器,并沿 z 轴投影,仅选择正方向。

完毕! 底座已满。

请注意,我们的隧道有一个美丽的恒定坡度,这太棒了!

4、注意事项

要延长隧道后的道路。 首先,将隧道后的路段分开。

将 3D 光标移动到路段的起点(隧道网格曲线的端点)。

复制道路平面,并在曲线修改器中使用分离的路径。

并向景观添加另一个收缩包裹修改器。

完毕!

最后,如果你想提高道路的分辨率,可以选择道路经过的面,并对它们进行细分。 (而不是在整个平面上使用细分修改器,这可能会影响性能)

进入编辑模式,然后选择面选择。

按 C 键选择道路经过的面。

并细分这些面。

我觉得切3次就够了。

Blender文件可以在这里下载:TunnelTutorial.blend

谢谢阅读!


原文链接:山岭隧道及道路3D建模 - BimAnt


http://www.ppmy.cn/ops/4849.html

相关文章

elementuiPlus 中的 el-image 实现全屏展示,放大缩小配置偶尔失效?

问题 elementuiPlus 中的 el-image 实现全屏展示,滚轮失效。 全屏事件的放大缩小,主要是通过配置 zoom-rate , max-scale,min-scale来实现。【我遇到的事件失效的原因是因为我把 zoom-rate设置成了1】 默认值: :zoom-rate"1.2" :…

【深度学习实战(10)】图像推理之预处理

一、预处理流程 在把一张图像送入模型进行推理时,需要先进行预处理,预处理流程包括: (1)读取图像 (2)尺寸调整,letter_box(不失真) (3&#xff0…

gazebo中vins-fusion在仿真小车上的部署

软件要求:Ubuntu 20.04 ros的noetic版本,我是在虚拟机vitrualbox上运行的 这几天在学ROS,跟着赵虚左老师过了一遍之后,感觉还是有很多不懂的地方,xtdrone上仿真跟着文档走了一遍,好像没学到什么东西&#…

MySQL 8 那些新来的参数,给那些快被淘汰的MYSQL DBA

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

Linux下的GDB调试器:深入使用指南

在Linux软件开发过程中,调试是不可避免的一环,而GDB(GNU Debugger)是最强大的调试工具之一,用于发现运行程序中的疏漏并修复它们。这篇博客将通过详尽的介绍和实用的示例,帮助您熟练掌握GDB的使用方法 list…

Spark-Scala语言实战(16)

在之前的文章中,我们学习了三道任务,运用之前学到的方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战&#x…

美业连锁门店收银系统源码-如何查看收款门店对应的加盟商?

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 第一步: 登录pc管理后端 第二步: 进入企业组织管理-门店管理&a…

docker+awk=无敌?!

欢迎来到我的博客,代码的世界里,每一行都是一个故事 dockerawk无敌?! 前言需求分析容器间通过容器名称访问脚本实现一键部署命令解释 前言 当今软件开发的世界充满了数据,而 Docker 则是许多开发者首选的容器化解决方…