maya插件 装了OGRE的插件后,导出的时候怎么设置啊,搞了好多...

C++博客-首页原创精华区
数据载入中,请稍候 ...
(载入图片或视频时,速度会比较慢)
AGES算法---learning from Facial Aging Pattern for Automatic Age Estimation 
时间:Sun, 06 Jun 2010 07:30:00 GMT 最近开始读了几篇paper,然后做了下笔记。暑假是实习内容就是实现这个算法,所以先了解了下,发现需要掌握的知识还是很多啊!
《learning from Facial Aging Pattern for Automatic Age Estimation》
笔记如下:
基于年龄格局自动年龄估计
1. 自动年龄估计面临的主要难题就是年龄相对于其他面部因素的特殊性:
1. 老化的过程不可控。导致样本数据收集很费力
2. 独特的年龄格局。每一个人的的基因,健康情况,生活方式都不同,造成年龄格局不同。
3. 年龄格局是时间的函数。老化的过程必须按照时间顺序,某时刻的脸部状态能够影响到后面的年龄的面部表情,但是不能影响到年轻时刻的。
2.试验中,数据的采集使用FG-NET Aging Database。该数据库的有个缺点就是绝大多数图像只是表示很少的年龄,造成数据不完整。所以年龄算法必须要能够适用于处理不完整数据。
3.每个人独有的特征也需要考虑进去,还有,每个分级都需要排列成次序,因为是按照时间顺序来的。
4.AGES算法。(AGing pattErn Su ace)取代传统的使用使用独立的每一张人脸图片来采样,把每一个年龄格局作为一个样本(这样的好处是将个人的特征和实践概念结合起来,让学习的任务从image-cla 编程了从image序列-cla 序列,从而基于了不完整数据)。为了解决这个问题,一个迭代学习算法被发明。
5.最早的一个年龄估计算法是Lanitis提出,在他们的工作中,年龄格局是有一个二次函数(称作年龄函数)来决定的。
Age = f(b);
其中b是那个脸部图像的特征向量。而这个函数是根据不同的人来训练得到合适的(这其中有4种方式来决定这个函数,而WPS算法是最好的。但是WPS算法包含了很多其他因素,包括健康情况,天气… #8230;而这些情况很难得到),所以,后来使用WAS算法被拿来使用(因为它不需要涉及到这些因素)。
WAS:年龄函数是由带权的已知年龄函数来求得的,而权值是由Mahalanobis距离决定(Mahalanobis距离是从测试图像到训练图像)
其后,有很多算法对WAS算法进行改进,其中最优的方法是AAS。
上面的这些基于年龄函数的年龄估计方法有缺陷,造成估计的精度不能进一步提高。主要问题是:1。年龄函数的公式固定(而事实上是没有这种关系的,二次函数关系)2。时间特征不能很好的反应(任何的变化都会反映到其它图像上)3。某个人年龄格局的学习单纯的由这个人的面部表情(而实际上不同的人之间有某种共同的特性)4。新年龄函数仅仅是由原函数线性组合,而不是有一个确定的模型阐述
6.年龄格局。
年龄格局定义:它是一串按照时间排序的个人图像序列。
假设灰度图像时由二维矩阵I表示(I表示像素(x,y)处的光强),那么年龄格局就可以由三位矩阵表示p(x,y,t)(其中t表示时间)
在年龄格局被进一步处理前,所包含的图像要先被转化成特征向量(论文【7】中有办法,采用A erance Model)。
1 2 3 4 5 6 7
m m B1 m B2 m m
特征向量(AM抽取)b有n维(因为图像转换之后的特征向量假设是n维的),而p表示的是年龄的个数,就是上面的编号1,2… #8230;7。那么每一年龄模式可以表示成n * p维表示。为何?因为实际上可以看成时一个向量(xxxxxxx | xxxxxx),前面的一部分就是那个向量b,它有n维,也就是n位,而后面的部分就是p,对应的用p位表示,比如0就表示未000… #8230;00,1就表示000… #8230;01,… #8230 #8230 #8230;
经过这个之后就可以表示对应的向量x(年龄格局)。
这个就得到了采样样本!
7.剩下的问题就是,1。从image-cla 变成了从image序列-cla 序列,2。处理不完整数据样本。
8.AGES算法
1.前面已经采样得到Aging Pattern,现在就是要建模(Modelling),采用办法就是PCA方法来构建子空间(资料【10】中有介绍)。
具体办法就是:
1. 计算子空间投影(Projection):
Y = WT(x−u)
u:u是x的平均向量
W:x的协方差矩阵的特征向量 WT是W的转置矩阵
算法具体步骤:
1.输入一个向量组D = {x1,x2,x3… #8230;xn},有n个,然后每一个xi都可以表示为{xia,xim},前面一个表示有用数据,后面那个表示丢失的特性。一旦确定了变换矩阵W确定了,那么xk的重构x′k就可以求出来
x′k = u + W * yk
然后对应的重构差异值:
ε= 1 #931;(xk−x′k)Tn1(xk−x′k)
现在的问题是:要找到最好的一个W使得ε是最小的。
那么接下来的任务是如何实现呢?首先,置初值(xim由平均的uim决定),每一次迭代中,都可以计算出来Wi来,但是,由于x中含有很多丢失信息,所以不能直接用公式Y = WT(x−u)来求出投影y。使用变形公式:
Wiak∗yk =xia − uiak
那么现在的算法是:首先初始化,设置每一个然xim为uim,循环次数 i设置为0,然后,使用上面表格的算法,得到W0,再在给定的次数Υ和精度要求θ条件下多次循环迭代,先利用
Wiak∗yk =xia − uiak
计算yk,然后利用x′k = u + W * yk 得到重构的x′k,然后将得到的重构值赋值给xk,在利用PCA更新D,重新计算Wi,然后得到ui+1,在继续下次循环。
上述的结果能得到W,u
下面就是测试程序(如何得到年龄):
得到了所需要的参数之后,就可以输入一个参数,得到年龄。
具体方法是:
1. 由于一个给定的图样不知道年龄,所以在每一个pattern的有效字段中都放入该图像(也就是假设这个图像的年龄分别是1,2,… #8230 #8230 #8230 ),然后分别计算yk,然后计算出ε最后比较得到最小的ε,对应的那个位置就是age。
上图中就是将这个test image放入每一个的位置0,1,… #8230 #8230 #8230 -1,然后都经过投影,然后重构后得到ε,找到最小的,就是得到年龄。
年龄段估计的方法和上面的那个基本原理一样,只不过是在计算出来一个年龄之后,由于我们要的是年龄段,所以就除以段的间距,然后取整加1就是所需要的。
比如:年龄段的分类:0~4,4~8 … #8230 #8230 #8230;
我的疑问:
通过阅读几次这个论文,对于这个算法我大概了它的基本流程。但是还是有一些疑问:
1. 每一个xi都可以表示为{xia,xim},但是这个里面的有用信息部分和无用信息部分到底是哪些部分呢?因为前面的采样过程中已
经知道, xi是两部分组成,前面是图像信息,后面是position,就是年龄。那么这里我们说的有用信息是指前面的那个图像信息,丢失信息是那个年龄吗?(我觉得很多地方都是需要这个有用信息和丢失信息的,特别是估算部分)
2. 形成xi的时候,需要把一个图像转换成特征向量(feature vector),这个在文献【7】有介绍,就是A erance Model,这个目前还没有搞懂,刚刚下了篇论文:
《Statistical Models of Face Images – Improving Specificity》
好像是这个参考资料,准备下一步继续看下去。
3.还有很多细节没有弄清楚。
2010-06-06 15:30
co t 的用法以及误区 
时间:Sun, 06 Jun 2010 02:00:00 GMT
co t 常见用法
co t是C++语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。co t可以提高程序的健壮性,你只管用到你想用的任何地方。
1. co t修饰参数。co t只能修饰输入参数。 1)如果输入参数是指针型的,用co t修饰可以防止指针所指向的内容被意外修改。 2)如果参数采用值传递的方式,无需co t,因为函数自动产生临时变量复制该参数。 3)非内部数据类型的参数,需要临时对象复制参数,而临时对象的构造,析构,复制较为费时,因此建议采用前加co t的引用方式传递非内部数据类型。而内部数据类型无需引用传递。
2. co t修饰函数返回值。 1)函数返回co t指针,表示该指针不能被改动,只能把该指针赋给co t修饰的同类型指针变量。 2)函数返回值为值传递,函数会把返回值赋给外部临时变量,用co t无意义!不管是内部还是非内部数据类型。 3)函数采用引用方式返回的场合不多,只出现在类的赋值函数中,目的是为了实现链式表达。
3. co t+成员函数。任何不修改数据成员的函数都应该声明为co t类型,如果co t成员函数修改了数据成员或者调用了其他函数修改数据成员,编译器都将报错! 【误区1】
co t int* a = am /* [1]*/
int co t *a = am /* [2]*/
int* co t a = am /* [3]*/
co t int* co t a = am /* [4]*/
看看上面的4行代码,或许可以这么理解:
如果co t位于星号的左侧,则co t就是用来修饰指针所指向的变量,即指针指向为常量;如果co t位于星号的右侧,co t就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(co t放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量。 但是我想上面的解释不一定正确. 关于co t int* a = &am , 并不是说a所指向的是常量,而应该理解成: a所指向的内容不能通过*a来改变,对于a所指向的内容是不是常量并没有限制。如下面的代码,是可以通过编译的。 co t int * = am int *q = am *q++; 【误区2】
C++中的co t 是具有内部链接的( 不同于C)
下面是摘自C++中关于链接的一段话:
— When a name has external linkage, the entity it denotes can be referred to by names from scopes
other tra lation units or from other scopes of the same tra lation unit.
— When a name has internal linkage, the entity it denotes can be referred to by names from other scope
the same tra lation unit.
— When a name has no linkage, the entity it denotes ca ot be referred to by names from other scopes. A name having name ace scope (
) has internal linkage if it is the name of
— an object, reference, function or function template that is explicitly declared static or,
— an object or reference that is explicitly declared co t
and neither explicitly declared extern nor
previously declared to have external linkage; or
— a data member of an anonymous union.
从上面可以看出co t对象是具有内部链接的。
内部链接的意思就是: /*----A.h------*/ int a;
co t int /*----test1.cc-------*/ #include #8220;A.h” /*----test2.cc-------*/ #include #8220;A.h” 当test1.cc 和test2.cc 链接的时候,a会出现变量重定义的错误,而b是不会的。因为b是具有内部链接的变量,相当于在test1.cc和test2.cc中各有一份b的符号。 co t变量放在头文件中是不会引起链接时候的重复定义的,但是也不推荐将co t变量放在头文件中。
co t变量不是在编译的时候进行常量折叠,相当于宏的替换,co t变量是不占内存的。
但是 在某一些情况下,编译器会为co t分配内存,比如: co t int a = 10;
co t int * = am a; 当你想获取co t变量的地址时(当然你也可以将a的地址打印出来看看),编译器就会强制为co t变量分配内存了。所以当你在含有co t变量的头文件被多个编译单元包含时,co t变量也有可能在编译单元中占据内存。所以一般是不推荐将co t 或者static变量放在头文件中。当然这样做也无可厚非。
下面这种情况co t也是会分配内存的: co t int a[5] = {1, 2, 3, 4, 5}; 所以下面的语句也就自然而然是不能通过编译的了: int arr[a[2]]; 虽然a[2]的类型也是co t int,但是它与下面的这种情况是有区别的: co t int k = 3;
int arr[k]; 因为k是co t 类型,在编译的时候进行了常量折叠。而上面的a[2]虽然也是co t int型,但是它存在于内存中。数组声明时数组的维数是不允许用内存中的数据来定义的。所以编译器会在此报出illegal的错误。
当然可能不同的编译器会有不同的编译结果。比如在gcc下你编译上述的代码会诡异的通过,但是这是不符合C++标准的。当然如果你加上参数-pedantic的话,你就会发现编译器乖乖的听你的话了。 co t变量在大部分情况下是编译时的常量,如果需要运行时的常量,应该怎么做呢?像下面的代码这样:
co t int co t_runtime = get_v() // get_v在其他地方定义
又或者对运行时的变量加锁,让其变为只读的? 不管怎样,要想获得运行时的常量,方法还是很多的。欢迎交流。
上述只是个人理解,如有错误的地方,还望指教.
2010-06-06 10:00
标C中空宏的妙用 
时间:Sat, 05 Jun 2010 16:19:00 GMT 摘要: C语言中的空宏的妙用 2010-06-06 00:19
MSVC++ 对象内存模型深入解析与具体应用 (三) 
时间:Sat, 05 Jun 2010 06:13:00 GMT 摘要: MSVC++ 对象内存模型深入解析与具体应用
前言:本文之所以强调MSVC, 旨在提醒读者在不同平台和解释器下内存布局和实现上存在差异,但编程思想通用,文中内容大多来自笔者实际工作经验和网上搜集,力求正确,但水平有限,如有不当之处,敬请指出面向对象:本文面向有一定C/C++基础,并且可以读懂部分汇编的读者版权:欢迎转载,但请注明出处http://www.c log.com... 2010-06-05 14:13
Vczh Library++3.0之成功将源代码注释进指令列表 
时间:Sat, 05 Jun 2010 03:49:00 GMT 经过昨天的艰苦奋斗我终于在
里完成这么一个功能了。假设我现在用代码组装了一个语法树: 1 BasicProgramNode rogram; 2 rogram.DefineStructure(L
Complex
) 3 .Member(L
, t_int()) 4 .Member(L
, t_int()); 5 rogram.DefineFunction(L
).ReturnType(t_int()).Statement( 6 _var(t_type(L
Complex
s_var(t_type(L
Complex
s_var(t_type(L
Complex
s_expr(e_name(L
).Member(L
).A ign(e_prim(
s_expr(e_name(L
).Member(L
).A ign(e_prim(
s_expr(e_name(L
).Member(L
).A ign(e_prim(
s_expr(e_name(L
).Member(L
).A ign(e_prim(
s_var(t_type(L
Complex
, e_name(L
s_var(t_type(L
Complex
s_expr(e_name(L
).A ign(e_name(L
s_expr(e_name(L
).Member(L
).A ign(
17 e_name(L
).Member(L
) + e_name(L
).Member(L
s_expr(e_name(L
).Member(L
).A ign(
20 e_name(L
).Member(L
) + e_name(L
).Member(L
s_expr(e_result().A ign(
23 e_name(L
).Member(L
e_prim(
) + e_name(L
).Member(L
25 ); 于是最近写的N个函数终于可以发挥作用了。首先我会拿这个program编译成指令集先跑一次,如果***跟测试用例给出的一致那就继续往下走。接下来就将这个program还原成一个NativeX语言的字符串,然后调用NativeX的语法分析器再编译一次,这样每一个语法树的节点都有一个指向记号的属性了。这样语法树生成指令集的时候,每一个指令原本属于哪颗语法树也就都记录下来了。这个时候,将指令集输出成文本文件的时候,就可以根据位置信息使用NativeX的源代码打上注释,然后再跑一次。这样还可以通过丰富的测试用例来测试NativeX的语法分析器,而且还不会被语法分析器影响。因为program编译了一次,program-NativeX-> ewProgram又编译了一次,哇哈哈。结果如下: (窥孔优化在这个时候就可以大展身手了,不过我还没做… #8230;) 1 /*
NativeX Code
*/ 2 unit ativex_program_generated; 3 structure Complex 4 { 5 int32 r; 6 int32 i; 7 } 8 9 fun 游戏外挂制作研究的中文网络平台
  声明:GameRes严禁各类外挂、私服等商业行为,更不会以GameRes名义进行任何商业销售,请勿信任任何
出售、购买、招聘
内容,谨防受骗!不要轻易运行下载的
可执行文件
,谨防恶意发布的木马病毒。
我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下? - 游戏外挂研究院
访问本论坛!
我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下?
声明:此资讯仅供参考,不代表本站观点,请明辨信息正确性,如果信息错误、虚假,请给我们
,我们将进行查处。
本主题共有
张帖子, 被点击
侦察兵 发表于: 2007-5-13 21:02:00
| Re:我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下?
老兄,我有个.mesh的模型,用maya怎么看啊?是不是需要什么插件? 注册:
2004-3 状态: 共1页,选择: 1 主题管理: | | | | | | [
我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下?
树型显示: 我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下? ( 2007-5-8 12:51:00) ( 2007-5-8 13:56:00) ( 2007-5-10 8:20:00) Re:我用MAYA导出的MES***件,在OGRE里面显示,没有把颜色带出来,谁能给指点一下? ( 2007-5-13 21:02:00) ( 2007-5-15 12:48:00) ( 2007-5-15 14:59:00) ( 2007-5-15 16:44:00) ( 2007-5-24 12:58:00) ( 2007-5-25 11:10:00)
您尚未登录论坛,可以同通过
进行登录,如果您不是GameRes用户,可以点击这里
未经书面许可,请勿转载、链接本站内容,否则非法引用所造成的后果自负;
本站不对所提供的所有资讯正确性负责,若因资讯导致的任何损失本站概不负责,请自行斟酌。
Copyright
2001-2011
All Rights Reserved. 游戏外挂制作研究的中文网络平台
  声明:GameRes严禁各类外挂、私服等商业行为,更不会以GameRes名义进行任何商业销售,请勿信任任何
出售、购买、招聘
内容,谨防受骗!不要轻易运行下载的
可执行文件
,谨防恶意发布的木马病毒。
maya中的模型,是否能转换成Ogre认识的方式? - 游戏外挂研究院
访问本论坛!
maya中的模型,是否能转换成Ogre认识的方式?
声明:此资讯仅供参考,不代表本站观点,请明辨信息正确性,如果信息错误、虚假,请给我们
,我们将进行查处。
本主题共有
张帖子, 被点击
新成员 发表于: 2007-9-10 11:18:00
| maya中的模型,是否能转换成Ogre认识的方式?
如题,那位用过? 注册:
2007-2 状态:
1 phosephate
新成员 发表于: 2007-9-10 14:51:00
| Re: maya中的模型,是否能转换成Ogre认识的方式?
应该可以啊,www.ogre3d.org那上面好像有maya的导出插件嘛。
我现在用的3dsmax9的插件LexiExporter ,就用的www.ogre3d.org上面下载的插件,转成.mes***件就可以用了。
3dsmax可以,maya也该可以吧 注册:
2005-10 状态:
2 怪盗基德
Exp:678
中士 发表于: 2008-2-15 10:23:00
| Re:maya中的模型,是否能转换成Ogre认识的方式?
LEXI不能和OFUSION一起装,LEXI的用法是在工具箱里选择这个插件,添加到按钮里,具体用法OGRE_LEXI的WIKI上有 注册:
2004-2 状态:
3 共1页,选择: 1 主题管理: | | | | | | [
maya中的模型,是否能转换成Ogre认识的方式?
您尚未登录论坛,可以同通过
进行登录,如果您不是GameRes用户,可以点击这里
未经书面许可,请勿转载、链接本站内容,否则非法引用所造成的后果自负;
本站不对所提供的所有资讯正确性负责,若因资讯导致的任何损失本站概不负责,请自行斟酌。
Copyright
2001-2011
All Rights Reserved.

参考资料

 

随机推荐