![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenInventor
文章平均质量分 91
wozhengtao
这个作者很懒,什么都没留下…
展开
-
用OpenInventor实现的NeHe OpenGL教程-第三十九课
用OpenInventor实现的NeHe OpenGL教程-第三十九课NeHe教程在这节课向我们介绍了如何进行物理模拟计算。这节课的内容主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记转载 2016-04-05 02:16:20 · 325 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十五课
用OpenInventor实现的NeHe OpenGL教程-第三十五课 这是一节令人激动的课程。NeHe教程在这节课向我们介绍了如何在OpenGL中播放AVI文件。说来惭愧,作为一名程序员,多年来看过无数AVI格式的A片(American片,不要想歪了。^_^),但却从来没有想过如何解码AVI文件。在这个教程中我们终于有机会了解如何操作AVI文件了。当然我们不是想开发一转载 2016-04-05 02:10:20 · 454 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十四课
用OpenInventor实现的NeHe OpenGL教程-第三十四课 NeHe教程在这节课向我们介绍了如何从一个2D的灰度图创建地形。这节课的内容比较简单,只是从一个2D灰度图中读取灰度数据,然后将灰度数据转换成高度数据,最后将这些数据显示出来就可以了。 首先定义一些全局变量,这些变量的含义和NeHe教程完全一致#define转载 2016-04-05 02:08:42 · 278 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十三课
NeHe教程在这节课向我们介绍了如何加载压缩和非压缩类型的TGA文件。OpenInventor已经直接支持将TGA文件(压缩和非压缩类型)作为纹理文件,所以我们不必像NeHe教程那样分析TGA文件的数据格式。 下面的函数用来加载非压缩类型的TGA文件作为纹理SoSeparator* BuildpUncompSep(void){ SoSeparator转载 2016-04-05 02:08:08 · 297 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十二课
用OpenInventor实现的NeHe OpenGL教程-第三十二课 NeHe教程在这节课展示的是一个游戏程序,里面包括的技术有OpenGL拾取, Alpha混合, Alpha测试, 排序。这是目前位置NeHe教程中代码量最大的一节课了。 这节课我们不打算使用OpenGL的方法来拾取物体,我们将利用OpenInventor提供给我们的更加方便的拾取功能来完成转载 2016-04-05 02:07:40 · 308 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十一课
用OpenInventor实现的NeHe OpenGL教程-第三十一课 NeHe教程在这节课中介绍了如何加载Milkshape3D建模软件所设计的模型文件。这节课的内容与OpenGL、OpenInventor的关系不大,主要是分析Milkshape3D的模型文件格式。我们程序中读取Milkshape3D模型文件的代码都是拷贝自NeHe教程,唯一不同的就是如何根据模型转载 2016-04-05 02:05:55 · 278 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十课
用OpenInventor实现的NeHe OpenGL教程-第三十课 NeHe教程在这节课介绍了碰撞检测。碰撞检测是一种比较复杂的技术。NeHe教程只是检测平面、球体、圆柱体等这些规则物体之间的碰撞检测。OpenInventor提供了任意形状物体之间的碰撞检测,当然这样的碰撞检测需要更多的计算时间。 碰撞检测的算法在NeHe的教程中已经做了详尽的解释,我们就不转载 2016-04-05 02:05:04 · 346 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十九课
用OpenInventor实现的NeHe OpenGL教程-第二十九课 NeHe教程在这节课中介绍了如何把一块纹理贴到另一块纹理上(即多重纹理)。这节课的内容不是很难,主要是如何读取raw数据格式文件,如何计算图像的透明度等。 OpenInventor对多重纹理直接提供支持,所以我们也可以利用多重纹理来实现相同的效果。具体的代码见BuildCube2转载 2016-04-05 02:01:16 · 319 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十八课
用OpenInventor实现的NeHe OpenGL教程-第二十八课 NeHe教程在这节课中向我们介绍了贝塞尔曲面,贝塞尔曲面是一种可以只使用很少的参数就可以描述出复杂曲面的一种数学工具。对于使用OpenInventor的程序员来说,创建贝塞尔曲面是非常容易的事情,OpenInventor已经对贝塞尔曲面,Nurbs曲面等都做了相应的支持。 首先定义一转载 2016-04-05 02:00:41 · 268 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十七课
用OpenInventor实现的NeHe OpenGL教程-第二十七课 NeHe教程在这节课中向我们介绍了如何在场景中创建阴影效果,这是一个高级的主题,请确信你已经熟练的掌握了基本的OpenGL命令,并熟悉蒙板缓存。 NeHe教程中介绍的阴影效果俗称蒙板阴影。这种计算阴影的技术最大的优点是速度比较快,不需要什么高级的显卡就可以达到非常好的效果。而且阴影的效果转载 2016-04-05 02:00:06 · 427 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十六课
用OpenInventor实现的NeHe OpenGL教程-第二十六课 NeHe教程在这节课中向我们介绍了如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧。 在OpenInventor中已经提供了剪裁面节点SoClipPlane。但蒙板缓存目前还没有直接支持,所以我们只能通过调用OpenGL的方式来实现蒙板缓存。这篇教程所讲述的技术转载 2016-04-05 01:59:42 · 335 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十六课
用OpenInventor实现的NeHe OpenGL教程-第三十六课 NeHe教程在这节课向我们展示了放射模糊的效果。通过把渲染得图像作为纹理提取出来,在利用OpenGL本身自带的纹理过滤,就能实现这种效果。这是一节比较高级的课程。OpenInventor没有提供纹理过滤的功能,所以我们只能通过直接调用OpenGL来实现此课程。在程序中我们第一次使用了SoOffscreenRe转载 2016-04-05 02:12:03 · 465 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十七课
用OpenInventor实现的NeHe OpenGL教程-第三十七课NeHe教程在这节课向我们展示了卡通效果。卡通效果就是在物体轮廓边上加少量的颜色。可以使用OpenGL的一维纹理映射功能来实现此效果。这里需要注意的是,OpenInventor没有提供一维纹理,但我们可以使用2维纹理来模拟,我们只需要将2维纹理的行数设置为1就可以了,具体请阅读代码。其他的代码基本上和NeHe转载 2016-04-05 02:12:51 · 416 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十课
用OpenInventor实现的NeHe OpenGL教程-第四十课 NeHe教程在这节课向我们介绍了如何模拟一根绳子的运动状态,简单的说,就是把绳子先离散化,把它想象成一个个紧密排列的点,每两个点之间有弹性约束。其实这就是简单的有限元思想。这节课的内容和上节课一样,主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。转载 2016-04-05 02:17:13 · 286 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十一课
用OpenInventor实现的NeHe OpenGL教程-第四十一课 NeHe教程在这节课向我们介绍了体积雾气特效,这是一种比较新的特效,你的显卡必须支持扩展"GL_EXT_fot_coord"函数。这个特效可以使人产生在雾中漫游的感觉。 OpenInventor目前还不支持体积雾气特效,虽然我们仍然可以按照前面课程的思路,通过创建SoCallback节点来直接调用O转载 2016-04-05 02:19:26 · 284 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十二课
用OpenInventor实现的NeHe OpenGL教程-第四十二课 NeHe教程在这节课向我们介绍了多重视口效果。它是通过向四个视口渲染四次的方式来实现这样的效果的。在OpenInventor中可以允许创建多个Viewer,因此我们通过创建四个SoWinExaminerViewer,就可以简单地实现相同的效果了。至于创建迷宫的代码,和我们的讨论没有太大的关系,我们是直接转载 2016-04-05 02:20:22 · 426 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十三课
用OpenInventor实现的NeHe OpenGL教程-第四十三课NeHe教程在这节课向我们介绍了如何使用FreeType库创建反走样字体的技术。反走样字体可以让文本看上去更漂亮。“魔兽世界”中使用的字体库就是FreeType库。直接使用FreeType库还是比较麻烦的。但对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持FreeType库,只要将Fr转载 2016-04-05 02:22:50 · 334 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十四课
NeHe教程在这节课向我们介绍了3D光晕的技术。当摄像机镜头对准太阳的时候就会出现这种效果,这种技术经常用在游戏场景中。为了完成这种效果,我们需要一些数学知识,用来检测某个点或球是否在当前的视景体内。我们还需要一些纹理作为我们的光晕效果。 程序中关键的函数有:BOOL glCamera::SphereInFrustum(SbVec3f p, float Radius)转载 2016-04-05 02:46:04 · 309 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十五课
用OpenInventor实现的NeHe OpenGL教程-第四十五课 NeHe教程在这节课向我们介绍了OpenGL新的扩展“顶点缓存”(VBO),这种技术可以直接操作显卡,直接把顶点数据放置在显卡中的高速缓存中,极大的增加了OpenGL的绘制速度。对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持VBO。当我们使用SoIndexedFaceSet节转载 2016-04-05 02:47:33 · 375 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十六课
NeHe教程在这节课向我们介绍了OpenGL的扩展(ARB_MULTISAMPLE)多重采样技术。利用这种技术可以实现全屏反走样。这样可以使图形看起来更美观。 OpenInventor自动支持反走样技术。关键的函数是SoWinRenderArea::setAntialiasin() ,它可以启动全屏反走样,OpenInventor是通过多次绘制同一个场景来实现反走样。转载 2016-04-05 02:48:17 · 304 阅读 · 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支持的转载 2016-04-05 02:49:14 · 350 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四十八课
NeHe教程在这节课向我们介绍了轨迹球技术。轨迹球技术可以让用户使用鼠标直接旋转物体,这是所有交互式3D软件必须提供的最基本的功能。NeHe教程提供的方法是在其它人的基础上做了一些修改和优化。但他的方法仍然有一些小的错误,例如,在将鼠标2D坐标位置映射到3D球体上时,他没有考虑透视因素,因此可能会稍微有些误差,不过对于一般应用来说已经足够用了。 Open Inventor 是转载 2016-04-05 02:49:41 · 435 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三十八课
用OpenInventor实现的NeHe OpenGL教程-第三十八课 NeHe教程在这节课向我们介绍了如何从资源文件中载入图像。这节课的内容比较简单,只需要注意的是,Bitmap文件中每个像素颜色保存的顺序是BGR,我们应该将其转换成RGB,以便适应OpenInventor纹理节点的要求。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完转载 2016-04-05 02:13:44 · 289 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十五课
用OpenInventor实现的NeHe OpenGL教程-第二十五课 NeHe教程在这节课中向我们介绍了如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型。两个模型之间平滑过渡的算法其实是很简单的,首先我们要保证两个模型要有相同数目的顶点,然后我们分别计算每个点从一个模型移动到另外一个模型时,中间的位置数据。我们将这个过程显示出来就会产生模型平滑过渡的效果。转载 2016-04-05 01:59:06 · 314 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十四课
用OpenInventor实现的NeHe OpenGL教程-第二十四课 NeHe教程在这节课中向我们介绍了如何读取显卡支持的OpenGL的扩展,如何使用Targa(TGA)图像文件作为纹理,以及如何利用OpenGL的剪裁区域来滚动屏幕文字。 在OpenInventor中没有相关的函数来获取OpenGL的扩展信息,我们只能通过直接调用OpenGL来获得这些信息。Ope转载 2016-04-05 01:58:38 · 303 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十一课
用OpenInventor实现的NeHe OpenGL教程-第十一课 这节课我们将创建一个以正弦波方式飘动的旗帜。读者将看到实现这种效果并不像想象中那样的困难。至少说使用OpenInventor来实现还是比较容易的。^_^ 。 和前面的程序一样,我们在程序开始的部分定义了一些全局变量,这些变量的作用和NeHe教程中定义的转载 2016-04-05 01:39:05 · 299 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十课
用OpenInventor实现的NeHe OpenGL教程-第十课 这节课我们将加载一个3D场景,并在这个场景中做自由漫游。读者将看到加载3D场景不是一件很难的事情,难点是3D场景的数据组织。不过这些是美工的事情,和我们程序员关系不大 ^_^ 。 在程序开始的部分我们新定义了一些变量,这些变量的作用和NeHe教程中定义的转载 2016-04-05 01:38:18 · 452 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第九课
用OpenInventor实现的NeHe OpenGL教程-第九课 这节课我们将讨论如何在3D空间中移动物体,物体之间如何以透明方式显示。这节课我们还将首次讨论如何在OpenInventor中调用OpenGL函数。 在程序开始的部分我们新定义了一些变量,这些变量的作用和NeHe教程中定义的变量有相同的作用。SoT转载 2016-04-05 01:37:06 · 369 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第八课
用OpenInventor实现的NeHe OpenGL教程-第八课 这节课我们将在第七节课的基础上增加纹理透明的效果。在OpenGL中,透明效果是通过“融合”(Blend)方式实现的。在NeHe教程中已经对融合的原理做了详细的讨论。这里我们就不再详细讨论了。 我们将只讨论在第七节课基础上增加的新代码。在程序开始的部分我们转载 2016-04-05 01:36:34 · 695 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第七课
用OpenInventor实现的NeHe OpenGL教程-第七课 这节课我们将讨论如何在OpenInventor中使用键盘和灯光。我们将会学习指定三种纹理过滤方式,学习如何使用键盘来移动场景中的立方体。 下面的代码是在第六节课程的基础上增加或修改的代码。先定义一些全局变量。SoWinExaminerViewer转载 2016-04-05 01:34:35 · 444 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第六课
用OpenInventor实现的NeHe OpenGL教程-第六课 这节课将讨论如何在OpenInventor中使用纹理。我们将会加载一个纹理文件,然后将纹理映射到立方体的六个面上。 纹理是创建具有真实感场景的基础,因此在3D编程中,纹理是非常重要的。OpenInventor提供了SoTexture2纹理节点。通过这个节转载 2016-04-05 01:33:49 · 972 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第五课
RobinHao的专栏目录视图摘要视图订阅2016攒课第二期之你听课我买单,快来攒你想听的课! 2016大数据应用调查 AngularJS知识库发布用OpenInventor实现的NeHe OpenGL教程-第五课标签: floatexpress图形blog框架mfc转载 2016-04-05 01:31:17 · 372 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第四课
RobinHao的专栏目录视图摘要视图订阅2016攒课第二期之你听课我买单,快来攒你想听的课! 2016大数据应用调查 AngularJS知识库发布用OpenInventor实现的NeHe OpenGL教程-第四课标签: express图形blog框架mfc编译器转载 2016-04-05 01:28:39 · 381 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第三课
用OpenInventor实现的NeHe OpenGL教程-第三课 这节课将在第二课的基础上讨论如何使用颜色。与OpenGL类似,OpenInventor也提供了两种色彩模式。我们将对四边形只使用一种颜色显示,对三角形则要对每个顶点设置一个颜色,对于三角形中间点的颜色,OpenInventor将采用平滑过渡的方式来自己设置。 和上节代码一样,我们转载 2016-04-05 01:26:33 · 1121 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二课
用OpenInventor实现的NeHe OpenGL教程-第二课 这节课将在第一课的基础上添加一个三角形和一个四边形。本节新增加一个函数BuildScene,这个函数将在场景中创建一个三角形和一个四边形。 在函数BuildScene中,首先创建一个SoTranslation节点对象,这个节点的作用是平移当前坐标系。OpenInventor和Op转载 2016-04-05 01:25:25 · 469 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十二课
用OpenInventor实现的NeHe OpenGL教程-第十二课 NeHe这节课主要讨论OpenGL的显示列表功能。OpenGL的显示列表是加速OpenGL性能的一种重要的手段。但在OpenInventor中,我们根本就不需要关心是否使用显示列表,因为OpenInventor内部有缓存功能,而这个缓存功能就是使用显示列表来实现的。所以我们只需要实转载 2016-04-05 01:39:35 · 399 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第十三课
用OpenInventor实现的NeHe OpenGL教程-第十三课 NeHe这节课主要讨论如何使用OpenGL显示2D文字。OpenGL显示2D文字是通过wglUseFontBitmaps函数创建了一系列的显示列表来实现的。通鿇阅读NeHe教程,读者应该能感觉到在OpenG转载 2016-04-05 01:40:07 · 304 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十三课
用OpenInventor实现的NeHe OpenGL教程-第二十三课 这节课我们将学习使用环境纹理映射。这种映射方式可以让物体表面看上去像镜子一样反射周围的环境。这节课的代码是在前面第十八节课程的基础上修改的。阅读NeHe教程我们可以发现,利用OpenGL显示环境纹理是比较容易的,同样在OpenInventor中使用环境纹理也是非常的简单。我们只需要创建一个SoText转载 2016-04-05 01:58:04 · 271 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十二课
用OpenInventor实现的NeHe OpenGL教程-第二十二课 这节课我们将讨论凹凸纹理技术。使用凹凸纹理可以让物体表面更有质感。正如NeHe教程中所说的,这是一节高级课程,请确信你对基本知识已经非常了解。 我们对NeHe教程阅读后可以发现,利用OpenGL显示凹凸纹理是比较困难的。首先需要使用OpenGL的多重纹理扩展,其次还要了解凹凸纹理的计算方法转载 2016-04-05 01:57:30 · 344 阅读 · 0 评论 -
用OpenInventor实现的NeHe OpenGL教程-第二十一课
用OpenInventor实现的NeHe OpenGL教程-第二十一课 这节课从技术上来说没有提供什么新技术,都是前面几节课的内容。但这节课提供了一个编写比较完整的OpenGL小游戏的例子。程序逻辑基本上和NeHe一样。代码有些复杂。这里就不再详细说明了。各位看代码吧。^_^本课的完整代码 下载。(VC 2003 + Coin2.5) 后记Open转载 2016-04-05 01:56:59 · 313 阅读 · 0 评论