转载

专访Autodesk董一凡:移动平台的3D编程可以更简单

董一凡 是一位写了十年代码的程序员,擅长移动平台的客户端开发,在移动领域耕耘超过七年。在 QCon上海2015 ,他将分享 《移动平台的3D编程可以更简单》 。在大会开始之前,InfoQ就移动平台的3D编程等话题采访了他。

InfoQ:首先请向InfoQ的读者做一下自我介绍吧?

董一凡:作为一名写了十年代码的程序员,目前我最擅长的领域是移动平台的客户端开发,在移动领域的开发时间超过七年,前前后后涉猎过很多个平台。随着大部分移动平台自己走向死亡,现在我也主要专注在了iOS和Android两大移动平台,偶尔也会客串下Windows这个不知道是移动还是桌面的平台。

十年前,我刚入行的时候,曾经认为自己将会永远做一个C++程序员,于是花了大量时间在C++上。现在C++也是我工作所用的主力语言之一,工作之外也会偶尔写点什么娱乐一下。

写了一些年程序后,终于意识到了之前定位的狭隘,于是开始广泛的学习各种技术,各种各样的语言也学了很多,值得庆幸的是,几年折腾下来,我一直也没有对写代码这件事感到厌倦,于是我又认为自己将会永远把开发做下去。

现在,我也觉得开发是一个可以终身做下去的事业,不过除了事业我还想追求更多的东西,从这些年的经历来看,其中贯穿始终的就是在不停的学习,想明白这一点后,我开始除技术之外更广领域的学习,比如日语、画画、设计和钢琴等等,给自己的定位也变成了在今后作为一名终身学习者。

InfoQ:您从事3D编程多久了,一直都是往这个方向钻研吗?

董一凡:主要方向是移动平台,也做了移动平台的3D方向,没有完全只做这个方向。这个方向是大概从4年前开始接触的。

InfoQ:您当时是出于什么样的考虑要分享这方面的话题?

董一凡:主要是目前的3D编程相对于2D来说是不太一样的,很多东西你都得从头去考虑。

举个例子,在2D领域,要显示一张图片,其实不用去理解jpg、png这些图片格式是怎么存储的,也不用去理解这些图片是怎样显示在屏幕上的。要做的就是调用一个API,然后直接就把图片显示出来了。而到了3D领域,要显示一个3D模型,可以类比为一张图片,而这时候就需要懂很多东西。一方面得理解这个3D模型的文件格式,同时也需要理解怎么把这些数据在显卡上显示出来。都是些低level的东西,让每个人都去学一遍,其实是没有必要的。

在PC领域的话,可能还有一些library可以用,但其实也没有像2D领域那么简单;在移动平台,这个问题就更加恶化了。

举3D模型的这个例子,如果你想看一个模型,那目前基本就三种办法:

  1. 直接找一个软件可以预览这种模型,类似于2D领域的图片查看软件。但如果要在自己的应用里去显示一个3D模型,那这个方法自然不行。
  2. 用3D界最成熟的游戏引擎来做,但是游戏引擎侵入很强,必须整个应用都基于这个引擎才行。
  3. 自己学会3D编程的各个点,然后自己从头开发。

我这次演讲会以一个具体的案例——3D模型的加载为基础,讲一下移动平台上3D编程的各种主流的编程方式和特点。同时会与2D编程进行一定的类比,最后给出一个我认为比较合理的努力方向,让3D编程可以更简单一些。

InfoQ:一般程序员要实现移动3D开发,大概要花多少时间?

董一凡:如果程序员本身还没有移动编程的经验,时间又会更久一些;因为移动平台的3D相对PC这些平台要更新,资料积累要更差一些,比如SceneKit在Mac上已经存在很久了,而在iOS上,是去年在iOS8才加入的。从头学移动3D编程,难度又会再大一点。

InfoQ:你有什么好办法可以缩短简化这个学习的过程?

董一凡:我给的解决方案就是,大家工作在不同的层面上,比如3D模型加载,我现在在做一个开源项目,结果就是帮你把底层的这些全开发好,写应用的人只需要把我的开发库拿去,两行代码就可以显示一个3D模型了。

这只是个抛砖引玉的例子,如果别人 3D领域的这种需求,我们应该让懂3D编程的人把这些包装成合适的library,然后开发应用的人只需要拿去用就行了。

InfoQ:这个项目目前我们可以看到吗?

董一凡:这个是我和 郝培强 (注:tinyfool,移动开发专题出品人)一起在做的一个项目,目前正在加紧开发,已经可以在iOS上正常工作了,现在正在做Android版本。我们应该会在演讲之前把它做出来,然后可以当做演示给大家看看。

InfoQ:现在有类似的开源项目吗?

董一凡:闭源的倒是有,比如Apple的SceneKit,比较接近我们的思路,不过它也有一些局限性,我们当时就是打算用这个,结果绕不过它的局限性,所以自己做了一个。

InfoQ:刚才您谈到SceneKit的局限性,可以具体说说吗?

董一凡:它对3D文件的格式有要求,只支持一种经过它自己优化的文件格式。而至于是怎么优化的,并没有公开。所以我们拿到一个通用格式加载,就根本不行。

InfoQ:那你们设计的运用场景大概都是哪些?

董一凡:主要场景就是你想像展示图片一样展示一个3D模型。3D建模除了展示还可能有编辑,我们这个主要是展示,编辑的场景就不包括了。

InfoQ:感谢您接受我们的采访,期待您在QCon上的分享。

正文到此结束
Loading...