介绍:

下载地址:https://assetstore.unity.com/packages/tools/modeling/mesh-slicer-59618

Mesh Slicer 是一个可以进行切割人体或者切割其他物体的能力的,他比较好的一点是组织三角面的能力,不会像其他切割网格的方式会产生把多个原本独立的网格连接起来(因为这样索引设置简单)。

而介绍的Mesh Slicer 则比较好的解决这个问题,他原理是丢弃一些顶点信息然后重建了三角形网格。

以下介绍一下他的工作流程:

首先他需要指定一个plane来形成一个分割面。然后还需要一个slicdid,这个的作用是区别其他slicd动作,因为有可能你同时再割很多物体。然后把准备的数据和collider丢到CharacterComponentManagerFast中。

他会分成neg和pos来展示最终的切割,无论你有多少个分离的mesh,他都只会有这两个gameobject。每个gameobject下会有一个joint的connected的根节点。根节点的定义后面会说。

然后组织好网格数据信息,材质信息,collider信息等就开始建立一个线程分割或者你想单线程分割也行,但是割多物体会等待。

因为我们是人体分割,所以用的是mesh的分割SliceMesh。

我们切割后要把边缘上的网格给合并起来,他的做法是:

一:三角形重建:

先找到每个顶点的世界坐标是在我的切割平面plane的正面还是背面来做切割的。如果有一个在正面并且有一个在背面说明这里是切割的点,需要重新组织网格

然后分6种情况考虑分割,分别是:

一:顶点1在背面,其他都在正面

二:顶点2在背面,其他都在正面

三:顶点3在背面,其他都在正面

四:顶点1、2在背面,顶点3在正面

五:顶点3、2在背面,顶点1在正面

六:顶点1、3在背面,顶点2在正面

这三种情况就需要把顶点重新组织索引兵建立新的三角形。

建立的方式有两种,第一种是一个顶点被分割在面以外的,则要建立两个新的顶点个这个孤立的顶点组成一个三角形。

第二种是两个顶点被分割成另一面的则要建立两个顶点并且要建立成两个新的三角面。

而寻找的新的顶点的计算方式是每两个顶点之间确定一个方向,然后用一个射线去检测找到plane的位置,最终射线得到了一个距离,然后除以两点间的距离,得到了一个比例。

这个比例就是两个顶点间建立新点的位置,其他法线,uv之类的也是靠这个比例重新计算。

然后将所有属于plane正面的顶点放在一个数组,背面的放在另一个数组,用于后面的网格组织。

因为有可能重建之后有可能有相同位置的点,

还有可能是v1,v2,v3都在同一个方向上的,如果是的话就去掉中间点,而连接v1和v3.这样减少了网格和顶点。

所有的三角形都按照上面的逻辑执行。

二:组成新的网格:

组成三角面是用BzPoly来组织的之前,对每个边缘点都会先从蒙皮权重中拿到当前的顶点的位置信息,因为他最后会有布娃娃系统,顶点还是加上蒙皮信息才行,并且旋转到plane的法线方向。

从法线方向的意义也在于他MakeMesh的时候降为2维了来看三个顶点的normal之外的方向是否有一致的方向,如果有也是可以减少一个三角面的。

其他就相对比较简单了,组织法线啊,uv啊,骨骼蒙皮权重啊之类的。最终成为新的网格。

三:组织布娃娃

在CharacterComponentManagerFast中OnCompletePerSide是组织布娃娃系统并且骨骼相关信息的父节点放置的处理。

这里有个关键的潜规则,因为布娃娃系统是需要connecter body的。他需要这个对象来跟他形成依赖。而始终需要一个根依赖来让他下面的布娃娃都能随根节点的运动而运动,而不会出现没有根节点网格被拉伸的情况。

要让一个节点成为根节点是有要求的,在这里需要他有collider。如果自己或者子节点有collider他就有可能成为根节点。

然后如果同样有collider,谁的rigidbody的数量多则谁又会成为根节点。

根节点确定了后就是所有的节点的父节点设置了。

然后因为我们joint需要相互依赖,再这里他还对每个rigidbody的中心质量之类的进行了设置。

最后是重建网格输出结果

Mesh Slicer 切割人体的原理分析相关推荐

  1. 一篇读懂无线充电技术(附方案选型及原理分析)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: 目录 一篇读懂无线充电技术(附方案选型及原理分析) 0.背景 1.无线供电特 ...

  2. 【我的世界原理分析】1.光照原理

    [我的世界原理分析]1.光照原理 前言 1.平滑光照 2.环境光 3.光照算法 前言 最近在研究类我的世界这样的游戏,方便以后开发以及提供给更多人一个思路.大家多多评论留言我会不断更新更多相关内容. ...

  3. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

  4. 一文读懂无线充电技术(附方案选型及原理分析)

    一文读懂无线充电技术(附方案选型及原理分析) 标签: 无线充电 技术 电子 解决方案 2017年09月02日 10:27:12 5807人阅读 评论(1) 收藏 举报 (function () {   ...

  5. 人体运动学非线性分析(一)—熵特征

    近似熵和样本熵的原理及在人体运动学分析中应用 熵的基本概念 在信息理论中熵被认为代表着信息的丢失,它是基于我们对于当前系统状态的理解以及能够在多大程度上准确预测该系统的下个状态.如果某系统的熵值很低时 ...

  6. 人体肌肉力量分析系统设计:基于MATLAB的肌肉力量分析和仿真,包括肌肉动力学建模、肌肉极限力量评估和运动控制

    以下是基于MATLAB的人体肌肉力量分析系统设计的详细内容,包括肌肉动力学建模.肌肉极限力量评估和运动控制等原理详解,以及相应的代码实现和运行结果. 肌肉动力学建模 肌肉动力学建模是肌肉力量分析系统的 ...

  7. 阻容降压原理分析及实际用法

    将交流市电转换为低压直流的常规方法是采用变压器降压后再整流滤波,当受体积和成本等因素的限制时,最简单实用的方法就是采用电容降压式电源. 阻容降压原理分析及实际用法 1.阻容降压简介 1.1什么是阻容降 ...

  8. 电脑对人体的伤害:分析、保护

    电脑对人体的伤害:分析.保护 一.电脑对皮肤的3大致命伤害直接表现: 第一:皮肤干燥有细纹肤色变黄. 第二:长有斑点. 第三:眼部有细纹.黑眼圈严重. 二.电脑对皮肤的伤害详解_______ 使用电脑 ...

  9. java signature 性能_Java常见bean mapper的性能及原理分析

    背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...

  10. Select函数实现原理分析

    转载自 http://blog.chinaunix.net/uid-20643761-id-1594860.html select需要驱动程序的支持,驱动程序实现fops内的poll函数.select ...

最新文章

  1. Android学习笔记(五)——数据存储(二)SQLite和ContentProvider
  2. Sqlserver 优化的方法
  3. 双机热备_什么是双机热备?
  4. 求解哈夫曼编码Java实现,用Java实现哈夫曼编码解决方法
  5. .net core依赖注入的封装
  6. linux QT 结束当前进程_Qt编写控件属性设计器7-串口采集
  7. 获取本年、本月、本周时间范围_获取本周本月本季度本年开始结束时间.html
  8. 农村人深加工红薯,一招增值数倍,机器一条龙操作省人力
  9. 创业一定要取个好名字,才容易实现人生逆袭
  10. python网页数据处理_python 处理html页面爬虫数据
  11. servlet 从oracle中结果集,用servlet对oracle进行增删改查
  12. 【Shiro第二篇】SpringBoot + Shiro实现用户身份认证功能
  13. 浏览器无法打开搜索引擎页面
  14. RAR文件格式学习(了解)
  15. 获取汉字的五笔,全拼和双拼的工具类
  16. 小布老师oracle,小布老师-oracle-1
  17. 什么是云桌面?企业为什么要关心云桌面?
  18. 巧妙地帮你的手机节省流量,担心流量超出的机友们看过(转)
  19. 跟我一起写 Makefile
  20. 深大uooc学术道德与学术规范教育第七章

热门文章

  1. linux使用TCP聊天室设计详解,基于linux的TCP网络聊天室设计与实现
  2. 【ESP8266】 ESP8266与LittleFS文件系统
  3. windows 10 宽带拨号时无法开启热点,解决热点开启问题
  4. 1362:家庭问题(family)
  5. python删除列表第一个,在Python中删除列表的第一个元素
  6. MimeType对照表
  7. 2015~2020年中国房价走势
  8. 帆软报表多数据集关联合并操作
  9. 关于Qt Creater中资源文件和文件路径的记录
  10. Rabbitmq使用优先级队列实现消息插队