常用的BIM引擎有哪些,分别有什么优劣
BIM引擎,分两种服务模式,一种是webgl客户端渲染,一种是SME实时云渲染。
WebGL(客户端渲染)服务模式
用户通过浏览器访问服务器端的模型,浏览器把模型下载缓存到本地,通过WebGL驱动访问本地显卡进行渲染,利用本地的计算资源(显卡,CPU,内存)。WebGL(客户端渲染)具有如下特点:
WebGL客户端渲染相较传统的ActiveX插件方式具有免安装、轻量化、易部署的优点。
WebGL客户端渲染会受到客户端计算资源(显卡,CPU,内存)的约束,在支持模型的规模、平台兼容性等方面受到一定技术约束。
从市场应用情况看,比较适合中小模型可视化场景。
云渲染(服务器实时渲染)服务模式
云渲染(服务端实时渲染)是指渲染计算发生在远程服务器端,客户端只是一个可以交互的显示器,将渲染指令发送到服务器端同时接收渲染结果,对于本地计算资源要求极低。
大象云以云计算赋能实时渲染,通过这种远程实时渲染方式主要解决如下问题:
大规模、超大规模模型互联网可视化协同,如飞机、建筑信息模型
数据安全高,又有协同分享需求的工程、项目协作
工程领域基于模型可视化的多用户并发、协同
如果你们对数据安全有的要求,且模型较大,建议使用SME,由大象云自主研发的,目前国内唯一商用大象专业引擎。很多国家大型项目都在使用的,应该比较放心。
三维数据分析有哪些好的方法与软件
三维数据处理软件都包含哪些模块
三维数据处理软件,一般包含三个模块:数据管理和处理,三维渲染,UI。 这与图形学的三个经典问题是相对应的:建模,渲染和交互。与一般常见的数据处理软件,比如图像视频处理,不同的是,这里的数据展示模块需要三维渲染。与之对应的UI操作,也变成了一些三维空间的变换,比如模型的旋转缩放等。
如何搭建一个简单的三维数据处理软件
那么如何快速的搭建一个三维数据处理软件呢?采用搭积木的方式,每个模块都有很多现成的开发包可以选择。比如UI模块处,一般常见的有MFC,QT,MyGUI(Magic3D使用的UI)等。数据处理算法方面,常见的有Geometry++,CGAL,OpenMesh,PCL等。渲染模块,可以使用OpenGL或者Direct3D,也可以使用渲染引擎,如OGRE,OSG等。
如何选择几何算法开发包
几何算法模块,一般有三种选择:自主开发,使用开源库,使用商业库。如何选择呢?开发包API的生命周期,大概分为开发,维护和升级。对于一个算法,几乎不可能开发出放之四海皆准的API。它的绝大部分时间都在维护和升级。开发包的选择,其实就是一个成本问题。开发阶段主要是时间成本,如何快速的实现目标功能是最关键的问题。维护和升级阶段需要尽量低的成本开销。所谓开源库免费,其实只是在开发阶段免费,而开发阶段最看重的却是时间成本。有了源代码就需要人去维护,没有人维护的源代码是没有用处的。商业库的主要优势就是有专业的团队来维护和升级这些API,并且成本会比个人做得更低。如果想清楚API的生命周期以及每个阶段的成本开销后,根据自身具体情况,就能很容易的做出选择了。
数字几何处理是什么
数字几何处理,一般是指点云网格数据的处理。和传统的NURBS正向建模的模型相比,数字几何处理的对象一般是三维扫描仪采集的数据,是曲面的离散表达,也就是数字化的。它的研究内容包括数据的获取,存储,表示,编辑,可视化等等。
OpenGL是什么
OpenGL是一套跨平台的图形绘制API,它通过一系列API把三维模型渲染到2D屏幕上。OpenGL采用了流水线机制,其绘制过程也称为渲染流水线。此外还有OpenGLES,主要用于嵌入式系统,或者移动平台;WebGL主要用于Web浏览器里的图形绘制。
OpenGL流水线
OpenGL通过一系列API可以设置渲染流水线的状态,所以OpenGL也是一个状态机。三维模型通过一些处理,最终渲染到2D屏幕上:
-
模型离散为三角面片:所有模型都需要离散为三角面片,OpenGL只接受三角面片输入。注意,虽然OpenGL也可以接受四边形,NURBS等输入,其本质最后都是三角面片的绘制。
-
Vertex Shader把三维三角片转化到屏幕坐标系下的2D三角片:这个过程包含了变换,裁剪等操作
-
2D三角片的光栅化:2D三角片被离散化,用屏幕坐标系的像素来表示,这也叫光栅化。
-
Pixel Shader为光栅化后的模型像素着色。
上面是渲染流水线的大致描述,其中还有很多细节,不同的API也有些细节上的差别。最早的OpenGL是固定的流水线,也就是只能通过API来设置一些流水线中的状态。现代的OpenGL开放出了一些Shader,用户可以自己为Shader写代码,利用Shader可以写出各式各样的渲染效果。
渲染模块使用OpenGL还是渲染引擎
如果渲染模块不是主要业务,建议使用渲染引擎。因为引擎内有很多现成的工具可以使用,减少开发的时间成本。
Unity5 WebGL试用手记,网页3D的时代何时来临
Unity5正式版发布已经一个多月,相信有很多人特别关注它的WebGL导出功能。其实WebGL并不是一个新东西,早在2012年,各大浏览器已经陆续开始支持WebGL了,一些基于WebGL的3D引擎如Three.js也相继出现,不过无论是完善程度还是使用门槛,都无法与传统引擎相比,所以多数团队对WebGL还是保持着理性的观望态度。
我在2004年的时候就曾把自己的3D引擎封装到IE的ActiveX中。可惜用户对浏览器插件是非常反感的,这严重地阻碍着网页3D的发
展。虽然在这期间,一些3D页游通过浏览器插件取得了不错的成绩,但我一直认为那跟端游没有什么区别,想玩游戏的人是不会介意下载客户端的,而网页3D的
用途也绝不仅仅是游戏。
直到最近,各大浏览器厂商纷纷宣布,未来不再支持浏览器插件的安装,Unity方面也声称WebGL将取代WebPlayer和Flash成为发布到网页的唯一途径,这是否预示着网页3D的时代终于来临还言之尚早,但至少在技术上,曾经难以逾越的鸿沟已悄然消失。
去年,我的团队接了一个项目,做一个类似91家居的模拟装修软件。当时就是想做有端的,用的Unity4.x。后来看到居然在线的DIY系统用WebGL实现的还不错,就想把产品升级到Unity5并尝试一下WebGL导出功能,毕竟这样的软件还是做到网页里更适合。
目前Unity5的WebGL平台还只是一个体验版本(Preview),功能尚未完全且存在一些问题,在这里分享一些我们在项目的移植过程中积累到的经验,供大家参考借鉴。
一:js效率
这个是我之前最担心的。我们的产品得益于PhysX的超强效率,实现了动态场景的快速烘焙(间接光预运算),编码成js之后,PhysX的效率究竟如何?实验结果如下:
两个场景在不同平台下的烘焙时间。单位(秒)
两个场景的烘焙结果
Firefox的运行效率还算令人满意。我们知道Unity使用的是Mozilla提出的asm.js来提升js的运行效率,而目前其他浏览器还未针对asm.js进行优化,不过这是迟早的事。而且除了烘焙功能之外,其他功能在不同的浏览器上看不到太大的性能差距。
二:js程序包尺寸
这个我也比较担心。如果内容无法在页面载入之后立刻呈现,用户会失掉耐心从而关闭页面。把所有优化选项设置好之后,我们的产品导出的程序包尺寸如下(压缩后):
主程序(项目名.jsgz):5.1M
内存初始化包(项目名.html.memgz):2.7M
内置资源(项目名.datagz):1M
不得不说还是很大。内置资源中字体占了很大的比重,将来可以把全部界面做到网页里,这样就可以使用浏览器字体,这个还好说,主程序包是把
Unity的整个Runtime加上我们自己的代码全部编译到一起所以才那么大。关于这个我给Unity团队写了好几封信,问他们有没有可能不要把一些从
未用到的模块编进去,他们表示会考虑但由于耦合度等原因难度应该不小。内存初始化包我不是很了解,可能是asm.js必备的东西,希望Unity推出
WebGL正式版的时候这个问题能得到改善吧。
输出的项目包含Release和Compressed两个文件夹,只需保留Compressed就可以了,生成的.htaccess文件会将地址自动转向到这个压缩版本的程序包,并为HTTP请求加上一个压缩Header,浏览器下载完成后会自动解压。
三:移动平台
这是很多人关心的问题。作为HTML5的一部分,WebGL理应可以运行在所有平台不是吗?不过事实就是目前WebGL在移动平台被支持的并不好,想进
微信就更是难上加难。对此我们的方案是为用户创建的每一个样板间保存一系列360度全景图,分享到微信之后可以漫游,但不能编辑。想想这样的方案似乎也很
合理,手机那么小的屏幕实在不适合做复杂的三维编辑工作。等移动平台完全支持WebGL之后,会有更适合手机的3D应用出来。
四:图形接口适配
Unity5终于支持了Deferred
Shading,之前的只能叫Deferred Lighting。不过在目前的WebGL
1.0上还是不能用,还是只能用Deferred Lighting。我们知道WebGL
1.0对应的是OpenGL ES 2.0,而WebGL 2.0对应的是OpenGL ES
3.0,所以项目适配到WebGL平台,与适配到移动平台基本上是一样的。WebGL
2.0的标准刚刚制定完成,支持的浏览器不知何时能推出,所以目前的适配工作,是以WebGL
1.0为目标平台的。除了不能用MRT之外,我们需要把3D Texture以2D切片拼接的方式实现,还有Depth
Texture要手动Encode到RGBA格式,这些工作太熟悉了,好像10年前就在做,不禁感叹实时3D这些年发展得真慢,除了游戏之外好像真的没有什么太好的应用。
五:材质与全局光照
Unity5新的材质系统,可调的参数并不多,所以还是用我们原来自己的,也是统一材质。新加的Reflection
Probe感觉很初级,就是世界坐标的一个AABB,都不能旋转,其实BPCEM(Box Projected Cubemap
Environment
Mapping)是可以旋转的,不过还是不能处理复杂户型,矩形边界以外的地方反射错得都很离谱。我们的反射方案是在BPCEM的基础上,加了一点点光线跟踪,虽然还存在一些问题,不过效果我已经很满意了,最重要的是,它的帧数比SSR(Screen
Space Reflection)高得多。
改进后的反射方案
由于样板间都是用户自行创建,我们没办法使用Unity自带的烘焙系统(Enlighten),而且传统的烘焙方法生成的Lightmap容量太大,根本不适合网络应用。我们自己的烘焙系统,是将3D空间划分成128x16x128的方格,然后用一个3D
Texture保存每个方格的光照信息,再通过自定义渲染路径将3D Lightmap加进去。
六:编辑器集成管理后台
管理后台要实现模型的管理和上传功能,于是索性将它做到Unity
Editor中。在这里,我们可以对模型进行减面(CruncherPlugin),材质调整,对模型对应的商品进行命名,分类,定价,最后导出Assetbundle并上传。Unity强大的编辑器API使这一切变得非常容易。
模拟装修平台只是网页3D的一个应用举例,随着WebGL不断的规范和成熟,会有越来越多非游戏类的,有实用价值的应用涌现出来。
three.js 怎么样 知乎
这里有一张3D家族图谱,three.js是基于WebGL的3D图形引擎库,和Unity 3D是类似的渲染器。
Three.js解决了WebGL开发复杂的难题,它封装了场景、相机、几何、3D模型加载器、灯光、材质、着色器、动画、粒子、数学工具等概念,开发流程如下:
这里涉及到一个规律,越底层的技术,如OpenGL、DirectX、Vulkan,用起来就越困难,基本上也很少有开发案例,因为这个并不实用。Javascript封装库更简单,以便降低开发门槛,并不存在必须要把所有底层技术学会,才懂用three.js开发的说法。学习新技术要注意:
-
学习的目的
-
先做出一个作品
-
选择有前景的应用市场
是技术探索?还是3D项目开发?技术理论知识的学习需要很长时间,而且很枯燥,最好是完成一个3D项目作品,从手动实操中解决问题,连点成面。一个完整的软件生态至关重要,好的软件往往是成千上万个项目淬炼的成果,three.js都有很多优秀的开发项目让你汲取营养。
作品是可以为简历加分的,同时也能够验证你的学习能力,现在的软件生态不缺乏学习资源和技术资料,项目案例是非常好的参考素材。出作品的过程也是在解决技术问题,初学者不要怕麻烦!
three.js是一个开源技术,重要还是看应用到哪个技术模块,是否产生商业价值,个人的职业前景也会越来越好。推荐物联网3D可视化,面向城市可视化大屏客户端应用开发,常用于安全消防、城市交通领域,更多案例ThingjS客户都有上传到【官网】。
基于three.js的优秀学习资源,在学习three.js之前先问自己这三个问题,相信会事半功倍。
城市可视化大屏项目示例,【3D演示】
请点击输入图片描述
cesium 和 Three.js有什么区别,以及二者与WebGL 的关系
我也想做3D。暂时还在门外,以下仅供参考。
Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎。看到这个问题,第一次知道它。专做地图的看样子,类似于jquery之类的,jquery方便快速出网站,cesium方便快速出地图网站。
Three.js知道一点,是做3D的基础库啊,可以做任意的3D的东西。做动画,做游戏的吧。
WebGL 是一个底层标准吧,它不是一个具体的工程应用。它本身不是javascript的东西,印象中他是专门做图像图像的,更关注底层硬件的渲染和性能之类。
我觉得是javascript 在这个WebGL 的绘图标准上,定义了canvas, 熟悉不,canvas的各种绘图标准应该是参考的这个标准。Canvas 提供了最基本的点线面的绘制,是基本api。然后Three是对canvas的一层封装,方便更加快速地绘制一个球,一个立方体,然后动起来。
请推荐一些类似sketchfab这样的网站主要使用WEBGL技术展示的,就是在苹果系统也可以看的那种模型.
有啊,最近刚好有研究这块,国内展示效果比较好的有“琢刻”(www.gizmohub.com),因为他们域名和中文名不一样,so,直接附域名了。他们用的是自主研发的引擎,展示效果可以媲美Marmoset,较国内竞品网站相比渲染效果都要好很多。
近段时间,和很多设计师同行交流过,发现国内知道Sketchfab的设计师特别少。
一般的3D设计师,都满足于CG模型,站酷,花瓣,CGjoy等网站,也会有少数几个知道Artstation。设计师们似乎只有对模型下载的需求,展示方式也都习惯并满足于平面展示。
So,谈起,Sketchfab和Marmoset,知道的就更寥寥无几了。
但是,这依旧阻止不了那些少数知道的人对Sketchfab的追捧,不仅仅是设计师,还有开发人员。
Sketchfab是一个不需任何插件即可在Web页面里嵌入交互式3D模型的服务网站(展示网站)。这个嵌入过程就像嵌入YouTube视频一样简单,并且可以嵌入到任意web页面中。他们支持30余种本地文件格式的上传,并利用WebGL和HTML5技术在浏览器中做实时渲染。
建立Sketchfab,创始人的寄望是以此为3D艺术家们提供一个向人们展示自己作品的窗口。
如今3D内容已经无处不在了,促成这一现象的理由很简单:我们生活的真实世界本身就是3D的。汽车、手机、我们坐的椅子等等等等,每日陪伴我们的物体都是3D形态,因此广告、电影、游戏会希望建立3D模型,来仿真真实的世界。
而国内的web依旧停留在2D状态,国内3D设计师们长久以来只能使用图形和视频以作呈现,使得自身作品到达不了更为广泛的受众。
而“琢刻”也正是在这种背景下诞生的,给3D设计师提供一个三维展示3D作品的窗口,让设计师的作品生动起来。
网站支持在线编辑,拥有PBR材质系统,在光影、环境光等效果上有独到的处理方法,支持用户自主上传HDR环境球,部分相关高级功能及效果仍在内测中,尚未对外开放。网站支持模型骨骼动画(动画的裁剪功能也即将对外开放),拥有一些常用的后期特效。
体验过“琢刻”的网站,他们支持多种格式上传作品,模型加载速度快,在3D作品的展示效果上足以媲美Sketchfab,设计师还可以可以建立个人3D作品夹,后续的社区功能正在完善。
这可能和他们在技术上的储备有关。为了展示效果达到更好,研发了自主引擎,区别于大部分竞品网站使用的非商业化开源引擎,他们投入了大量的技术资源在引擎研发上,用自主的3D数据传输协议格式,在3D模型的网络传输大小上也大幅领先于市面上可见的其他引擎。
Maker(创客)文化的兴起也在推动3D的潮流——3D打印、3D扫描等等,不久之后,人们就能普遍通过手机来扫描3D物体了。
作为一名资深3D设计师,你可以不知道Sketchfab(国内加载太慢),但是建议要尝试使用国内可以做3D展示的网站,比如琢刻(www.gizmohub.com)。
最终,相信国内的同类网站也能做出像Sketchfab一样的氛围很活跃的设计师社区,人们非常愿意上传自己的作品并与他人分享。
希望我的回答可以帮助更多想了解Sketchfab以及想寻找在国内媲美Sketchfab网站的3D设计师。
three.js Hightopo Babylon.js 各有什么优缺点
Hightopo具有一套丰富的 JavaScript 界面类库,提供完整的基于 HTML5 图形界面组件库。使用 Hightopo您可以轻松构建现代化的,跨桌面和移动终端的企业应用,无需担忧跨平台兼容性,及触屏手势交互等棘手问题。
一套监控可视化解决方案,可用于快速创建和部署,高度可定制化,并具有强大交互功能的拓扑图形及表盘图表等应用。Hightopo 非常适用于实时监控系统的界面呈现,广泛应用于电信网络拓扑和设备管理,以及电力、燃气等工业自动化 (HMI/SCADA) 领域。
一套强大的基于 WebGL 技术的 3D 图形引擎。Hightopo 提供了一套独特的 WebGL 层抽象,将 Model–View–Presenter (MVP) 的设计模型延伸应用到了 3D 图形领域。使用 Hightopo 您可更关注于业务逻辑功能,不必将精力投入复杂 3D 渲染和数学等非业务核心的技术细节。
求 web 3d 引擎的工作原理
插件就是绑定在某个软件上的一个广告。你安装的时候会让你选择要不要安装,目的就是为了打开他们的知名度。在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。
另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于近年来搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。
当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。
我建议楼主去书店里找一些IT方面的书籍看看,应该能帮助你的。
webgl、three.js、D3.js这三者是什么关系
webgl、three.js、D3.js这三者的关系是:
1、D3.js是一个数据可视化的库,看看他们的DEMO就可以知道,技术基础是SVG。兼容性是IE9+。
2、webgl是HTML5中提出的新技术,是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,关于它的教程可以看看hiwebgl。目前兼容性堪忧
3、three.js是以webgl为基础的库,封装了一些3D渲染需求中重要的工具方法与渲染循环。它的教程同样可以在hiwebgl里面找到。
4、three.js之于webgl,类似于windows版本的虚幻引擎之于D3D。当然,虚幻引擎的能力范围比three.js大得多。d3.js跟上面两者没有关系。