摘要-The Inventor Mentor

第一章 综述
什么是Open Inventor
只要对象,不用绘制(Objects,not Drawings)
。多种方式使用数据对象
。动画
Open Inventor与OpenGL的关系
Inventor工具包
。场景数据库
。节点工具包
。操作器
Inventor组件库
Inventor类树
扩展工具包
-概述Open Inventor的基本概念和分类,讨论Inventor与OpenGL,Inventor与X窗口系统之间的关系。
-认识组成Open Inventor工具包的几个关键组件。
-理解Open Inventor与OpenGL的关系。
-描述扩展Open Inventor的几种方法。
-概要的阐述组成Open Inventor的几个关键组件,并将简要描述如何使用Open Inventor来完成一些特殊的需求。本章还将解释Inventor与我们可能已经很熟悉的编程工具,例如OpenGL和X Window System之间的关系。本章提及大多数的主题都将在以后的章节中作详细解释。

第二章 一个Inventor例子
Hello,Cone
。红色圆锥体
。使用引擎旋转圆锥
。增加上轨迹球操作器
。增加Examiner观察器
命名约定
场景基本类型(Scene Basic Types)
Inventor使用的坐标系统
包含文件
-首先创建一个包含有圆锥的简单程序。然后通过修改这个程序,向用户展示像“引擎”,“操作器”,和“组件”等这些重要的Inventor对象的用法。
-理解Inventor程序的基本结构。
-了解Inventor的使用约定。
-概述所有Inventor程序都带有的大约5%的代码。本章将首先讨论一个显示红色圆锥体的简短程序。之后,逐步扩展这个程序,分别演示如何使用某些重要的Inventor对象:引擎,操作器和组件等。本章还将阐述Inventor命名约定和基本数据类型。

第三章 节点与组
场景数据库
图形场景
节点的类型
。创建节点
。节点里有什么
。当对节点执行动作时发生了什么?(高级内容)
。形体节点
。属性节点
创建组节点
。子节点的顺序
。子节点的顺序为什么是重要的?
。隔离节点
。SoGroup的其它子类
共享节点实例
路径(Paths)
。如何得到路径
。路径的用途
节点中的域(Fields)
。为什么使用域(高级内容)
。单值域对多值域
。单值域:设置和查询数据
。多值域:设置和查询数据
。忽略标记(ignore flag)(高级内容)
重置(Override)标记(高级内容)
引用和删除
。引用计数
。如何删除节点
。引用计数为0的节点
。引用和删除的总结
节点类型
节点命名
-介绍场景图的概念,展示如何创建节点,如何将节点增加到不同类型的“组”中。
-利用形体,属性,组等节点创建图形场景。
-解释节点如何继承上层节点的属性数据。
-理解隔离节点的重要性。
-解释在场景中使用共享节点实例的优势。
-定义“路径”术语,并且解释路径存在的必要性。
-设置查询阈值。
-忽略节点中的某个特定域。
-了解在Open Inventor中如何删除节点。
-使用Inventor的运行时类型检查机制。
将举例说明怎样利用形体,属性,组等节点创建图形场景。解释遍历图形场景的通用规则(主要是OpenGL的渲染遍历)。最后还将介绍场景数据库操作和遍历状态的概念。

第四章 照相机和灯光
使用灯光和照相机
照相机
灯光
-讨论用于观察场景的照相机节点和用于提供照明的灯光节点。
-将不同类型的照相机增加到场景中。试验修改照相机的位置,方向和视区映射(viewport mapping)
-将不同类型的灯光加入到场景中,试验修改灯光的类型,强度和颜色。
-从第4章到第8章,我们将着重讨论几种不同类型的节点。之所以要首先讨论照相机和灯光节点,是因为如果没有它们的话,我们创建的对象将是不可见的。在接下来的其他章节中,我们还将学习更多其他类型的节点,包括形体,属性,绑定,文字,纹理和NUBRS曲线曲面等。我们可以根据自己的兴趣和需要,自由选择阅读那些章节。

第五章 形体,属性和绑定(Binding)
简单形体
复杂性体
。面集
。索引面集
。四边形网络
属性节点
。材质节点
。绘制风格节点
。光照模型节点
。环境节点
。形体提示节点
。复杂度节点
。单位节点
绑定节点
。索引绑定
。顶点绑定
。细微差别(高级部分)
。使用材质绑定节点
。法线绑定
。自动计算法线
几何变换
-讨论如何创建简单和复杂的物体,怎样使用包括材质,绘制风格和光照模型等属性节点。同时也将解释如何将材质和表面法线绑定到形体节点上。
-在场景中熟练使用多种类型的几何物体,包括那些利用顶点坐标和法线来表示的比较复杂的几何物体。
-了解索引形体节点如何按照索引顺序来使用顶点坐标,材质,法向向量,和纹理数据。
-体验不同颜色,亮度和透明的效果。
-用不同的绘制风格渲染场景中的不同部分。
-使用不同类型的光照模型来渲染场景。
-创建带有“雾”效果的场景。
-利用形体提示,复杂度,和level of detail等节点提高渲染性能。
-体验不同类型的材质和法向向量绑定。
-为了便与讨论,我们将几何物体分成两类:简单形体和复杂形体。简单形体是“自包含”的节点,即节点包含自身所有的几何参数信息。相反,复杂形体则需要通过其他节点来为其指定顶点坐标和法向向量。本章还将讨论一些例如材质,绘制风格,光照模型等重要节点,举例说明关于几何坐标变换和材质,法向向量绑定等重要概念。

第六章 文本
二维文本
三维文本
-演示了2D到3D文本节点的用法。
-向场景增加2D文本。
-使用多种定制的外观和字体,向场景增加3D文本。
-Inventor的2D文本技术为我们注释场景图像提供了一种简单,快捷的方法。为了具有更好的修饰性和灵活性,Inventor可利用3D文本,为我们塑造3D字体外观提供了多种可能。本章将要介绍的关键概念包括:对齐,间距,字体类型和大小,外观。虽然也提及了NUBRS(非均匀有理B样条)曲线曲面的话题,但这个话题主要将在第8章做全面的解释。
-本章开始部分主要关注2D文本,同时介绍一些像对齐,间距,字体类型,和大小等2D和3D文本中通用的概念。本章的第二部分描述了3D文本的用法。3D文本用法的主要概念是为文本定义一个横断面图。我们可以创建一个直线的,曲线的,或者二者相结合的轮廓图。

第七章 纹理
创建有纹理的对象
。什么是纹理贴图
。用于纹理映射的节点
。使用缺省纹理
关键概念
。纹理包围物体
。纹理如何影响底色(高级内容)
。存储纹理图像(高级内容)
。纹理贴图的变换
。将纹理映射到物体上
Sotexture2节点
将纹理映射到物体上
-讨论如何将纹理“贴”到场景物体的表面上。
-使用缺省纹理映射方式,将纹理“贴”到场景中的物体表面上。
-通过直接指定纹理坐标,将纹理“贴”到场景中的物体表面上。
-使用SoTextureCoordinatePlane和SoTextureCoordinateEnvironment这样的纹理坐标函数,将纹理映射到物体上。
-在内存中创建一个纹理图,并将它映射到物体上。
-通过重复循环使用纹理图形,将纹理包围住整个物体。
-了解纹理如何影响物体的底色
-将讨论如何使用纹理,使用纹理可以使场景更富有真实感和层次感。在Inventor中,我们可以创建一个2D的纹理贴图,然后将纹理图“贴”到3D物体表面上。依照定义,纹理的矩形片可以被延伸或压缩,以适应3D物体的需要。本章主要介绍的概念有:纹理贴图,包装纹理,纹理模型,纹理通道,和环境映射。

第八章 曲线与曲面
综述
。NUBRS形体类
。参数曲线
关键概念
。控制点和阶数
。曲线的连续性
。基函数
。节点序列
。重复节点
。NUBRS参数间关系的总结
。有理曲线
。N-U-R-B-S拼成NURBS
NURBS曲线的例子
。B样条曲线
。通过控制端点的均匀B样条曲线
NURBS曲面
。贝塞尔曲面
。裁剪NUBRS曲面
进一步阅读建议
-创建多种类型的曲线和曲面。
-NURBS曲面的区域剪裁。
-使用NURBS轮廓线为3D文本指定边缘斜面。
-计曲线与曲面提供了一种用于描述几何模型的数学方法,它代替了传统繁琐的制图术,金属样条,或泥塑模型等方法。设计师可以使用数学公式来表达像机翼,汽车外壳,机器工件上的曲面或者其它平滑的曲线和曲面。Inventor使用一种特殊类型的参数多项式,称为NURBS(非均匀有理B样条)来表达曲线和曲面。这将是本章所要讨论的最重要的内容。
-将要想在Inventor程序中使用NURBS曲线和曲面,我们必须首先要对一些基本概念有所了解。本章将首先定义一些关键的概念,然后将讨论这些概念如何与Inventor NURBS类相对应。对于更多NURBS严格的数学描述,请看进一步阅读建议。

第九章 应用动作(Actions)
Inventor动作
基本方法
应用动作
渲染
。设置透明品质
。反走样
。打印和离屏渲染
。缓存
。缓存的工作机制
。权衡利弊
。剔除部分场景
计算包围盒
。创建包围盒动作实例
。应用包围盒动作
累积计算几何变换矩阵
。创建变换矩阵动作实例
输出到文件
搜索节点
。指定搜索节点
。应用动作
拾取
。拾取类型
。设置参数
。使用拾取动作
。获取结果
回调程序
。创建回调动作实例
。注册回调函数
。应用动作
。使用产生图元数据的回调
-描述怎样在Inventor的场景中使用动作。“动作”包括:OpenGL渲染,拾取,计算包围盒,计算变换矩阵,写文件,在场景中查找某些特定类型的节点等。
-绘制,渲染整个或部分场景。
-打印输出场景。
-利用场景的渲染图创建纹理贴图。
-计算物体的3D包围盒
-计算物体累积的几何变换矩阵及其逆矩阵。
-将场景输出到文件中。
-搜索某些节点,搜索某类节点,或以名称搜索某些节点
-拾取场景中的物体,获取物体的相关信息
-编写回调函数,在Inventor遍历场景时,执行用户自定义的动作
-编写回调函数,获取Inventor形体产生的图元信息(点,线,三角面)
-将描述如何对Inventor场景使用动作。其实,在前面的章节中我们已经介绍过了Inventor最常用的动作-GL渲染。这种动作会遍历整个场景,使用OpenGL库将场景绘制出来。本章将讨论使用动作的基本方法,以及给出像“拾取”,“计算包围盒”,“计算几何变换”,“输出场景”,“搜索场景”等这些动作相关的重要概念。

第十章 处理事件和选择器
概述
事件处理的通用编辑模型
Inventor事件处理
节点如何处理事件:SoHandleEventAction
使用事件回调节点(高级内容)
直接向应用程序发送事件(高级内容)
选择器
-解释Inventor如何从窗口系统中接收事件。描述选择器节点如何管理选择列表和执行高亮选择。
-解释Open Inventor如何处理输入事件
-使用Inventor内建的选择策略,选择场景中的物体。
-创建事件回调节点,执行自定义选择策略。
-高亮选择场景中的物体。
-编写选择回调函数,当选择器列表发生变化后,允许应用程序执行特定的操作。
-将描述Open Inventor的事件模型。Inventor的事件模型为我们提供了一种简单的机制,通过这些机制,我们可以将“按下键盘”和“移动鼠标”等这样的事件传递给场景数据库中的物体,以便这些物体可以处理这些事件。与窗口系统将事件传递到客户窗口中的做法类似,Inventor会将事件传递到数据库中能够处理它们的物体上。本章将要介绍的重要概念包括:Inventor的事件处理编程模型,以及SoXtRenderArea的用法,SoXtRenderArea是一个可以执行渲染操作和事件处理的窗口组件。本章还将详细讨论sohandleeventaction类。同时也会对事件回调函数,选择器节点和高亮选择等这些概念进行探讨。

第十一章 文件格式
输出图像场景
从文件中读入场景
文件语法格式
。文件头
。输出节点
。输出阈值
。忽略标志
。域连接
。全局域
。输出引擎
。输出路径
。定义并使用共享的节点实例
。输出节点工具包
。包含其他文件
ASCII和二进制版本
读取扩展的节点与引擎
。未知节点和引擎的文件格式
。备用表示
从字符串读入场景
-阐述Inventor用于读入 和写出的文件交换格式。讨论如何利用拷贝,粘贴等方式进行数据交换。
-以ASCII或二进制格式将场景数据输出到文件中。
-读取场景文件,将数据输入到Inventor数据库中。
-利用Inventor场景文件创建图形场景。
-从内存缓冲区读入图形场景。
-本章将描述Inventor的ASCII文件格式。无论何时,只要我们将输出动作应用到一个节点,路径,或路径列表上,那么场景数据就会以ASCII格式输出的文件中。使用数据库的读文件的方法,我们可以按照ASCII文件格式读取文件,将数据输入到Inventor数据库中。这种文件格式也可以用于在两个程序进程之间传递3D拷贝和粘贴数据。

第十二章 传感器
传感器简介
。传感器队列
。关键术语
数据传感器
。数据传感器的使用步骤
。回调函数
。优先级
。触发数据传感器
。使用域传感器
。使用触发节点和触发域(高级内容)
其它的延迟队列传感器
。单触发传感器和空闲传感器的使用步骤
。Soidlesensor
定时队列传感器
。定时队列传感器的使用步骤
。传感器队列的处理过程(高级内容)
-描述Inventor的传感器节点如何监视某些类型的事件以及当这些事件发生时怎样调用用户提供的回调函数。
-描述在场景中使用的不同类型的传感器,以及每种传感器的用法。
-理解传感器在延迟队列和定时队列中是如何被调度的,以及何时被处理的。
-可以为数据和定时传感器编写回调函数。
-设置延迟队列传感器的优先级。
-本章将描述怎样向场景中增加传感器节点。传感器是一种Inventor对象,它可以监视多种类型的事件,在发生这些事件的时候,它可以调回用户提供的回调函数。传感器分成两大类:数据传感器,可以响应节点域,子节点,或路径中的数据变化:定时传感器,可以对某些调度条件做出的响应。

第十三章 引擎
引擎简介
引擎的一般用途
引擎类型
域连接
。多重连接
。域的转换
引用计数
禁用连接
更新数据
全局域
动画引擎
。计时引擎
。单触发引擎
。计数引擎
闸门引擎
算法引擎
。布尔引擎
。计算引擎
。使用计算引擎来约束控制物体的行为
产生动画效果的节点
。转体节点
。频闪节点
-描述如何通过使用引擎节点来驱动场景中的物体。讨论如何创建场景中节点间的互相依赖关系。
-实现场景中域与域之间的连接
-在数据库中创建并使用全局域
-实现引擎与域以及引擎与引擎之间的连接
-临时禁用引擎连接。
-创建一个简单的引擎网络
-使用引擎驱动场景
-使用转体节点,频闪节点,开关节点,摇摆节点来驱动场景。
-所要描述的引擎对象是一种Inventor对象,它可以和其它域进行连接,用来驱动场景运动或强迫场景中的某些物体按照设定的规则运动。本章还将描述域与引擎,以及域和域之间是如何连接的。以及怎样在数据库中创建并使用全局域。

第十四章 节点工具包
为什么使用节点工具包
隐藏的子节点与SoNodeKitPath
节点工具包类
节点工具包目录
缺省创建的部件
选择与设置部件数据
其它方法:getPart()和setPart()
用于获取部件的宏
指定部件名称
创建指向部件的路径
使用部件列表
使用SoSeparatorKit创建多级运动场景
例子程序
。节点工具包简单的使用方法
。使用带有编辑器的节点工具包
。创建多级运动场景
-介绍节点工具包。节点工具包可以很方便的创建一组有关联的Inventor节点。每个节点包都包括有一个用户想选择的节点目录。
-在场景中使用节点工具包,选择工具包中所需要的部件,并可以设置这些部件。
-解释路径,全路径,以及节点工具包路径之间的差异。
-使用节点工具包来实现一个简单多级运动场景。
-所要描述的节点工具包将提供一种创建Inventor节点分组的便捷机制。当我们要创建一个像索引三角面集那样的形体节点时,通常我们至少需要坐标系节点,材质节点,几何变换节点等这些属性节点。如果使用soshapekit节点工具包,我们就不必再单独创建这些属性节点,设置它们的阈值,排列它们在子场景中的顺序了。可以通过一组简单方便的方法来指定希望使用的那个节点,以及设置和查询这些节点的阈值。本章将主要介绍节点工具包,工具包目录,目录条目,以及隐藏子节点等概念。

第十五章 拖拽器和操作器
什么是拖拽器
拖拽器的类型
操作器VS拖拽器
简单拖拽器
。域连接
。回调函数
。使用多个拖拽器
操作器
。节点替换成操作器
。使用replacenode()方法
定制拖拽器(高级内容)
。拖拽器的部件
。在创建完拖拽器后修改部件
。修改部件的缺省模型
-描述怎样使用拖拽器和操作器这两种特定的对象来响应用户事件。操作器是一种允许用户直接修改其自身阈值的节点。
-将拖拽器与场景中的域或引擎相连接。
-解释拖拽器与操作器之间的区别。
-能够编写当交互操作开始或结束时,鼠标移动时,或拖拽器的某个阈值发生变化时被调用的回调函数。
-在应用程序中允许用户利用操作器直接编辑场景中的节点。
-定制拖拽器的外观。
-本章将讨论如何使用拖拽器和操作器对象,这两种对象是一种带有用户界面且可以响应事件的特殊对象。像手柄盒操作器,轨迹球操作器,方向光源操作器这些对象,都是利用拖拽器来和用户进行交互操作以及编辑处理。有关拖拽器是如何接受与响应事件的内容,请阅读本书第10章内容。

第十六章 Inventor组件库
组件简介
Xt工具函数
渲染区
。xt设备
Xt组件
通用模式
观察器
使用3D剪贴板
-演示如何使用Inventor的Xt组件。这个组件是一个内建的用于交互改变场景的用户接口。
-构造,创建和使用soxtrenderarea
-使用用于初始化和窗口管理的Inventor工具函数
-以叠加平面的方式渲染一个简单的图形场景。
-构造和创建Inventor组件,并将这些组件作为xtwidgets来管理
-将组件直接附着在图形场景,并把组建的数据传递到应用程序中。
-利用回调函数将数据从组件传递到应用程序中
-为Inventor标准的观察器窗口增加上用户自定义的按钮控件
-利用Inventor的剪贴板拷贝和粘贴场景数据
-本章将讨论Inventor组件库,Inventor组件库中包括工具函数,渲染区,和一组xt组件。组件是一种可重用的模块,这种模块一般带有以交互方式修改图形场景的内置用户界面。为了将组件更容易整合进我们的应用程序中,每个组件一般带有以交互方式修改图形场景的内置用户界面。为了将组件更容易整合进我们的应用程序中,每个组件都是建立在motif风格的xtwidgets之上的,它们可以单独使用,也可以和其它xtwidgets结合使用。本章将介绍的最重要的概念包括:两种类型的组件-编辑器和观察器,构造和创建组件的步骤,组件作为xtwidgets来管理的步骤。因为所有的组件都是交互式的,都可用于编辑3D场景中的物体,所以本章还将描述不同类型的组件如何将数据传递会应用程序中。

第十七章 在Inventor中使用OpenGL
简介
OpenGL状态变量与Inventor
颜色索引模式
使用SoCallback节点
在一个GLX窗口中使用渲染动作
-在Inventor中使用OpenGL,讨论怎样在Inventor中使用OpenGL库。
-创建Inventor回调节点,在回调函数中调用OpenGL库函数。
-了解Inventor是如何使用和影像OpenGL的状态变量
-编写一个同时使用Inventor与OpenGL的程序,并在程序中使用SoGLRenderAction来渲染场景。
-使用颜色索引模式。
-本章将讨论如何在同一个窗口中同时调用Inventor和OpenGL库。本章包括几个以不同方式同时使用Inventor与OpenGL的例子程序。从表17-1到表17-9展示了Inventor与OpenGL状态是如何相互影响的。本章的所有内容都是比较高级的内容。

附录A: C程序员面向对象编程入门
什么是面向对象的编程方法
一个类的例子
阅读建议
阐述数据抽象和继承等面向对象编程的基本概念。

附录B: C API入门
命名C函数
缩写C函数名称
在C语言中创建和删除对象
重载C++方法
调用函数
C类和参考手册
一个用C语言编写的简单的Open Inventor程序
解释Open Inventor的C和C++接口的不同。

附录C: 错误处理
运行时刻类型检查
发送错误
处理错误
调试
描述Inventor的错误处理机制。

参考文献:The Inventor Mentor

猜你喜欢

转载自blog.csdn.net/qq_34356368/article/details/81660557