AICon全球人工智能与机器学习技术大会8折特惠,购票立减¥960! 了解详情
写点什么

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

2015 年 8 月 24 日

董一凡是一位写了十年代码的程序员,擅长移动平台的客户端开发,在移动领域耕耘超过七年。在 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 上的分享。

2015 年 8 月 24 日 21:111622

评论

发布
暂无评论
发现更多内容

1小时800箱,动力机器人真·搬砖16小时不续航;苹果官宣 WWDC 全球开发者大会召开时间;基于图神经网络的分级相关性匹配

京东科技开发者

人工智能 AI 开发者

Rust从0到1-结构体-定义和实例化

rust struct 结构体

拍乐云 x 扬帆出海 x LiveCloud:音视频出海专家干货分享

拍乐云Pano

flutter ios android WebRTC RTC

架构实战营模块 1 作业

Geek_2b52aa

架构实战营

架构实战营模块一作业

sandy

MUSO挖矿系统开发

飞亚科技

书单|互联网企业面试案头书之运营篇

博文视点Broadview

7 个非常实用的 Shell 拿来就用脚本实例!

JackTian

Linux 编程 Shell 脚本语言 运维工程师

BBK智能合约系统开发|BBK智能合约APP软件开发

开發I852946OIIO

系统开发

白金熊项目奖金制度玩法介绍

飞亚科技

Nginx 除了负载均衡,还能干点啥

Java小咖秀

nginx 负载均衡

区块链商品溯源平台搭建及防伪溯源解决方案

13828808769

商品溯源

这6个浏览器插件,让你的浏览器大为不同。

彭宏豪95

chrome 浏览器 插件 chrome扩展 4月日更

人生苦短,我用Python之小游戏

Bob

开发者 Python 游戏编程 4月日更 -python

「架构实战营」模块一作业

between

架构实战营

让云原生应用的交付变得更简单 | KubeVela v1.0 正式发布

郭旭东

Kubernetes 云原生 OAM KubeVela

【LeetCode】搜索旋转排序数组 IIJava题解

HQ数字卡

算法 LeetCode 4月日更

对于数据,科技小白提出了灵魂三问:从哪儿来?到哪儿去?能干什么?

华为云开发者社区

人工智能 安全 数据 数据采集 网络人工智能

平面设计之PS(前序)

空城机

PhotoShop ps 4月日更

Spring Boot + RabbitMQ实现订单过期自动取消功能

Lonely Sufferer

RabbitMQ springboot

教你一个著名的流行数据格式:Python JSON

华为云开发者社区

Python 数据 Python JSON JSON序列化 半结构化数据

数字化时代,都说企业转型迫在眉睫,如何转型成了关键?

一只数据鲸鱼

物联网 数字化 数据可视化 企业转型

nsqlookupd:高性能消息中间件 NSQ 解析

华为云开发者社区

集群 消息中间件 nsq nsqlookupd

模块一课后作业

王瑞强

架构实战营

Crash 游戏是公平的吗?

飞亚科技

面试笔记(二)线程池连环炮

U+2647

Thread 四月日更

牛比特小矿工系统开发|牛比特小矿工软件APP开发

开發I852946OIIO

系统开发

小白都能学会的Java注解与反射机制

陈皮的JavaLib

Java 注解 java反射

区块链BaaS平台的搭建,底层BaaS服务平台的开发

13828808769

行业资讯 产品资讯

有了这个框架,平台开发谁还手敲代码?

华为云开发者社区

华为云 智慧园区 MainPortal 统一门户 HDC2021

情指勤一体化指挥调度平台建设,重点人员管理平台

13823153121

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