2010年12月15日
摘要: a*quaternion 四元数quaternion 从(弧度m,轴v)获得 表示将a绕轴v旋转m得到的。。。quaternion *vector3   若vector3是个表示位移的向量 pos+=quaternion *vector3 quaternion表示朝向orientation    表示 vector3这个位移是被挪到朝向上了 这个v3本身是一个经过坐标原点的向量通过四元数旋转一个Vector quaternion*vector// 通过四元数旋转一个vector//当Vector表示一个位移时,. // 结果表示,将vector转化为相对于mOrientation方向上的 阅读全文
posted @ 2010-12-15 23:45 minggoddess 阅读(2996) 评论(0) 推荐(0) 编辑
摘要: 世界空间,朝世界原点的朝向移动d ,换到mPosition的所在父空间只需要旋转一定角度,这个角度应该是世界原点方向和父节点的方向的夹角,正好是父节点世界绝对角度再取反.(为什么要取反,2个四元数相乘是不能交换的,因为世界节点和父节点夹角 != 父节点和世界节点夹角,正好相反) mPosition += (mParent-_getDerivedOrientation().Inverse() * d) / mParent-_getDerivedScale();根据这段话 我想 由A 到B的用了 四元数Orientation 由B到A的话就应该是Orientation.Inverse()我知道 阅读全文
posted @ 2010-12-15 23:35 minggoddess 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 把矩阵转成四元数用于计算失去其原有的几何意义四元数统一表示了复数和矢量 可用来计算 平移,缩放旋转当四元数是一个单位四元数时(意味着n为单位向量)它的倒数等于他的共轭,那么四元数与旋转到底有什么关系?我以前一直认为轴、角的描述就是四元数,如果是那样其与旋转的关系也不言而喻,但并不是这么简单,轴、角描述到四元数的转化:w = cos(theta/2)x = ax * sin(theta/2)y = ay * sin(theta/2)z = az * sin(theta/2)其中(ax,ay,az)表示轴的矢量,theta表示绕此轴的旋转角度,为什么是这样?和轴、角描述到底有什么不同?这是因为轴角 阅读全文
posted @ 2010-12-15 21:56 minggoddess 阅读(483) 评论(0) 推荐(0) 编辑
摘要: shader可以用在material里 被setmaterial到entity那 用于全屏的 shader要怎样使用呢?是通过 compositot 。compositot是对viewport进行处理的 这是一个compositor脚本的粒子 from wikiogre对了这里介绍下 wikiogre 除了 basicturtorial和intermediateturtorial还有 DCCTurtorial 里面的materail和HDR什么的都能抄还有 snippets http://www.ogre3d.org/tikiwiki/Snippets里面对ogre介绍很多 包括shader 阅读全文
posted @ 2010-12-15 21:04 minggoddess 阅读(1195) 评论(0) 推荐(0) 编辑
摘要: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://stdsoft.blogbus.com/logs/36002820.html HLSL:高级着色语言。微软开发、用于在DirectX中编写在GPU上运行的程序的高级着色语言,与Cg语言非常相似。目录1在OGRE中使用HLSL2参数3采样器和纹理单元4顶点着色器5片断着色器6 Tangent-vectors7 Links在OGRE中使用HLSLHLSL着色器在Ogre中的使用非常像其它着色语言(比如Cg,GLSL)的使用情况,但是有一点小小的不同,我将针对这个不同点作出解释。首先,使用着色器的材质的声明应该像如下材质声 阅读全文
posted @ 2010-12-15 19:23 minggoddess 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 每帧进行渲染的时候 在一个technique里 有一个pass就渲染一遍 三个pass就是渲染三遍 每帧 这里的pass和硬件的 渲染通路对应顶层Material属性属性名 值的格式 描述lod_distances d1 [d2 ... dn] LOD的距离列表receive_shadows on|off 阴影是否会投在这个物体上(默认为on)transparency_casts_shadows on|off 透明物体是否投射阴影set_texture_alias alias_name texture_name 重命名纹理Technique 属性属性名 值的 阅读全文
posted @ 2010-12-15 19:20 minggoddess 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 轨迹动画(Animation Track),是 OGRE 所支持的几种动画模式(包括骨骼动画)中的一种。通过让节点(node)沿着一条预设了关键帧(Key Frame)的轨迹移动来实现节点的动画。OGRE 中创建和实施轨迹动画的步骤大致如下:1. 在主程序类的 Application :: createScene ( ) 场景创建方法中进行以下工作:Animation * Ogre::SceneManager::createAnimation (const String & name, // 动画名称Real length // 动画长度(秒)) [virtual](2) 使用 createT 阅读全文
posted @ 2010-12-15 19:15 minggoddess 阅读(709) 评论(0) 推荐(0) 编辑
摘要: 总结:1. 可以学会克隆一个实体的方法2. 可以根据雅典娜的材质得知顶点着色器的使用, 在事先构建的切线数据(buildTangentVectors)放置于 着色程序的属性 tangent中, 着色程序就可以直接使用该属性3. 学会如何创建一个曲面, 用MovablePlane.4. 实体调用setMeshLodBias设置LOD, 数值越小则越清晰.5. 实现如何创建一个只能拥有一个实例的类 class className : public Ogre::SingletonclassName;6. 设置GPU程序一致变量的方法: ptrProgram-getDefaultParamete 阅读全文
posted @ 2010-12-15 19:13 minggoddess 阅读(900) 评论(1) 推荐(0) 编辑
摘要: 一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019:无法解析的外部符号_WinMain@16,该符号在函数___tmainCRTStartup中被引用Debug\jk.exe : fatal error LNK1120: 1个无法解析的外部命令error LNK2001: unresolved external symbol _WinMain@16debug/main.exe:fatal error LNK 1120:1 unresolved externalserror executing link.exe;二,产生这个问题可能的原因产生这个问题的真 阅读全文
posted @ 2010-12-15 19:11 minggoddess 阅读(17990) 评论(0) 推荐(1) 编辑
摘要: 动态链接库中分配内存引起的本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来,大家一起分享.问题来由:由于该工程中要用到声音,所以我的分工之一就是用DirectMusic和DirectSound来开发声音播放的动态库,以提供给该工程的两个部分:仿真控制部分( 语音 )和三维部分( 场景声音 )使用,两个工程中的声音都以单独的线程播放,且两个线程几乎相同.,然而该动态库在以前的运行中一直没有出现过问题, 直到工程开发即将要结束阶段的前一个星期,我碰才到了这个问题,首先是三维部 阅读全文
posted @ 2010-12-15 19:10 minggoddess 阅读(10867) 评论(0) 推荐(2) 编辑
摘要: 第八章 Ogre渲染目标在Ogre中,并没有要求你一定要把最终的显示画面渲染到图形显示设备上。换句话说,Ogre最终渲染到帧缓存的结果(颜色数据),既可以在显示器上面展示也可以输送到其他渲染目标。在这里,渲染目标的概念是一个用来保存渲染结果(二维信息)的存储区域,它既可以在显存中也可以在AGP[1]的共享储存区域中。最基本和普通的渲染目标当然是程序的主窗口。就是那个可以被你在操作系统中改变大小并通过Alt+Tab切换的那个窗口。如果你按照前面章节所介绍的那样初始化了Ogre渲染系统之后,你就拥有了这个渲染目标。不过,相当多的游戏需要额外渲染一些特殊的场景部分来实现有趣的效果。比如把一些看不见的 阅读全文
posted @ 2010-12-15 19:08 minggoddess 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: 动态加载动态连接库能更加有效地使用内存,这在大型项目中是非常有用的一项技术。DLL中的函数可以很容易的实现动态加载调用,网上也有很多相关的介绍,但DLL中类库怎样实现动态加载调用呢?这是我在实际项目中遇到的一个问题,可以采用类工厂方法,把对象的指针导出来的方法解决这个问题,如果需要对跨平台的支持还可以使用QT中的QLibrary代替LoadLibrary等函数。1)与动态库调用有关的函数包括:(1)LoadLibrary(或MFC 的AfxLoadLibrary),装载动态库。(2)GetProcAddress,获取要引入的函数,将符号名或标识号转换为DLL内部地址。(3)FreeLibrar 阅读全文
posted @ 2010-12-15 19:05 minggoddess 阅读(2768) 评论(0) 推荐(0) 编辑
摘要: OpenGL的辅助库可以提供一些较为复杂的几何体的绘制函数,如auxSolidTeapot可以绘制一个茶壶,如果用OpenGL基本库中的函数实现就困难的多。但是,除了教学等简单的环境外,在大型的OpenGL应用中,辅助库中的这些函数基本是没有任何用处的。而且,这些函数也因为受限于平台,很少被使用。在一些基于OpenGL的3D引擎中可以看到,仅仅使用OpenGL基本库中的图元函数就可以了。OpenGL的基本图元有点(Point)、线段(Line)、多边形(Ploygon)、三角形(Triangle)、四边形(Quadrangle)。线段又分为独立线段、不闭合的线(Line Strip)和首尾闭合 阅读全文
posted @ 2010-12-15 19:03 minggoddess 阅读(3160) 评论(0) 推荐(0) 编辑
摘要: 三角形带pManualObject-position(40,0,40); //1pManualObject-position(40,0,50); //2pManualObject-position(50,0,50); //3pManualObject-position(50,0,40); //41,2,3组成三角形 最后两点组成的边和下一个点 组成三角形 也就是 3,2,4 clockwise 所以剔除了glBegin(GL_TRIANGLE_STRIP);glVertex3f(-1.0f, -1.0f, 0.0f);glVertex3f(-1.0f, 1.0f, 0.0f);glVe 阅读全文
posted @ 2010-12-15 18:59 minggoddess 阅读(806) 评论(0) 推荐(0) 编辑