中文的R3DS Wrap软件的教程较少,最近刚好实操了一遍,特此记录下来。

为了描述方便,下面将R3DS Wrap简称Wrap。

软件官网:https://www.russian3dscanner.com/

一、 目的及所需输入材料

下面介绍一下使用Wrap将高模转为低模的方法。

虽说目的是将高模转为低模,但是从软件名称和实际操作可以看出,软件是使用低模或者说是base mesh去包裹(wrap)高模,从而得到高模上对应与低模的顶点位置。

要将高模转为低模,首先需要两个模型,一个是预先定义的低模,一个是通过相机矩阵或者其他方式获取到的高模。

为了方便操作,文章提供预定义的低模(百度网盘:(链接: https://pan.baidu.com/s/1EU_IujrY1pHWFMbwUCnmUg 提取码: l85g)),而高模来源于Wrap预定义的模型(下面会提到)。

二、基本界面

打开Wrap可以看到下面界面

可以看出,wrap的界面非常简单,由三个大模块组成**(为了方便描述下面的介绍中,将各个界面定义为"1界面",“2界面”,“3界面”)**:

  1. 为可视化的界面,该界面又有多种视图,可以直接分别按Q、W、E、R键进行切换视图
  2. 为添加节点的界面,里面可以按Tab键,进行节点的添加。这里每一个节点是软件预定义的,一个节点表示一个操作
  3. 为对应2中某些节点需要编辑的参数

在2界面处点击Tab键,界面如下,白色框可以搜索相应的节点,也可以从下面的选项中选择想要的节点添加进来。

三、高模转为低模

3.1 加载低模和高模

  1. 下载上面百度云盘中提供的低模,并保存至硬盘中,这里我们保存在桌面上test文件夹里面。

  2. 在2界面中按Tab->Geometry->LoadGeom,出现如下界面

  3. 看到"3界面"出现了一些参数设置,选择File Names右边的…,然后选择刚刚下载好的低模,出现如下界面。如果"1界面"没有看到对应的模型,可以点击键盘的f键,这样可以获取合适的模型大小。

  4. 点击键盘的R键,看到Scans那一栏有Wrap提供的几个高模,我们随便点击一个模型,这里选中Alex的模型。可以看到"2界面"新加了两个节点,一个是LoadImage01(该节点可以加载各种map,如albedo map,normal map等,这里默认加载了albedomap),一个是LoadGeom02(该节点加载了一个高模)。这里要说明的是LoadGeom节点右侧有个蓝色的方块,表示在"1界面"中显示对于的模型,如果点击该蓝色方块,则蓝色和对应的模型都消失了。

3.2 剔除不需要的顶点(optional)

注意:这一个节是可选的,采用有些预定义模型可以不用。但是采用本文提供的低模必需有这一节的操作。由于有些预定义的低模会包含一些独立的顶点(例如左右眼球,口腔等),如果不剔除那些独立的顶点,在下面的包裹阶段会出现下图所示的错误。错误提示内容为"floating geometry contains 3 disconnected polygon components, should be one"。意思就是在执行wrapping操作的时候,低模存在多个独立的组成部分,但是wrapping操作的输入低模必须是一个。

  1. 在3.1节的基础上,选中"2界面"->点击Tab键->Selection->SelectPolygons,将LoadGeom01与SelectPolygons01节点如下图所示连接起来
  2. 点击键盘E键,使得"1界面"切换到Visual editor视图,然后选中右半边脸的面片,如下所示
  3. 点击Visual editor视图下方的Hide selected选项,可以将选中的面片隐藏起来,然后旋转模型可以看见里面的左右眼球

  4. 3步骤是为了方便观察内部的结构,现在选择Visual editor下方的Unhide all按钮,然后双击人脸上任意一处的三角形,如下图所示,说明Selectionpolygons01节点已经选择了除眼球以外的所有节点以及面片
  5. 添加Subset节点,操作为:点击Tab键->Geometry->Subset,可以看见Subset节点有两个输入,将鼠标放到输入点上可以看到输入的名字,如下图连接节点,点击q键,回到Viewpoint3D视图,这时候可以点击LoadGeom01和Subset01节点右侧的蓝色块来查看对应的可视化

    完成3.2部分的所有步骤后,Subset01节点的输出为剔除低模预定义的左右眼球后得到的低模。

3.3 低模与高模对齐

  1. 要使得低模与高模对齐,需要先预定义对应的点,所以在"2界面"中添加SelectPoints节点,操作为:点击Tab键->Selection->SelectPoints。SelectPoints需要两个输入,一个为低模一个为高模,如下图所示
  2. 点击e键切换视图,可以看到左侧的"1界面"出现两个模型。如果没有看到下图中的模型,分别选中"1界面"的左右子视图然后点击f键
  3. 分别如下图选中对应的点,注意:在两个模型上选择点的顺序必须一模一样。当然选择的点可以与下图不同,可以自己定义,点越多,对齐越准
  4. 添加RigidAlignment节点,操作:点击Tab键->Alignment->RigidAlignment,如下图连接节点,在"3界面"中勾选Match scale,是的两个模型大小一致,然后切换到Viewpoint3D视图,并且在"2界面"中选择显示的LoadGeom02和RigidAlignment01节点,隐藏其它节点,可以得到如下视图

3.4 将对齐后的低模包裹高模

  1. 添加Wrapping节点,操作:点击Tab键->Alignment->Wrapping,按照下图连接节点
  2. 点击"3界面"中compute按钮可以看到如下图,表示正在计算
  3. 计算完成后,只显示LoadGeom01和Wrapping01节点,可以看到包裹后的结果如下图所示

3.5 保持与原始低模相同的点数与顺序

完成3.4就包裹完成了,但是由于3.2节为了能够成功包裹,去除了眼球,如果直接保存包裹后的结果,会丢失眼球的节点,并且包裹后的顶点顺序也不同于原始低模,所以下面要利用Lattice节点保留眼球节点,并且使得输出的顶点数和顶点顺序与原始低模一模一样。

  1. 添加Lattice节点,操作:点击Tab键->Geometry->Lattice,Lattice的节点有三个输入,可以将鼠标放置在每个输入出查看应该输入什么。由于Lattice相对较难理解,这里解释一下,Lattice可以理解为一个映射函数,第一个输入是原始的低模,表示需要进行映射的输入,第二和第三个输入分别为剔除顶点用于包裹的低模和包裹后的模型,表示包裹的映射。如果看不懂按照如下图连接节点即可

3.6 保存模型

  1. 添加SaveGeom节点,保存包裹后的低模。操作:点击Tab键->Geometry->SaveGeom,将Lattice的输入给到SaveGeom,连线如下图所示,在"3界面"File Name后面的填写保存的路径即可。保存下来的.obj文件即为包裹后的低模。

3.7 保存纹理

  1. 添加TransferTexture节点用于将高模的texture转化为与低模对应的texture,操作:点击Tab键->Image->TransferTexture,TranferTexture01有两个输入,一个是source geometry用于输入高模,一个是target geometry用于输入包裹后的低模。连接方式如下图所示。图中"3界面"处可以设置texture图片输出的大小
  2. 选中TranferTexture01节点后,点击W键可以查看带保存的纹理图片
  3. 添加SaveImage节点用来保存texture,操作:点击Tab键->Image->SaveImage。选中SaveImage01节点可以在"3界面"处可以设置保存路径以及保存图片的质量,设置完成点击Compute current frame即可完成保存

R3DS Wrap基本使用方法相关推荐

  1. js ios调用ios方法_通过iOS 13的模式演示调用生命周期方法

    js ios调用ios方法 iOS 13 was legendary iOS 13传奇 iOS 13 brought many cool things; dark mode, sign in with ...

  2. Oracle 存储过程加密之wrap工具

    <Oracle 存储过程加密之wrap工具> 定场诗 道德三皇五帝,功名夏侯商周,五霸七雄闹春秋,顷刻兴亡过手, 青石几行名姓,北邙无数荒丘,前人播种后人收,说甚龙争虎斗. 引言:平时大家 ...

  3. 在 Maya、ZBrush 和 Substance 3D 中创建女枪手(P2)

    今天瑞云渲染小编给大家带来了Ivan Lim 的Female Gunslinger 项目的细目,讨论了他在 Think Tank 的教育过程,并解释了他为什么选择虚幻引擎来呈现这个角色.这篇接着上篇继 ...

  4. 如何优雅地在 Java 8 中处理异常

    2019独角兽企业重金招聘Python工程师标准>>> 前言 Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后我们也可以在 ...

  5. Singleton + Proxy 模式+AOP

    在.NET 中,可以通过CBO来实现简单的一个msg级别的AOP, 可以参考我以前写的一个简单例子. 采用AOP 的观点来 Log 所有方法的调用 昨天正好培训了一下Remoting, 其实可以用一个 ...

  6. JQuery DOM基本操作

    DOM操作的分类 DOM Core 并不专属于javascript,任何一种支持DOM的程序设计语言都可以使用它. 它的用途并非仅限与处理网页,也可以用来处理任何一种使用标记语言编写出来的文档.例如X ...

  7. 【转】C# 调用 C++ 数据转换

    [转]C# 调用 C++ 数据转换 原文:https://www.cnblogs.com/82767136/articles/2517457.html 在合作开发时,C#时常需要调用C++DLL,当传 ...

  8. jQuery 基础总结

    样式篇 $(document).ready 的意思是等页面的文档(document)中的节点都加载完毕后,在执行后续的代码; jQuery对象转化成DOM对象: jQuery是一个类数组对象,DOM对 ...

  9. MyBatis(四)MyBatis插件原理

    MyBatis插件原理 MyBatis对开发者非常友好,它通过提供插件机制,让我们可以根据自己的需要去增强MyBatis的功能.其底层是使用了代理模式+责任链模式 MyBatis官方https://m ...

最新文章

  1. [WCF编程]1.WCF入门示例
  2. 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.3 常用网页设计软件...
  3. Ubuntu下浏览Json文件
  4. c#中接口的使用方法图解_c# 接口方法中使用new有什么用?
  5. System.Data.SQLite(SQLite ADO.NET 2.0的提供程序,已经包含Sqlite引擎)
  6. 湖北经济学院的计算机是否强,graphics-ch11-真实感图形绘制_湖北经济学院:计算机图形学_ppt_大学课件预览_高等教育资讯网...
  7. 前端学习(2920):v-html和v-text
  8. 增长量计算n+1原则_资料分析听课笔记
  9. AR as a civil right
  10. 2017年网络小说人气排行榜
  11. 公告栏模板php代码,destoon调用自定义模板及样式的公告栏_PHP教程
  12. 【《关于我一个小学生用C++写了个抽奖游戏这件事》】
  13. Ironic 裸金属管理服务
  14. 白鹭安装node_Egret Engine(白鹭引擎)介绍及windows下安装
  15. 前端工程师到底有哪些晋升和发展方向选择?
  16. Tile based Rendering 二 tbr and tbdr 优化建议tiled based deferred rendering
  17. 图注意力网络——Graph attention networks (GAT)
  18. Python开发的Web在线学习教育培训网课系统
  19. DB2密码过期的解决办法-创建新密码
  20. 百家讲坛 雍正十三年(上部)

热门文章

  1. 与通用计算机相比较 单片机优势在哪,单片机原理与嵌入式系统-中国大学mooc-题库零氪...
  2. 微信小程按钮篇--用图片作为按钮
  3. 我应该购买iPhone 7或7 Plus吗?
  4. linux环境下登录ORACLE 报ORA-12547: TNS:lost contact错误
  5. mStar 6A648 双 WiFi
  6. 杨镇一中2021高考成绩查询,杨镇一中高三第14周周历
  7. 【JS 逆向百例】医保局 SM2+SM4 国产加密算法实战
  8. Syncthing文件同步方案完全攻略(亲测有效)
  9. java基础之集合篇
  10. 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》