转自:http://staff.ustc.edu.cn/~lgliu/Resources/CG/3D_modeling.htm
【前言】自半年前笔者发表博客“什么是计算机图形学”以来,时常有人来向笔者询问3D模型的构建方法与工具。笔者的研究方向是以3D技术为主,具体包括3D建模,3D处理及3D打印三个方面,在3D建模与处理方面从事了十多年的研究,接触过很多3D相关的软件,在这方面有些经验。因此,特撰写此文,以帮助我们的学生及关注3D技术的人了解3D建模和3D技术。本文仅仅为笔者根据自己的经验对3D建模与处理软件浅薄的理解,不涉及对技术的深入讨论,是非学术性的。因此,笔者尽量尝试用通俗的语言介绍一下各种3D建模的软件和工具,以帮助还未接触3D技术的学生来了解这些工具,以便在今后的科研和工作中能够选择合适的3D工具。笔者对本文的有些内容的理解也是很有限的,值得进一步的学习和交流。有不当之处,还请读者谅解指正。
一、专业3D建模软件
1. 3DS Max
美国Autodesk公司的3D Studio Max(前身是Discreet公司的,后被Autodesk收购)是基于PC系统的三维建模、动画、渲染的制作软件,为用户群最为广泛的3D建模软件之一。常用于建筑模型、工业模型、室内设计等行业。因为其广泛性,它的插件也很多,有些很强大,基本上都能满足一般的3D建模的需求。我们的学生也需要经常用到3DS Max来构建模型。网上关于3DS Max的教程和学习视频非常多,使用者众多。
2. Maya
Maya也是Autodesk公司出品的世界顶级的3D软件,它集成了早年的两个3D软件Alias和Wavefront(这两个软件在我读博时就非常有名,当时就代表了最先进的动画及数字技术,我曾用过Wavefront)。相比于3DS Max,Maya的专业性更强,功能非常强大,渲染真实感极强,是电影级别的高端制作软件。在工业界,应用Maya的多是从事影视广告,角色动画,电影特技等行业。我们的学生也经常用Maya来制作和渲染3D模型,生成漂亮的渲染结果放在论文中。
3. Softimage
Softimage曾经是加拿大Avid公司旗下的专业的3D动画设计软件,后被Autodesk收购。它在影视动画方面,特别是角色功能非常强大。许多电影,比如《泰坦尼克号》、《失落的世界》、《第五元素》等,都曾使用Softimage来制作大量的惊人的视觉效果。
4. LightWave
LightWave是美国NewTek公司开发的一款3D动画制作软件,具有悠久的历史,我在读博时曾接触过。它的功能非常强大,特别是在生物建模和角色动画方面功能异常强大,广泛应用在电影、电视、游戏、网页、广告、印刷、动画等各领域。在电影《泰坦尼克号》中细致逼真的船体模型及其他众多游戏的场景和动画都曾使用LightWave来制作的。
5. Rhino(犀牛)
Rhino是美国Robert McNeel公司开发的专业3D造型软件,它对机器配置要求很低,安装文件才几十兆,但“麻雀虽小,五脏俱全”,其设计和创建3D模型的能力是非常强大的,特别是在创建NURBS曲线曲面方面功能强大,也得到很多建模专业人士的喜爱。在与上海造船厂研究所的合作项目中,我们用Rhino来进行船体曲面的NURBS建模和修改,非常方便灵活。
6. Cinema 4D
Cinema 4D (C4D)是德国Maxon公司的3D创作软件,在苹果机上用得比较多,特别是在欧美日为最受欢迎的三维动画制作工具。2009-2010年我在美国哈佛大学访问期间,经常看到学生用C4D在进行3D建模和动画的设计。
7. Creator
MultiGen-Paradigm公司开发的Creator是专门创建用于大型3D虚拟仿真的实时三维模型的软件。其强大之处在于管理3D模型数据的数据库,使得输入、结构化、修改、创建原型和优化模型数据库非常容易。前几年与一家从事数字城市的公司合作时我们就用Creator快速创建大量的城市建筑模型,并且生成数据库来管理这些模型,还是相当的方便。
注:从上述介绍可知,美国Autodesk公司当之无愧是当今3D建模和动画的“老大”,拥有3DS Max、Maya和Softimage等3D建模和动画专业软件。3DS Max和Maya在3D建模方面各有特色,前者更为大众化些,相对容易掌握些,后者在专业级的行业应用更为广泛,特别在制作动画和高质量渲染方面强于前者。我们的学生用Maya的相对多些,包括建模,渲染和动画制作。Softimage和LightWave在3D动画方面表现强大。Rhino对NURBS曲面的支持更好。Creator适合于构建大量的3D模型并构建数据库进行管理和修改。
二、CAD建模和产品设计软件
1. AutoCAD
AutoCAD (Auto Computer-Aided Design)是美国Autodesk公司出品的自动计算机辅助设计(CAD)软件,用于二维绘图、文档规划和三维设计。适用于制作平面布置图、地材图、水电图、节点图及大样图等。广泛应用于土木建筑、装饰装潢、城市规划、园林设计、电子电路、机械设计、航空航天、轻工化工等诸多领域。大家买房时看的房型图大部分都是用AutoCAD来做的。
2. CATIA
Catia由法国Dassault Systems公司开发的CAD/CAE/CAM一体化的三维软件,支持产品开发的整个过程,从概念(CAID),到设计(CAD),到分析(CAE),到制造(CAM)的完整流程。可帮助制造厂商设计未来的产品,并支持从项目前阶段、具体的设计、分析、模拟、组装到维护在内的全部工业设计流程,在机械行业,航空航天、汽车工业、造船工业等应用广泛。其实体造型和曲面设计的功能非常强大。我读博期间曾接触过Catia,在它上面写过一个NURBS曲面转换的插件程序。
3. SolidWorks
SolidWorks是世界上第一个基于Windows开发的三维CAD系统,后被法国Dassault Systems公司(开发Catia的公司)所收购。相对于其他同类产品,SolidWorks操作简单方便、易学易用,国内外的很多教育机构(大学)都把SolidWorks列为制造专业的必修课。SolidWorks在杭州有专门的研发机构,我有个学生硕士毕业后在那里进行研发工作。
4. UG NX
UG NX由美国Unigraphics Solutions (UGS)公司开发的CAD/CAE/CAM一体化的三维软件,后被德国西门子公司收购。广泛用于通用机械,航空航天、汽车工业、医疗器械等领域。现在西门子公司在上海有专门的研发机构对UG NX产品进行升级完善,我有2个学生博士毕业后在那里负责产品的开发和维护。
5. Pro/E
Pro/Engineer是美国PTC公司(Parametric Technology Corporation)旗下的CAD/CAM/CAE一体化的三维软件。在参数化设计,基于特征的建模方法具有独特的功能,在模具设计与制造方面功能强大,机械行业用的比较多。
注:除了上述所介绍的CAD/CAE /CAM系统软件(它们各有特色,在市场中都占有一定的份额)外,还有其他一些同类产品,比如法国Missler公司的Topsolid和以色列Cimatron公司的Cimatron。一般在机械设计与产品研发相关的行业中才会接触到这些软件,专业性比较强,在网上很容易能找到它们的相关资料。
三、3D雕刻建模软件:笔刷式高精度建模软件
3D雕刻建模软件(Sculpturing modeling),也称为笔刷式高精度建模软件,顾名思义,就是像艺术家那样用不同的“笔刷”工具在模型表面上进行“雕刻”的自由创作。建模过程就像玩橡皮泥一样,利用拉,捏,推,扭等操作来对几何进行编辑,生成任意的高度复杂和丰富的几何细节(如怪兽的复杂表面细节)。这些工具的出现颠覆了过去传统三维设计工具的工作模式,解放了艺术家们的双手和思维,告别过去那种依靠鼠标和参数来笨拙创作的模式,完全尊重设计师的创作灵感和传统工作习惯。
1. ZBrush
美国Pixologic公司开发的ZBrush软件是世界上第一个让艺术家感到无约束自由创作的3D设计工具。 ZBrush 能够雕刻高达 10 亿多边形的模型,所以说限制只取决于的艺术家自身的想象力。
2. MudBox
MudBox是Autodesk公司的3D雕刻建模软件,它和ZBrush相比各有千秋。在某些人看来,MudBox的功能甚至超过了ZBrush,可谓ZBrush的超级杀手。
3. MeshMixer
最近,Autodesk公司又开发出一款笔刷式3D建模工具MeshMixer,它能让用户通过笔刷式的交互来融合现有的模型来创建3D模型(似乎是类似与Poisson融合或Laplacian融合的技术),比如类似“牛头马面”的混合3D模型。
值得注意的是,最新版本的MeshMixer还添加3D打印支撑优化新算法,值得关注。我们Siggraph Asia 2013的论文“Cost-effective Printing of 3D Objects with Skin-Frame Structures”也给出了一种为3D打印加尽可能少的支撑材料的新算法(详见我的博文“经济节约型的3D打印技术”),该算法也是具有较好的市场前景,我们也在努力进行产业转化。
4. 其他
其他还有一些同类的3D雕刻建模软件,比如3DCoat,Sculptris,Modo等。这里就不再详细介绍了。
注1:在工业界,人们更偏向于使用四边形网格(quad mesh),而不是三角网格,一个很重要的原因就是这些雕刻建模工具善于在四边形网格上进行细节的生成和编辑,因为四边形网格的边更能反应物体表面的流线方向(edge flow)。我们Pacific Graphics 2010的一篇论文B-mesh,就是在建模过程中同时生成具有良好流线方向的四边形基网格(base mesh),然后直接可以导入到这些雕刻软件中进行进一步的细节雕刻建模。
注2:虽然这些笔刷式建模工具上手容易,给了用户便利的方式进行3D细节建模,但是,要想真正构建一个细节复杂和逼真的3D模型还是不容易的,除了用户需要熟练掌握软件的各种工具及雕刻技巧外,还需要用户具有较好的艺术和绘画功底。
四、基于草图的3D建模软件
基于笔划或草图的交互方式由于其符合人类原有日常生活中的思考习惯,交互方式直观简单(就像在图纸上画画一样来构建3D模型),是最近十多年来计算机图形学中研究的热点建模方法之一。这方面的研究论文有很多,比如Siggraph 1999年的Teddy,到Siggraph 2006年的SmoothSketch,Graphics Interface 2007的Magic Canvas,Siggraph 2007年的FiberMesh,SigCHI 2010年的ICanDraw等。最近,我们也提出一种基于阴影引导的草图交互的3D建模的技术“Modeling by Drawing with Shadow Guidance”,从已知的模型数据库中提取信息来引导用户的笔划交互,能构建更为精准的3D模型,该工作发表在Pacific Graphics 2013上。
虽然在科研上提出了很多基于草图的3D建模技术,但是至今仍未能有比较成熟的商业化的软件出现,可能是因为要理解不同用户的划线和草图还是一件比较困难的事情。对于一些比较规则的物体,比如建筑、家具等人造物体,这种方式相对可行些,比如Google的SketchUp(在国内我们也称为“草图大师”)。SketchUp是一套面向普通用户的易于使用的3D建模软件。使用SketchUp,创建3D模型就像我们使用铅笔在图纸上作图一般,软件能自动识别你画的这些线条,加以自动捕捉。它的建模流程简单明了,就是画线成面,而后拉伸成体,这也是建筑或室内场景建模最常用的方法。SketchUp还可以将你自己的制作成果发布到Google Earth上和其他人共享,或者是提交到Google的3D Warehouse(Google的3D模型库)。当然你也能从Warehouse那儿得到想要的素材,以此作为创作的基础。很有趣的是,在2012年Google公司的SketchUp被美国Trimble公司收购了。去年出了个Trimble SketchUp 2013,网评似乎不太好。不知其是否能继续免费。
最近国内出了一款叫做“EasyToy”的采用草图式的3D建模软件,适用于卡通动漫形象与玩具的设计。但我还没有试用过,不知用户体验如何。另外,日本东京大学的Takeo Igarashi教授也发布了一些基于草图式的3D建模系统,比如Teddy,在其主页上可以下载到。
另外,值得一提的是,基于草图的交互方式在现在正在兴起的Web3D建模领域会有新的广阔空间。Web3D建模在稍后会介绍。
五、基于照片的3D建模软件
从物体的照片来进行3D模型的构建,是计算机图形学和计算机视觉的一大研究方向,称为基于图像的几何建模(Image based modeling)。这种技术已逐渐成熟且走向实用阶段,最近有些软件能够让用户拿着普通相机或者手机对着要建模的实物从不同视角拍摄若干照片,然后软件就能根据这些照片自动地生成相应的3D模型。这种基于图片的建模技术提供给了非专业建模人士来构建3D模型的工具。
1. Autodesk 123D
Autodesk公司最近发布了一套平民级的建模软件Autodesk 123D,用户不需复杂的专业知识,只要为物体从不同的视角拍摄几张照片,该软件就能自动地为其生成3D模型,而且软件是完全免费的。
(1) Autodesk 123D是一款免费的3D CAD 工具,用户可以使用一些简单的图形来设计、创建、编辑三维模型,或者在一个已有的模型上进行修改。
(2) Autodesk 123D Catch是建模软件的重点,用户使用相机或手机来从不同角度拍摄物体、人物或场景,然后上传到云,然后该软件利用云计算的强大计算能力,可将数码照片中几分钟的时间内转换为3D模型,而且还自动带上纹理信息。我们试用过几次,感觉它的使用还是很方便的。但是其生成的3D几何的细节不多,主要是通过纹理信息来表现真实感的。有时软件也会失败,生成的几何是不正确的。
(3) Autodesk 123D Make是将3D模型转换为2D的切割图案,用户可利用硬纸板、木料、金属或塑料等低成本材料将这些图案迅速拼装成实物,从而再现原来的数字化模型。这让用户能够“制造”出所造的3D模型,有点像3D打印的雏形。目前123D Make只有Mac版的。
(4) Autodesk 123D Sculpt是一款运行在iPad上的3D雕刻软件(前面已介绍过),通过绘画的方式在模型上雕刻几何细节。
2. 3DSOM Pro
3DSOM Pro是一款从高质量的照片来生成3D建模的软件,它可以通过一个真实物体的照片来进行3D建模,并且制作的模型可以在网络上以交互的方式呈现。
3. PhotoSynth
微软开发了一款产品PhotoSynth,可将大量的照片做3D处理,但是它不是真正创建3D模型,而是根据照片之间的相机参数及空间对应关系,建构一个虚拟的3D场景,使得用户能够在从不同角度和位置来查看该场景,而显示的场景图像是由给定的照片所合成的。其基本原理来自于Siggraph 2006的论文“Photo Tourism: exploring photo collections in 3D”及其他相关论文。
注:从多幅不同角度拍摄的照片来重建3D物体,从技术原理上来讲是可行的,但是由于算法的一些步骤,比如图像中物体特征点的检测和匹配,相机参数的估计等,还会出现不太正确的结果,使得重建结果有时不够稳定,甚至不正确。随着技术和计算能力的不断发展,相信这些会逐步得到解决。到时,从照片来重建3D模型的技术可能是最为方便的3D建模技术了,因为人人都有手机,随时都可以拍照上传到云端来构建3D模型。如果有了大数据库的支持,从单张照片来构建3D模型也是可能的,可以参看我们的Siggraph 2011的论文。
六、其他3D建模软件
1. 人体建模软件
关于构建人体模型及动画,首推Metacreations公司的Poser软件(俗称“人物造型大师”)和开源的MakeHuman软件。这两款软件都是基于大量人类学形态特征数据,可以快速形成不同年龄段的男女脸部及肢体模型,并对局部体形进行调整。可以轻松快捷地设计人体造型、动作和动画。我读博期间用过Poser构建人体模型来做morphing,还是蛮方便的。
2. 城市建模软件
加拿大Esri公司的CityEngine是三维城市建模的首选软件,可以利用二维数据快速创建三维场景,并能高效的进行规划设计。应用于数字城市、城市规划、轨道交通、管线、建筑、游戏开发和电影制作等领域。另外,CityEngine对ArcGIS的完美支持,使很多已有的基础GIS数据不需转换即可迅速实现三维建模,缩短了三维GIS系统的建设周期。该软件的核心技术是Siggraph 2001的论文“Procedural Modeling of Cities”及其他相关论文,早期是ETH Zurich大学的Pascal Mueller研究小组创办的Procedural公司开发的,后被Esri公司收购。
3. 其他小巧的3D建模软件
下面的这个网页还介绍了一些其他3D建模相关的软件或程序:
http://tech.sina.com.cn/s/2008-10-20/08192519895.shtml
这些软件大部分都非常小巧,而且是开源且完全免费的。有很多媒体工作者和艺术家用这些小软件来制作3D作品,其中Blender, K-3D, Art of Illusion, Seamless3d, Wings3D等软件的使用面稍微广泛些。有兴趣的读者可以到网上找到相关资料去了解和学习,这里不作详细介绍。
4. 网页3D (Web3D)建模工具
最近,出现了一些基于网页(web)开发的3D模型设计软件,即基于WebGL,可以在浏览器中完成3D建模的工具。比如3DTin,TinkerCAD(去年被Autodesk收购)等,它们的界面简单直观,有Chrome等浏览器插件插件,可以在线生成3D模型,直接存在云端,并在社区分享模型。
在互联网的时代,Web3D技术将被越来越被广泛使用,建议大家多关注。
七、虚拟现实软件和平台
虚拟现实软件本质上不是用于3D建模的,而是用来对生成好的3D模型和场景提供关于视觉、听觉、触觉等虚拟的模拟,让用户如同身历其境一般。相关软件也有很多,这不是本文的重点,只大致提及几个比较常见的。
1. VirTools和Quest3D
法国VirTools公司的VirTools和美国Act-3D公司的Quest3D都是元老级的虚拟现实制作软件,简单来说,就是工业或游戏用的实时图形渲染引擎,是3D虚拟和互动技术的集成工具。可以让没有程序基础的美术人员利用内置的行为模块快速制作出许多不同用途的3D产品,如网际网络、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品展示等 。网上的学习资料比较多。
2. Unity3D (U3D)
Unity Technologies开发的Unity3D (U3D)是最近几年冒出来的新秀,是一个全面整合的专业虚拟3D和游戏引擎。它在制作虚拟现实及3D游戏方面上手非常容易,操作简单,互动性好,有强大的地形渲染器。我们的学生使用U3D可以很快地制作一个3D游戏,因此也强烈推荐大家学习使用。
3. Vega
Vega是MultiGen-Paradigm公司开发的用于实时视觉模拟和虚拟现实应用的开发引擎,提供很多的C/C++语言的应用程序接口API,结合其应用程序的图形用户GUI界面软件LynX,可以迅速创建各种实时交互的3D环境。对于开发3D游戏和3D场景漫游的项目非常方便。
4. OSG (Open Scene Graph)
OSG (Open Scene Graph)是一套开源的基于C++平台的应用程序接口API,能够让开发者快速、便捷地创建高性能、跨平台的交互式图形程序。它将3D场景定义为空间中一系列连续的对象,能够对3D场景进行有效的管理。由于OSG是开源和完全免费的,很多3D应用的软件都选用OSG作为基础架构。几年前,我们与一个公司合作开发的义齿软件就选用OSG作为管理3D数据的框架,使得开发非常方便。
5. 其他
其他的一些用于3D应用程序开发的软件开发包(SDK)或API还有GLUT(OpenGL Utility Toolkit), OpenGL Performer, CG2 VTree, Quamtum3D Mantis等。有兴趣的读者也可以去了解一下。
注:相比于十年前,由于有了上述开发平台和开发包,现在开发一个看起来还比较cool的3D应用程序或游戏不是那么困难,随着技术的不断发展和3D应用不断渗入到各行各业,相信以后会更加方便。
八、开源3D网格处理库
1. MeshLab
MeshLab是一个开源的处理三角形网格的C++处理框架,提供了三角网格的数据结构和算法,诸如曲面重建、编辑、修复、光顺、编辑等算法。MeshLab并没有集成太多独特的算法,但是作为一个三维网格数据的显示工具和框架已被学术界广泛使用,并作为科研的必备程序库之一。
2. PCL (Point Cloud Library)
Point Cloud Library (PCL)是一个独立的大型跨平台的处理二维/三维图像和点云数据的C++模板库,它基于许多第三方库,比如Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull等,实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建(包括Poisson重建算法)、可视化等。早期的PCL是由Dr. Radu Bogdan Rusu在德国慕尼黑工业大学读博士期间开发的,目的是要为三维点云数据处理的研究及应用,建立出一个共同的基础架构。另外,PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。集成了Kinect Fusion重建算法。有人将其地位比喻为3D的OpenCV,足以可见其对3D的开发和研究的重要性,我们的学生在科研过程中经常用到PCL。
3. Libigl
Libigl是由瑞士Ethz大学的Olga Sorkine研究小组开发的C++网格处理库,使用说明文档比较齐全,很容易上手使用。 它具有较好的构造稀疏离散微分算子和有限元稀疏方程组等功能。有很多研究人员对其有贡献,包括:Alec Jacobson, Daniele Panozzo, Christian Schüller, Olga Diamanti, Qingnan Zhou, Nico Pietroni, Stefan Bruggerr , Kenshi Takayama, Wenzel Jakob, Nikolas De Giorgis, Luigi Rocca, Leonardo Sacht, Olga Sorkine-Hornung。
4. Trimesh
Trimesh是由美国Princeton大学的Thomas Funkhouser研究小组开发的C++网格处理库。非常容易上手,使用不难,适合初学者。但是其中的相关算法实现比较少。
5. OpenMesh 和 OpenFlipper
OpenMesh是由德国RWTH Aachen大学的Leif Kobbelt研究小组开发的C++网格处理库。OpenFlipper是基于OpenMesh基础上架构的网格处理框架。使用非常广泛。
6. DGtal
DGtal (Digital Geometry Tools and Algorithms) 也是一个通用的几何处理的开源代码库,是近几年逐渐被关注的一个开源库。
7. Mesh Processing Library
Mesh Processing Library是由微软研究院的Hughes Hoppe博士在早年(1992-1998)从事几何处理工作过程中所写可系列算法库,包括曲面重建、简化、网格优化、渐进网格、LOD等算法。早年有很多人使用。
8. CGAL (Computational Geometry Algorithms Library)
CGAL是一套开源的C++算法库,提供了计算几何相关的数据结构和算法,诸如三角剖分(2D约束三角剖分及二维和三维Delaunay三角剖分),Voronoi图(二维和三维的点,2D加权Voronoi图,分割Voronoi图等),多边形,多面体(布尔运算),网格生成(二维Delaunay网格生成和三维表面和体积网格生成等),几何处理(表面网格简化,细分和参数化等),凸壳算法,搜索结构(近邻搜索,kd树等),插值,形状分析,拟合等。
CGAL功能非常强大,是我们学生做科研的必备程序库之一。 但需要较强的C++代码掌控能力,特别是基于C++ Template的开发。
9. 一些优秀的几何处理的算法库
9.1 MeshFix:是由意大利Marco Attene博士开发的修补3D网格数据的一个工具,能够修补3D网格中出现的小空洞,去除自交,去除非流形等,并返回一个water-tight的网格。Libigl获得了2014年SGP会议的最佳开源软件奖。
9.2 Poisson曲面重建:是由美国Johns Hopkins大学的Misha Kazhdan博士开发的,可以从带法向量的点云重建出流形网格曲面。该算法库获得了了2011年SGP会议的最佳开源软件奖。
9.3 Super4PCS library: 是由Nicolas Mellado, Niloy Mitra, Dror Aiger等人的研究工作4PCS算法 (SGP 2008)和Super4PCS算法(ACM ToG 2012)的C++代码,能够将两个3D数据(点云或网格)进行注册拼接,得到最优的旋转变换矩阵。使用方便,文档丰富,注册效果很好。
9.4 FCL(A Flexible Collision Library):一个用于检测碰撞和形状逼近计算(collision detection and proximity computation)的算法库。
9.5 平面三角化
Triangle (A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator):是最有名的平面三角网格生成库,功能强大。
9.6 空间四面体化
TetGen (A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator): 是最有名的空间四面体网格生成库,由华人学者Hang Si博士所开发。该算法库获得了了2012年SGP会议的最佳开源软件奖。另外,NetGen也是一个能够自动生成3D四面体网格的程序库。Stellar (A Tetrahedral Mesh Improvement Program)是一个将四面体网格进行优化生成高质量的四面体网格。
9.7 线性代数求解库Eigen
Eigen是一个优秀的C++模板库,能够解决许多线性代数的问题,比如向量、矩阵、线性方程组、稀疏线性方程组、矩阵分解等。该算法库获得了了2013年SGP会议的最佳开源软件奖。
9.8 SuiteSparse (A suite of sparse matrix software)
SuiteSparse是一个特别针对稀疏线性方程组求解的C++代码库,对Cholesky, LU矩阵分解等做了特别的优化,效率会比Eigen高。
9.9 最近邻搜索库ANN
ANN (A Library for Approximate Nearest Neighbor Searching)是一个优秀的查找最近邻的代码库,简单实用,在几何与图像处理中经常使用。
注:这里列出了几个主要的网格处理的C++代码库,我们的学生在学习和科研的过程中会经常用到它们。当然,网上还有其他的各种算法库,对我们的科研和开发都是非常有用,我们有时也会用到,这里就不再详述。
九、基于扫描(逆向设计)的3D建模软件
随着深度相机的普及及扫描仪的价格迅速下降,人们采集三维数据变得容易,从采集到的三维点云来重建三维模型的工作在最近几年的Siggraph(Asia)上能常见到,比如我们Siggraph Asia 2010,Siggraph 2013等的工作。最近几年产生了许多基于点云数据的建模与处理(或逆向工程和设计)的软件,而且各种扫描设备的生产厂商也会发布相应的点云重建的软件。
1. Geomagic
Geomagic (俗称“杰魔”) 包括系列软件Geomagic Studio、Geomagic Qualify和Geomagic Piano。其中Geomagic Studio是被广泛使用的逆向工程软件,具有下述所有特点:确保完美无缺的多边形和 NURBS 模型处理复杂形状或自由曲面形状时,生产效率比传统 CAD软件提高数倍;可与主要的三维扫描设备和CAD/CAM软件进行集成;能够作为一个独立的应用程序运用于快速制造,或者作为对CAD软件的补充。是我们学生科研的必备软件之一。
2. RapidForm
RapidForm是韩国INUS公司出品的逆向工程软件,提供了新一代运算模式,可实时将点云数据运算出无接缝的多边形曲面,使它成为 3D扫描数据的最佳化的接口,是很多3D扫描仪的OEM软件。我们购买的Konica Minolta 的激光扫描仪Range 7就是用RapidForm来进行逆向设计。我们SGP 2010的ARAP参数化算法作为目前为止最好的参数化算法之一,被集成到了RapidForm软件中。
3. ReconstructMe
ProFactor公司开发的ReconstructMe是一个功能强大且易于使用的三维重建软件,能够使用微软的Kinect或华硕的Xtion进行实时3D场景扫描(核心算法是Kinect Fusion),几分钟就可以完成一张全彩3D场景。我们尝试过,效果还可以。ReconstructMeQt提供了一个实时三维重建利用ReconstructMe SDK(开源)的图形用户界面。
注:法国ManCTL公司开发的Skanect为Mac平台的第一款3D 扫描软件,也支持者华硕的Xtion或者微软的Kinect进行实时3D 扫描。
4. Artec Studio
Artec公司出品的Artec Eva, Artec Spider等手持式的结构光3D扫描仪,重量轻且易于使用,成为许多3D体验馆扫描物体的首选产品。我试用过Artec Eva后感觉还是需要较多的技巧才能扫描好物体,而且后期需要用软件进行较多的处理,比如数据的去噪、修复、光滑、补洞等。
同时,Artec公司还开发了一款软件Artec Studio,可以和微软的Kinect或华硕的 Xtion以及其他厂商的体感周边外设配合使用,使其成为三维扫描仪。Kinect通过Artec Studio可以完成模型扫描,然后进行后期处理,填补漏洞、清理数据、进行测量、导出数据等。不确定它是否也使用了Kinect Fusion算法。
5. PolyWorks
PolyWorks是加拿大InnovMetric公司开发的点云处理软件,提供工程和制造业3D测量解决方案,包含点云扫描、尺寸分析与比较、CAD和逆向工程等功能。
注1:全球四大逆向工程软件除了Geomagic Studio和RapidForm外,还包括ImageWare和CopyCAD,由于后两者我不熟悉,在此就不介绍了,有兴趣的读者可以到网上去找相关资料了解。
注2:微软的Kinect作为快速获取3D数据的传感器,可以作为3D扫描仪来使用,我们曾使用3台Kinects来扫描人体全身,论文发在2012年的IEEE TVCG期刊。现在有多款软件或者开发库(包括上面介绍的PCL,ReconstrutMe,Artec Studio,Skanect),支持将单台Kinect作为手持式扫描仪来扫描物体,其核心都是Kinect Fusion算法。
注3:在测绘和地理信息等领域,由于数字城市和智慧城市的发展,再加上摄影测量的快速发展,近年来遥感测量和航拍测量得到快速发展并广泛应用,特别地,倾斜摄影在近年来发展迅速,在城市级的3D建模方面发挥重要的作用,也是城市级数据采集和建模的重要工具。
十、后记
最近,随着人们对3D建模的需求越来越大,出现了许多其他形式的3D建模软件和工具,比如Blokify, 基于块状化3D建模软件,特别适合孩子们制作模型。这些新出现的工具我这里就不一一介绍了,大家可以关注网上的一些科技新闻网站、论坛或博客等。
1. 3D模型数据浏览与转换软件
上面介绍的大部分的软件或库都支持查看不同格式的3D模型数据。如果仅仅是浏览或查看现有的3D模型数据,我个人推荐3D Exploration软件(相当于查看图像的ACDSee软件),它是一个专门用来查看各种格式的3D模型文件,包括3DS数据 (*.3ds, *.prj, *.asc)、LightWave Objects (*.lwo,*.lw)、 DirectX(*.x)、AutoCAD (*.dxf)、Object File Format (*.off)、Wavefront (*.obj)等,还可以用鼠标交互从不同视角来查看。而且还能查看各种图像文件,包括bmp、rle、dib、gif、jpg、png、tif、tga、pcx等。当然也能查看带纹理的3D模型。3D Exploration是我的机器必装软件之一,强烈推荐。另一个我推荐的同类软件是Deep Exploration,它除了可以浏览3D数据外,还可以转换数据格式(最新版本还支持Sketchup文件),同时它还可以对你的模型进行编辑及添加注释制作动画等,我也强烈推荐。
注:现在有很多3D数据格式,几乎每个3D建模软件都会定义自己的数据格式。几种比较公认的3D数据格式有VRML、obj、off、stl (用于3D打印的数据格式)等。现在有些组织在力推3D数据的标准。相信随着3D技术的发展,这些格式都将越来越标准化和统一化。对各种数据格式需要更多了解的,可以到网上找找,比如:
http://www.cnblogs.com/sunliming/archive/2012/02/28/2372398.html
2. 3D模型渲染软件
本文介绍的各种3D建模软件一般都能渲染3D模型,但要得到更为逼真的真实感渲染效果,还可以使用专门的3D模型渲染软件,比如Pixar Renderman、POV-Ray、 V-Ray、 Mental Ray、Final-Render等,这里就不详细介绍。一般我们使用Maya进行渲染放在论文中,已经足够漂亮了,读者可以在我们的许多论文中看到利用Maya渲染的结果图。
3. 其他相关的软件
本文以介绍3D建模的软件和库为主,另外,还有许多跟3D技术相关的软件和开发包我没有提及,比如图像处理、可视化、处理医学图像、建筑设计、装潢设计及艺术设计等。读者可以根据各自的专业去网上寻找所需要的专业软件。
4. 学习使用3D建模软件
相比于2D平面软件Adobe Photoshop,Illustrator,CorelDraw等,学习3D软件难度稍大些,需要了解和掌握一些3D的概念、3D交互习惯和技巧。因此,想要在短期熟练掌握好一个3D建模软件,是不太可能的,需要多用、多摸索、多体会。网上有许多教材和视频,您可以跟着去学习。总之,您要多去玩,就能玩熟了。如果您能有个确定的目标来学习3D软件,比如完成项目或者论文中所需要的效果,您就能掌握得更快!因为,带有确定目标和任务的学习,是最高效的学习。但您如果暂时用不到,暂可不必花太多时间去学习,学了但不去用,也容易忘。只要您学习软件的速度快就可以,而这正是我们对学生的基本要求。J
5. 3D时代的来临
最近两年3D打印机的兴起,引起人们的极大好奇与广泛关注,同时也有些争论。虽然还不清楚它是否能成为人们生活中不可或缺的一项技术,但不可否认,3D打印技术确实已经给世界带来巨变,已逐渐在某些领域表现出巨大的价值,比如,提高了制造行业的生产力,在医学领域得到了广泛应用(义齿,假肢,器官等),为艺术家提供了有效的创作工具等等。个人认为,3D打印提供给了平民零技能制造的技术,会朝着“私人定制”(个性化需求)的方向发展;随着大量草根参与到3D的设计和制造,3D打印将逐步颠覆人们创造东西的能力。正因人们对3D模型有了巨大的需求,3D打印技术才使得计算机图形学“落地”,这也使得我们这个学科终于在人们生活中体现了巨大的价值。关于3D打印技术将给大规模工业经济带来的巨大冲击以及给我们的生活将带来的巨大变化,这里不展开讨论,我将以后抽空撰文加以详述。
我们再来看一下这几年的一些巨头科技公司的变化,2011年微软公司的Kinect让人们获取3D数据的硬件代价降低了许多,2012年3D打印的兴起造就了两家上市公司Stratasys和3D Systems,2013年苹果公司收购了Kinect的核心技术公司PrimeSense,谷歌公司收购了大名鼎鼎的机器人公司Boston Dynamics,这些都说明,越来越多的高科技企业在快速发展3D科技,3D时代已经来临!
随着人们对3D技术有了越来越多的需求,本文所介绍的3D建模工具将会发挥出更为巨大的价值。随着科学和技术的发展,云计算与物联网的进一步发展,将会出现越来越便利的3D建模工具,比如Autodesk 123D正在将3D技术从专业变成非专业,人们接触3D技术的门槛将越来越低,创造的3D模型越来越丰富。我坚信,日后3D技术将“飞入寻常百姓家”,会越来越平民化,且成为人们生活中重要的一部分。