地形转网格工具(Terrain2Mesh)

2023-05-16

    在游戏开发的制作中可能需要制作地形,需要制作的相关的地形工具,绝大部分情况下并不会使用unity的terrain,因为其在移动平台上的表现很差,相同顶点甚至更多的mesh性能也比其优秀很多(或许是因为其内部动态生成terrainmeshrender的关系或者维护四叉树的节点开销)。所以在有些情况下,会利用terrain制作部分地形,然后将其导出为mesh。

    在unity商店里也有几个类似这样的工具,比如terraintomesh,mte等等,但是测试下来,如果要表现更多更好的细节,那必然需要增加顶点,但是这些插件因为顶点生成都是均匀分布的,如果分配的大小过大,则总顶点非常庞大。而且需要平原地区需要的顶点数量并不多,会造成大量的浪费。所以放弃这些插件方案,后来考虑了下voxel engine,其用噪波函数生成地形,虽然生成的地形地貌贴近自然,而且减少了模型组的工作量,但是无法自由的编辑和配置且风格把控方面制作不易,所以也被放弃。因此,制作了自己的terrain2mesh,基于三角剖分和插件的shader而出,放出效果图如下:






资源下载地址:点击打开链接

2018.6.21:

更新V3版本:1。修正缺角问题(这是因为原始生成的切割多边形都是带有旋转的,可以通过调整在inspect面板上的RotPolygonAngle旋转参数,来控制输出)

                    2.修正SplitPercent 影响参数,通过maxcellcnt和autoconfig进行调整,

                    3.增加obj导出功能

tips: 这里使用0.01作为平面判断的额外系数在RemovePanelPolygon 中,你可以把这个参数外置,调整这个参数可以帮你剔除更多的无用平面,但是需要谨慎,

通过开放removelv的功能,可以将splitrange调小,splitpercent调大,然后控制removelv,建议小于0.1,来生成更多更细的切割多边形,最后通过三角剖分来生成更优的mesh,甚至可以通过导出obj来让模型师进行微调,来减面。

at the last,如果有人愿意提供一些场景资源,我可以帮你们做一个例子和视频~~

v3地址:https://download.csdn.net/download/kubilitydef/10490325


2018.6.25:

    增加剪贴板复制参数的功能,添加几个函数如下,然后添加guilaout.button 即可:

   void SetParams()
    {
        SplitMesh ScriptData = target as SplitMesh;
        string buffer = GUIUtility.systemCopyBuffer;
        string[] sp = buffer.Split(';');
        if(sp.Length >0)
        {
            ScriptData.depth = ReadInt(sp,0);
            ScriptData.RotPolygonAngle = ReadFloat(sp, 1);
            ScriptData.SplitPercent = ReadFloat(sp, 2);
            ScriptData.removelevl = ReadFloat(sp, 3);
            ScriptData.MaxCellcnt = ReadInt(sp, 4);
            ScriptData.SplitBias = ReadInt(sp, 5);
            ScriptData.SplitRange = ReadFloat(sp, 6);
        }
    }

    int ReadInt(string[] sp,int idx)
    {
        string value = sp[idx];
        string[] nextsp = value.Split(':');
        return int.Parse(nextsp[1]);
    }

    float ReadFloat(string[] sp, int idx)
    {
        string value = sp[idx];
        string[] nextsp = value.Split(':');
        return float.Parse(nextsp[1]);
    }

    void CopyParams()
    {
        SplitMesh ScriptData = target as SplitMesh;
        GUIUtility.systemCopyBuffer = string.Format("depth:{0};angle:{1};pecent:{2};lv:{3};cellcent:{4};bias:{5};range:{6}", ScriptData.depth, ScriptData.RotPolygonAngle, ScriptData.SplitPercent
            , ScriptData.removelevl, ScriptData.MaxCellcnt, ScriptData.SplitBias, ScriptData.SplitRange);
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

地形转网格工具(Terrain2Mesh) 的相关文章

  • POCO C++库学习和分析 -- 日志 (一)

    POCO C 43 43 库学习和分析 日志 一 日志对于程序来说是非常重要的 xff0c 特别是对一些大型程序而言 一旦程序被发布 xff0c 在现场日志几乎是程序员唯一可以获取程序信息的手段 Poco作为一个框架类库 xff0c 提供了
  • 字节存储排序:大端和小端

    当前的存储器 xff0c 多以byte为访问的最小单元 xff0c 当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题 于是端 endian 的问题应运而生了 对于不同的存储方法 就有大端 big endian 和小端
  • CRC算法原理及C语言实现

    CRC算法原理及C语言实现 摘 要 本文从理论上推导出CRC算法实现原理 xff0c 给出三种分别适应不同计算机或微控制器硬件环境的C语言程序 读者更能根据本算法原理 xff0c 用不同的语言编写出独特风格更加实用的CRC计算程序 关键词
  • 动态分配的内存释放之后指针要置空

    define CRT SECURE NO WARNINGS include lt stdio h gt include lt stdlib h gt void main2 int num scanf 34 d 34 amp num prin
  • yolomark的相关操作

    1 文件组成 主要组成部分如图上 改yolo mark脚本中指令 主要是改左边的图片路径 2 使用步骤 进入cmd 输入yolo mark exe的文件路径 开始标注 image num 是对应图像的数 xff0c object id是对应
  • c++:3.7迭代器(1)

    迭代器 迭代器的基本概念 xff1a 1 迭代器是一种遍历容器元素的数据类型 C 43 43 迭代器Interator就是一个指向某种STL对象的泛型指针 通过该指针可以简单方便地遍历所有元素 2 迭代器 xff08 iterator xf
  • 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理 xff1a 查询和进入中断处理 1 查询方式 void Init T0 void 定时器初始化 TMOD 61 0x01 计时器模式 TH0 61 65535 65000 256 初装值为65536 650
  • DIY 无人机

    这是一个为满足个人兴趣的实践性项目 这个项目起源于我买的一架航模级的遥控电动直升机 xff0c 想要飞好它还是相当困难的 xff0c 需要敏捷的反应 轻柔的控制 xff0c 不幸的是我的反射弧很长 xff0c 所以练习起来格外困难 在对我的
  • 自定义的CircleProgressBar,支持自定义宽度,颜色等等。

    基于Anbase框架优化了了一个自定义的CircleProgressBar xff0c onDraw方法如下 64 Override protected void onDraw Canvas canvas super onDraw canv
  • 3D打印技术

    3D打印技术 什么是3D打印技术3D打印机的发展和运用领域3D打印过程 什么是3D打印技术 3D打印 xff08 3D printing xff09 是快速成型的一种技术 xff0c 自1986年美国科学家查克 赫尔开发第一台商业3D印刷机
  • 改变世界的17个方程式

    数学是一种美妙而优雅的东西 xff0c 它隐藏在我们生活的方方面面 xff0c 却又难以察觉 xff0c 而这需要一双慧眼才能看到 2013年 xff0c 科普作家伊恩 斯图尔特 Ian Stewart 就专门出了一本书 xff0c 名叫
  • ROS控制多台机器人实现多机协同

    ROS控制多台机器人的思路与实现 1 实现思路1 1 两台机器人跟随1 2 多台机器人编队 2 TF工具的使用2 1 什么是TF2 2 TF的构成2 3 向TF工具广播发送自己位置2 4 向TF工具收听获取坐标关系 3 通过turtlesi
  • 适合小白入门Arduino UNO的介绍

    编者按 xff1a 本文转载于酷耍平台 xff08 kooshua com xff09 Arduino是什么 xff1f Arduino是一款便捷灵活 方便上手的开源电子原型平台 包含硬件 xff08 各种型号的Arduino板 xff09
  • 记海康摄像头获取保存截图的一个方法(c#)

    记海康摄像头获取保存截图的一个方法 xff08 c xff09 先获取海康摄像头接口信息 引入模块 span class token keyword using span span class token namespace System
  • Linux设备树语法详解

    概念 Linux内核从3 x开始引入设备树的概念 xff0c 用于实现驱动代码与设备信息相分离 在设备树出现以前 xff0c 所有关于设备的具体信息都要写在驱动里 xff0c 一旦外围设备变化 xff0c 驱动代码就要重写 引入了设备树之后
  • Arduino智能越野小车AIR ROVER

    摘自 xff1a https goldelec com product detail 507 精心打造智能小车AIR ROVER xff0c 结实 稳固 大小适中 xff0c 越野爬坡能强 xff0c 采用麦克纳姆轮 xff0c 通过手机A
  • SSR的原理及好处

    什么是SSR SSR是Server Side Render简称 xff0c 叫服务端渲染 在客户端请求服务器的时候 xff0c 服务器到数据库中获取到相关的数据 xff0c 并且在服务器内部将Vue组件渲染成HTML xff0c 并且将数据
  • 区位码、国标码与机内码

    区位码 国标码与机内码 为了适应计算机处理汉字信息的需要 xff0c 在 1980 年 xff0c 我国国家标准总局发布 信息交换用汉字编码字符集 基本集 1981 年 5 月 1 日 开始实施的这套国家标准 这套国家标准的标准号是 GB2
  • 获取NSString子字符串

    NSString类中提供了这样三个方法用于获取子字符串 xff1a substringFromIndex substringWithRange substringToIndex xff1a 它们该怎么使用呢 xff1f 见下面代码即可知道
  • NSData和UIImage之间的转换

    源自 xff1a http stackoverflow com questions 2240765 nsdata to uiimage Try this code This worked for me create path to save

随机推荐

  • 获取UIImage的图像MD5

    问 xff1a I 39 m trying to compare two UIImages from the file system to see if they are the same Obviously I can 39 t use
  • 最全面的shsh备份及恢复教程,已更新Win版小雨伞4.33.00

    转自 xff1a http bbs weiphone com read htm tid 2017752 html 很多小白不知道如何备份shsh xff0c 论坛有很多关于备份shsh的帖子 xff0c 但大多都不全面 xff0c 本贴把s
  • C++查看大端序小端序的一些思考

    首先明确一个概念 xff0c 无论是大段序还是小端序 类型指针指向的地址都是该类型所占内存的低地址 明确了这个 xff0c 就好判断大端序和小端序了 这是大端序小端序的介绍链接 下边的是验证系统是大端序还是小端序的程序 span class
  • 设计模式书籍推荐

    1 名称 xff1a Head First Design Patterns 语言 xff1a java 评论 xff1a Jolt大奖得主 xff0c 介绍了常见的十几种模式 我认为最好的模式入门书籍 xff0c 内容生动 xff0c 风格
  • C#如何调用linux so库

    testlib c中的内容 xff1a include lt stdio h gt int sum int a int b return a 43 b int minus int a int b return a b main cs中的内容
  • 电机KV值

    电机 KV 值 xff1a 电机的转速 xff08 空载 xff09 61 KV 值 X 电压 xff1b 例如 KV1000 的电机在 10V 电压下它的转速 xff08 空载 xff09 就是 10000 转 分钟 电机的 KV 值越高
  • 用DD命令制作硬盘镜像

    用DD命令制作硬盘镜像 本文参考http serverfault com questions 4906 using dd for disk cloning写出 xff0c 转载时请说明出处 以下的说明都是针对备份整个硬盘 xff0c 而不是
  • 什么是PID 算法

    PID是工业控制上的一种控制算法 xff0c 其中P表示比例 xff0c I表示积分 xff0c D表示微分 以温度控制的PID程序为例 xff1a P xff08 比例 xff09 表示在温度设定值上下多少度的范围内做比例动作 xff0c
  • html代码向左居右对齐

    刚才居然忘了 现在写出来 lt div align 61 right gt 居右对齐 lt div gt left左 xff0c center中 xff0c right右
  • 出现java.lang.IllegalArgumentException: No configs match configSpec

    模拟器不支持OpenGL ES 2 0 是因为android模拟器不支持OpenGL ES 2 0 xff0c 解决办法 xff1a 创建模拟器时 xff1a GPU emulation选yes xff0c 需要android 4 0以上的
  • [005] [ARM-Cortex-M3/4] 大小端存储

  • Android使用java调用C的方法

    Android使用java调用C的方法 xff1a 要将C语言写的算法需要集成到安卓端 xff0c 因此学习如何从安卓java调用C JNI 1 JNI 提示 Android NDK Android Developers google cn
  • STM32之USART-串口通信(含串口实验详细解析)

    STM32之串口通信 USART xff08 含串口实验详细解析 xff09 开发环境 xff1a Window 10开发工具 xff1a Keil uVision5 MDK硬件 xff1a STM32F103 资料参考 xff1a 正点原
  • 昆仑镜Air530 GPS串口输出

    原理图 Air724UG硬件手册说明 Air724UG模块硬件手册 实际开机后并不是默认打开 pmd手册 LDO VMMC level范围0 15 其中0表示关闭其余值满足下面公式 step 61 9 level 当step大于127时为1
  • 常用bat代码

    清除空文件夹 清理空文件夹 删除空文件夹 64 echo off for f 34 tokens 61 34 i in 39 dir s b ad sort r 39 do rd 34 i 34
  • 如何快速的翻译并阅读外文文献

    本文适用一些想要快速了解文献内容的童鞋 在进行查找文献时 不可避免要查找外文文献 其中以英文居多 当然也有可能涉及到其他语言 像楼主这样学了十几年英语 然而听说读写弱鸡的人 面对英语时 会头痛 要是查到其他语言的文献时 估计要死的心都有了
  • [c/c++ ]字节序与大小端转换

    注明 xff1a 以下内容均为学习内容整理 xff0c 记录 xff0c 便于自己学习 xff0c 并非完全意义上的自产 xff0c 如有感到不适 xff0c 请联系我 一 多字节值及字节序 1 brief 现在有一个数字 65430 xf
  • 5V升压8.4V芯片电路图,5V充电7.4V电池

    两节锂电池串联 xff0c 串联电压相加 xff0c 一般锂电池标称电压3 7V xff0c 3 7V 43 3 7V 61 7 4V xff0c 7 4V锂电池 xff0c 充电充满电压饱和是8 4V 7 4V锂电池放电电压一般是6V 8
  • 浅谈资源加载 -AssetBundleSystem

    AssetBundleSystem Ps 稍微抽点时间写一下这个 xff0c 这个小项目完成度80 左右 xff0c 在年初2月份的时候就完成的差不多了 xff0c 因为各种原因处于半搁浅的阶段 xff0c 现在官方出了Addressabl
  • 地形转网格工具(Terrain2Mesh)

    在游戏开发的制作中可能需要制作地形 xff0c 需要制作的相关的地形工具 xff0c 绝大部分情况下并不会使用unity的terrain xff0c 因为其在移动平台上的表现很差 xff0c 相同顶点甚至更多的mesh性能也比其优秀很多 x