OSG 窗口与网页浏览器的嵌合
王锐
2008.3
OpenSceneGraph 与网络浏览器的嵌合,换句话说,就是在用户机的 IE 等浏览器中加载
并显示 OSG 的渲染窗口。对于试图展示三维设计相关技术的网站而言,这无疑是向客户展
示自身能力以及仿真产品的最直观方法;对于从事商品买卖,楼宇销售,地图导航等行业的
企业来说,使用 OSG 在浏览器中实时显示自己的产品,并允许用户使用场景漫游器来即时
体验其特色,同样是很好的选择;当然,只要设计合理,OSG 同样可以用于网页游戏的制
作。
本教程的目的是编写一个 MFC ActiveX 控件,在其中实现 OSG 窗口的显示和数据交互,
并使用注册 OCX 的方法将 OSG 窗口嵌合到浏览器中,实现网页上的三维模型显示和场景
漫游功能。本教程不会详细介绍 ActiveX 控件的高级编程知识,OCX 文件的注册方法,以
及 ActiveX 安装程序打包和发放的方法,相信您阅读了这篇拙劣的文章之后,一定可以凭借
自己的实力将本教程附带的简陋代码改造和完善,并形成和发布自己的作品。
波尔实验室的 Michael Gronager 曾实现了一个 OSG 与网页嵌合的工程:osgAx。该工程
基于 OSG 0.9.6 的版本,原网站为 osgax.vr-c.dk
,不过很遗憾这个工程已经停止更新,其源
代码也无从下载。笔者在多方寻求 osgAx 源代码无果之后,决定自行从头编写 OSG 的
ActiveX 工程,笔者的功力与 osgAx 的作者恐怕尚不能同日而语,代码中多有错漏之处,请
您给予批评和指正。
osgActiveX 工程的源代码请在附件中下载。如有任何问题,欢迎您在 bbs.osgchina.org
发帖讨论;或者直接与我联系:wangray84@gmail.com(不推荐这种方式,因为您遇到的问
题也可能是别人想知道的,无论是经验还是困惑,都希望大家一起分享)。
预备工作
有关 OpenSceneGraph 编程的基本知识,请参看《OpenSceneGraph 快速入门指导》一书,
以及网络上诸多相关的教程。
有关 ActiveX 编程以及 HTML/VBScript 代码实现的更多知识,请参阅网络上繁多的教
程,以及各种网络编程相关书籍。
这里我们需要首先建立一个 ActiveX 工程,对于 VS2008 的用户,可以选择建立“MFC
ActiveX 控件”工程,并根据自己的需要设置相关的选项。工程建立后,会自动生成三个类,
分别为(假设我们设定工程名为 osgMFCAx):
CosgMFCAx:控件程序类。
CosgMFCAxCtrl:控件主窗口类。它是我们代码实现的核心部分,我们将扩展这个类以
实现 OSG 模型的读入,窗口的创建和渲染流程。这个类包括了调度映射(Dispatch Maps)
和事件映射(Event Maps)的实现函数,前者提供了外部程序(如浏览器)访问控件的属性
和方法,后者用于向控件对象发送事件通知。
CosgMFCAxPropPage:这是控件的属性类,用于显示一个属性对话框并允许用户通过
修改参数来改变控件的属性和状态。这里我们暂时不对它进行处理。
本页已使用福昕阅读器进行编辑。
福昕软件(C)2005-2007,版权所有,
仅供试用。