Misc
文章平均质量分 73
BugRunner
这个作者很懒,什么都没留下…
展开
-
七月...
七月份的大部分时间都在等待,月初在等考试的结果,中旬又在等前段时间投的两篇论文的结果,不过现在都已经结束了。两篇论文一篇投了AMR,另一篇投了ACMMM,都是关于三维模型检索的。结果是第一篇中了,第二篇没有中。对于AMR的结果,没有太多的惊喜,虽然是自己的第一篇EI论文,但毕竟难度要相对小些,而对于ACMMM的结果却多少有些失望,毕竟自己对这一篇倾注了更多的心思。ACMMM是多媒体领域里面的一级会原创 2010-07-19 21:11:00 · 2051 阅读 · 0 评论 -
Texture UV Atlas
UV的Atlas操作在某些场合下还是很有用途的,比如很常见的对于场景进行的LightMap烘焙时。这时就需要对于整个场景中的几何体元进行Light Map UV的生成,也即是将其投影到了一张Texture中去,且要求所有的几何体元对应唯一的Light Map UV(即在这一张纹理中没有相互重叠,以便取到正确的烘焙信息)。UV Atlas其实是一个传统的NP hard问题,一般来说都是通过某些最优化原创 2012-05-13 23:09:40 · 8013 阅读 · 2 评论 -
Capitulum Sampling
蒙特卡洛积分模拟是离线渲染中一个最常用的方法,而关于其各种优化的研究有很多就是集中在改进其采样的模式。事实也确实如此,采样模式对最终的质量以及收敛速度会有很大的影响,比如需要做一个最简单的球面采样来计算ambient occlusion,可能就不会使用较原始的均匀分面采样,而会使用Cosine weighted sampling(属于Importance sampling)、spherical s原创 2012-05-19 14:54:11 · 3995 阅读 · 12 评论 -
感悟小结
团队合作:要时时刻刻明白自己不是一个人在战斗,而是与整个团队在合作;善于运用团队的力量,善于为团队贡献力量;付出信任,获得信任谨言慎行:不是说要去世故地做人,而是说要多考虑自己的行动、言语默然间可能会给同事带来的无形的负面影响,且永远不要低估这种影响的负作用戒骄戒躁:新知识永远都用遇到,新问题也永远需要解决,需要用平和的心态来对待各种挑战结队编程:两个人的力量正向相加永远大于一个人的力量抓住重点:原创 2012-10-11 10:03:44 · 2866 阅读 · 4 评论 -
使用Ant自动构建Android版本
Ant是一个很好的跨平台构建工具,特别是对于Java项目,这里使用它对Android工程进行自动化构建可以得到非常大的便利。一般来说对Android工程进行构建主要有以下几个步骤:使用aapt来编译工程生成R.java;使用aapt来对工程所需用的资源进行打包;转换并编译AIDL文件;编译Java源文件并生成.class;转换并压缩.class文件成.dex文件;使用aapt打包生成未原创 2012-11-19 14:03:24 · 4199 阅读 · 0 评论 -
基于NDK的Android防破解
Android程序防破解是发布app时一个很需要考虑的问题,通常的做法是对代码加入混淆干扰以增加破解难度。但即便如此,混淆操作之后的java代码仍然可以被通过各种方法进行破解。在基于NDK的Android中含有相应的main.cpp来作为应用程序的入口,因而在这里进行一些防破解较验,相应的破解难度就会增大不少(相对于java代码)。在Android整个导出过程中,生成.dex阶段是整个打包发布原创 2013-03-04 17:29:02 · 10155 阅读 · 11 评论 -
Ant replace 含有中文时的乱码问题
在Ant中对含有中文的文件作替换操作时会出现乱码的现像:这主要是由于Ant操作文件时的字符集影响,可以在使用该操作时指定字符集的编码方式:encoding="utf-8" dir="${basedir}">原创 2013-02-21 17:28:34 · 5880 阅读 · 0 评论 -
Deferred Shading in Flash with Stage3D
前不久得到了Flash Player 11.6的beta版本,里边增加了不少新的特性,比如对MRT的支持就很不错。有了MRT最直接的好处就可以在Stage3D上实现很流行的Deferred Shading。前不久做了些尝试,最终还是实现了,效果还不错。设置MRT的设备相关函数为:Context3D.setRenderToTexture(texture:TextureBase, enable原创 2013-03-14 21:26:46 · 6788 阅读 · 9 评论 -
图形学中的贴图采样、走样与反走样等
计算机图形学中不可避免的会涉及到图像分析与处理的相关知识,前些时间也重温了下常用到的采样、重建以及纹理贴图等内容,并对其中的走样与反走样有了更多的认识,这里小结一下。1. 基本问题信号的采样与重建过程中首先面临着两个基本的问题:给定一个连续的信号g(x)以及它的离散采样信号gs(x),能否通过gs(x)来完整的描述g(x) 的信息;如果可以,如何通过gs(x)来重建出原始信原创 2013-04-21 00:36:46 · 13915 阅读 · 3 评论 -
Web3D Porting - Emscripten VS FlasCC
前段时间有在搞一些C++到Web3D化相关的一些东西,最近也看到了emscripten,抛开成熟度的话不说,单就技术来说也是挺不错的。其实现方法实际上跟FlasCC差不多,这里对其作一简单的对比总结。1. 流程与环境配置Emscripten的主要流程为:C/C++ -> LLVM -> Emscripten -> JavaScript/HTML其编译环境配置相对来说较为原创 2013-05-14 22:21:57 · 7698 阅读 · 5 评论 -
Multi-Thread Programming Resources for Game Engine
From http://www.geeks3d.com/20100418/game-engine-multi-threading-programming-resources/Here is a collection of links that can be useful for multithreaded programming. Threads creation, data synchr转载 2013-05-24 22:40:05 · 5978 阅读 · 0 评论 -
基于FBX SDK的FBX模型解析与加载 -(一)
1. 简介 FBX是Autodesk的一个用于跨平台的免费三维数据交换的格式(最早不是由Autodesk开发,但后来被其收购),目前被 众多的标准建模软件所支持,在游戏开发领域也常用来作为各种建模工具的标准导出格式。Autodesk提供了基于C++(还有Python)的SDK来实现对FBX格式的各种读写、修改以及转换等操作,之所以如此是因为FBX的格式不是公开的,这也是FBX的诟病之一。与FB原创 2012-01-19 16:45:27 · 80344 阅读 · 46 评论 -
Aliasing vs Noise
Aliasing is a *specific* kind of error; it's when high frequencies show up as low frequencies. It's like information from high frequency content "masquerades" as low frequency content, which is why a原创 2013-11-28 12:35:57 · 4132 阅读 · 0 评论 -
Tetrahedron based light probe interpolation(基于四面体的Light Probe插值)
在当前的游戏引擎中,使用Light Probe来计算全局环境光对于动态物体的影响是一种很主流的方法。在预处理阶段生成完场景的Light Probe之后,传统的方法采用查找最近的8个相邻的Probe然后使用三线性的方式(Trilinear Interpolation)进行插值,但是这样的插值代价稍大,不过一个可行的优化就是尽可能地减少插值中使用的Probe的数量,比如由8个减少到4个不等。但是这时就原创 2012-04-21 23:06:36 · 7842 阅读 · 1 评论 -
使用XeLaTeX/XeTeX编译中文文档
最近需要写一些文档,就重新用到了LaTeX。不得不说,这个东西真是个好东西,之前在学校写论文那会就已经充分发现它相对于Word来排版的优势。不过之前所写的文档都是用的现成模板,而且其中的中文字体多是宋体。现在老是觉着用微软雅黑排出来的中文版式比宋体更漂亮,因此就想把之前的格式均转化成微软雅黑的。但是普通的中文都是使用CJK包来扩展,而且可以支持的中文字体也很有限,最近搜索后发现XeLaTeX对中文原创 2012-01-13 17:37:39 · 43948 阅读 · 2 评论 -
基于FBX SDK的FBX模型解析与加载 -(二)
5. 加载材质 Material是一个模型渲染时必不可少的部分,当然,这些信息也被存到了FBX之中(甚至各种贴图等也可以直接内嵌到FBX内部),就需要从FBX中加载这些信息以完成带有材质的渲染。材质的加载可以与Mesh的加载相结合来完成,但更好的方法是独立进行,这样各模块间的关系更清晰,但这就需要一个额外的操作,那就是关联Mesh与Material。FBX中的材质对象包含了丰富的信息,比如最常原创 2012-01-19 22:27:00 · 25319 阅读 · 13 评论 -
基于FBX SDK的FBX模型解析与加载 -(四)
8. 骨骼蒙皮动画骨骼蒙皮动画是当前游戏引擎中最常用的一种动画方式,关于其基本原理网络上的资料较多,关于到涉及的其它较复杂操作,如插值、融合等在这里也就先不再讨论了,而且其实现方式也与具体引擎的动作管理系统相关;在这里就主要简单介绍一下如何从FBX里加载骨骼以及蒙皮信息并完成最基本的蒙皮动画效果。骨骼动画的实现主要包括骨骼的驱动和蒙皮两部分操作,骨骼的驱动在前一篇中介绍动画数据的加载时已经完成原创 2012-02-03 19:26:02 · 21146 阅读 · 12 评论 -
基于FBX SDK的FBX模型解析与加载 -(三)
6. 加载Camera和Light在FBX模型中除了几何数据外较为常用的信息可能就是Camera和Light,虽然在游戏中一般不直接从模型中得到这两部分信息,而是由引擎来提供,但是FBX中提供了对这些信息保存的支持。其实单纯加载这两部分的信息很简单,就像之前介绍的在整个Scene Graph中对每个Node遍历过程中,判断得到当前结点是Camera或Light时调用相应的ProcessCame原创 2012-02-02 19:32:00 · 18345 阅读 · 11 评论 -
Normal Transformation(法线变换)
关于三维空间法线变换的问题,之前就有看到过,但是一直也木有注意,普通的三维空间中的法线变换还是直接使用模型的变换矩阵来进行。但是,近来又看到了一些这方面相关的东西,因而总结一下。已经知道不能直接用模型变换矩阵来变换Normal,比如使用某含有非一致性缩放(在x,y,z方向上进行不程度的拉伸)的变换矩阵来变换一球体,则可能得到如下列图示的结果: 左图为原始球体及其表面上的法向分布(2D原创 2012-02-22 23:47:22 · 9461 阅读 · 0 评论 -
Bent Normal (环境法线?)
前段时间读论文看到了Bent Normal这个概念,找了些相关的资料学习了一下。Bent Normal常见于离线的Ambient Occlusion渲染中(中文翻译过来应该叫做环境法线?网上搜索看有些地方是这么叫的),从它的字面意思中即可以看出其同样是一种Normal,只不过是做了修改变形(Bent)。这个Bent是如何计算而来的呢?这个Bent Normal又有什么用外呢?这里做个简单的介绍。原创 2012-02-19 20:58:15 · 18879 阅读 · 0 评论 -
使用UMFPACK求解大型稀疏矩阵方程
最近在对模型进行PRT处理时需要用到最小二乘法来做采样点的优化拟合,对最小二乘法有了解的可能就会知道(http://en.wikipedia.org/wiki/Least_squares),一般情况下为了便于目标点的计算通常会引入矩阵并得到一个如下的矩阵方程:Ax = b其中的x就是一个关于目标点的参数列向量,b是对应的观测值向量,而A就是根据应该背景得到的数据矩阵。求解这个矩阵形式的线性原创 2012-03-12 13:47:51 · 13012 阅读 · 9 评论 -
Point与AABB间的最远点对
最近需要做一些碰撞检测相关的东西。AABB是游戏引擎中最常用的碰撞基本体了,具有各种优良的特性。其本身的自交判断很简单(这句话咋恁别扭呢*~*),而且与其它形体的相交判断也不是很复杂。求一点到AABB上的最近点对很常用,也比较简单,代码如下所示:void ClosestPtPointAABB(const Point& p , const AABB& b , Point& q){ for (原创 2012-03-14 00:30:52 · 2821 阅读 · 0 评论 -
Rodrigues' Rotation Matrix(罗德里格旋转矩阵)
使用蒙特卡洛方法做半球面采样时遇到有这样的一个问题:默认产生的采样向量组所在的半球面是Y轴(或其它轴)所对应的方向,但是在使用时可能就需要根据法向量对其进行变换,于是就有了这样一个问题,给定两个向量V0和V1 计算出一旋转矩阵R得到:R V0 =V1这个问题其实蛮简单,可以直接用两个向量的点积与叉乘计算出对应的夹角与旋转轴,然后组合出旋转矩阵即可(http://en.wikipedia.o原创 2012-03-15 23:38:18 · 24032 阅读 · 3 评论 -
Barycentric Coordinates of Tetrahedron (计算四面体的重心坐标)
四面体应该是说空间体状结构的最简单形式,只需要四个顶点就可以构成,某些情况下可能需要用四面体来做一些插值之类的操作,或是碰撞检测(比如判断一个点是否在四面体的内部),这些都可以用其重心坐标来成(Barycentric Coordinates)。四面体的重心坐标跟三角形的重心坐标类似,都是找到组成四面体的几个顶点与目标点之间的权重关系,进而来描述该目标点。一般情况下,三角形重心坐标的计算方法是使用对原创 2012-04-03 16:02:02 · 15378 阅读 · 2 评论 -
Deferred Shading VS Deferred Lighting
鉴于传统的Forward Rendering对于多光源渲染时的低效问题,各种Deferred Rendering的方法被提出并且广泛使用。比如Deferred Shading以及其之后的Deferred Lighting。Deferred方法相对于传统Forward Rendering最主要区别都是提高了对多光源渲染时的效率,它是是将光源的计算转到屏幕空间来进行,进而不浪费无效的光源着色。Defe原创 2012-04-08 00:43:20 · 21144 阅读 · 1 评论 -
几种主流贴图压缩算法的实现原理
前段时间一直在搞项目上线前的各种优化,关于贴图压缩这块也是需要针对不同的平台做不同的设置,这里备忘一下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。关于移动平台和硬件设备与压缩格式的对应关系可以参考下这里,基本上比较清楚了。1. DXTCDXTC(或BC)为微软为DX而推出的基于block的贴图压缩格式,其主要采用调色板的原理来进行压缩。BC1原创 2016-03-15 23:29:09 · 31310 阅读 · 2 评论