|
|
November 10 blogger再次被封之后的一些变通的办法 用代理,用tor,用pkblogs.com的老方式就不说了。最近发现beta.blogger的后台上不了了,这个是真正最要命的东西。后来看到好像封的是dns,在host文件中添加ip: 72.14.219.190 beta.blogger.com 就行了。 最近beta.blogger进行了更新,支持原来的ftp发布,这样就可以注册免费的ftp空间,将blogger的内容发布到ftp上去。有个免费的空间sitesled.com,好像有250兆大小,注册立即开通。可惜的是选择了发布到ftp之后,功能上受一定限制,只能用经典模版。 搞不懂为什么封杀blogspot.com,最近wordpress.com反而解禁了,geocity也解禁了,不知道是为什么。 关于中医的一点想法 一般有吐故纳新的机会,我都是个先锋人物,但是对于中医我还是很宽容的。 很早我就知道有人反对中医,说中医是伪科学。后来还听罗永浩讲,说同仁堂有一种药里面含有导致尿毒症之类的物质,卖了很多年,直到有人吃出了毛病。最近还有什么万人签名抵制中医。前些天更在论坛上读到,韩国要把中医改成了韩医申报世界遗产,虽然事后说明这是个炒作,但是我仍然觉得这是个搞笑的事情。我们自己对自己的文化遗产都不珍惜,反而要被别人抢了去。 反对中医的原因大概就在于“没有理论,基于经验”这几个字上。其实我觉得这也没什么,经验本身就是一种科学理论。世界上的事有多少能讲清楚为什么?试验本身就是一种科学的研究方法,爱迪生为了找到灯丝试验了多少材料?这和李时珍遍尝百草又有什么分别?牛顿力学定律算得上是有理论支撑吗?其实还不是牛顿一厢情愿的经验总结,苹果砸头得到的结论。到头来,还不是被别人证明在某些环境下并不适用。目前使用的理论就是解释万物的真理吗?自然也不是。 既然在科学上,人们并不苛求理论的完整,对于试验方式的探索也很宽容,那为什么对中医这么耿耿于怀呢?到底有没有人统计过死于中药的和死于吸烟的人数,到底应该先禁烟还是先禁中医?到底中医杀的人多还是救活的人多呢?中医让人稀里糊涂地活,西医让人明明白白地死,这话没错。 即便说中药可能有副作用,在盒子上面注明一下也就行了,决定权在于吃药的人。做什么事情没有风险?出门上街还可能被车撞死,难道就不出门了?让大家知道中药潜在的副作用就行了,吃与不吃是每个人的自由。 其实我倒是觉得,如果古代的中国能多一点中医的精神,近代艺术和科技上绝不至于落后西方国家。看看那些学究,一天到晚就知道死看书,一点动手的意识都没有。太缺乏中医的精神了。我实在不欣赏国画,也列不出什么近代发明创造,算起来混事的名号如何也轮不到中医啊。 鲁迅,立论 网上找来鲁迅一篇小文,很有意思。 鲁迅:立论 我梦见自己正在小学校的讲堂上预备作文,向老师请教立论的方法。 “难!”老师从眼镜圈外斜射出眼光来,看着我,说:“我告诉你一件事—— 一家人家生了一个男孩,合家高兴透顶了。满月的时候,抱出来给客人看,——大概自然是想得一点好兆头。” “一个说:‘这孩子将来要发财的。’他于是得到一番感谢。 “一个说:‘这孩子将来是要死的。’他于是得到一顿大家合力的痛打。 “说要死的必然,说富贵的许谎。但说谎的得好报,说必然的遭打。你……” “我愿意既不说谎,也不遭打。那么,老师,我得怎么说呢?” “那么,你得说:‘啊呀!这孩子呵!您瞧!那么……。阿唷!哈哈!Hehe!he,he he he he!’” 一九二五年七月八日。  我很想把pillow做成像zbrush和mudbox那样的笔刷建模工具,因为这样的工具可以做出很逼真的细节。实现这个想法就要用到 displacement mapping。我习惯叫这个东西置换贴图,但是今天看到有人翻译成位移映射,似乎更准确。翻译一篇介绍,原文来自维基百科。 位移映射是同凹凸贴图,法线贴图,切线贴图相区别的另一种制造凹凸细节的技术,它使用一个高度贴图制造出几何物体表面上点的位置被替换到另一位置的效果。这种效果通常是让点的位置沿面法线移动一个贴图中定义的距离。它使得贴图具备了表现细节和深度的能力,且可以同时允许自我遮盖,自我投影和呈现边缘轮廓。而另一方面,这种技术是同类技术中消耗性能最大的,因为它需要额外的增加大量几何信息。 很多年来,位移映射是高端渲染器独有的功能,比如说 RenderMan,而那些实时的程序接口,比如说OpenGL和DirectX,则缺少对这个技术的支持。一个原因是,最初的实现方法需要对物体表面进行自适应细分来得到许多微小的面,这些面的尺寸投影到屏幕上刚好是一个像素的大小。 现在图形硬件已经支持Shader Model 3.0了,位移映射可以通过一种向量贴图的方式来实现,这个向量贴图并不像普通贴图那样改变物体表面的颜色,而是改变物体表面点的位置。它不像凹凸贴图,法线和切线贴图,因为这些技术都是在制造凹凸效果的假象,而位移应设是真正通过贴图的方式制造出凹凸的表面。它必须要配合细分算法,增加渲染的多边形数目来制造出细节的效果。
Brief of pillow in English Pillow is a light weight application on which I' m working lately, the current aim is to make a simple modeller along the lines of commercial modeller silo. The project is at a very early stage implementing some basic modelling operations, such as "move", "rotate", "scale", "weld", "split" on objects and sub-objects like vertices, edges and faces, and also catmull-clark subdivision. Because pillow is under developing, there are problems, but it is still a good start point for me, 'cause as far as I know, lots of teams of identical applications take a long time to develop, normally in years, and pillow is only a 2-month job that I' m doing alone.
On history: I got the idea of doing a modeller of myself in Oct 2004, at that time I was learning directx by myself, and I thought of actually making something to get familiar with the skills, so I decided to write this application. I set the silo modeller as my goal, for one thing, silo adapts a reasonable set of shortcut keys which I believe can speed up the progress of modelling, and also, silo is small in size. However, after I had the idea, I didn't have the time to concrete it until this summer, I got myself graduated. I have bunch of names for this application, first "cedar" and then "polygon studio" and "clayshop", and now I' m calling it "pillow". On code: Since I decided to practice directx with pillow, the first version is written with c# and managed directx. I also used a game engine called truevision3d, because functions like object-picking are out there already. But due to the huge data structures of game engine, the code's performance was very poor. So, then, I tried to code directly with directx. The current version is rewritten with c++ and opengl. The GUI library I use is wxwidget. I always care a lot about the user interface of my program. I don't think the appearance of products is of trifle. If the gorgeous design of apple computer was taken away, the company that never compatible with others would not survive in the market. However, I cannot find a good GUI library for my job, I need a cross platform, open source, skinable library with plenty of controls. While doing this application, I tried cegui, wxwidget, qt4, and picked up wxwidget finally.
The code is divided into 3 main layers, the ui layer undertakes the job of interacting with users, and displays the result of operations. The scene layer is in the middle, managing the 3d scene, converting the graphics operations to primitive operations on data structures. This part is actually the core of the whole program. The data structure is in the deepest layer which contains the data of the scene. The communication between the scene layer and the data layer is strictly defined as a set of commands; every command is tracked by a thing called history manager to enable users to restore at any time. As in the image, blue arrow is the flows of commands, the purple one is commands recording and the red ones are the data flows. Currently, pillow doesn't support undo and redo. Although I already implement these operations, I didn't combine them with the ui. Because this part is easy to leak memory, I need to make sure other parts works fine before I add these functions.
when I was coding undo and redo part, I first thought of making commands, and every command has its inversion, and when I need to undo an operation, I simply call the inverse command. Yet, some operations, say calculating the average number, don't have commands in inversion. I could keep a record of the situation before the average happens, but this is a silly way. and then I thought up dividing the operations into layers, because no matter how complex a graphics command might be, it finally modifies the primitive data structures and the primitive operations on data structures can be simply defined as "new", "modify", "remove", so I only need to keep a record of these basic operations to hold the history of all the graphics operations. Actually, there are dozens of primitive operations defined in my code, more than just "new", "remove" and "modify".
So what is history manager? It is an undo queue and a redo stack, commands are pushed into the head of the queue, if they reach the end of the queue, and they are discarded. When the user wants to undo a step, a command will be popped and executed, at the same time, an inverse command be pushed into the redo stack. And if redo happens, just do everything in the backward.
How to prevent memory leak? My design is centralizing the management of all pointers; this is what I call data pool. It is actually a dynamic array to store pointers. Every function can use the data, but cannot new it or release it. There are two ways to release the data, first, if the remove operation needs to be recorded by the history manager, pass the pointer to the history manager, and as the record log is discarded by the history manager, the pointer is released. Second, if the operation does not need to be recorded, release it directly through the data pool. By adopting this, I can guarantee that, at any time, every data in the heap has at least one pointer stored in the data pool. One more thing: When I first showed people my idea of doing pillow, somebody asked what the unique feature of my polygon modeller is, since there are so many of them. I do want to do something special, but just before going creative, I need a base. And this is why I make pillow. I dreamed of making an application that combines the traditional sculpture progress with the cg making operations enabling people to create the shape more directly. I have already found some directions like the commercial software zbrush, mudbox and the teddy demo. So this is what I really wanna do in the future. Hope I can insist on doing this. Some resources: A tutorial on box modelling in pillow: http://billconan.blogspot.com/2006/10/pillow-01a.html A piece of flash showing how pillow works in action: http://billconan.blogspot.com/2006/10/wink.html
美剧,我认真看过的美剧 我做大多数事情都没有耐性,包括玩游戏。我玩通的游戏好像也不多,倒是看过不少美剧,算是我一个主要的爱好。我觉得美剧即便情节再科幻,看起来也要比国产的电视剧来的真实。我曾经听说《董存瑞》那个电影的编剧承认手举炸药包说的“为了”云云是“艺术再加工”。“再加工”我懂,“艺术”我实在是看不出来。美剧里面的人,即便英雄也可能死的很平静,所以比较真实。我很想写几句,说一下我认真看过的剧: 1、六人行 看六人行的原因其实很俗,为了学英语。但是看了一季以后就开始关注剧情了。六人行是一个很平实的剧。甚至到现在我已经想不起来很多故事的细节了,只记得故事的主线,但是仍然能想起当时看的时候很愉快。六人行虽然是个喜剧,但是最让我记忆深刻的情节不是搞笑的画面:第二季的时候讲六人楼下住了一个老头,那个老头特事儿,经常要找六个人的麻烦,嫌他们很吵。但是突然有一天老头挂了,而且还把他的公寓留给这六个人。他们去收拾完遗物的时候,钱德勒对着空屋子说,we try to keep it down。这个剧情看完了老有一种说不出来的感觉,至今还都记得。六人行是那种看完了能空虚的剧,让人一时间不知道该干什么了。 2、CSI 我一直对法医这个行业特别有兴趣,我不止一次说如果被迫要去学医,我一定当个法医。普通的医生用刀分析瘤子,法医用刀剖析的则是故事。最开始听说CSI讲法医的故事,我就非常有兴趣,并且听说它在讲故事的过程中演示很多法医的原理。CSI虽然讲的是罪案,但不是那种很紧张的剧。我觉得看了这么多季,它里面实际上在讲犯罪,讲人性,讲法医这个职业。我觉得法医是个挺不容易的职业,需要有很强的敬业精神,法医同时也不被人理解的人群,感觉他们生活的圈子挺小的,就是同事几个人。CSI系列实际上分为3个剧,我只看拉斯维加斯版的。 3、越狱 越狱是个比较火的剧,但是很可惜在第二季的时候走了下坡路。我总感觉好像那些编剧没有料到越狱能拍到第二季似的,因为明显第一局的情节很有章法,有一根主线,那就是逃跑,每当主人公遇到危险,情节脱离了这个线的时候,观众就能感到紧张。密集的情节让观众忽视了很多的bug,即便最后发现了,也都原谅了编剧。但是第二季有点不温不火,而且剧情发展没有一个很好的目标,感觉众人像在遛弯一样。不过这个状况好像在变。 4、24小时 讲的是一个莽撞的不死小伙儿的不死故事。这个剧纯粹是因为情节比较紧张,容易上瘾我才看了2季。看的时候停不住,但是事后觉得也就是那么回事。主人公和他的几个同事强的已经近乎科幻了。在24小时里面,中国人的形象并不光彩。这让我想起了前段时间谍中谍被禁放的事。我其实一开始也不太舒服,但是后来看到一个论坛的帖子才把这个事情看明白,24从头到尾实际上讽刺的都是美国人自己,在第5季的时候,他们连自己的总统形象都给颠覆了。我觉得能这么做挺了不起的,没有什么绝对的权威,即便是总统也可能龌龊做坏事。拍拍电视嘛,何必较真。能拍出这样电视剧的社会一定是个宽容的社会,中国拍同样的剧情肯定不让放的。 5、Cold Case cold case应该不是很热门的剧,但是我喜欢。它讲的是一些侦探专门破获那些陈年旧案,昭雪沉冤的故事。应该说在罪案剧当中算是比较温馨的一部,尤其是看到受害者的影子在对着这些侦探们笑的时候。这个剧的音乐是比较考究的。 6、Heroes 我好像看到一个地方把这个剧翻译成“逞能英雄”,挺有意思的。讲的是一群有特异功能的人阻止一个至今还没有看出名堂的大阴谋,据说是电视剧版本的x战警。不过主角们都是些草根人物,穿着也不算怪异。这个剧是才出来的,据说已经被电视台预订了一整季。是比较有潜力火的一部。特技也还不错,死尸做的很恐怖,很能满足视觉刺激的要求。 7、futurama 这个是动画片,以前专门写过一个帖子介绍了一下,这里就不重复了。简直是太棒了。 just another way to grab blogger to wordpress 把blogger备份到wordpress after i did the blogger backup, i decided to actually make a backup at wordpress.com. the wordpress.com is banned in china, so i used tor. however, the official importer for blogger seems to be complex to use, it will change some blogger settings. you have to backup your template and settings to restore your blog in case of trouble. i just cannot take the risk on ruining this site, and since i just did a blogger backup app, i had the idea of modifying the blogger backup to generate wordpress files. AND IT WORKS! just import all my blogger entries to http://billconan.wordpress.com/ . 刚刚写完blogger backup之后,我想在wordpress.com上面真备份一个博客,用tor代理上的。但是官方的导入工具好像要更改blogger的设置,所以用户必须先备份模版和设置。并且我试了一下,登陆不成功。我不敢冒险毁了我这个站,所以想到干脆改一下刚才的blogger backup,让它能生成wordpress的导入文件。现在我已经将这个站点的所有文章备份在了http: //billconan.wordpress.com/ 。 blogger backup 备份blogger全站的工具  it seems that the censorship on wikipedia.org, which used to be strict, is kinda relax recently. i can log on to that site now without any extra effort, no proxy, no tor. and today there are lots of people talk about this, they are afraid this is only temporary. so i thought of blogspot.com, how, if they banned blogspot.com again? i need a tool to download all the entries of my blog and save to a file as a backup. you know, sometimes, it is hard to be chinese. i actually did this by modifying the sample code enclosed in the google api pack. for some reason, probably the poor network, the app doesn't work sometimes, so, just try more times.
How-to-use: 1.specify the login name and password. 2.click "GO" button and wait. 3.all the blogs under this name will be available in the choose control, just choose the one you want. 4.wait for a while, and all the entries show up in the tree view. click "save" button to export to a html file. 最近好像wikipedia.org要解禁了,我已经可以不用代理访问到英文的维基百科。网上最近关于这个事情的讨论挺多的,有人担心是临时现象,空欢喜一场。我于是想到万一哪天blogspot.com再次冷不丁被封该怎么办。于是我觉得应该有个能备份整个站点的程序。我这个程序实际上就是从google api里面附带的例子改的,但是有些时候运行不成功,要多试几次。现在只能抓html的代码,看看哪天有时间做一个能把图片也都抓下来的。 这个的用法是这样的: 1.填写好你的用户名和密码。 2.点击GO按钮等一下。 3.然后所有在这个用户名下的博客都出现在下拉选择中,选择要备份的那个。 4.再等,然后所有的网志就出现在树形列表中了,按存储按钮,可以生成一个html的文件。 this is how a buckup file looks in firefox: 备份的文件在firefox里面的效果: click here to download 点击此处下载one more thing is, blogger backup is writen with c#, so .net framework 2.0 is necessary to run the app. c#写的,要.net 2.0才能运行 学究一下,编了一个radiosity辐射度渲染程序  今天我编了一个radiosity的偷懒算法程序。 很早以前,我在 azure的博客上看到他做了一个辐射度的渲染程序。当时我没有仔细看,但是有一点印象特别深,就是他把摄影机摆在patch上来模拟能量的入射。我不知道这个想法是不是他原创,但是真的是太聪明的一个偷懒办法了。传统的辐射度需要做很多射线,然后再和多边形求交,现在可以用现成的摄影机来替代,简直太省事了。 这样一来,辐射度程序实际上变成了这样的一个过程: 首先组织好一个场景,这一步我是在3D Max里随便做了一个房间,房间上开了一个窗户,用来透进点亮光,作为初始的光源。房间的中间放了一个柱子,主要我想看看这个柱子能形成什么样的影子。在 3D Max中导出成obj格式的文件,然后把里面的数据直接粘帖到代码里,改了改,存放在数组中。 然后为每个面开辟光照贴图的空间,并且计算法线,切线。 将贴图分解成小patch,计算每个小patch中心点在3D场景中的位置,在这个位置上放置摄影机,拍摄当前的场景。将patch中心映射到3D场景中的公式是这样的(四边形v1、v2、v3、v4): v1+(v2-v1)*u+(v4-v1)v 其中uv是贴图坐标,v1、v2、v3、v4是四边形的端点。
渲染的场景存放到一个空间中,我的程序里是一个64见方的数组。然后对这个数据进行分析,得到一个当前patch的颜色。分析的过程是,首先计算这个64见方的图像上每个象素距离中心点的距离,根据这个距离得到一个权重。为什么需要权重呢?因为在传统的辐射度算法中用的是射线来模拟光照,光照对于颜色的影响取决于入射的角度。因为我这里没有用射线,所以无法得到角度,但是摄影机得到的图像中,点的位置离中心越远,说明生成它的入射光线的入射角就越大,所以在最后决定颜色的时候越不重要,这样将所有点的权重计算出来作一个加权平均,得到一个颜色值。但是这还没完,还需要乘以一个数值,这个数值是一个近似的能量衰减。光在传播的过程中能量是衰减的。实际上这个衰减和光的传播距离应该是相关的。在传统的辐射度计算中,射线和多边形相交的同时可以得到这个距离,这样就比较容易计算精确的衰减。但是因为这个是偷懒版的程序,不能得到光源距离当前面长度。所以就简化假设任意距离的光源产生的光照都要衰减一个固定的比例。我的程序里用的0.2。当然也可以这样来假设,光源距离当前物体非常远,而当前物体中(我的这个房子)的所有面之间的距离相对于这个光源与这个房子之间的距离可以忽略不计,这样的话房子中各物体的衰减差别不大,就近似成一样的。 以上就是我的懒汉版光照模型。 一开始我在这个程序中用的贴图是 128*128的,感觉稍微有些粗糙,后来改用256*256的,速度明显变慢了。不过最后出来的结果我总觉得别扭,但是又看不出来问题。不知道是不是我的懒汉光照模型有问题,还是我的程序什么地方疵了。有时间再看看。左边这个图显示的是如何从最开始的初始场景逐步照亮的过程,就第一次辐射变化比较明显,后面的变化及其细微。
维基百科周年祭 转眼已经到了10月份,昨天突然一下就冷了。算起来维基百科挂了也有一年了吧,有多少人还记得他呢,我觉得有识之士都应该来写一写。每本被烧的书都照亮了世界。这是爱默生的名句,说的多好啊。当然我也承认,这句话套用到网络上,说每一个被封掉的网络都曾经照亮了世界,确实有些过了,因为的确有比较龌龊的站点。但是维基百科,确实是照亮了世界。 好像封杀网络的原则是这样的,已知有一个新站,则首先把它放在被封杀之列,然后如果比较老实再酌情解禁。比如说wordpress.com吧,因为是一个任何人都可以发表的网站,所以保不准哪天出点什么言论,所以不管三七二十一先给它封了。这分明是典型的人性恶论。共产主义者不是首先应该是人性善论者么?马克思,你说是吧。 明哲保身吧,我才不要当什么夏明翰。引用一些名人名言,可都不是我说的啊: 每本被烧的书都照亮了世界。—— 拉尔夫·沃尔多·爱默生 “未来是那么的不可知”。Technorati的死掉、Google的“连接被重置”,都让我看到了作为一个中国IT工作者的信心。—— 老白 也许哪一天,我们用的都是国货。 我们与中国政府全面合作是因为开始相信“中国改变互联网”,而非“互联网改变中国”。—— 辩护律师 Google、Yahoo、微软及思科在美国国会为有关帮助中国政府进行网络审查的辩护辞。 (这里我补充一句,从长远的角度来看,应该是科技左右政治,比如说工业革命催生资本主义,但是貌似现在这里是政治在左右科技,看看什么是违背历史规律吧) 每一个人,只要是正常人,都有着各种各样千奇百怪的思想。甚至可以说,思想天然就是“异端”。—— 魏武挥,《书籍的版权》 不多久,蜘蛛也要备案才准上网了。——网友 重庆要求个人在家上网也要备案。 现实中用真名说假话,网络中用假名说真话。—— 西山晴雪 ……不光是挡住了你们不舒服的信息,也挡住了中国人同世界对话的路。唉,能将就看点就将就看点吧。其实在这个问题上,是不屈服全部不能看好呢?还是屈服一点然后也能将就看一点好呢?我是倾向于后者的。—— Wales Tor 这个工具不是用于绕过什么的,而只是用于防止私人信息泄露的。任何人都可以安装Tor的服务器,安装后就可以方便地得到全部在线服务器的IP,并且,你用 Tor连接时很可能会经过这个假的服务器,然后就无所遁形了。所以也不要对它太有信心。—— Boingboing在说明德国人Tor事件的贴子中指出 只要我还能有所选择,我就只想生活在这样的国家里,这个国家中所实行的是:公民自由、宽容,以及在法律面前公民一律平等。公民自由意味着人们有用言语和文字表示其政治信念的自由;宽容意味着尊重别人的无论哪种可能有的信念。—— 阿尔伯特·爱因斯坦 一部分儿童有思考的习惯,而教育的目的在于铲除他们的这种习惯。—— 伯特兰·罗素 从每天上学的时间看,中国儿童最有思想。(目前互联网也在做同样的事) 有些同志有信心封掉一切可能的风险,是因为有些同志对中国的网民没信心。我们总是以最没有信心的方式,来表现我们的信心。或许有一天,当中国网民对所有国外的服务都不再有信心,一定会有人因此自信心爆棚。这几乎是一定的。—— keso 把有限的技术,集中到封锁网站上。 网民人数多;言论渠道不畅。—— 网友 论坛在中国特别火的原因。 谈恋爱是以自欺始,欺人终;搞政治是以欺人始,以自欺终。—— 李敖 “和”的右边是口,就是说人人都有饭吃;“谐”的左边是“言”,就是人人都可以说话。—— 张贤亮 全国政协委员、作家张贤亮所理解的“和谐社会”的基本精神。 不 矢口 亻十 幺 日寸 候,亻奄 口斤 言兑 言仑 土云 有 辶寸 氵虑 白勺 言兑 氵去,于 是,亻奄 学 会 了 扌斥 字。后 来 , 亻奄 米青 礻申 分 裂 了。—— 网友 请以恰当的格式阅读…… 我不同意你的观点,但我誓死捍卫你说话的权利。—— 伏尔泰 在人类文明史上,哪个国家是靠政府管制做起来的?几乎没有。政府管制和不受制约的行政权力,是贫富差距恶化的根本原因。—— 陈志武,《陈志武专访:正视我们的不幸福》 仙剑奇侠传3模型文件格式分析(2) 这个上接我这个博客的第一篇日志:仙剑奇侠传3模型文件格式分析(1)。实际上我真正看这个模型的时候好像是六月份。而写上一篇文章的时候在8月份。而这一篇拖了很久。我最开始想至少写3篇,因为虽然模型的扩展名是一样的,都是pol文件,但是实际上里面的数据有差别。比如说场景模型有个光照贴图的坐标,而在物体模型里面就没有。而现在主要分析的是物体的模型。我最初想写这个东西是因为我想要记录一下我当时思考的过程,结果倒是次要的。因为把仙剑奇侠转3的模型拆出来一看其实也就那么回事。但是现在隔的时间有点太长了,很多东西只能记得结论,当时怎么想的现在已经想不起来了。 上回说到发现一个模型文件可能会包含很多组模型,并且在头部0x08的位置有个数值记录了这个数目。这样通过分析拥有多个模型的文件和只有单个模型的文件可以得到模型的头部长。计算的方法是这样的: 假设整个文件有个公共的头部长度x,而每个模型有个自己的头长度为y,文件中包含的模型数目为c,假设一个只有1个模型的文件数据开始位置是a,一个有3个模型的文件数据开始是b,那么这样列个方程,就可以求出每个模型的头部长度。 x+y=a; x+3y=b; 经过比较几个模型文件,我发现很多模型的数据开始的位置(0x58)都是1500 0000。这个是一个比较奇怪的现象,因为按照我先前的分析,这个应该是贴图坐标,但是这么多的模型的贴图坐标怎么可能这么一致呢?再发现,如果按照先前假设的,FFFF FFFF 是顶点信息的结束标志,那么为什么最后一个顶点(box.pol文件)的FFFF FFFF 后面紧跟着一个295C 7F3F 295C 7F3F ,而这个数据和前面一个顶点的295C 7F3F 00D7 233B 数据这么相像。所以我开始意识到,FFFF FFFF 应该不是顶点的结束标志。因为一开始我先入为主地认为顶点有结束标志,所以我认为在头部没有顶点的总数信息,但是现在看来应该是有的。由于已知这个文件中有16个顶点,所以一眼就能看到在顶点数据区前面,0x5c的位置上有个1000 0000 数值,这不正是顶点的数目么。这下也就说明顶点的数据开始于0x60,且0x5c是顶点的数目,FFFF FFFF 不是顶点数据的结束标志,顶点的结构应该是这样的: struct vertex { float x; float y; float z; int FFFFFFFF; float u; float v; } 通过和其他的文件比较可以发现,每个模型的头部有24字节长。每个顶点数据区域最开始有个头,其中最后4个字节是顶点的数目。整个文件的头有56字节长,第5个字节开始是文件包含的模型数目。 按照这个理论把程序改了一下,发现贴图坐标也正常了。 所以现在的结论是这样的: 文件头 -文件标识 -不知道的内容 -文件所包含的模型数目 -不知道的内容 每个模型的头 每个模型的数据 -顶点的数据 --顶点数据区的头 --每个顶点的数据 ---顶点位置坐标 ---FFFF FFFF ---顶点贴图坐标 -贴图数据(固定长度) -面数据 --面数据头(包含了面的数目) --面的数据 按照这个理论实现的程序: xj3Model.c这个程序运行以后可以把仙剑3的模型转换成obj的格式。经过测试,可以转换90%的模型,还有很多2K左右的文件处理不了,估计是索引文件,我没有仔细研究了。导入到3D Max里面基本上就是这个样子: 
 总结:愣看文件格式需要耐心和运气,像我看这个模型格式的运气就在于有一个box.pol的文件,这个文件名给了我暗示。另外就是文件中存在的FFFF FFFF ,虽然我最开始的假设是错误的,但是些字节还是整个文件的一个突破口。不过真把模型拆出来觉得意思也不大,感觉这些模型做的挺普通的。有时间我会把拆场景模型的文章也补上。 用google的code search偷窥别人密码  前几天google推出代码搜索的时候我觉得没什么用处,今天看到个消息说可以用来查看wordpress的密码。好主意!我搜了一下,出来不少,全都是 zip文件或者tar.gz文件里的代码。有的人给自己的博客作了个备份还上传到网上,结果被google偷看到了。不过这些站点都比较敏感,已经删除了备份,更改了密码。看来以后又有的玩了,不知道还能用这个找到什么东西。rar比较安全啊,以后要少用zip文件。
一段美国校园枪击事件的视频 今天看到一段视频很恐怖。已经很久没有被这样吓到过了。这个视频讲述了美国一次校园枪击事件。后来了解到这段视频是一部电影的一部分,心里能稍微舒服些。这个电影讲述的是99年哥伦比亚高中的一次枪击事件。据说真实的录影要比这个更加恐怖和混乱。这个电影的官方网站在这里:http://www.zerodaythemovie.com/。导演能想到用监视录像的视角来讲述事情的经过,的确很有想象力。直到现在还有不少人在讨论这个视频是真是假。这是关于这个真实事件的介绍:1999年4月 20日两个哥伦比亚高中学生冲进校园,用半自动武器、鸟枪和一批爆炸物杀死了1位老师,12名学生,然后自杀。另有26人受伤。当日11时19分,两名学生来到校外。其中一名大叫“出来!出来!”并当即向5名学生射击,造成两人死亡。随后,持枪者向门窗射击并将自制的炸弹扔上房顶。持枪者随之进入图书馆进行屠杀。最后两名凶手自杀身亡。哥伦比亚高中惨案美国历史上最严重的枪击事件。据说关于这个事件有个纪录片,叫做《Bowling for Columbine》。里面有真的录像,场面比这个乱,两人在食堂扔手榴弹也被拍下来了,食堂一角都着火了。叫这个名字是因为这两个杀手在开枪行凶以前还去打了场保龄球。真是挺变态的。 最近很关注类似youtube的网站,浪费了不少时间。 关于做饭乐趣的一点浅见 昨天不幸错过了一个饭局,回来的时候很饿,思考了些东西。以前我从来不做饭的时候不明白为什么有人会声称自己喜欢做饭。因为那个时候我总是站在一个食客的角度在看。我当时的理论是,吃饭要有视觉味觉冲击,比方说饿了很久的人突然暴露在饭前,这一顿一定吃的很爽。我当时举例说爬山。自己爬山,这个过渡太缓慢了,没有那种突然居高临下的刺激,我说我更爱坐飞机,从上面突然往下看。而自己做饭也是一样,从没饭到有饭的过程过于缓慢,没有了刺激,吃的时候怎么会爽呢。于是当年我猜想,好吃的不好做,好做的不好吃。现在要自己做饭了,突然明白做饭的乐趣绝对不在于最后的一吃。当然也不是做的过程,因为要满足自己的动手欲望的方式有很多,完全可以做点别的东西,比如编程序,拼积木模型什么的,为什么要单单做饭呢?我觉得做饭的乐趣在于做好了之后叫别的人来吃,然后听到好的评价。做饭和吃饭的乐趣我觉得只有两种,第一是做别人吃的饭,第二是吃别人做的饭。“吃白食”三个字可是很好的调味剂,即便天上掉的馅饼没有自己做的好,吃起来总有一种不劳而获的优越感。所以说,最不幸的就是做饭给自己吃的人,像我,既没有别人的夸赞,又没有吃白食的喜悦感。所以现在给自己做饭越来越对付了。 不过我这些想法都是站在一个懒人的角度来考虑的。其实当年我那个爬山的比喻还有一层意思:自己挪步登高太累了,最后看到的风景也未必有画上的好。而坐飞机是4个引擎驼你上去,惰性得到了充分的愉悦。什么时候要是我把懒也戒了,这些东西自然会有另一套说法。不过这怎么可能呢! 做饭的人和吃饭的人会有什么共同的痛苦么?有的--饭后都有可能被叫去刷碗。 耳聪目明的我 很早就听说年岁越轻的人对高频的声音越敏感,有些人利用这个原理设计出高频的手机铃音用在课堂上。前天在diglog翻出来一个测试站点,列举了很多频率的声音,看测试的人能听到多高的频率。上面说17.7khz以上的只能被20岁以下的人听到。摆明了就是个年龄测试嘛。测试了一下,以我22岁的高龄,居然可以听到21.1khz,只有最后一个听不到,过度很明显。看来我还年轻啊。后来看一个论坛讨论这个,有人抱怨17.7khz以上就听不见了,我心里更是窃喜。真是精神鸦片啊,太舒服了。有时候在公交车上给小屁孩让座,最怕听他管我叫叔叔。我靠,简直像在我耳边放枪一样!这个是网址:http://www.ultrasonic-ringtones.com/ 难道,是我的音箱暴音了? 前几天用了一个开源的工具来设计界面(www.wxformbuilder.org)。结果发现有个bug,只要存储路径有中文字符,存储就会失败,而且没有任何提示。一下午的工作就白白丢失了。今天自己写程序也遇到这个情况,是fstream的问题。默认的情况下不支持中文路径。fopen就可以。 查到一篇文章讲这个,一定程度上能解决问题: 问题: 有时候用ifstream或ofstream打开带有中文路径的文件会失败。 解决办法: 1、使用C语言的函数设置为中文运行环境 setlocale(LC_ALL,"Chinese-simplified"); 2、使用STL函数设置为系统语言环境 std::locale::global(std::locale("")); 当然选2啦! 但是据说这样之后cout又不能输出中文了。 用Torpark来避开封锁 前天在diglog上面看到新推出了一款改版的firefox,据说可以匿名访问,更加安全。我当时没有留意。后来链接到出处的网站上,发现官方网站的链接根本打不开,我就觉得有诈。再加上这个软件的名字前面有tor三个字母,我预感这是个可以用来绕过封锁的工具。挂代理,老牛拉慢车一样地连上官方网站,下载之后,果然! 这个工具把tor和firefox整合在了一起。通过tor代理,路经是随机的,走的是哪个国家,你可以通过访问google.com来观察,因为它会自动跳转到相应国家的google去,我第一次走的是加拿大,然后是荷兰还有德国。 tor本来是一个网络安全工具,可是到了咱们这里纯粹用来避开封锁,也是很无奈的事情。下面把我收集到的关于torpark的介绍集中一下。 首先是来自http://www.firefox.hk/的消息: 安全专家打造出了匿名浏览版Firefox 一些关注隐私的编程人员已经推出了一个修改版的Firefox,使得用户能够匿名浏览网页,它名叫Torpark。其创始人是一帮称为Hactivismo的计算机安全高手和隐私专家。[http://torpark.nfshost.com/]这个官方网站被封杀了,需要代理才能上。 每隔几分钟,Torpark浏览器就会作用于电脑的IP地址,使得它好像会改变一样。IP地址是一个分配给联网电脑的数字标识符。IP地址和其它数据可以用来跟踪某个用户,并且不少网站都会跟踪IP地址。 这个浏览器免费提供下载,它是移动版Firefox的一个修改版,而移动版的Firefox是一个优化版的浏览器,它能运行在USB闪存上面。 Torpark浏览器使用加密方法通过Onion路由器来发送数据,而Onion路由器是一个世界范围的网络服务,昵称是“TOR”,它以随机,模糊的方式互相转发数据。 当然,安全是有代价的。用Torpark冲浪的一个小小缺点是,与其它浏览器相比,浏览同一个网站的速度会稍微慢一点。 Torpark警告,从最后一个TOR服务器发送到网站的数据才会被加密。由于只有用户的连接才是匿名的,所以Torpark建议如用户名和密码等敏感数据在浏览有金色锁标志的网站时才使用,而金色锁标志表示这个网站使用了加密。 Torpark的用户界面与Firefox很接近,只有少数的改变。它在右下角显示了网站所见到的IP地址,此外还有一个“Flush TOR”按钮来重置一个新的随即服务器连接。
 然后是官方的简介: Torpark torpark 欢迎来到Torpark官方网站。下载Torpark,把它放在USB闪存里,然后把USB闪存插在家庭,学校或公共场所的任何internet终端上,运行Torpark.exe,它就能自动连接到Tor网络,从而创建一条间接连接你的电脑和Tor网络中存在的电脑的秘密通道,这样你就可以匿名在网上冲浪了。Torpark价格怎样?它是免费的。 你可能听说过那些带有很多广告的次等软件,比如Anonymouzer,SafeSharing, InvisibleIP,SecretSurfer等等。他们不仅要求你付费或赞助,还需要你进行安装。那还怎么做到匿名呢?试试Torpark吧,它体积小,便携,干净,不含任何间谍软件和广告,最吸引人的一点是它是免费的。 注意 Torpark 默认是英文版的,但他包含语言文件,你可以选择你想要的语言。要想更改语言,请按照languages.txt文件中的步骤进行设置。在下一个版本里,我打算在其中加入一个工具,来帮你完成这项设置。 本来还要贴一个tor的中文手册的,但是官方网站上的中文翻译实在太差了。先算了吧。 torpark 有个移动浏览的概念,我觉得挺好的。torpark应该是个绿色的程序,能安装到u盘上面。然后你可以随时随地地在异地打开它来浏览。而且它自己带有一个数据存储的空间,也就是说,你在别人电脑上运行tor你可以看到所有你收集的书签,你在别人电脑上新建的书签也可以保存在自己的有盘上,而不会对别人电脑上的数据有影响。但是这个东西是否需要电脑上安装了firefox才能运行呢?我就不知道了,不过考虑到这个软件的大小,我想答案应该是不需要。 官方网站上不去的,我来做个电驴的下载链接吧,方便找不到代理的兄弟们。
|