命名约定

在Inventor中基本数据类型的名字都是以字母Sb开始的,例如:

  • SbColor
  • SbViewVolume

除了上面的基本数据以外,在Inventor中所有其他的类都是以字母So作为前缀(场景对象)。例如:

  • SoCone
  • SoPerspectiveCamera
  • SoMaterial
  • SoTransform

方法和变量使用小写字母作为开头字母。在类、方法、变量的名字中,每个单词都以大写字母开头。例如:

  • getNormal()
  • setSceneGraph()
  • myCube

枚举类型数值都是用大写字母表示的。例如:

  • FILLED
  • PER_PART

场景基本类型(Scene Basic Types)

本节将讨论Inventor的Sb 基本数据类型。这些数据类型被很多的Inventor对象所使用。Inventor为不同类型的数据转换以及执行特定的 3D操作提供了很多方便实用的方法。

Inventor 定义了下列类型:

SbBool 布尔值 (TRUE or FALSE)
SbBox nx 2D 矩形或者 3D 的立方体数据。这些数据所表示的各个侧面都是平行于主轴的。可以通过设置对角线上的两点坐标来指定它们(包括SbBox3f, SbBox2f, SbBox2s);n 表示的是内部数值的个数(2 或 3个),x 表示的是内部数值的类型(f 表示浮点类型,s 表示短整形)
SbColor RGB (红/绿/蓝) 颜色值。这个类有转换函数可以将颜色值转换到其它的颜色空间中( 例如,YUV 颜色空间(色调,饱和度,亮度)。译者注 )
SbCylinder 圆柱类
SbLine 有向 3D 直线类
SbMatrix 4×4 矩阵类
SbName 字符串类。这些类被保存在一个特殊的表中( hash 哈希表。译者注 ) ,可以快速方便的进行查找。通常用于标识对象 。
SbPList 通用指针( void *)列表类。
SbPlane 3D 平面类
SbRotation 代表一个绕任意轴进行旋转的 3D 旋转类
SbSphere 球类
SbString “灵巧”的字符串类,对处理字符串提供了许多方便的方法。
SbTime 表示秒,毫秒的时间类;也可以使用 timeval 结构类型来表示
SbVec nx 2D 或 3D 向量类。用于表示点或者方向(包括 SbVec2f, SbVec3f,SbVec2s); n 是在这个类中的数据个数(2, 3, or 4 个), x 是数据类型 f 表示浮点类型,s 表示短整形)

SbViewportRegion 代表在显示窗口中的视口区域

SbViewVolume 视见体裁剪( view volume)类。( 或称“可视体积”。当使用平行投影时,view volume 就是一个长方体,当
使用透視投影时,它就是一个近大远小的截锥方体,Inventor 使用这个类来判场景中的物体是否是处于长方体或者截锥方体的范围内,如果物体已不在视见体范围之内,Inventor 就不会渲染这个物体,以提高渲染效率。具体说明可翻阅本书第四章“照相机和灯光”。译者注 )

类方法

每种Sb 类都带有一些与其相关的实用操作。例如,可以对SbVec3f类型的变量进行取反、乘矩阵、单位化等操作。下面的代码将定义一个基于特定方向和单位长度的向量。

SbVec3f v(1.0, 2.0, 3.0); // declares and initializes the vector
v.normalize(); // normalizes the vector to unit length

类似的,SbMatrix 类也包含有一些实用的方法,例如,multVecMatrix() 这个方法将当前矩阵与一个行向量相乘,并返回计算结果。rotate() 方法可以按照给定的旋转量数据设置矩阵。Open Inventor C++ Reference Manual 书中对每个Sb类的可用方法都有完整的描述。

类型 VS 域

第三章“节点和组”有关于域(fields)的完整讨论。域是节点用来存储参数的内存结构。每个域都带有一个特定类型的变量。域通常是包含在Inventor的节点中。许多域都带有一个相对应的Sb 类型的变量。例如

  • SoSFVec3f 域带有一个 SbVec3f 类型的变量
  • SoSFRotation 域带有一个 SbRotation 类型的变量
  • SoSFName 域带有一个 SbName 类型的变量

Inventor 使用的坐标系统

Inventor 对 3D 数据使用的是右手坐标系,从屏幕内指向外,表示 z 轴的正方向。所有的角度单位都是弧度。对象都是在自己的局部坐标系空间下进行描述的,既众所周知的“对象坐标系空间”(object coordinate space)。当场景中的所有物体都已经进行完坐标变换后,那么它们就都在“世界坐标系空间”下描述了(world coordinate space)。照相机和灯光节点处于世界坐标系空间下。

包含文件(Include Files)

Inventor为每个类都提供相应的包含头文件。在程序中使用Inventor类之前都需要首先包含相应的头文件。例如,SoSphere and SoTransform 这两个节点类需要包含 SoSphere.h 和SoTransform.h 两个头文件。绝大多数的Include头文件都位于一个子目录中-例如nodes/SoSphere.h 和 sensors/SoNodeSensor.h 。
另外,如需要使用 Inventor 组件库来编写交互式应用程序的话,还需要包含 SoQt.h, SoMin或SoXt.h头文件。

Coin3D三维可视化教程3相关推荐

  1. Cesium教程(十六):动态数据三维可视化

    Cesium教程(十六):动态数据三维可视化 1.Cesium时间系统 Cesium时间系统在动态数据可视化中发挥着重要作用. 2.动态数据格式CZML CZML是Cesium团队制定的一种用来描述动 ...

  2. KITTI自动驾驶数据集可视化教程

    本文介绍关于自动驾驶数据集KITTI的基本操作,包括Camera和LiDAR可视化教程,源码已上传:https://download.csdn.net/download/cg129054036/209 ...

  3. 太干了,全网最全的Matplotlib可视化教程

    导读 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直 ...

  4. echart 三维可视化地图_使用 ECharts GL 实现三维可视化 - 入门款

    (题图是使用 ECharts GL 渲染的纽约市建筑群) ECharts GL (后面统一简称 GL)为 ECharts 补充了丰富的三维可视化组件,这篇文章我们会简单介绍如何基于 GL 实现一些常见 ...

  5. CT三维重建及三维可视化资料:opengl+VTK+PCL点云库

    自己做过边缘轮廓三维重建方面的工作,今天看到一篇CT三维重建的介绍性质的文章挺感兴趣的,附录一下: CT三维重建主要有六种基本后处理方法 多层面重建(MPR) 最大密度投影(MIP) 表面阴影遮盖(S ...

  6. DEM的精细修改及其三维可视化

    引言 无论是搭建二维水动力模型,还是构建三维虚拟现实场景,都离不开DEM(Digital Elevation Map).DEM的获取途径可以是卫星影像,或是无人机航拍.针对DEM的编辑,网络上的教程大 ...

  7. Web三维可视化监控系统搭建(1)——Web三维/ VR交互技术初探

    文章目录 1. 文章背景 2.文章脉络 3.三维展示技术介绍 3.1 基于3D模型的展示 3.2 基于VR/全景图的展示 4.三维可视化展示的实现方案 4.三维可视化展示的基本知识 4.1 坐标系 4 ...

  8. 数字孪生技术的应用——三维可视化大屏软件好用榜单Top5

    近年来,随着经济发展的需求和企业对数据分析要求的不断提高,数据可视化技术也在持续发展.现如今可视化并不是只有在电影动漫里才能看到的高科技了,它被我们应用于各行各业的各种场景,可视化不但能为我们企业数据 ...

  9. Python数据三维可视化-VTK

    Python科学计算三维可视化[完结]:https://www.cnblogs.com/yuyukun/p/12063595.html VTK 图形模型的主要作用是用图形描述几何体构成的场景,可视化流 ...

  10. 用matlab怎么画视电阻率拟断面图,在MATLAB平台上实现可控源音频大地电磁反演数据三维可视化显示...

    第29卷 增刊 物探化探计算技术 2007年10月 收稿日期6文章编号:1001-1749(2007)增刊(1)-0068-04 在MAT LAB 平台上实现可控源音频大地 电磁反演数据三维可视化显示 ...

最新文章

  1. linux自动挂载方法,Linux操作系统下硬盘手工和自动挂载的方法
  2. FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)
  3. 【转载】Deep learning:十九(RBM简单理解)
  4. python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...
  5. Lucky Substrings
  6. 你必须足够强大,这个世界才会更加公平
  7. 本周ASP.NET英文技术文章推荐[10/21 – 10/27]
  8. 建立数组并写入数据_VBA学习笔记19:数组1
  9. 学完python能做什么-学完Python后能做什么?
  10. python 分类 投票_使用python+redis实现文章发布,投票,分组排名功能
  11. kali下制作破解密码的字典
  12. acrobat dc mac版_Adobe Acrobat Pro DC mac版-Adobe Acrobat Pro DC for Macv2019.021.20048 免费版__西西软件下载...
  13. 中国步进电机市场现状研究分析与发展前景预测报告(2022)
  14. Android开发者指南-Manifest.xml-uses-feature
  15. 【ibokan】好的用户界面-界面设计的一些技巧
  16. RFID电子标签打印机如何维护
  17. Android深度探索--HAL与驱动开发----第五章读书笔记
  18. 【Axure教程】中继器手风琴
  19. 备婚倒数日或纪念日记录的提醒APP
  20. 【原创】RPA在BPO领域的场景分享-中科云创CEO每日分享

热门文章

  1. 谈谈在深圳挤公交那些事
  2. Java修改Windows注册表
  3. 软件概要设计文档编写
  4. MT4 中各种指标线的解释
  5. Smart View for Office
  6. IE11降级到IE8
  7. cs231n 作业环境搭建
  8. java web项目个人博客_javaWeb项目个人博客系统
  9. jmeter-正则表达式提取器
  10. 张宇1000题高等数学 第十、十一、十二章 一元函数积分学的应用——几何应用、积分等式与积分不等式、物理应用