基于Ogre引擎的3D Visualization
Ogre 使用非常广泛,国内外都有不少使用者,包括国内的天龙八部。Ogre功能强大,但始终是个底层3D渲染引擎,开发成熟的产品还需要大量的工作。
我将3D Visualization的应用分为两大类:
1. 虚拟世界类:如虚拟的城市建筑,公园游览,网络3D展会等。场景不会非常大。主要是用户浏览和获取信息。
2. 编辑器类:如场景编辑器,装修软件,船舶制造,汽车有限元分析,物理引擎编辑器等。场景只集中在较小的区域内,用户可以从任意视角观察,只要以对物体实施操作,产生改变,再反馈到其他系统或者现实世界中去。
基于这个分类,我使用Ogre, Physoft Dev SDK, Physoft 3D framework做两个3D框架:
1. Physoft Virtual World,支持
a. 多场景支持:用户选择需要浏览的场景,客户端向服务器请求下载最新模型。模型使用版本控制,只下载更新部分。
b. 动画,声音,视频播放, 使场景有生气。
c. 多用户登录: 单场景支持1000人登录
d. 互动性: 用户可以相互看到,可以交流。模型附带信息,用户可以将鼠标移动到模型上,或者点击模型获得模型信息,比如模型是件商品,用户可以查看商品的价格,商家等信息。
Virtual World的共性在于漫游,互动。
2. Physoft 3D Editor, 支持
a. 3D基本操作:平移,旋转,缩放等,选择模型,显示,隐藏等。
b. 3D基本信息:坐标轴,网格,高亮,选择,属性面板。
c. model管理:通用的实体(entity)管理结构, 可以方便的扩充自定义3D物体,如增加连接器,机械零件等。
d. 工程管理:文件的打开,关闭,保存,状态更改,Undo, Redo等。
e. 插件模式:系统使用插件模型,可以加入任意多的功能,可以通过配置文件定义系统需要加载的功能。插件模式使系统可以打开,保存多种文件。
3D Editor的共性在于 对模型实施操作,3D信息、操作的体现。3D Editor使用插件模式,所以使用同一个3D Editor框架,可以开发出完全不同的应用,如船舶制造系统,装修软件,场景编辑器,物理引擎编辑器等。
详细demo 请参考 www.physoft.net
程序截图:
1: 图形渲染 ( 插件功能已被关闭)
2. 高亮显示
对于工程应用来说,模型和游戏大不一样,有大量空间上的嵌套,几何体数量巨大。但鼠标在几何体上hovering时,物体的高亮就需要精确的鼠标拾取,而不是常用的使用立方体近似。
3. 旋转物体
相对旋转相机来说,旋转物体比较简单,但是旋转轴和平移轴画起来也不是一件简单的事,特别是这些轴是大小不变的,而且是绘制于最顶层。