当前位置: 首页 > 编程日记 > 正文

你还有学了三年建模的朋友吗?他有救了

【 编者按】“我朋友学了 3 年建模”系列,一直以浮夸的操作占据于各大视频网站搞笑榜。此前,来自布拉格捷克理工大学、 Google 研究院、和华盛顿大学以及苏黎世联邦理工学院的研究者们发布了 Monster Mash 项目的论文和动效视频。用户绘制二维图像,通过框架识别进行充气、3D 建模,从而实现高效的动画处理,去除不必要的互穿。提供了更简单的建模和动画体验,人人都可以是神笔马良。

作者 | 八宝粥

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

当你朋友学了 3 年建模,给你看他下面这类作品的时候,不得不给他一个尴尬而不失礼貌的微笑,内心无数个“就这?”

做 3D 动画的话,首先需要建模,然后需要制定运动的关节在模型当中的位置,称之为装配,这个过程十分费力,而且需要相当专业的知识。

如果非要做出这样的 3D 模型,也没有马良的神笔,也许计算机科学家能拯救他,去年,来自科研机构和和 Google 研究院的研究者们推出了新的 3D 建模工具——Monster Mash,用户只需要勾勒 2D 图像和选择关节位置即可,2D 转 3D 的过程比传统的工作快了 5 倍左右,甚至都不需要什么专业的装配知识。

论文发布于 2020 年 11 月,近日,该框架的源码和 demo 平台公布了出来(详细见文末)。

论文讲原理

基于这个框架,我们只要画出轮廓,然后设置动态点的轨迹就好了。官方绘制了下面这些可有意思的小图案。

从原理和给出的 demo 图来看,怎么看都是从中国的吹糖人里得到的启发:

  • 你看这颜色,多像;

  • 你看这原理,就是吹起来,然后扯一下需要动的地方。

可能这些科学家里面有中国迷吧~

在各种艺术形式当中,都有阳春白雪和下里巴人,从严格到自由,音乐可以是结构化的,也会有即兴演奏。

绘画也是一样,有完全写实的,也有这种速写一样的将特征进行快速夸张体现的。当人们进入“心流”的时候,他们是最具有创造力的。

这需要挣脱技术的束缚,尤其是对于犯错的恐惧。作者的意思就是所谓的『重剑无锋,大巧不工』。通常制作动画的时候,人们会尽量关注技术,包括建模、定义骨骼关节和变形参数,摆放和设置关键帧,很少以“休闲模式”进行工作的。

从“简笔画”到“三维图” 这种操作,其实并不是什么新鲜的方案。此前已经有不少的成果。早在 1999 年,就有一款名叫 Teddy 的软件实现了这个功能。后续又有各种各样的软件基于 Teddy 扩展了基于草图的建模。2012 年的 RigMesh 也是里面的佼佼者,它为用户提供了索具安装,可以自定义设计运动模式。

而 Monster Mash 的设计主张则是希望人们能够更加简单和自由地发挥自己的想象力和艺术感觉,不要失去自己的“休闲感觉”。Monster Mash 也是基于前人的工作进行开发,只是这里在“充气”的处理上有不同,多数草图建模方法是独立充气的,直到 2018 年 Dvorožňák 考虑的 2.5D 浅浮雕方法,我们将该方法扩展到了完整的 3D 场景,并提供了对网格进行动画处理的功能。

该方案还针对仅使用 ARAP(as-rigid-as-possible) 方法产生的碰撞和穿透(也就是我们在游戏里面遇到的穿模 Bug)使用 ARAP-L (rigidity-preserving layered deformation model)方法消除这些工件。从而实现更加平滑的结果。

以 RigMesh 为对象进行比较发现,该项目进行渲染需要的时间仅仅是 RigMesh 的 1/7 ,而且在启动速度和冲突处理上也均有上佳的表现。

Demo 平台尝试

近日给出的源码和 demo 平台也令人跃跃欲试,毕竟看起来并没有什么门槛。官方给出的入门教程来看还是很简单的,一共分三步:勾个边,吹得鼓,数个一二三四五,点个点,描轨迹,其实这事儿挺容易。

1.勾勒一个外观:

2.充气:点击充气按钮即可。

3.动效生成

点击生成控制节点,然后点击录制按钮,绘制每个控制节点的轨迹即可。

当然在 demo 当中,还有重画、打开和保存项目等操作。而且还支持模板图案,前几天火爆某 APP 的《蚂蚁雅黑》估计也能用这个来做~

如果还不会,可以再看一遍『HELP』。

实战

看上去很容易的样子,当然要实际操作一下。笔者尝试了一天的结果就是——眼睛:“我会了!” 脑子:“你会个P!”,发现自己还是那个“学了三年动画的朋友”。

如果大家能实现“学了四年的效果”,欢迎在评论区留言~

【参考资料】

  • 项目地址 :

    https://dcgi.fel.cvut.cz/home/sykorad/monster_mash.html

  • 论文:

    https://dl.acm.org/doi/10.1145/3414685.3417805

  • 在线项目展示:

    http://monstermash.zone/

  • 项目源码:

    https://github.com/google/monster-mash

点击这里 ???? 关注我们~~~

更多精彩推荐
☞一年新增457万例,用 Python 揭示癌症的可怕之处☞腾讯:这可是一只“骨骼清奇”的狗☞用数据分析《你好,李焕英》“斐妈”爆红的真相☞从猫狗不分到实时识别准确率超过99%,计算机图像识别是如何做到的?
点分享点收藏点点赞点在看

相关文章:

iOS培训objective-c——实例化对象

蓝鸥iOS培训推荐:好像好长时间没和大家分享了,那么今天主要和大家说说OC内容创建实例化对象,基本让也就分为几大类:1.ClassName*myNewClassName;//指针2.myNewClassName[ClassNamealloc];//通过alloc这个命令申请一个空间来存放我…

#423 Div2 D

#423 Div2 D 题意 构造一个 n 个节点的树,恰好有 k 个叶子节点 (叶子节点的定义是只与树上的某一个节点存在连边),要求任意两个叶子节点的距离的最大值最小,距离为两个节点间边的数量,输出距离的最大值,以及 n - 1 条边…

CDMA模块上网设置的过程

CDMA模块上网设置的过程一) AT指令设置部分(1) ATCSQ 检查信号 若返回10—31,99之间的信号数字则继续,如果信号是99,99,则应该考虑不停的键入A/命令,不停的让模块去搜寻网络。&…

RedHat 年度报告:只索取不贡献的开源消费“大户”不受待见

编译 | 清儿爸编辑 | 夕颜头图 | 下载于视觉中国据 Red Hat 公司委托发布的一份新报告称,新冠疫情可能在云计算基础设施和企业开源软件方面留下不可磨灭的印记。Red Hat 是 IBM 于 2018 年以 340 亿美元收购的企业开源软件产品供应商。第三次年度《企业开源现状》&a…

做产品的一些思考

从我当前的职业经历来看,做过两种类别的产品:一种是客户定义好了需求由我们去实现,我姑且称其为做项目;一种是自己去探索用户需求然后在不断的摸索中引导用户,实现价值,这是我笔下真正的产品。做项目目标明…

查看JDK的历史版本

1.打开如下链接http://www.oracle.com/technetwork/java/javase/downloads/index.html2.查找如下内容,点击进行3.选择你需要的版本,点击进入4.找到相应的版本下载即可转载于:https://blog.51cto.com/suyanzhu/1947530

终于有人解救Python人了!

从事Python开发的这些年中,我见过很多相关的入门教程和书籍,他们大都这样讲 :先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往…

WISMO模块GPRS上网设置的过程

WISMO模块GPRS上网设置的过程一) AT指令设置部分(1) ATCGCLASS“B”置为“B”模式。(2) ATCGDCONT1,“IP”,“CMNET”设置APN。(3) ATCSQ 检查信号 若返回10—31&#x…

【虚拟化实战】VM设计之一vCPU

作者:范军 (Frank Fan) 新浪微博:frankfan7虚拟机需要多少个vCPU呢?是不是个数越多性能越好呢?这方面存在着很多误区。给VM配置CPU资源的时候,要精打细算才能最大可能的利用已有资源&#xff0c…

新手小白 python之路 Day1 (三级菜单功能实现)

直接上需求: 实现一个多级菜单 三级菜单的实现 可以依次选择进入各个子菜单 也可以返回上级菜单 所需知识 列表 字典 需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是 字典 等 大致的思路 我…

简要AT命令介绍

FUNCTIONSAT COMMANDSDETAILS厂家认证ATCGMI获得厂家的标识模式认证ATCGMM查询支持频段修订认证ATCGMR查询软件版本生产序号ATCGSN查询IMEI NO.TE设置ATCSCS选择支持网络查询IMSIATCIMI查询国际移动电话支持认证卡的认证ATCCID查询SIM卡的序列号功能列表ATGCAP查询可供使用的功…

CentOS 5.6下创建KVM虚拟机

【51CTO专家投稿】RedHat 的下一代旗舰产品RedHat Enterprise Linux 6只包含 KVM,这一点 RedHat 官方已经在很久以前、在不同场合都确认过。KVM 发展很快,稳定性有了很大提高,随着 RHEL 6 的正式到来,KVM 应用到生产环境的日子应该…

手把手教你如何制作可视化大屏!

在我们生活和工作中,经常会看到可视化大屏,主要用于展示一些汇总信息,那如何制作一个酷炫的可视化大屏呢?今天带大家看个github上的案例。项目地址:https://github.com/yyhsong/iDataV/tree/master/case09效果如下&…

ES5和ES6数组遍历方法详解

ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1、原始的for循环语句2、Array.prototype.forEach数组对象内置方法3、Array.prototype.map数组对象内置方法4、Array.prototype.filter数组对象内置方法5、Array.prototype.reduce数组对象内置方法6、Array.prototype…

短信猫GSM Modem

短信猫是用来收发短信的设备,和手机一样 插入SIM卡,通过(USB或串口)数据线/PCI插槽接到电脑上 在电脑上通过相关软件就可以实现短信收发的功能相关软件也就是收发短信的短信应用软件 可以自己开发,也可以要求短信猫设备…

数量级提升!深度学习让机器人抓取更高效

作者 | Jeffrey Ichnowski等译者 | 凌霄出品 | AI科技大本营(ID:rgznai100)摘要电子商务仓库中的拣选机器人需要快速计算各种配置之间有效且平稳的机器人手臂运动。最近的研究中是将抓取力分析与手臂运动规划结合,以计算最佳的手臂平滑运动&a…

phpcms_v9修改文章会提示 [hash]数据验证失败

收藏备用&#xff1a;phpcms\modules\content\templates\content_edit.tpl.phpaction"?mcontent&ccontent&aedit改成action"?mcontent&ccontent&aedit&pc_hash<?php echo $_SESSION[pc_hash];?>"转载于:https://blog.51cto.com/w…

横向ListView(一) ——开篇,基础逻辑实现

2019独角兽企业重金招聘Python工程师标准>>> 第一次写博文&#xff0c;写得不好的地方还望各位看客见谅 为了学习自定义软件开发&#xff0c;且定制出满足自己需求的控件&#xff08;不需要将就地使用第三方源码&#xff09;&#xff0c;本人花了一周的时间开发了个…

HTTP Response中的Chunked编码

进行Chunked编码传输的HTTP Response会在消息头部设置&#xff1a; Transfer-Encoding: chunked 表示Content Body将用Chunked编码传输内容。 Chunked编码使用若干个Chunk串连而成&#xff0c;由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分&#xff0c;头部…

ORACLE RAC 更改instance name完整步骤

下面是更改的部分步骤&#xff0c;但是启动问题还是存在&#xff0c;求达人完整。单实例的数据库修改SID比较简单&#xff0c;只需要修改pfile相关参数&#xff0c;就可以挂载数据库。 RAC环境其实一样&#xff0c;只不过除了修改pfile&#xff0c;还需要修改 OCR信息。首先来看…

炸裂!微软重磅推出混合现实平台 Mesh、基于 Excel 的低代码语言 Power Fx,Ignite 2021 太精彩!...

作者 | 伍杏玲出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;“一开始&#xff0c;这就是混合现实的梦想。” 在微软 Ignite 2021 大会上&#xff0c;微软 HoloLens 之父 Alex Kipman 头戴 HoloLens 2&#xff0c;出现在科技感十足的海底世界虚拟舞台上&#xff0…

Apache Spark 2.2.0 中文文档 翻译活动

为什么80%的码农都做不了架构师&#xff1f;>>> Spark 2.2.0 已然发布&#xff08;2017-07-11 发布&#xff09; 5 天了&#xff0c;更新了一些新套路吧&#xff01; 此版本从 Structured Streaming&#xff08;结构化流&#xff09;中删除 experimental&#xff0…

Unity3D常用代码总结

1 GUI汇总 function OnGUI() { GUI.Label(Rect(1,1,100,20),"Im a Label"); //1 GUI.Box(Rect(1,21,100,20),"Im a Box"); //2 GUI.Button(Rect(1,41,100,20),"Im a Button"); //3 GUI.RepeatButton(Rect(1,61,120,20),"Im a RepeatButton&…

Python 搭建车道智能检测系统

作者 | 李秋键责编 | 寇雪芹出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;引言&#xff1a;本文将利用opencv实现对复杂场景下车道线的实时检测&#xff1b;所使用的图像处理方法主要是在读取图片的基础上&#xff0c;进行多种边缘检测&#xff0c;然后对不同的检测…

ASP.NET弹出窗口技术之增加网站流量方法

作为Microsoft的最新建立动态Web网站的工具,ASP.NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进。它的代码与页面分离技术(CodeBehind)以及完善的Web服务器控件为程序员提供了一个更加符合传统编程的Web服务器端开发方式。但Web编程还是有着与传统编程不相同的特…

检查是否支持 SO_REUSEPORT

为什么80%的码农都做不了架构师&#xff1f;>>> int reuse_port(int sockfd) {#ifndef SO_REUSEPORT#define SO_REUSEPORT (15)#endifconst int on 1;return setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)); } 转载于:https://my.oschina.n…

nginx的tmp文件过大导致磁盘空间不足一例

个人微博&#xff1a;http://weibo.com/h2fly欢迎技术交流现象&#xff1a;8月23之后&#xff0c;时不时收到服务器的/usrused > 90%的报警排查:1、du发现磁盘/usr使用不大&#xff0c;而报警使用的df》明显是有文件删除了空间没释放。注&#xff1a;du和df的实现机制不同&a…

10年Java老兵宝藏资料,吐血奉献!

2021都说工作不好找&#xff0c;也对开发人员的要求变高。前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档&#xff08;1000道高频题&#xff09;&#xff0c;同时也整理一些图文解析及笔记&#xff0c;今天在这免费分享给大家&#xff0c;希望大家…

IOCP , kqueue , epoll ... 有多重要?

原文地址&#xff1a;http://blog.codingnow.com/2006/04/iocp_kqueue_epoll.html设计 mmo 服务器&#xff0c;我听过许多老生常谈&#xff0c;说起处理大量连接时&#xff0c; select 是多么低效。我们应该换用 iocp (windows), kqueue(freebsd), 或是 epoll(linux) 。的确&am…

[故障解决]图文:python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决

python启动报错&#xff1a;api-ms-win-crt-runtime-l1-1-0.dll丢失解决 环境 Windows 7 SP1 x64python3.6.1报错 解决办法 1.下载VC redist&#xff08;安装时读条卡在&#xff1a;正在处理:Windows7_MSU_x64&#xff09;2.到C:\ProgramData\Package Cache\里面搜索&#xff0…