随笔分类 -  3D

OGRE,OPENGL
四元数与旋转
摘要:一.四元组基础Q(x,y,z,w),其中x,y,z用来确定旋转轴,w为旋转的角度Q=w+xi+yj+zk,i,j,k为三个虚轴的单位分量I*j=kJ*k=i;K*i=j;叉乘:c=a × b=| i j k||a1 b1 c1||a2 b2 c2|=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)c也为一个向量,且c的长度为|a||b|sin(theta),垂直于a和b所在的平面,方向由右手法则来判定,用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向1. 四元组相乘:Q1=w1+x1i+y1j+z1k=(w1,v 阅读全文
posted @ 2011-08-17 16:45 柯大侠 阅读(23825) 评论(1) 推荐(0)
MipMap贴图原理
摘要:摘自:http://blog.sina.com.cn/s/blog_5f99aed00100d7pw.html Mipmap在3D图形学中主要是用来做anti-aliasing,这跟图像学中的概念是一致的:图像在缩小时因为采样率不够,就会导致混叠现象,如果是线,就表现为断线,如果是纹理比较复杂,就表现为纹理变得杂乱。在图形学中,我们经常会用到纹理贴图(注意:图形学中的纹理与图像学中的是两个概念,图像中一般将图片中较复杂的区域,即频谱能量高的,称为纹理;图形学中将用来贴图的图片统称为纹理),用来贴图的纹理大小与真正要render的区域不一定是刚好匹配的,这样就需要做放大或缩小,如果缩小,也就会产 阅读全文
posted @ 2011-08-11 07:49 柯大侠 阅读(3596) 评论(0) 推荐(0)
Ogre学习记录
摘要:转自:http://www.cppblog.com/richardhe/articles/55722.html1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲区管理,渲染系统,渲染窗口3:关键词Root::Ogre系统入口,程序一开始就应当创建,最后释放,它帮助我们获得其他元素的指针 阅读全文
posted @ 2011-05-19 09:31 柯大侠 阅读(1018) 评论(0) 推荐(0)
变形动画之kinect模块
摘要:最近越来越觉得封装一个模块之前,得写个文档来整理下思路,可以达到事半功倍的效果 使用Kinect来获取关节点位置计算关节的旋转角,用于做mesh deformation-------------------------Kinect模块要完成的事:1. 生成用于显示的图像信息,使用opencv进行<1> 显示深度图 需要传入深度图元数据DepthMetaData的对象,可以传入其指针<2> 显示骨骼 需要获得骨骼的二维坐标,openni里的做法是使用UserGenerator里的骨骼功能获取指定的关节对象,使用枚举变量来指定具体的关节 然后使用DepthGenerator 阅读全文
posted @ 2011-05-09 09:28 柯大侠 阅读(1099) 评论(0) 推荐(0)
openGL两种投影方式
摘要:from http://hi.baidu.com/fcqian/blog/item/cc5794ec76807a3f27979131.html投影变换是一种很关键的图形变换,OpenGL中只提供了两种投影方式,一种是正射投影,另一种是透视投影。不管是调用哪种投影函数,为了避免不必要的变换,其前面必须加上以下两句:glMAtrixMode(GL_PROJECTION);glLoadIdentity();事实上,投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终图像只是视景体内的有关部分。本节将详细讲述投影变换的概念以及用法。1 正射投影(Orthographic Project 阅读全文
posted @ 2011-04-01 03:17 柯大侠 阅读(18615) 评论(1) 推荐(1)