8 场景图形与OpenSceneGraph概述 图1-30 sgviewer的输出 本图显示了命令osgviewer cow.osg的运行结果。程序 osgviewer可以显示多种图片和模型格式的文件。 1.3.1获取帮助 在运行osgviewer程序时,按下“H”键(小写h)可以显示按键及其对应功 能的帮助列表。按键“1”到“5”可以切换不同的摄像机控制模式,即,鼠标运 动对摄像机位置的操纵方式。当前的摄像机选择的是“1”键对应的轨迹球模式, 这也是程序的缺省模式。使用键盘命令控制显示模式的更多方法将在下一节阐 述。 按下Esc键可以退出osgviewer程序,这在帮助列表中也有说明。现在按下 Esc,osgviewer将退出并返回到命令行提示符下。 输入如下的命令,可以看到详细的osgviewer命令行选项列表: osgviewer-help
8 场景图形与 OpenSceneGraph 概述 图 1-3 osgviewer 的输出 本图显示了命令 osgviewer cow.osg 的运行结果。程序 osgviewer 可以显示多种图片和模型格式的文件。 1.3.1 获取帮助 在运行 osgviewer 程序时,按下“H”键(小写 h)可以显示按键及其对应功 能的帮助列表。按键“1”到“5”可以切换不同的摄像机控制模式,即,鼠标运 动对摄像机位置的操纵方式。当前的摄像机选择的是“1”键对应的轨迹球模式, 这也是程序的缺省模式。使用键盘命令控制显示模式的更多方法将在下一节阐 述。 按下 Esc 键可以退出 osgviewer 程序,这在帮助列表中也有说明。现在按下 Esc,osgviewer 将退出并返回到命令行提示符下。 输入如下的命令,可以看到详细的 osgviewer 命令行选项列表: osgviewer –help
OpenSceneGraph快速入门指导 9 osgviewer将显示所有可用的命令行选项。以下对其中部分常用的选项作了 介绍。 ● -clear--color:此选项允许用户设置清屏颜色,也就是背景颜色。例如, 输入如下的命令,osgviewer将使用白色作为背景: osgviewer--clear-color 1.0,1.0,1.0,1.0 cow.osg ●-samples:此选项将启用硬件多重采样(hardware multisampling),也就 是我们常说的“全屏幕抗失真”(full screen antialiasing)。其中包括一个 数字型的参数,代表每个像素的采样数值。例如,输入如下的命令可以 启用16子像素的多重采样: osgviewer--samples 16 cow.osg ● -image:此选项将使osgviewer读取一幅单独的图片,并将其作为一个 四边形几何体的材质显示。输入如下的命令: osgviewer --image osg256.png 除了上述的命令行参数和键盘命令以外,你还可以使用一些环境变量来控制 osgviewer。要阅读详细的osgviewer帮助文档,在命令行方式下输入以下命令: osgviewer --help-all 下面的章节将对osgviewer的应用作进一步介绍。 1.3.2显示模式 osgviewer中有相当一部分按键用于指定不同的显示模式,以控制读入模型 的外观。以下列出了部分常用的控制命令。 ●多边形模式(Polygon mode):反复按下“W”键(小写w)可以在线框 模式,点模式和填充多边形渲染模式之间切换
OpenSceneGraph 快速入门指导 9 osgviewer 将显示所有可用的命令行选项。以下对其中部分常用的选项作了 介绍。 z --clear-color:此选项允许用户设置清屏颜色,也就是背景颜色。例如, 输入如下的命令,osgviewer 将使用白色作为背景: osgviewer --clear-color 1.0,1.0,1.0,1.0 cow.osg z --samples:此选项将启用硬件多重采样(hardware multisampling),也就 是我们常说的“全屏幕抗失真”(full screen antialiasing)。其中包括一个 数字型的参数,代表每个像素的采样数值。例如,输入如下的命令可以 启用 16 子像素的多重采样: osgviewer --samples 16 cow.osg z --image:此选项将使 osgviewer 读取一幅单独的图片,并将其作为一个 四边形几何体的材质显示。输入如下的命令: osgviewer --image osg256.png 除了上述的命令行参数和键盘命令以外,你还可以使用一些环境变量来控制 osgviewer。要阅读详细的 osgviewer 帮助文档,在命令行方式下输入以下命令: osgviewer --help-all 下面的章节将对 osgviewer 的应用作进一步介绍。 1.3.2 显示模式 osgviewer 中有相当一部分按键用于指定不同的显示模式,以控制读入模型 的外观。以下列出了部分常用的控制命令。 z 多边形模式(Polygon mode):反复按下“W”键(小写 w)可以在线框 模式,点模式和填充多边形渲染模式之间切换
10 场景图形与OpenSceneGraph概述 ● 贴图映射(Texture mapping):按下“T”键(小写t)可以切换显示或 不显示模型的贴图。 ●光照(Lighting):按下“L”(小写1)键决定禁止或者允许光照。 ●背面拣除(Backface culling):按下“B”(小写b)键触发或禁止背面拣 除。对于cow,osg中的模型而言,此选项不会改变其外观,但是它可能 影响其它一些模型的外观和渲染性能。 ●全屏幕模式(Fullscreen mode):按下“F”键(小写f)切换全屏幕渲染 和窗口渲染。 你可以花费一些时间来试验各种显示模式的组合效果。例如,要清楚地观察 到一个模型的多边形结构,可以使用线框模式,同时禁止模型贴图和光照的显示。 1.3.3环境变量 OSG以及osgviewer程序提供了非常多的环境变量,不过你需要尽快了解和 熟悉其中的两个。在使用OSG进行设计时,你会经常用到这两个环境变量。 文件搜索路径 环境变量OSG FILE PATH指定了OSG程序读取图形和模型文件时的搜索 路径。如果你运行命令osgviewer cow.osg,但是当前目录中并没有cow.osg,OSG 将在OSG FILE PATH指定的路径中查找并读取这个文件。 安装OSG的运行时文件时,将自动设置OSG FILE PATH变量。你可以向 这个变量中添加更多的目录。在Windows系统下,使用分号分隔各个目录,在 其它系统下则使用冒号。如果环境变量为空或者没有设置,OSG在读取图形和 模型文件时只搜索当前的目录。 调试信息显示 OSG可以将各式各样的调试信息输出到std:cout。这在开发OSG程序时十
10 场景图形与 OpenSceneGraph 概述 z 贴图映射(Texture mapping):按下“T”键(小写 t)可以切换显示或 不显示模型的贴图。 z 光照(Lighting):按下“L”(小写 l)键决定禁止或者允许光照。 z 背面拣除(Backface culling):按下“B”(小写 b)键触发或禁止背面拣 除。对于 cow,osg 中的模型而言,此选项不会改变其外观,但是它可能 影响其它一些模型的外观和渲染性能。 z 全屏幕模式(Fullscreen mode):按下“F”键(小写 f)切换全屏幕渲染 和窗口渲染。 你可以花费一些时间来试验各种显示模式的组合效果。例如,要清楚地观察 到一个模型的多边形结构,可以使用线框模式,同时禁止模型贴图和光照的显示。 1.3.3 环境变量 OSG 以及 osgviewer 程序提供了非常多的环境变量,不过你需要尽快了解和 熟悉其中的两个。在使用 OSG 进行设计时,你会经常用到这两个环境变量。 文件搜索路径 环境变量 OSG_FILE_PATH 指定了 OSG 程序读取图形和模型文件时的搜索 路径。如果你运行命令 osgviewer cow.osg,但是当前目录中并没有 cow.osg,OSG 将在 OSG_FILE_PATH 指定的路径中查找并读取这个文件。 安装 OSG 的运行时文件时,将自动设置 OSG_FILE_PATH 变量。你可以向 这个变量中添加更多的目录。在 Windows 系统下,使用分号分隔各个目录,在 其它系统下则使用冒号。如果环境变量为空或者没有设置,OSG 在读取图形和 模型文件时只搜索当前的目录。 调试信息显示 OSG 可以将各式各样的调试信息输出到 std:cout。这在开发 OSG 程序时十
OpenSceneGraph快速入门指导 《 分有用,你可以借此观察OSG的执行的各种操作。环境变量 OSG NOTIFY LEVEL用于控制OSG调试信息显示的数量。你可以将此变量设 置为七个不同的信息量层级之一:ALWAYS(最简略),FATAL,WARN,NOTICE, INFO,DEBUG INFO以及DEBUG FP(最详细)。 一个典型的OSG开发环境可以设置OSG NOTIFY LEVEL为NOTICE,如 果要获取更多或者更少的输出信息,可以根据信息量的详细程度上下调整此变 量。 1.3.4统计信息显示 键盘的“S”键对于性能测试十分有用,它将适用osgUtil库的Statistics类来 收集和显示渲染性能的信息。循环按下“S”键(小写s)可以切换四种不同的 显示方式: 1、帧速率:osgviewer将显示每秒钟渲染的帧数(FPS)。 2、遍历时间:osgviewer将显示每一次遍历更新(update),拣选(cull)和 绘制(draw)操作总共使用的时间,包括绘制图1-4所示的图表所用的 时间。 3、几何信息:osgviewer将显示当前渲染的osg:Drawable对象数目,以及 每一帧处理的所有顶点和几何体的数目。 4、无:osgviewer将关闭统计信息的显示。 按下“S”键两次,程序将显示遍历时间的统计信息及图表信息,如图1-4 所示。 图形的显示表现为一系列帧的渲染。特别地,渲染过程与显示器的刷新速率 是同步的,这是为了避免诸如图像撕裂(image tearing)等问题的出现。在图1-4 中,显示器的刷新率为60Hz,因此每一帧将占用一秒的1/60,即大约16.67毫 秒。上面的显示图表说明了场景更新(update),拣选(cull)和绘制(draw)过 程所花费的时间。这种反馈方式从本质上提供了分析性能问题并帮助解决程序渲 染性能瓶颈的途径
OpenSceneGraph 快速入门指导 11 分有用,你可以借此观察 OSG 的执行的各种操作。环境变量 OSG_NOTIFY_LEVEL 用于控制 OSG 调试信息显示的数量。你可以将此变量设 置为七个不同的信息量层级之一:ALWAYS(最简略),FATAL,WARN,NOTICE, INFO,DEBUG_INFO 以及 DEBUG_FP(最详细)。 一个典型的 OSG 开发环境可以设置 OSG_NOTIFY_LEVEL 为 NOTICE,如 果要获取更多或者更少的输出信息,可以根据信息量的详细程度上下调整此变 量。 1.3.4 统计信息显示 键盘的“S”键对于性能测试十分有用,它将适用 osgUtil 库的 Statistics 类来 收集和显示渲染性能的信息。循环按下“S”键(小写 s)可以切换四种不同的 显示方式: 1、帧速率:osgviewer 将显示每秒钟渲染的帧数(FPS)。 2、遍历时间:osgviewer 将显示每一次遍历更新(update),拣选(cull)和 绘制(draw)操作总共使用的时间,包括绘制图 1-4 所示的图表所用的 时间。 3、几何信息:osgviewer 将显示当前渲染的 osg::Drawable 对象数目,以及 每一帧处理的所有顶点和几何体的数目。 4、无:osgviewer 将关闭统计信息的显示。 按下“S”键两次,程序将显示遍历时间的统计信息及图表信息,如图 1-4 所示。 图形的显示表现为一系列帧的渲染。特别地,渲染过程与显示器的刷新速率 是同步的,这是为了避免诸如图像撕裂(image tearing)等问题的出现。在图 1-4 中,显示器的刷新率为 60Hz,因此每一帧将占用一秒的 1/60,即大约 16.67 毫 秒。上面的显示图表说明了场景更新(update),拣选(cull)和绘制(draw)过 程所花费的时间。这种反馈方式从本质上提供了分析性能问题并帮助解决程序渲 染性能瓶颈的途径
12 场景图形与OpenSceneGraph概述 Frame Rate:60.02 ThreadingModel:SingleThreaded 帧 Event:0.04 Update:0.01 Cull:5.68 Draw:3.42 GPU:5.38 拣选 绘制 GPU Cull Draw 图1-4遍历时间的图表显示 上图显示了一个典型的遍历时间统计信息,程序的运行使用 60HZ的显示器。更新(update)操作所用的时间为0.04毫秒, 因为过于短暂,此结果在图表中没有显示出来。不过,拣选(cul1) 和绘制(draw)所用的时间分别为2.68毫秒和3.05毫秒,在图 表中它们分别用青色和暗黄色的图块显示在一帧的范围里。图中 输出的文字还表明,OpenGL测量的结果,GPU处理渲染指令所用 的时间为1.87毫秒。 1.3.5记录动画 开发者往往需要反复地进行测试以便有效地调整和检测程序渲染性能。为了 简化性能调整的过程,osgviewer允许用户轻松地记录摄像机的运动序列并且进 行回放。这一序列被叫做动画路径(animation path)。 运行osgviewer时,按下“Z”键(小写z)将立即开始记录动画路径。此时 如果使用鼠标旋转和缩放模型,OSG都将记录摄像机运动的信息。然后,按下 “Shit+Z”键(大写Z)将停止动画路径的记录,并立即开始回放。回放的过 程中,你将会看到所有被记录下来的摄像机运动路径。 使用Esc键退出osgviewer,在当前目录下可以得到一些新的文件。其中有 一个名为saved animation.path的文件,正如其名称所示,包含了记录下来的动 画路径。用户按下“Z”键(小写z)时,osgviewer将信息写入此文件。你可以
12 场景图形与 OpenSceneGraph 概述 图 1-4 遍历时间的图表显示 上图显示了一个典型的遍历时间统计信息,程序的运行使用 60HZ 的显示器。更新(update)操作所用的时间为 0.04 毫秒, 因为过于短暂,此结果在图表中没有显示出来。不过,拣选(cull) 和绘制(draw)所用的时间分别为 2.68 毫秒和 3.05 毫秒,在图 表中它们分别用青色和暗黄色的图块显示在一帧的范围里。图中 输出的文字还表明,OpenGL 测量的结果,GPU 处理渲染指令所用 的时间为 1.87 毫秒。 1.3.5 记录动画 开发者往往需要反复地进行测试以便有效地调整和检测程序渲染性能。为了 简化性能调整的过程,osgviewer 允许用户轻松地记录摄像机的运动序列并且进 行回放。这一序列被叫做动画路径(animation path)。 运行 osgviewer 时,按下“Z”键(小写 z)将立即开始记录动画路径。此时 如果使用鼠标旋转和缩放模型,OSG 都将记录摄像机运动的信息。然后,按下 “Shift + Z”键(大写 Z)将停止动画路径的记录,并立即开始回放。回放的过 程中,你将会看到所有被记录下来的摄像机运动路径。 使用 Esc 键退出 osgviewer,在当前目录下可以得到一些新的文件。其中有 一个名为 saved_animation.path 的文件,正如其名称所示,包含了记录下来的动 画路径。用户按下“Z”键(小写 z)时,osgviewer 将信息写入此文件。你可以