Conix 3-D Explorer

作者:Michael J. Hammel
  • 制造商:Conix Enterprises, Inc.

  • 电子邮件:info@conix3d.com

  • 网址:http://www.conix3d.com/

  • 评论员:Michael J. Hammel

很可能,你们中的许多人都了解 Mathematica 中大量可用的图形功能(参见 Patrick Galbraith 在 1998 年 12 月《Linux Journal》上发表的“Linux 版 Mathematica 3.0”),Mathematica 是数学软件中的瑞士军刀。虽然它的功能在很多情况下都相当不错,但我一直觉得如果能将 Mathematica 的强大功能与基于 OpenGL 的 3D 界面结合起来就太好了。这样的结合将为 3D 演示提供有趣的可能性。

进入 3-D Explorer。这款来自 Conix Enterprises 的软件是 Mathematica 的附加软件包,它允许您直接从 Mathematica 环境中使用基于 OpenGL 1.0 的渲染功能。一个简单的安装过程让您只需几分钟即可启动并运行该软件,并提供无限的可能性。

由于我不是 Mathematica 专家,因此我对本次评测的目标是了解安装 Mathematica 和 Conix 3-D Explorer 并开始使用它们有多容易。我还着手验证提供的示例是否既易于理解又实用。最后,我想看看是否有可能在撰写评测的短暂时间内,用这两个软件创造出任何有趣的东西。

安装

3-D Explorer 包装在两张 3.5 英寸软盘中。第一张软盘是 Mathematica 的 3-D Explorer 附加组件;另一张是一组用于 3-D Explorer 的 OpenGL 库。软件随附的安装说明非常基本——一张纸。我查看了 Conix 网站 http://www.conix3d.com/,虽然它包含许多示例和其他信息,但没有关于如何读取软盘的信息。总的来说,该网站没有为 Linux 用户提供太多具体的帮助。

由于未指定软盘的格式,我依靠我的 UNIX 经验以及许多商业发行商似乎喜欢 DOS 格式的知识。我将软盘挂载为 DOS 软盘。它奏效了。您可以使用如下命令挂载软盘

mount -t msdos /dev/fd0 /mnt/floppy

您使用的设备可能不同(例如,第二个软驱为 fd1),挂载点 /mnt/floppy 可以是任何现有的空目录。挂载后,您可以列出软盘的内容,以查看 gzipped tar 文件中包含的内容。第一张软盘上的安装文件名 3dexp101.tgz 与说明(3-DExplorer_1.0.tar.gz)不符,但由于该软盘上只有一个安装文件(以及两个文本文件),因此不难弄清楚。

快速检查安装文件的内容表明使用了相对路径。也就是说,gzipped tar 文件中的文件不包含绝对目录路径。使用以下命令解压缩此文件

cd /usr/local/mathematica/AddOns/Applications
tar xvzf /mnt/floppy/3dexp101.tgz

这会将 3-D Explorer 文件解压缩到默认的 Mathematica AddOns 目录中。这样做可以保证 Mathematica 在启动时能够看到 3-D Explorer。

安装完第一张软盘后,您可以启动 Mathematica 以查看在线文档。可以从 Mathematica Notebook Help 浏览器获得关于使用 GLExplorer 的帮助。运行 Rebuild->Help Index 以访问此浏览器,作为安装过程的最后一步。在线文档声明

要在 UNIX 系统上安装 GLExplorer,您必须具有 OpenGL 的功能安装。在 Linux 系统上,GLExplorer 附带了 Conix 提供的 Linux 版 OpenGL,但也可以使用其他 OpenGL 实现。

这里必须注意三件事:第一,在线文档没有将软件包称为 3-D Explorer,而是 GLExplorer,因此我将交替使用这两个术语。第二,我不确定 GLExplorer 是否可以在不安装 Conix 提供的 OpenGL 软件包(第二张软盘)的情况下与其他 OpenGL 实现一起使用。第三,由于 Mesa 库似乎不起作用(我没有尝试使用我的 Xi Graphics OpenGL 发行版),您必须退出 Mathematica 并安装 Conix OpenGL 软盘才能继续。

在我第一次尝试使用 3-D Explorer 时,我尝试使用已安装在我的系统上的 /usr/local/lib 下的 Mesa 库,但这些库似乎不起作用。问题可能在于我的 Mesa 安装不太合格;但是,当我安装 Conix 提供的 OpenGL 软件包时,我发现了很多我原本不期望在标准 OpenGL 发行版中看到的文件。例如,在 /usr/X11R6/lib 下创建了一个名为 /GL 的目录,其中包含共享对象,例如 GLEngineClient.so.1 和 GLRendererRGB565A8D32.so.1。使用 ldd 对 /usr/local/mathematica/AddOns/Applications/GLExplorer/GLLink.exe/Linux 下的可执行文件进行快速检查,提供了以下信息

libGLU.so.1 => /usr/local/lib/libGLU.so.1
libGL.so.1 => /usr/X11R6/lib/libGL.so.1.0
libXext.so.6 => /usr/X11R6/lib/libXext.so.6.3
libX11.so.6 => /usr/X11R6/lib/libX11.so.6.1
libdl.so.1 => /lib/libdl.so.1.7.14
libm.so.5 => /lib/libm.so.5.0.6
libc.so.5 => /lib/libc.so.5.3.12
libGLClientSys.so.1 => /usr/X11R6/lib/libGLClientSys.so.1.0
libXintl.so.6 => /usr/X11R6/lib/libXintl.so.6

由于 libGLClientSys.so.1 包含在 Conix 提供的 OpenGL 发行版中,因此似乎您确实必须安装该软件包才能正确使用 3-D Explorer。

OpenGL 软盘需要从根目录解压缩,例如

cd /
tar xvzf /mnt/floppy/cnxgl140.tgz

同样,软盘上的文件名与软盘随附的单张纸上的书面说明不符。此外,单张说明书上说在安装 OpenGL 文件后运行 ldconfig。但是,软盘上的 gzipped tar 文件中的文件使用以 usr/X11R6/lib 开头的相对路径,因此只要您首先更改为根 (/) 目录,就不必执行此操作。

使用此产品不需要注册和/或许可证 ID。一旦 OpenGL 软件包也安装完毕,您就可以尝试 GLExplorer 了。请注意,Mathematica 使用 Motif,但我收到的用于本次评测的版本是静态链接的——Conix 的软件包不需要 Motif 才能工作。

文档

GLExplorer 的唯一文档是在线手册。即使您从未使用过 Mathematica,他们的帮助系统也相当易于使用,并且包含带有可展开/折叠部分的超文本链接。您可以通过用鼠标右键单击单元格括号(在每个单元格的右侧)并选择 Kernel->Evaluation->Evaluate Cells 来执行帮助浏览器中列出的示例命令。

在线文档中涵盖的所有 GLExplorer 示例用法都要求您首先运行命令

Needs["GLExplorer`GLRenderer`"]

此命令启动 GLExplorer 渲染引擎。启动后,桌面上会出现一个小图标(见图 1)。虽然此命令列在每个示例的开头,但您只需运行一次命令即可启动引擎。之后,您可以在您尝试的每个后续示例中跳过此命令。

Conix 3-D Explorer

图 1. GLExplorer 引擎图标

运行 Mathematica/3-D Explorer

我注意到单独运行 Mathematica 的第一件事是启动时弹出的对话框。此框抱怨字体安装不正确,但如果我单击对话框中的“继续”按钮,一切似乎都运行良好。运行 Mathematica 所需的字体安装在 $MATHEMATICA/SystemFiles/Fonts/Type1 和 $MATHEMATICA/SystemFiles/Fonts/X 下,其中 $MATHEMATICA 是您安装所有 Mathematica 文件的顶级目录。默认值为 /usr/local/Mathematica。为了使一切正常运行,Type1 字体应在 X 服务器的字体路径中列在 X 字体之前。

在查看提供的 GLExplorer 演示时,您会找到对 GLShow(一个 GLExplorer 命令)的引用。Mathematica 的 2D 和 3D 图形到基于 OpenGL 的图形的转换通过此命令处理。该命令接受标准的 Mathematica Show 命令语法,使得无需学习太多 OpenGL 即可轻松使用 OpenGL 进行交互式图形显示。

GLShow 立即打开一个新窗口。此窗口很小,约为 256x256 像素,但具有交互性。您可以立即旋转任何 3D 形状,并在窗口中平移(移动)任何 2D 或 3D 图形。

Conix 3-D Explorer

图 2. 蛇结演示

蛇结演示展示了如何将一组复杂的公式组合起来,使用 Mathematica 和 GLExplorer 生成有趣的图形。命令

gr=ParametricPlot3-D[Evaluate[surf],{s,0,2PI},{t,0,6PI},
PlotPoints->{16,100}, DisplayFunction ->
($DisplayFunction[ReplacePart[#,{EdgeForm[],#[[1]]},1]]&)];

生成了图 2 中所示的 Mathematica 图形。将其插入 GLShow 并为其设置一些可选参数,

GLShow[gr,ShadeModel->Smooth,DepthCompression->False,
   Axes->False,AdditionalLights->
   {{{0,-1,-1},RGBColor[0,0,.8]},
   {{-.5,.5,-1},RGBColor[0,.8,0]}}];
生成了图 3 中的图像。请注意,值 PI-> 用于表示只有 Mathematica 的特殊字体才能显示的文本。图 4 显示了在 GLExplorer 窗口中旋转和放大的同一对象。可以使用简单的鼠标按钮单击和拖动来完成旋转。放大窗口将自动重绘其包含的对象以适应新的窗口大小。
Conix 3-D Explorer

图 3. GLShow 显示

显然,GLShow 打开的窗口只能使用窗口管理器的窗口菜单“关闭”选项来关闭。如果有一种更合适的方式来关闭窗口,我找不到。

Conix 3-D Explorer

图 4. 旋转和放大的结

OpenGL 3D 支持

3-D Explorer 不是 OpenGL 的完整实现。相反,它提供了一个接口,允许直接访问 OpenGL 的子集,以及一种扩展此访问以包含任何 OpenGL 函数的方法。为了使用现有的或扩展的 OpenGL 基元和指令集,您需要了解 3-D Explorer GLGraphics 对象。

OpenGL 支持的功能是任何优秀的 3D 工具所期望的功能。它们包括绘图和颜色基元、抗锯齿、光照和变换。访问这些基元是通过 GLGraphics 对象完成的。GLGraphics 对象允许您指定点、线、对象、颜色等的关联,所有这些都可以使用 GLShow 查看。

GLExplorer 支持的绘图基元包括(但不限于)点、线、三角形、多边形、曲面和长方体。颜色基元包括 RGB/RGBA、CMYK、HSL 和灰度颜色。所有绘图基元都可以使用 3-D Explorer 指令(如 PointSize 或 EdgeForm)设置其大小(粗细)和颜色。抗锯齿、隐藏线消除和光照都受到支持。事实上,可以使用 GLExplorer 的 Enable 指令设置 OpenGL glEnable 函数识别的任何 OpenGL 功能。

GLExplorer 本地支持诸如旋转、缩放和平移之类的变换。当与 OpenGL 显示列表一起使用时,这些非常方便。显示列表是将 OpenGL 基元分组在一起的一种方法,以便可以将它们作为单个对象重新运行。这种分组方法提供了更高的效率,并且是 OpenGL 规范本身的一部分。GLExplorer 提供了对此功能的完全访问权限。

支持 OpenGL 对象的纹理处理;但是,显示波浪纹理的演示(来自在线文档)使 GLExplorer 崩溃。我从未能够成功运行此示例。

您可以通过使用 Commands 包装器来扩展 GLExplorer,以包含任何 OpenGL 函数。此 GLExplorer 命令允许您从 Mathematica 图形表达式的格式中调用任何 OpenGL 函数。

编程

借助 GLExplorer,可以直接在 Mathematica 中编写 OpenGL 程序。所有 OpenGL 核心函数都可以使用前缀 gl 访问,例如 glBegin[GlLineStrip]glVertex[0,0]。类似地,OpenGL Utility 库函数可以使用 glu 前缀访问。这就像您在任何其他用 C 编写的 OpenGL 应用程序中使用它们一样(尽管 C 语法与 Mathematica 的语法不同——函数名称是相同的)。对于窗口命令,GLExplorer 使用 glM 作为命令前缀,例如 glMCreateWindow[]glMGetWindowOptions[glwin,ErrorTrapping,ImageSize]

用户指南中关于使用这些直接访问命令访问 OpenGL 的章节仅限于定义其用途。它将解释它们的用途的任务留给了 Addison Wesley 出版的关于 OpenGL 的权威著作,这些著作非常出色。如果您打算更熟悉 OpenGL 以便与 Mathematica 和 GLExplorer 一起使用,我强烈推荐这些书。

总结

总的来说,GLExplorer 渲染引擎的速度非常快。我使用配备 64MB 内存的 Cyrix 200,在线手册中的任何示例生成时间都不超过几秒钟。它们的交互反应也非常好——显示图像的交互式旋转和平移流畅且即时。这一切都是通过软件加速完成的;没有使用 3D 硬件加速。但应该注意的是,示例中使用的灯光很少,并且分布式 OpenGL 库无法与 Mesa 或 Xi Graphics 提供的类似软件加速库相提并论。

GLExplorer 为用户提供了一种从命令行逐步构建基于 OpenGL 的图像的方法。您甚至可以使用 Mathematica 编写 OpenGL 程序并直接从 Mathematica 中运行它,然后让 GLExplorer 为您处理图像显示和交互。

在开始撰写这篇评测时,我想了解像我这样的新手用户是否可以相当快地启动并运行。事实证明,凭借相当不错的 3-D Explorer 文档和 Mathematica 出色的帮助浏览器,我能够轻松地找到使用这两个工具的方法。如果您正在寻找一种将 Mathematica 笔记本图形与 OpenGL 集成的方法,那么 Conix 3-D Explorer 可能正是您所需要的。

Conix 3-D Explorer
Michael J. Hammel (mjhammel@graphics-muse.org) 是德克萨斯理工大学计算机科学专业的毕业生,也是一名专门从事 X/Motif 的软件开发人员。Michael 在 Linux Gazette 上撰写每月专栏“Graphics Muse”,维护 Graphics Muse 网站和 Linux Graphics Mini-HOWTO,协助管理互联网光线追踪竞赛,最近完成了他的新书 The Artist's Guide to the GIMP 的创作,该书由 SSC, Inc. 出版。他的业余爱好包括跑步、篮球、泰国菜、园艺和狗。
加载 Disqus 评论