Open Inventor
文章平均质量分 57
RobinHao
这个作者很懒,什么都没留下…
展开
-
用OpenInventor实现的NeHe OpenGL教程-第四十五课
NeHe教程在这节课向我们介绍了OpenGL新的扩展“顶点缓存”(VBO),这种技术可以直接操作显卡,直接把顶点数据放置在显卡中的高速缓存中,极大的增加了OpenGL的绘制速度。对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持VBO。当我们使用SoIndexedFaceSet节点显示三角面时,Coin在内部缺省情况下就是使用VBO来显示的。因此VBO技术我们已经原创 2008-07-05 17:23:00 · 3869 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十课
用OpenInventor实现的NeHe OpenGL教程-第三十课 NeHe教程在这节课介绍了碰撞检测。碰撞检测是一种比较复杂的技术。NeHe教程只是检测平面、球体、圆柱体等这些规则物体之间的碰撞检测。OpenInventor提供了任意形状物体之间的碰撞检测,当然这样的碰撞检测需要更多的计算时间。 碰撞检测的算法在NeHe的教程中已经做了详尽的解释,我们就原创 2008-04-22 22:02:00 · 3835 阅读 · 2 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十八课
用OpenInventor实现的NeHe OpenGL教程-第二十八课 NeHe教程在这节课中向我们介绍了贝塞尔曲面,贝塞尔曲面是一种可以只使用很少的参数就可以描述出复杂曲面的一种数学工具。对于使用OpenInventor的程序员来说,创建贝塞尔曲面是非常容易的事情,OpenInventor已经对贝塞尔曲面,Nurbs曲面等都做了相应的支持。 首原创 2008-04-16 21:02:00 · 1663 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十七课
用OpenInventor实现的NeHe OpenGL教程-第二十七课 NeHe教程在这节课中向我们介绍了如何在场景中创建阴影效果,这是一个高级的主题,请确信你已经熟练的掌握了基本的OpenGL命令,并熟悉蒙板缓存。 NeHe教程中介绍的阴影效果俗称蒙板阴影。这种计算阴影的技术最大的优点是速度比较快,不需要什么高级的显卡就可以达到非常好的效果。而且阴影的效果原创 2008-04-15 21:36:00 · 1565 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十四课
用OpenInventor实现的NeHe OpenGL教程-第十四课 NeHe这节课主要讨论如何使用OpenGL显示3D轮廓文字。OpenGL显示3D文字是通过wglUseFontOutlines函数创建了一系列的显示列表来实现的。其使用方法和第十三节课程类似。在OpenInventor中提供了SoText3节点,使用方法和SoText2节点相同。原创 2008-01-10 23:13:00 · 1513 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十六课
用OpenInventor实现的NeHe OpenGL教程-第二十六课 NeHe教程在这节课中向我们介绍了如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧。 在OpenInventor中已经提供了剪裁面节点SoClipPlane。但蒙板缓存目前还没有直接支持,所以我们只能通过调用OpenGL的方式来实现蒙板缓存。这篇教程所讲述的技原创 2008-03-30 22:25:00 · 1961 阅读 · 1 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十五课
用OpenInventor实现的NeHe OpenGL教程-第二十五课 NeHe教程在这节课中向我们介绍了如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型。两个模型之间平滑过渡的算法其实是很简单的,首先我们要保证两个模型要有相同数目的顶点,然后我们分别计算每个点从一个模型移动到另外一个模型时,中间的位置数据。我们将这个过程显示出来就会产生模型平滑过渡的效果。原创 2008-03-29 23:46:00 · 1575 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十四课
用OpenInventor实现的NeHe OpenGL教程-第二十四课 NeHe教程在这节课中向我们介绍了如何读取显卡支持的OpenGL的扩展,如何使用Targa(TGA)图像文件作为纹理,以及如何利用OpenGL的剪裁区域来滚动屏幕文字。 在OpenInventor中没有相关的函数来获取OpenGL的扩展信息,我们只能通过直接调用OpenGL来获得这些信息。Op原创 2008-03-23 20:28:00 · 1523 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十三课
用OpenInventor实现的NeHe OpenGL教程-第二十三课 这节课我们将学习使用环境纹理映射。这种映射方式可以让物体表面看上去像镜子一样反射周围的环境。这节课的代码是在前面第十八节课程的基础上修改的。阅读NeHe教程我们可以发现,利用OpenGL显示环境纹理是比较容易的,同样在OpenInventor中使用环境纹理也是非常的简单。我们只需要创建一个SoText原创 2008-03-23 12:55:00 · 1550 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十三课
用OpenInventor实现的NeHe OpenGL教程-第十三课 NeHe这节课主要讨论如何使用OpenGL显示2D文字。OpenGL显示2D文字是通过wglUseFontBitmaps函数创建了一系列的显示列表来实现的。通鿇阅读NeHe教程,读者应该能感觉到在Open原创 2007-12-30 15:09:00 · 1495 阅读 · 1 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十二课
用OpenInventor实现的NeHe OpenGL教程-第二十二课 这节课我们将讨论凹凸纹理技术。使用凹凸纹理可以让物体表面更有质感。正如NeHe教程中所说的,这是一节高级课程,请确信你对基本知识已经非常了解。 我们对NeHe教程阅读后可以发现,利用OpenGL显示凹凸纹理是比较困难的。首先需要使用OpenGL的多重纹理扩展,其次还要了解凹凸纹理的计算方原创 2008-03-22 18:38:00 · 1518 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十二课
用OpenInventor实现的NeHe OpenGL教程-第十二课 NeHe这节课主要讨论OpenGL的显示列表功能。OpenGL的显示列表是加速OpenGL性能的一种重要的手段。但在OpenInventor中,我们根本就不需要关心是否使用显示列表,因为OpenInventor内部有缓存功能,而这个缓存功能就是使用显示列表来实现的。所以我们只需要实现程序逻辑原创 2007-12-14 15:26:00 · 1803 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十一课
用OpenInventor实现的NeHe OpenGL教程-第二十一课 这节课从技术上来说没有提供什么新技术,都是前面几节课的内容。但这节课提供了一个编写比较完整的OpenGL小游戏的例子。程序逻辑基本上和NeHe一样。代码有些复杂。这里就不再详细说明了。各位看代码吧。^_^本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenI原创 2008-03-09 22:08:00 · 1330 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十课
用OpenInventor实现的NeHe OpenGL教程-第二十课 这节课我们将讨论蒙板技术。所谓蒙板技术可能很多人在2D绘图程序中已经使用过了。例如,我们希望在背景图片上绘制一个人物(精灵)。因为人物的图片是矩形的,而人物本身又是不规则图形,所以矩形图片中会有一些空白的部分。如果我们不将这些空白的部分去掉,直接绘制人物图片的话,程序的效果肯定会很差。这时我们就需原创 2008-03-09 21:47:00 · 1680 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十一课
用OpenInventor实现的NeHe OpenGL教程-第十一课 这节课我们将创建一个以正弦波方式飘动的旗帜。读者将看到实现这种效果并不像想象中那样的困难。至少说使用OpenInventor来实现还是比较容易的。^_^ 。 和前面的程序一样,我们在程序开始的部分定义了一些全局变量,这些变量的作用和NeHe教程中定义的变量有相同的作用。原创 2007-12-11 16:56:00 · 1827 阅读 · 1 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十七课
用OpenInventor实现的NeHe OpenGL教程-第十七课 这节课我们将讨论使用纹理贴图的技术来显示文字。使用这种技术显示文字的好处在于程序的效果在任何机器上都是相同的。而我们前面讨论的显示文字的方法都是依赖于当前系统中所包含的字体,所以前面讨论的技术在不同的机器上有可能会有不同的显示效果。 使用纹理贴图来显示文字的原理很简单,首先需要制作一原创 2008-03-01 16:23:00 · 1714 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第九课
用OpenInventor实现的NeHe OpenGL教程-第九课 这节课我们将讨论如何在3D空间中移动物体,物体之间如何以透明方式显示。这节课我们还将首次讨论如何在OpenInventor中调用OpenGL函数。 在程序开始的部分我们新定义了一些变量,这些变量的作用和NeHe教程中定义的变量有相同的作用。SoTranslation原创 2007-12-07 17:38:00 · 2846 阅读 · 10 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十九课
用OpenInventor实现的NeHe OpenGL教程-第二十九课 NeHe教程在这节课中介绍了如何把一块纹理贴到另一块纹理上(即多重纹理)。这节课的内容不是很难,主要是如何读取raw数据格式文件,如何计算图像的透明度等。 OpenInventor对多重纹理直接提供支持,所以我们也可以利用多重纹理来实现相同的效果。具体的代码见BuildCube2原创 2008-04-21 22:26:00 · 3418 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十一课
用OpenInventor实现的NeHe OpenGL教程-第三十一课 NeHe教程在这节课中介绍了如何加载Milkshape3D建模软件所设计的模型文件。这节课的内容与OpenGL、OpenInventor的关系不大,主要是分析Milkshape3D的模型文件格式。我们程序中读取Milkshape3D模型文件的代码都是拷贝自NeHe教程,唯一不同的就是如何根据模型原创 2008-04-24 22:16:00 · 3120 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十四课
NeHe教程在这节课向我们介绍了3D光晕的技术。当摄像机镜头对准太阳的时候就会出现这种效果,这种技术经常用在游戏场景中。为了完成这种效果,我们需要一些数学知识,用来检测某个点或球是否在当前的视景体内。我们还需要一些纹理作为我们的光晕效果。 程序中关键的函数有:BOOL glCamera::SphereInFrustum(SbVec3f p, float Radius){原创 2008-06-29 23:45:00 · 3526 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十三课
NeHe教程在这节课向我们介绍了如何使用FreeType库创建反走样字体的技术。反走样字体可以让文本看上去更漂亮。“魔兽世界”中使用的字体库就是FreeType库。直接使用FreeType库还是比较麻烦的。但对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持FreeType库,只要将FreeType.dll拷贝到程序所在目录下,Coin就会自动加载FreeTyp原创 2008-06-29 10:47:00 · 3842 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十二课
NeHe教程在这节课向我们介绍了多重视口效果。它是通过向四个视口渲染四次的方式来实现这样的效果的。在OpenInventor中可以允许创建多个Viewer,因此我们通过创建四个SoWinExaminerViewer,就可以简单地实现相同的效果了。至于创建迷宫的代码,和我们的讨论没有太大的关系,我们是直接拷贝NeHe的代码,这里就不在详细说明了。 本课的完整代码 下载。(VC原创 2008-06-15 22:59:00 · 3395 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十一课
NeHe教程在这节课向我们介绍了体积雾气特效,这是一种比较新的特效,你的显卡必须支持扩展"GL_EXT_fot_coord"函数。这个特效可以使人产生在雾中漫游的感觉。 OpenInventor目前还不支持体积雾气特效,虽然我们仍然可以按照前面课程的思路,通过创建SoCallback节点来直接调用OpenGL。但在这节课中我打算使用另外的一种方法来调用OpenGL命令。OpenInv原创 2008-06-10 00:12:00 · 3376 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十九课
NeHe教程在这节课向我们介绍了如何进行物理模拟计算。这节课的内容主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速原创 2008-05-25 22:13:00 · 3226 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十七课
NeHe教程在这节课向我们展示了卡通效果。卡通效果就是在物体轮廓边上加少量的颜色。可以使用OpenGL的一维纹理映射功能来实现此效果。这里需要注意的是,OpenInventor没有提供一维纹理,但我们可以使用2维纹理来模拟,我们只需要将2维纹理的行数设置为1就可以了,具体请阅读代码。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC原创 2008-05-18 23:52:00 · 3119 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十六课
NeHe教程在这节课向我们展示了放射模糊的效果。通过把渲染得图像作为纹理提取出来,在利用OpenGL本身自带的纹理过滤,就能实现这种效果。这是一节比较高级的课程。OpenInventor没有提供纹理过滤的功能,所以我们只能通过直接调用OpenGL来实现此课程。在程序中我们第一次使用了SoOffscreenRenderer节点,这个节点可以在内存中渲染某个场景,然后我们将内存中的场景图像作为原创 2008-05-17 22:21:00 · 3437 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十八课
NeHe教程在这节课向我们介绍了如何从资源文件中载入图像。这节课的内容比较简单,只需要注意的是,Bitmap文件中每个像素颜色保存的顺序是BGR,我们应该将其转换成RGB,以便适应OpenInventor纹理节点的要求。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记Open原创 2008-05-21 21:38:00 · 3057 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十八课
NeHe教程在这节课向我们介绍了轨迹球技术。轨迹球技术可以让用户使用鼠标直接旋转物体,这是所有交互式3D软件必须提供的最基本的功能。NeHe教程提供的方法是在其它人的基础上做了一些修改和优化。但他的方法仍然有一些小的错误,例如,在将鼠标2D坐标位置映射到3D球体上时,他没有考虑透视因素,因此可能会稍微有些误差,不过对于一般应用来说已经足够用了。 Open Invento原创 2008-07-20 00:13:00 · 5377 阅读 · 3 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十五课
这是一节令人激动的课程。NeHe教程在这节课向我们介绍了如何在OpenGL中播放AVI文件。说来惭愧,作为一名程序员,多年来看过无数AVI格式的A片(American片,不要想歪了。^_^),但却从来没有想过如何解码AVI文件。在这个教程中我们终于有机会了解如何操作AVI文件了。当然我们不是想开发一款类似“暴风影音”那样的软件,我们只是利用微软提供的流媒体接口来操作AVI文件。 其原创 2008-05-08 21:48:00 · 3501 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十七课
NeHe教程在这节课向我们介绍了Cg编程技术。Gg是nVidio公司面向GPU的语言,类似的语言还有微软的HLSL,OpenGL的GLSL,ATI的shaderMonker。使用着色器(Shader)的最大的好处就是把CPU的一些工作交给了GPU。 Coin支持OpenGL的GLSL着色器,同时也支持ARB Shaders和Cg Shaders。但目前对OpenGL的GLSL支持原创 2008-07-13 23:18:00 · 4086 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十六课
NeHe教程在这节课向我们介绍了OpenGL的扩展(ARB_MULTISAMPLE)多重采样技术。利用这种技术可以实现全屏反走样。这样可以使图形看起来更美观。 OpenInventor自动支持反走样技术。关键的函数是SoWinRenderArea::setAntialiasin() ,它可以启动全屏反走样,OpenInventor是通过多次绘制同一个场景来实现反走样。 现原创 2008-07-06 10:27:00 · 3457 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十四课
NeHe教程在这节课向我们介绍了如何从一个2D的灰度图创建地形。这节课的内容比较简单,只是从一个2D灰度图中读取灰度数据,然后将灰度数据转换成高度数据,最后将这些数据显示出来就可以了。 首先定义一些全局变量,这些变量的含义和NeHe教程完全一致#define MAP_SIZE 1024 // Size Of Our .RAW Height Map (NE原创 2008-05-01 22:00:00 · 3625 阅读 · 5 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十二课
NeHe教程在这节课展示的是一个游戏程序,里面包括的技术有OpenGL拾取, Alpha混合, Alpha测试, 排序。这是目前位置NeHe教程中代码量最大的一节课了。 这节课我们不打算使用OpenGL的方法来拾取物体,我们将利用OpenInventor提供给我们的更加方便的拾取功能来完成这个同样的游戏程序。OpenInventor比OpenGL最大的优势就在于交互式操作原创 2008-04-25 22:51:00 · 3378 阅读 · 1 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十三课
NeHe教程在这节课向我们介绍了如何加载压缩和非压缩类型的TGA文件。OpenInventor已经直接支持将TGA文件(压缩和非压缩类型)作为纹理文件,所以我们不必像NeHe教程那样分析TGA文件的数据格式。 下面的函数用来加载非压缩类型的TGA文件作为纹理SoSeparator* BuildpUncompSep(void){ SoSeparator *pU原创 2008-04-27 14:10:00 · 3182 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十课
用OpenInventor实现的NeHe OpenGL教程-第十课 这节课我们将加载一个3D场景,并在这个场景中做自由漫游。读者将看到加载3D场景不是一件很难的事情,难点是3D场景的数据组织。不过这些是美工的事情,和我们程序员关系不大 ^_^ 。 在程序开始的部分我们新定义了一些变量,这些变量的作用和NeHe教程中定义的变量有相同的作用。原创 2007-12-10 16:20:00 · 2349 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十九课
用OpenInventor实现的NeHe OpenGL教程-第十九课 这节课我们将讨论怎样使用OpenInventor实现一个简单的粒子系统。我们在NeHe教程中可以看到,一个简单的粒子系统实现起来不像想象中那样的困难。只要能计算好一个粒子的当前状态(速度,加速度,颜色),就很容易完成一个粒子系统的效果。 NeHe教程中使用三角形带来显示每个粒原创 2008-03-01 21:02:00 · 1997 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十八课
用OpenInventor实现的NeHe OpenGL教程-第十八课 这节课我们将在前面讲述的第七节课程的基础上,显示球体,圆柱体,圆锥体等二次几何体。 下面的代码是在第七节课程的基础上增加或修改的代码。先定义一些全局变量。SoSwitch* g_pSceneSwitch = NULL;//用来切换不同的二次几何体原创 2008-03-01 20:50:00 · 1457 阅读 · 0 评论 -
The Inventor Mentor-第十三章 引擎
第十三章 引擎 本章目标在阅读完本章节后,我们将有能力做下列事情: l 实现场景中域与域之间的连接l 在数据库中创建并使用全局域。l 实现引擎与域以及引擎与引擎之间的连接。l 临时禁用引擎连接。l 创建一个简单的引擎网络(engine network)l 使用引擎翻译 2007-09-21 17:19:00 · 1610 阅读 · 3 评论 -
The Inventor Mentor-第七章 纹理
第七章 纹理 本章目标在阅读完本章节后,我们将可以做下列事情: l 使用缺省纹理映射方式,将纹理“贴”到场景中的物体表面上。l 通过直接指定纹理坐标,将纹理“贴”到场景中的物体表面上。l 使用SoTextureCoordinatePlane和SoTextureCoordinateEnvironment这样的纹理坐标函数,将翻译 2007-09-12 17:02:00 · 2381 阅读 · 3 评论 -
The Inventor Mentor-第十一章 文件格式
第十一章 文件格式 本章目标在阅读完本章后,我们将有能力做下列事情: l 以ASCII或二进制格式将场景数据输出到文件中。l 读取场景文件,将数据输入到Inventor数据库中。l 利用Inventor场景文件创建图形场景。l 从内存缓冲区中读入图形场景。 本章将描述Inventor的A翻译 2007-09-17 16:06:00 · 2374 阅读 · 1 评论