- 博客(79)
- 收藏
- 关注
原创 用OpenInventor实现的NeHe OpenGL教程-第四十八课
NeHe教程在这节课向我们介绍了轨迹球技术。轨迹球技术可以让用户使用鼠标直接旋转物体,这是所有交互式3D软件必须提供的最基本的功能。NeHe教程提供的方法是在其它人的基础上做了一些修改和优化。但他的方法仍然有一些小的错误,例如,在将鼠标2D坐标位置映射到3D球体上时,他没有考虑透视因素,因此可能会稍微有些误差,不过对于一般应用来说已经足够用了。 Open Invento
2008-07-20 00:13:00
5406
2
原创 用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
4110
原创 用OpenInventor实现的NeHe OpenGL教程-第四十六课
NeHe教程在这节课向我们介绍了OpenGL的扩展(ARB_MULTISAMPLE)多重采样技术。利用这种技术可以实现全屏反走样。这样可以使图形看起来更美观。 OpenInventor自动支持反走样技术。关键的函数是SoWinRenderArea::setAntialiasin() ,它可以启动全屏反走样,OpenInventor是通过多次绘制同一个场景来实现反走样。 现
2008-07-06 10:27:00
3481
原创 用OpenInventor实现的NeHe OpenGL教程-第四十五课
NeHe教程在这节课向我们介绍了OpenGL新的扩展“顶点缓存”(VBO),这种技术可以直接操作显卡,直接把顶点数据放置在显卡中的高速缓存中,极大的增加了OpenGL的绘制速度。对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持VBO。当我们使用SoIndexedFaceSet节点显示三角面时,Coin在内部缺省情况下就是使用VBO来显示的。因此VBO技术我们已经
2008-07-05 17:23:00
3893
原创 用OpenInventor实现的NeHe OpenGL教程-第四十四课
NeHe教程在这节课向我们介绍了3D光晕的技术。当摄像机镜头对准太阳的时候就会出现这种效果,这种技术经常用在游戏场景中。为了完成这种效果,我们需要一些数学知识,用来检测某个点或球是否在当前的视景体内。我们还需要一些纹理作为我们的光晕效果。 程序中关键的函数有:BOOL glCamera::SphereInFrustum(SbVec3f p, float Radius){
2008-06-29 23:45:00
3557
原创 用OpenInventor实现的NeHe OpenGL教程-第四十三课
NeHe教程在这节课向我们介绍了如何使用FreeType库创建反走样字体的技术。反走样字体可以让文本看上去更漂亮。“魔兽世界”中使用的字体库就是FreeType库。直接使用FreeType库还是比较麻烦的。但对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持FreeType库,只要将FreeType.dll拷贝到程序所在目录下,Coin就会自动加载FreeTyp
2008-06-29 10:47:00
3861
原创 用OpenInventor实现的NeHe OpenGL教程-第四十二课
NeHe教程在这节课向我们介绍了多重视口效果。它是通过向四个视口渲染四次的方式来实现这样的效果的。在OpenInventor中可以允许创建多个Viewer,因此我们通过创建四个SoWinExaminerViewer,就可以简单地实现相同的效果了。至于创建迷宫的代码,和我们的讨论没有太大的关系,我们是直接拷贝NeHe的代码,这里就不在详细说明了。 本课的完整代码 下载。(VC
2008-06-15 22:59:00
3414
原创 用OpenInventor实现的NeHe OpenGL教程-第四十一课
NeHe教程在这节课向我们介绍了体积雾气特效,这是一种比较新的特效,你的显卡必须支持扩展"GL_EXT_fot_coord"函数。这个特效可以使人产生在雾中漫游的感觉。 OpenInventor目前还不支持体积雾气特效,虽然我们仍然可以按照前面课程的思路,通过创建SoCallback节点来直接调用OpenGL。但在这节课中我打算使用另外的一种方法来调用OpenGL命令。OpenInv
2008-06-10 00:12:00
3398
原创 用OpenInventor实现的NeHe OpenGL教程-第三十九课
NeHe教程在这节课向我们介绍了如何进行物理模拟计算。这节课的内容主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速
2008-05-25 22:13:00
3254
原创 用OpenInventor实现的NeHe OpenGL教程-第三十八课
NeHe教程在这节课向我们介绍了如何从资源文件中载入图像。这节课的内容比较简单,只需要注意的是,Bitmap文件中每个像素颜色保存的顺序是BGR,我们应该将其转换成RGB,以便适应OpenInventor纹理节点的要求。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记Open
2008-05-21 21:38:00
3076
原创 用OpenInventor实现的NeHe OpenGL教程-第三十七课
NeHe教程在这节课向我们展示了卡通效果。卡通效果就是在物体轮廓边上加少量的颜色。可以使用OpenGL的一维纹理映射功能来实现此效果。这里需要注意的是,OpenInventor没有提供一维纹理,但我们可以使用2维纹理来模拟,我们只需要将2维纹理的行数设置为1就可以了,具体请阅读代码。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC
2008-05-18 23:52:00
3139
原创 用OpenInventor实现的NeHe OpenGL教程-第三十六课
NeHe教程在这节课向我们展示了放射模糊的效果。通过把渲染得图像作为纹理提取出来,在利用OpenGL本身自带的纹理过滤,就能实现这种效果。这是一节比较高级的课程。OpenInventor没有提供纹理过滤的功能,所以我们只能通过直接调用OpenGL来实现此课程。在程序中我们第一次使用了SoOffscreenRenderer节点,这个节点可以在内存中渲染某个场景,然后我们将内存中的场景图像作为
2008-05-17 22:21:00
3465
原创 用OpenInventor实现的NeHe OpenGL教程-第三十五课
这是一节令人激动的课程。NeHe教程在这节课向我们介绍了如何在OpenGL中播放AVI文件。说来惭愧,作为一名程序员,多年来看过无数AVI格式的A片(American片,不要想歪了。^_^),但却从来没有想过如何解码AVI文件。在这个教程中我们终于有机会了解如何操作AVI文件了。当然我们不是想开发一款类似“暴风影音”那样的软件,我们只是利用微软提供的流媒体接口来操作AVI文件。 其
2008-05-08 21:48:00
3529
原创 用OpenInventor实现的NeHe OpenGL教程-第三十四课
NeHe教程在这节课向我们介绍了如何从一个2D的灰度图创建地形。这节课的内容比较简单,只是从一个2D灰度图中读取灰度数据,然后将灰度数据转换成高度数据,最后将这些数据显示出来就可以了。 首先定义一些全局变量,这些变量的含义和NeHe教程完全一致#define MAP_SIZE 1024 // Size Of Our .RAW Height Map (NE
2008-05-01 22:00:00
3650
4
原创 用OpenInventor实现的NeHe OpenGL教程-第三十三课
NeHe教程在这节课向我们介绍了如何加载压缩和非压缩类型的TGA文件。OpenInventor已经直接支持将TGA文件(压缩和非压缩类型)作为纹理文件,所以我们不必像NeHe教程那样分析TGA文件的数据格式。 下面的函数用来加载非压缩类型的TGA文件作为纹理SoSeparator* BuildpUncompSep(void){ SoSeparator *pU
2008-04-27 14:10:00
3206
原创 用OpenInventor实现的NeHe OpenGL教程-第三十二课
NeHe教程在这节课展示的是一个游戏程序,里面包括的技术有OpenGL拾取, Alpha混合, Alpha测试, 排序。这是目前位置NeHe教程中代码量最大的一节课了。 这节课我们不打算使用OpenGL的方法来拾取物体,我们将利用OpenInventor提供给我们的更加方便的拾取功能来完成这个同样的游戏程序。OpenInventor比OpenGL最大的优势就在于交互式操作
2008-04-25 22:51:00
3397
1
原创 用OpenInventor实现的NeHe OpenGL教程-第三十一课
用OpenInventor实现的NeHe OpenGL教程-第三十一课 NeHe教程在这节课中介绍了如何加载Milkshape3D建模软件所设计的模型文件。这节课的内容与OpenGL、OpenInventor的关系不大,主要是分析Milkshape3D的模型文件格式。我们程序中读取Milkshape3D模型文件的代码都是拷贝自NeHe教程,唯一不同的就是如何根据模型
2008-04-24 22:16:00
3140
原创 用OpenInventor实现的NeHe OpenGL教程-第三十课
用OpenInventor实现的NeHe OpenGL教程-第三十课 NeHe教程在这节课介绍了碰撞检测。碰撞检测是一种比较复杂的技术。NeHe教程只是检测平面、球体、圆柱体等这些规则物体之间的碰撞检测。OpenInventor提供了任意形状物体之间的碰撞检测,当然这样的碰撞检测需要更多的计算时间。 碰撞检测的算法在NeHe的教程中已经做了详尽的解释,我们就
2008-04-22 22:02:00
3855
2
原创 用OpenInventor实现的NeHe OpenGL教程-第二十九课
用OpenInventor实现的NeHe OpenGL教程-第二十九课 NeHe教程在这节课中介绍了如何把一块纹理贴到另一块纹理上(即多重纹理)。这节课的内容不是很难,主要是如何读取raw数据格式文件,如何计算图像的透明度等。 OpenInventor对多重纹理直接提供支持,所以我们也可以利用多重纹理来实现相同的效果。具体的代码见BuildCube2
2008-04-21 22:26:00
3441
转载 (转载)拓扑结构与TopoDS
转载:http://www.cppblog.com/mythma/archive/2008/01/24/41774.html拓扑结构与TopoDS 一、拓扑结构 参数空间 OpenCASCADE的拓扑结构是在参数空间描述实体的数据结构——用局部参数空间或受限参数空间描述。 Quote:参数空间(Parametric Space):设(X1,……,Xn)为来自总体X的样本,(
2008-04-16 21:21:00
1669
原创 用OpenInventor实现的NeHe OpenGL教程-第二十八课
用OpenInventor实现的NeHe OpenGL教程-第二十八课 NeHe教程在这节课中向我们介绍了贝塞尔曲面,贝塞尔曲面是一种可以只使用很少的参数就可以描述出复杂曲面的一种数学工具。对于使用OpenInventor的程序员来说,创建贝塞尔曲面是非常容易的事情,OpenInventor已经对贝塞尔曲面,Nurbs曲面等都做了相应的支持。 首
2008-04-16 21:02:00
1683
原创 How to use Adaptor3D_Surface to get type of surface
Q: How to use adaptor3d_surface to get type and equation of surface. I would like to know the type(plan,cylinder,sphère,bspline, bezier...) and the equation of surface (geometric surface of the fac
2008-04-16 18:25:00
1532
原创 用OpenInventor实现的NeHe OpenGL教程-第二十七课
用OpenInventor实现的NeHe OpenGL教程-第二十七课 NeHe教程在这节课中向我们介绍了如何在场景中创建阴影效果,这是一个高级的主题,请确信你已经熟练的掌握了基本的OpenGL命令,并熟悉蒙板缓存。 NeHe教程中介绍的阴影效果俗称蒙板阴影。这种计算阴影的技术最大的优点是速度比较快,不需要什么高级的显卡就可以达到非常好的效果。而且阴影的效果
2008-04-15 21:36:00
1587
原创 用OpenInventor实现的NeHe OpenGL教程-第二十六课
用OpenInventor实现的NeHe OpenGL教程-第二十六课 NeHe教程在这节课中向我们介绍了如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧。 在OpenInventor中已经提供了剪裁面节点SoClipPlane。但蒙板缓存目前还没有直接支持,所以我们只能通过调用OpenGL的方式来实现蒙板缓存。这篇教程所讲述的技
2008-03-30 22:25:00
1988
原创 用OpenInventor实现的NeHe OpenGL教程-第二十五课
用OpenInventor实现的NeHe OpenGL教程-第二十五课 NeHe教程在这节课中向我们介绍了如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型。两个模型之间平滑过渡的算法其实是很简单的,首先我们要保证两个模型要有相同数目的顶点,然后我们分别计算每个点从一个模型移动到另外一个模型时,中间的位置数据。我们将这个过程显示出来就会产生模型平滑过渡的效果。
2008-03-29 23:46:00
1599
原创 用OpenInventor实现的NeHe OpenGL教程-第二十四课
用OpenInventor实现的NeHe OpenGL教程-第二十四课 NeHe教程在这节课中向我们介绍了如何读取显卡支持的OpenGL的扩展,如何使用Targa(TGA)图像文件作为纹理,以及如何利用OpenGL的剪裁区域来滚动屏幕文字。 在OpenInventor中没有相关的函数来获取OpenGL的扩展信息,我们只能通过直接调用OpenGL来获得这些信息。Op
2008-03-23 20:28:00
1560
原创 用OpenInventor实现的NeHe OpenGL教程-第二十三课
用OpenInventor实现的NeHe OpenGL教程-第二十三课 这节课我们将学习使用环境纹理映射。这种映射方式可以让物体表面看上去像镜子一样反射周围的环境。这节课的代码是在前面第十八节课程的基础上修改的。阅读NeHe教程我们可以发现,利用OpenGL显示环境纹理是比较容易的,同样在OpenInventor中使用环境纹理也是非常的简单。我们只需要创建一个SoText
2008-03-23 12:55:00
1587
原创 用OpenInventor实现的NeHe OpenGL教程-第二十二课
用OpenInventor实现的NeHe OpenGL教程-第二十二课 这节课我们将讨论凹凸纹理技术。使用凹凸纹理可以让物体表面更有质感。正如NeHe教程中所说的,这是一节高级课程,请确信你对基本知识已经非常了解。 我们对NeHe教程阅读后可以发现,利用OpenGL显示凹凸纹理是比较困难的。首先需要使用OpenGL的多重纹理扩展,其次还要了解凹凸纹理的计算方
2008-03-22 18:38:00
1542
原创 用OpenInventor实现的NeHe OpenGL教程-第二十一课
用OpenInventor实现的NeHe OpenGL教程-第二十一课 这节课从技术上来说没有提供什么新技术,都是前面几节课的内容。但这节课提供了一个编写比较完整的OpenGL小游戏的例子。程序逻辑基本上和NeHe一样。代码有些复杂。这里就不再详细说明了。各位看代码吧。^_^本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenI
2008-03-09 22:08:00
1345
原创 用OpenInventor实现的NeHe OpenGL教程-第二十课
用OpenInventor实现的NeHe OpenGL教程-第二十课 这节课我们将讨论蒙板技术。所谓蒙板技术可能很多人在2D绘图程序中已经使用过了。例如,我们希望在背景图片上绘制一个人物(精灵)。因为人物的图片是矩形的,而人物本身又是不规则图形,所以矩形图片中会有一些空白的部分。如果我们不将这些空白的部分去掉,直接绘制人物图片的话,程序的效果肯定会很差。这时我们就需
2008-03-09 21:47:00
1700
转载 转贴 一个图形爱好者的书架.-也来介绍一下我的藏书
原帖:http://blog.youkuaiyun.com/nhsoft/archive/2004/06/23/22992.aspx 一个图形爱好者的书架.-也来介绍一下我的藏书.早几天看到有人把自己在大学四年的书列了出来.招来一顿怀疑.我是开发图形程序的.我现在也把我的书列出来.不怕大家怀疑吧.希望能有点启示作用.绿色的是我看完了的。红色的是没怎么看的。黄色的是看了一半以上的。首先是基础
2008-03-06 23:19:00
1632
转载 如何求三角形和线的交点InterSection函数
原帖:http://blog.youkuaiyun.com/nhsoft/archive/2004/06/23/22992.aspx 这个算法来自微软DirectX SDK.兰幽草推荐的.基本算法都想明白了。就是那个t 为什么没有负号.我还没有想明白.不知道为什么不过结果基本已经正确了。应该比较好用的。 bool InterSection(XRay& ray,XTriangle& tri,XPoi
2008-03-06 23:16:00
2002
原创 Delaunary 三角网格
今天阅读coin3d代码,发现了一个SbTessellate类,这个类可以将多边形分割成带约束边的Delaunary三角网.看来Coin中还有很多好东西需要挖掘.^_^
2008-03-06 23:14:00
2508
3
原创 用OpenInventor实现的NeHe OpenGL教程-第十九课
用OpenInventor实现的NeHe OpenGL教程-第十九课 这节课我们将讨论怎样使用OpenInventor实现一个简单的粒子系统。我们在NeHe教程中可以看到,一个简单的粒子系统实现起来不像想象中那样的困难。只要能计算好一个粒子的当前状态(速度,加速度,颜色),就很容易完成一个粒子系统的效果。 NeHe教程中使用三角形带来显示每个粒
2008-03-01 21:02:00
2030
原创 用OpenInventor实现的NeHe OpenGL教程-第十八课
用OpenInventor实现的NeHe OpenGL教程-第十八课 这节课我们将在前面讲述的第七节课程的基础上,显示球体,圆柱体,圆锥体等二次几何体。 下面的代码是在第七节课程的基础上增加或修改的代码。先定义一些全局变量。SoSwitch* g_pSceneSwitch = NULL;//用来切换不同的二次几何体
2008-03-01 20:50:00
1479
原创 用OpenInventor实现的NeHe OpenGL教程-第十七课
用OpenInventor实现的NeHe OpenGL教程-第十七课 这节课我们将讨论使用纹理贴图的技术来显示文字。使用这种技术显示文字的好处在于程序的效果在任何机器上都是相同的。而我们前面讨论的显示文字的方法都是依赖于当前系统中所包含的字体,所以前面讨论的技术在不同的机器上有可能会有不同的显示效果。 使用纹理贴图来显示文字的原理很简单,首先需要制作一
2008-03-01 16:23:00
1740
原创 用OpenInventor实现的NeHe OpenGL教程-第十六课
用OpenInventor实现的NeHe OpenGL教程-第十六课 这节课我们将在前面讲述的第七节课程的基础上,对场景增加上“雾 ”的效果。在OpenInventor中添加“雾 ”效果还是很容易的。OpenInventor提供了一个叫做SoEnvironment的节点类,通过这个节点类,我们就可以实现“雾 ”的效果。 下面的代码是在第
2008-03-01 16:15:00
1441
原创 一些网站
转自 http://blog.sina.com.cn/s/blog_4062094e01008tc0.html 一些大概有价值的网站,需要进一步的补充和甄别。终于发现把有用的网站放到收藏夹里也不可靠了,总是丢,也疏于整理。现在在http://www.gamedev.org/forum/index.php?topic=2142.0的基础上把一些有价值的网站记录下来。 Prog
2008-02-27 15:08:00
1712
原创 用OpenInventor实现的NeHe OpenGL教程-第十五课
用OpenInventor实现的NeHe OpenGL教程-第十五课 NeHe这节课主要讨论OpenGL怎样给文字赋予纹理贴图。OpenGL使用glTexGen函数给文字自动生成纹理坐标。在OpenInventor中,给文字贴上纹理和给物体贴纹理的方法是一样的。只需要在文字节点前面插入一个纹理节点就可以了。而且我们可以看到,NeHe的代码只适合在Windows
2008-02-07 16:17:00
1541
原创 用OpenInventor实现的NeHe OpenGL教程-第十四课
用OpenInventor实现的NeHe OpenGL教程-第十四课 NeHe这节课主要讨论如何使用OpenGL显示3D轮廓文字。OpenGL显示3D文字是通过wglUseFontOutlines函数创建了一系列的显示列表来实现的。其使用方法和第十三节课程类似。在OpenInventor中提供了SoText3节点,使用方法和SoText2节点相同。
2008-01-10 23:13:00
1531
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人