为什么是体素(Voxel)原文地址
原文tags:程序员
,Unity3D
,游戏设计
“对不起,美术外包这件事情,多少钱也不能接了。”朋友在微信里面发消息过来,“现在活儿太多,都忙不过来了。”
然后我就知道我们的游戏似乎找不到美术帮忙做特效了,如果有朋友看到这里,碰巧有认识的朋友在做这方面的工作,不妨给介绍一下。
回想起刚毕业那段日子里,对程序员来说真是 很好的时代。那时候程序员到哪里都是团队的核心。经常会有一些有创意的美术会找我们,就算是年长十岁的前辈,也会低声下气的请吃一顿饭,然后说:我有一个不错的游戏创意,求帮忙实现一下吧。然后毕恭毕敬的倒上一杯啤酒。
许久之后之后,但不知道确切是从什么时候开始的,现在想起来似乎可能是Unity3D引擎出现之后吧,这个好日子就到头了。那些 美术家发现,用了引擎之后,原来写个程序也不是什么很困难的事情啊。随便学一些脚本,加上美术资源,套用一些流行的插件,两三个月之后,一个还不错的,很漂亮的游戏就能制作出来了。从此之后,美术家再也不需要搭理我们这些屌丝程序员了。
好的工具和引擎,让开发过程变得简单易用,这必是极好的 事情。但是作为一个程序员,难免有些孤寂的落寞。
所以我需要找到一个可以不需要依赖别的美术家就能自己开发游戏的方法和工具,这时候,看到了体素
(Voxel
)。
体素
简单来说就是立体像素,是用一个个立方体来组成三维模型的方法。就如同一个生物是由很多细胞组成的一样,体素
认为一个3D模型是有很多细微的单元组成,相对于传统的三角片表示,这更接近于物理的真实。
但在这里,出于我们的需要,我们只关注体素
的艺术概念,而不是技术方向。所谓体素艺术
,是用尽量少的体素
元素来组成的3D模型。对于很多人来说,这种类似于2D像素风格的表现形式,能给他们带来简单而变态的美感。
我看到体素艺术
,不单独是因为我对艺术的修养,而是没有艺术基础的我只能搞这个。相对于其他艺术形式,体素艺术
更适合于程序员来操控,因为其3D的特性,我们可以用很多图形学或游戏物理学的手段建立很多漂亮的特效和动画。
但是这里最大的问题是,我如何能创造出体素
模型呢,三年前的GameJam
上面我曾经自己做了一个体素
编辑器,也做过一个简单的游戏,但是因为超级难用也不怎么好看我也就把它遗忘在尘封的往事中了。
我开始寻找好的体素
编辑器,我在网上搜索到Magica Voxel
这个很不错的工具,虽然不是开源 但是其文件格式是开放的就能很好的应用到我将来的游戏里面。然后我就开始找这个资料,在微博里面看到@gltracyl
也发了很多关于Magica Voxel
的帖子,我说:兄弟好巧啊,幸会,你也在研究这个工具
。@gltracyl
说,啊,不好意思啊,那个Magica Voxel
是我在开发和维护的。 ——请收下我的膝盖。
layout | title | subtitle | tags |
---|---|---|---|
post | Magica Voxel 体素 建模软件 |
Magica Voxel :A free lightweight 8-bit Voxel editor and interactive path tracing renderer, enjoy :) |
美术 ,建模 ,体素 |
像素画,这个词想必都听说过。像下面这样的美术风格,我们可能就比较宽泛的定义为像素画,点阵图等等。以其特殊的美术风格以及这两年的怀旧兴起,像素风格普遍的应用在这几年在国内外的游戏中。
好吧,之后考虑如何在游戏里面使用,为了自己能得到更多的可控性,我决定自己写一个Unity3D
里面的文件解析工具,然后自己渲染出来。 在开始时候我有个想法是这个东西最终要在手机上面进行,所以尽量能提高渲染效率而不是渲染效果,所以从开始的时候就没打算用任何光照,也基本上没用什么纹理,然后通过比较傻瓜的算法让整个模型只有一个渲染批次这样渲染效率理应会快很多。
然后我又开始做一些比如爆炸什么的效果,在爆炸瞬间,模型从一个完整的Mesh
分解成很多很多立方体Voxel
,然后崩裂出去。我也做了变型效果,单没有想象的那么漂亮。
在这个过程中发现了
体素
的更多的奇妙的优点:
1 体素
模型是基于 数据而不是基于资源,所以占用内存和硬盘的空间会非常小,如果用点心,几百个游戏可能只有几兆字节这样的极限也可能达到。
2 体素
是真实的一个一个的体积元素,他们是真实的物理数据,如果开发者愿意,可以在这个数据上添加更多的流量咯信息,比如一把体素
剑,你可以把其中一个元素绑定冰属性 攻击,另外一个元素绑定火属性攻击。如果这样做,在游戏的逻辑的配合下下能带来无尽的可能。
3 易创造,相对于传统的基于三角面的三维模型而言,体素
是更接近于物理真实状态的模型。更适合人类创建编辑。打个比方说,我给你一个体素
堆,用户可以 好像木雕一样直接从上面销出一个喜欢的杯子或者足球。但是一样三角面模型,你不得不去考虑每个面片之间的拓扑关系。对于非专业的模型创建者,体素
模型更适合,
4 易编辑,因为是基于数据本身而不是资源,体素
模型更容易被编辑,特别是程序运行期间编辑,比如你可以在游戏中用体素
模型给自己铸造一个武器,拼装一个机器战甲这些,对于体素
模型来说,都是手到擒来的事情。
发现到这些,我的野心开始慢慢的膨胀了。这不单单是一堆方块而已,而是屌丝程序员对土豪美术家的集体逆袭啊。
我打算把我的(简陋的)代码公布出去,然后把自己使用的以及在网上找到的美术资源也一起放到网上去让所有被美术家抛弃的角落里破落的程序员能得到充足的弹药反击。
这时候我看到了 国外一个网站Sketchfab
,它号称自己是3D模型
的YouTube
,他让用户可以上传自己的3D模型
然后展示给别人,然后他们用这个点子忽悠了很多钱。
然后我忽然醒悟,我TMD可以直接致敬
他们的网站啊, 只是我的网站不是传统的模型,而只是体素
而已。他们是高大上的只有专业人士才能开发的模型,而我这里只需要保存每个普通人都能构建的“乐高积木”就好。我也想了个口号,我们是3D模型
的twitter
。任何人都可以简单创造分享获得一个艺术话的体素
模型。
我的投资人提出一点质疑 ,说人家的模型是大众化的,你的太小众了吧。
我想了一下,其实然也不然,本质上我们的网站和Sketchfab
完全不同,他是一个专业的SaaS
(软件既服务)网站,提供给专业人士专业的服务。而我们是一个简单的快乐的UGC
(用户创造内容),让每个黎民百姓都可以低成本的展示自己的点子和创意。他们是贵族的雕塑学院,我们就只要做幼儿园的乐高积木
游戏班就好。
对没错,我们有自己的优势:
1 我们可以提供在线编辑功能,任何人十分钟就可以创造一个新的模型。
2 我们的所有的资源风格统一,你可以任意组合别人的模型创建巨大的艺术场景。
3 我们可以简单的实体化,通过3D打印机和软陶等技术我们可以把模型做成现实的艺术品,你说传统模型也能做啊,但是我告诉你这个成本是天壤之别。
4 我们是游戏的胚胎,一个专业的模型因为精度的原因未必能很好的适应游戏开发,但我们的模型天生就是为了游戏开发而做的,在 后面我们可以提供大量的游戏资源而Sketchfab基本做不到。
也就是说,我们的表现差但是受众更广阔,我们是模型届的 twitter,或者也可以说我们是模型届的新浪微博把。
说做就做,我学了一点bootstrap
的皮毛就开始建立网站了。因为我之前用Unity3D
做了体素
的渲器,所以在开始的时候我打算直接用Unity3D
导出一个网页版本的插件就直接放在网站上,这样可以让我的工作量最少并且可以让代码的复用律最高。
但是华丽丽的失败了。
因为Unity3D
网页导出根本没办法适应所有的浏览器,层次没办法管理,载入时间过长,不同浏览器表现效果迥异。我他妈的真想放弃了,再去看看Sketchfab
,因为是使用Html5
进行渲染,所以可以很好的适配不同的平台和浏览器。
摆在我面前两条路,一是等Unity3D
之后出了Html5
导出插件我再去做这个网站 ,二是摆脱Unity3D
重新写一个Html5
的Voxel
渲染器。尼玛,屌丝程序员的逆袭是不可阻挡和耽误的,我选择了后者。
可这个选择谈何容易,我基本上已经两三年没碰过Html5的代码,在技术日新月异的今天,基本上等于重新学习一门新的技术了。而且我是一个35岁的老程序员了,随着年龄的增加,智商这东西也飞流直下三千尺了。一点一点肯文档也谈何容易。
但是俗话说的好:功夫不负苦心人,屌丝也有出头日。我他妈的就真正的搞出来了_,底层用了three.js库,因为这个原因,比 Sketchfab
还牛,在不支持WebGL
的平台上,three.js
帮我使用了软渲染功能来模型三维模型。也就是说,我们的网站基本上可以跑在任何平台上了。
总结下,这世界上有两个东西是拦不住的,一个是土豪的钱,一个是屌丝逆袭的心。