0017加速UV检测的一种算法
加速UV检测的一种算法
需求:角色身上各UV块之间的间距不能小于30像素,距离UV边界([0,1])不能小于15像素,也就是要保证一定的UV出血量。
看起来挺简单,直接每个UV点计算距离对比就完了。然而现在每只角色平平常常都是几万面,拿到的测试文件UV顶点数50000左右。如果直接粗暴两两对比,那对比次数高达上亿,再加上存在多套UV,即使C++写插件计算时间也太慢,很可能就没法用了。
稍加分析都会想到,先取每块UV的边界点,再进行处理。这样需要处理的数据量就会减少很多了,通常也就勉强能用了。但其实仍然不少,而且大量的计算实际上都浪费了。理想情况下,每块UV应该只去查环绕在它周围最近一圈的其它UV块,与它们边界上的UV点进行对比。
现在的问题是几乎每块UV都弯弯扭扭,有的跨度长有的跨度短, 准确找出相邻UV块是个难题。也不知道有什么好算法,要精确查找带来的计算量也可能大得吓人,搞不好又跟最初的方案差不多耗费时间了。
怎么办?
直接说我的算法,如下:
计算每块UV的BondingBox,构建一个矩形;检测所有矩形的相交情况,根据这将UV块分组,也就是说找出每块UV及其周围一圈需要对比的那些UV Shell,最后根据这些分组计算各UV Shell边上的UV点间距。
到这一步问题似乎就解决了。但是且慢,由于模型的对称性,往往存在好些UV块是完全重叠的,经过上面的计算后你会发现,结果似乎不对头。为什么呢,因为重叠的UV块会被分到将要与之对比检查的组里面,显然它们是不可能有30像素间距的。这时就要把这种情况从分组中排除掉。
解决办法也很简单了,检测矩形是否重叠。(从这里引申出另一个问题的解决方案,那就是检测是否有UV重叠)简单的算法,对比Rectangle的topLeft与rightBottom坐标就行。
其实这种情形还有一些小意外,可能模型经过几次修改后,原本对称的部分有小幅度的改动,导致UV又不完全重叠了。这种根据实际情况加个对比的容差值也就好了。
至此,算是可以比较好的解决这个需求了。Python代码也就二三百行,不同复杂度模型检测速度在十秒左右(5万左右面, 2套UV)。如果按最初想法上来简单粗暴处理,那结果就是电脑直接死机了,永远没有结果。
0017加速UV检测的一种算法相关推荐
- 论文推荐 | 目标检测中不平衡问题算法综述
(图片付费下载于视觉中国) 作者 | CV君 来源 | 我爱计算机视觉(ID:aicvml) 今天跟大家推荐一篇前几天新出的投向TPAMI的论文:Imbalance Problems in Objec ...
- ## 论文学习—用一个可接受的的剪枝策略来加速动态时间规整聚类的算法
论文学习-用一个可接受的的剪枝策略来加速动态时间规整聚类的算法 "Accelerating Dynamic Time Warping Clustering with a Novel Admi ...
- 显著性检测的四种经典方法
最近闲来蛋痛,看了一些显著性检测的文章,只是简单的看看,并没有深入的研究,以下将研究的一些收获和经验共享. 先从最简单的最容易实现的算法说起吧: 1. LC算法 参考论文:Visual Attenti ...
- AI入门级的开发技巧:人脸检测的4种常见方法以及优缺点对比
这是一篇纯干货文章,旨在与AI初学者分享关于人脸检测的4种常见方法,以及它们的各自优缺点的对比.同时我也从一位资深的AI开发者角度,给大家提出一些个人的开发技巧和建议,便于大家找到适合自己需求的方法. ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...
- 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...
出品 | AI科技大本营(ID:rgznai100) [导语]2019年8月22日,腾讯首个AI开源项目Angel正式发布3.0版本.Angel 3.0尝试打造一个全栈的机器学习平台,功能特性涵盖了机 ...
- Drug Target Review | 开发一种算法来预测药物性肝损伤
Elsevier和FDA之间合作将提出一种算法,用于准确预测药物诱发的肝损伤.Drug Target Review调查了该毒理学项目将为药物发现行业带来的好处. 确保候选药物进行毒性分析是药物开发过程 ...
- 独家 | 决策树VS随机森林——应该使用哪种算法?(附代码链接)
作者:Abhishek Sharma 翻译:陈超 校对:丁楠雅 本文长度为4600字,建议阅读20分钟 本文以银行贷款数据为案例,对是否批准顾客贷款申请的决策过程进行了算法构建,并对比了决策树与随机森 ...
- 爱因斯坦谜题解答(三种算法比较)
爱因斯坦谜题: 在一条街上有颜色互不相同的五栋房子,不同国籍的人分别住在这五栋房子力,每人抽不同品牌的香烟,喝不同的饮料,养不同的宠物.已知如下情况: 1. 英国人住红色房子里. 2. 瑞 ...
最新文章
- 飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2
- 最小生成树(MST)
- 最实用的10个重构小技巧排行榜,您都用过哪些呢?
- python 服务端与c++客户端通讯_在C++与Python之间通信(IPC)
- android java split_Java中的split函数的用法
- vue+elementUI 添加多个可以全选的多选框
- 阿里巴巴研究员刘国华:阿里巴巴智能运维体系建设
- VDI序曲二 RemotoAPP部署
- Mybatis if test 中int判断非空的坑
- Pipe——高性能IO(二)
- Android USB Audio accessory设备
- 社工库源码mysql_社工库源码
- 项目汇报模板—再也不怕撕逼了
- el-select 默认选中url参数对应的选项
- 华为手机能隐藏蓝牙吗_华为手机的11个隐藏功能
- PC上无法捕捉vlan tag的原因
- PHPExcel导出excel入门实例教程
- 乐乐和表姐(共15张)nbsp;-nbsp;照片质量…
- java 实现写出倒立三角形的几种方法
- 计算机软件申请专利描述,计算机软件能否申请专利?
热门文章
- 微信服务商特约商户入驻接口(提交申请单)示例DEMO-java版
- 苹果要加入Face ID到Mac,Magic Keyboard 添加 Touch Bar
- 为什么连接xshell报错Could not connect to 172.16.16.100 (port 22): Connection failed
- 浏览器访问jsp页面
- python检测键盘输入termios、等待按键超时检测
- java基础知识之加强
- win10环境下搭建IIS图片服务器
- 计算机房灭火房间用的系数,消防安全知识试题(三)(2)
- Cisco ❀ VRF(虚拟路由转发表)
- 安卓图像处理(四)保存以及删除图片