Verge3D教程和Web3D开发

Blend4web vs Verge3D

Blend4web和Verge3D都是基于blender的Web3D解决方案,可以一键将3D内容发布于网络上。我同时是Blend4web和Verge3D的重度用户,经常被问到这两个工具有什么区别,下面把我的体会和大家交流一下。

历史

首先从这两个工具的历史来看,Blend4web算老资格了,一度是和three.js并列的两大著名webGL开源项目,它的第一个版本发布于2015年1月。Verge3D是后起之秀,它从2017年底才开始发布。

而实际上,这两者有深厚的渊源。Verge3D的开发团队是从Blend4web出走的,他们曾是Blend4web开发团队的核心成员,而在核心成员出走以后,Blend4web也经历了巨大的改变,其中对用户影响最大的就是从2018年5月直到本文截稿前,Blend4web一直没有更新,论坛更是死寂,甚至一度出现大量广告没人清理,很多专业版授权用户也得不到售后服务,官方只是在Blend4web 18.05更新日志中提到Blend4web的改写计划(这个我们后文会提到)。

出走后的成员成立了新公司,名字叫soft8soft,并且很快在新网站公布了Verge3D的开发计划,它的1.0正式版发布于2017年11月22日,其后保持着半个月一次的迭代速度。直到后来用户反馈版本迭代太快需要频繁更新的问题,官方才改为发布预览版和稳定版两个版本的方式,预览版仍保持着较快的更新速度。而这个速度正是原本Blend4web的速度。

前情概要介绍到这里。

开发方式

先从开发方式上来看,Blend4web一直是作为Blender的插件存在的,它的开发环境完全在Blender内部,有专门的渲染引擎,支持Blender2.79版本的内置材质和部分Cycles材质,支持材质动画、物体动画、骨骼动画、ShapeKeys动画,支持材质预览,支持节点式的逻辑编辑系统,支持将3D内容导出为单个.html文件或者json+bin格式文件,从而直接发布到网络上。

Verge3D虽然也提供了Blender的导出插件,但是严格来说,它并不完全依赖Blender,它的开发方式是完全web式的,只是需要从Blender启动本地服务。Blender插件只是负责导出3D资产,其它的项目管理、编写逻辑、发布等都是在运行于浏览器上的App管理器进行的。Verge3D同时也开发了3ds max版。

Blend4web由于从18.05版以来没有更新过,所以它暂时停留在对blender2.79的支持上,现在不支持blender2.8。Verge3D支持blender2.79和blender2.8,以及3ds max 2017-2020 。

可视化编程

对于美术人员来说可视化编程能够解决编写逻辑的问题,常见的可视化编程方式就是节点式,这是美术人员最熟悉的一种编程方式。Blend4web基于Blender的节点系统开发了一套逻辑编辑系统,能够实现一些动画控制、逻辑控制,但是编程能力是有限的。实际上节点的可读性较差,对于复杂的逻辑还不如用文本式的表达式来得清楚。

B4W的节点式编程

Verge3D基于谷歌的Blockly开发了一套基于拼图的可视化编程方式,它基于浏览器运行,可以快速测试逻辑;它有着很好的可读性,逻辑清晰,接近文本式编程;它有着很好的可扩展性,可以从拼图调用JS函数,也可以从JS调用拼图中定义的函数。另外,它还可以作为编程爱好者的入门语言,培养编程兴趣。

V3D的拼图式编程

功能

从美术表现上来看,两者都是足够强大的。Blend4web原本就有一套自己的材质库(商业版),效果优秀。Verge3D完全在eevee渲染器下工作,支持PBR材质和后期特效,也支持部分Cycles材质。

从逻辑功能来看,无疑拼图更加强大,除了基本的控制物体的变换、材质、贴图、动画以外,还能像JS一样操作DOM,能读取本地文件和网络数据,能实现更加复杂的逻辑和算法,支持数组、列表、字典等数据类型,支持使用函数等等。

从性能来看,Blend4web支持单个HTML文件导出,但是文件非常大,也支持json+bin导出,但是不支持压缩,只能手动在服务器配置实现.gzip压缩。Verge3D支持LZMA压缩,比gzip压缩效率高,不需要在服务器端做任何配置,只要简单地勾选压缩选项即可。

从开发成本来看,Blend4web是开源软件,用户可以自行修改代码,进行深度订制,但是这当然是需要开发者参与的。Verge3D是基于three.js库开发的,three.js是一个拥有庞大社区的开源项目,所有three.js能实现的功能,Verge3D都可以直接使用现成的代码。

部署和发布

Blend4web可以部署到服务器上,通过地址访问,也可以在本地直接打开生成的单html文件,但是对于复杂项目一般不会直接导出单html。另外,Blend4web有一个播放器,可以用播放器加载资源参数的形式访问。

Verge3D除了不支持单html导出外,基本与B4W一样。但是Verge3D开发了一个Wordpress的插件,可以使用在网站后台上传应用程序,并用短代码嵌入页面。另外,这个插件还可以配合拼图实现一些提交表单、存储数据等功能。

开发路线

文章开头介绍了Blend4web目前停留在了2018年18.05版本,在这个版本发布发布了同时,官方公布了改写Blend4web的计划,计划开发一个独立运行的应用程序 ——Blend4web studio。这是一个不依赖Blender的独立的web3d开发工具,主要实现引擎重构、基于glTF的工作流程、拼图式编程,以及布料模拟、UI创建等方面的功能。

现在可以在Blend4web的官网看到开发视频日志,但是并没有公布发布时间,以及未来是否还有开源版本。

Verge3D这边,官方并没有公布开发路线图,但是开发团队会根据社区的反馈开发功能,而且反馈很及时。总体上Verge3D比较重视3D电商功能的完善,开发方向上一直以这方面为重点。另外,对于c4d maya等三维软件的插件开发也在计划当中。

价格

Blend4web 15.08有社区版和商业版,社区版是开源的,商业版990美元;Verge3D提供了完整功能的免费学习版,同时针对不同用户有不同的售价,最低290美元,最高2990美元。价格对于个人开发者并不是阻碍,一个小项目就足够赚回来了。

总结:我本人对使用哪种技术并没有偏爱,只关注它对我的工作能带来哪些便利。从目前来说,我推荐使用Verge3D,原因是它更有生命力,它的开发团队很努力,能尊重社区意见,能及时解答用户问题。很多时候我们需要的不仅仅是工具,更需要背后的技术支持。

zjbcool

zjbcool
关闭菜单