上周我给我哥也整了个Wordpress个人博客,前后断断续续折腾了差不多一个星期,博客地址是:
我哥已经零星的贴了一些闲暇时画的东西——革命的雨,他是我爱的兄长,是我从小膜拜的偶像,是一位才华横溢的绝对天才。
另外感谢小行同学慷慨提供的超大主机空间,you are awesome,嗯哼~
上周我给我哥也整了个Wordpress个人博客,前后断断续续折腾了差不多一个星期,博客地址是:
我哥已经零星的贴了一些闲暇时画的东西——革命的雨,他是我爱的兄长,是我从小膜拜的偶像,是一位才华横溢的绝对天才。
另外感谢小行同学慷慨提供的超大主机空间,you are awesome,嗯哼~
巴萨要来了?是真的!
不过这次因为世界杯,西班牙国家队的八大成员都将不会前来,甚至连期待的拉马西亚的两孩子博扬和赫弗伦都不来了,来京阵容已经严重缩水。虽然如此,随着离8月8号的日益临近,还是忍不住越来越激动。
不过这次我也就只能去看场比赛而已了,什么接机,蹲酒店这类的事我已经干不了了,老了,不能像3年前那样了。
瓜帅,梅西,周末鸟巢见!
————————-
Marquez走了,这位在巴萨效力了7年的墨西哥队长最终告别了诺坎谱。七年,小马哥已经变成了老马哥,当年的长发也已削去,但他的足球故事还将继续,他将在另外一块球场继续谱写他的墨西哥传奇。他说他会一辈子爱巴萨,巴萨是他一生的俱乐部,我们也会一直热爱你。别了,Rafa。
第一次听说online course是同事给我推荐的MIT的讲algorithm的课程,随后自己上youtube看了几集,真是大赞。并不是说崇洋,而是国外的老师确实讲得好,条理清晰,而且不乏个人风格,幽默风趣。更难得的,计算机的课程他们居然都是全部只用黑板,而很少用slides。并不是说slides不好,而是他们不像国内的老师,讲课通篇都是过PPT,发催眠曲。online course真是个好东西,让我们这些土鳖能够不用留洋就能感受到国外计算机的课程,况且还是像MIT,Stanford这样的名校。通过这些课程,不仅能领略到国外老师的风采,还能学英语,因为如果听不懂,有些课程还配置了整个课程的transcript,真是非常优质的学习材料。
不过这些课程,对于我这样的已经走出学校的人来说,只能粗看感受一下精华了,不可能真的跟着课程一集一集的细嚼慢咽,已经过了全额学习的那个时期了,要是早几年在大学里能发现这样的材料就好了(或许那时候也没有)。
http://see.stanford.edu/see/courses.aspx
Stanford的关于computer science的课程,课程不多,但都非常详细完整的提供了video, handout, assignment, transcript,甚至还有考试试题和答案。
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/
MIT的,课程很丰富,但只有部分提供了video,推荐Introduction to Algorithms.
2010年7月6日,我二十年的学生生涯正式宣告结束;2010年7月6日,我的职业生涯的第一天开始了。
那天我是早晨9点从学校拿到的毕业和学位的证书,随后便打了车直奔公司,参加11:30的入职仪式。没有片刻的休息,我的人生的两大阶段间的分隔符仅用了两个小时便匆匆划完。
虽然匆忙,但这短短的数星期的时间,却划过了我人生最精彩的篇章,一切就像是电影一样。从新家的入住,到正式的毕业,从离开学校到跨入公司,中间还伴随着世界杯的精彩,有章鱼大帝的威武,有美丽西班牙的称霸,而最近我又度过了自己24周岁的生日。这真是一个收获的时节哇,但我却来不及驻足片刻来细细品味其中的甜蜜,因为人生驱赶着我们不断前行,一个终点只是下一段路程的起点而已。不管是苦是甜,让我们记录下这一个个精彩而幸福的瞬间,人生便无憾。
走着。
At China National Film Museum, July, 2010
原文:Is 3D Finally Ready for the Web?
作者:Sixto Ortiz Jr.
来源:Computer archive, Volume 43, Issue 1 (January 2010) table of contents, Pages: 14-16, 2010
最初的互联网是以一个简陋的鼠标点击环境开始的,但如今,互联网上已经到处是各种眼花缭乱的页面,充满着各种丰富的应用程序,有的用来娱乐,有的用来提高生产率,等等等等。用户可以在互联网上完成各式各样的任务,不管是购买商品,还是与全世界的用户实时交互。然而,一个关键的元素却迟迟没有在互联网上打上自己的烙印——3D。
在今天,3D的在线应用主要是游戏和虚拟世界,这些都需要强大的电脑和特殊的软件来支撑。然而,商业,工程企业和其他一些用户同样也需要3D,他们同样也需要3D所带来的真实感和更多细节。用户希望他们能够在浏览器中获得和在PC中一样的体验。并且由于3D技术在电影、游戏和其他各种娱乐行业中的广泛应用,消费者已经对它习以为常。因此,对于互联网上更多且更易于访问的3D内容的需求变得越来越强烈。况且更好的浏览器体验同时也意味着更多潜在的收入。
然而,互联网3D还处于一种很不成熟的状态,因为很难在典型的PC和浏览器上广泛使用这种复杂的技术。事实上,一般浏览器也无法承载复杂的3D内容,更无法提供高帧率或全屏的图形效果。并且,在实时的合作程序和其他应用程序中包含3D让本来已经很繁琐的开发过程会变得更加复杂。
尽管如此,现在是有一些组织在为网络3D技术而努力工作的。他们尝试将浏览器转为一种更为强大的计算平台,以在该平台上获得如PC上一样的体验,例如3D内容的展示。这些工作将会为网络衍生出更多的应用程序,包括产品建模,展示和配置;3D在线会议和工人协作;对于手术或机械过程的模拟;虚拟旅游;增强现实等等。
不管怎样,在互联网3D技术变得可依赖和成为主流之前,仍然有重重的困难需要克服。
早期的网络是没有图形界面的,直到NCSA(美国国家超计算应用程序中心)在1993年发布了Mosaic,这是首个可以同时展示图片和文字的浏览器。
当前在互联网上,已经有一些为3D服务的技术在使用,他们基本使用同样的方式工作,但是使用不同的文件格式。
VRML和X3D
网络3D开始于1994年,在这一年,VRML组织发布了虚拟现实标记语言(Virtual Reality Markup Language)。然而,VRML从未流行过,因为它限制开发者只可以写3D相关的内容。为了创建完整的引人注目的应用程序,开发者必须能够同时开发3D,2D,视频和音频。在处理器和软件能够支持图形之前,VRML表现还是不错的,因为它能支持图形。但是VRML太慢,并且没有能力渲染复杂高仿真的模型和场景。
在1997年,Web3D联盟推出了X3D,它是一种基于XML的文件格式,同时也是VRML的扩展,以用来表现3D图形。X3D同样也没有流行过。游戏和3D开发人员广泛忽视了X3D,X3D只被极少数的商业工具所支持。
其他方法
3D工业论坛于2003年推出的Universal 3D技术,是一种压缩的3D图形文件格式。然而,它的推崇者也只是推动Universal 3D使其成为了一种主要使用在制造业或建筑业相关应用程序的文件格式。
开源的网络3D标记语言(3DMLW,3D Markup Language for Web)是一种基于XML的文件格式,它用于创建网络上的3D和2D内容。3DMLW由3D Technologies R&D于2009年推出,它可以通过插件工作在大多数流行的浏览器中。
今天的硬件能力能够比过去更好的处理3D。更快的CPU,更快的图形处理器和显卡,以及四处可见的3D图形加速器,这些都为网络3D的出现提供了可能。
JavaScript和HTML 5.0
开发者使用JavaScript语言开发各种网络应用程序。浏览器的 JavaScript引擎性能的提升,使得网络3D成为可能。比如说,IE9中的JavaScript引擎将可以使用宿主机器的图形处理器来快速的处理图形相关的任务。同样的,Mozilla也增强了其Firefox浏览器的JavaScript引擎,他们使用了一种追踪( tracing )技术,该技术通过优化代码的执行方式来提升性能。
JavaScript的访问HTML 5.0的能力可以让开发者更加方便的将视频,音频,3D和2D内容无缝合并到应用程序中。HTML5.0中的画布(canvas)元素同样也会促成互联网3D。该元素使得浏览器可以通过它们的JavaScript引擎,本能(无需插件技术)且动态的渲染位图图片,使得渲染3D变得更加容易。
WebGL
Mozilla 基金会是一个创建和支持开源应用程序的组织,Khronos是一个为并行计算,图形和动态媒体设计标准的联盟。它们俩正在开发WebGL。该技术可以在不需要插件的情况下为网络带来硬件加速的3D图形效果。任何支持Khronos的OpenGL或OpenGL ES规范的浏览器都可以运行WebGL。
跨语言跨平台的OpenGL定义了一组API,以供开发出提供2D和3D图形效果的应用程序。而OpenGL ES(Embedded Systems)规范为从简单元素(或者成为图元,比如线或者多边形)绘制3D场景提供了编程工具。OpenGL ES可以工作在智能手机这样的小型设备上。然而,这些能力不能离开插件的支持。许多用户倾向于不使用插件,因为它们不易安装,且难于排除故障和管理。
WebGL使得浏览无需插件便可渲染3D内容。该技术提供可以让软件通过编程访问PC机3D渲染硬件的API,从而扩展了OpenGL。本质上,WebGL提供了JavaScript应用程序和OpenGL软件库之间的连接,而后者负责访问宿主系统的图形处理器。这可以充分利用硬件的能力来渲染3D内容。
Khronos已经建立了一个WebGL工作组,该工作组将在今年上半年发布 WebGL的第一个release版本。但是程序人员已经开始把WebGL构建到Firefox的开发版和Webkit开源浏览器引擎中,该浏览器引擎被苹果的Safari和Google的Chrome浏览器所使用。
O3D
Google也是 WebGL工作组的成员,但同时Google也开发了一款基于浏览器的3D图形技术,O3D,如下图所示。
O3D是一个基于IE,Firefox,Safari 和Chrome这些浏览器的插件。Google现在正在把该技术构建到Chrome中,并希望未来能够直接构建到其它的浏览器中。O3D可以在Windows,Mac,Linux上运行,它是一套开源的JavaScript API,用于开发互动的3D图形应用程序,比如游戏,广告,或者虚拟产品展示,都运行在一个浏览器里。该API为基于JavaScript的程序提供了接口,使得JavaScript应用程序可以与包含在O3D插件中的O3D核心软件进行通信,从而直接利用计算机的图形硬件。
Google 发言人说O3D是一个保留模式(retained-mode)的技术,因为它只设置场景一次,然后每帧只绘制场景改变的部分。与WebGL这样的立即模式(immediate-mode)技术不同,O3D不会每次都重新绘制整个场景。这提供了更好的性能,但却弱化了开发者的控制能力。
Adobe Flash
Adobe正在将更强的3D能力加入到它所属的Flash浏览器插件中。Adobe是在2008年Flash Player 10的发行版中推出了3D能力。该技术通过加入新的类和方法,从而包含了对于3D效果的支持,尤其可以通过Flash的 ActionScript编程语言在三维空间中设置一个物体的位置。通过这种方法,即便是没有丰富3D经验的开发者也可以通过在2D中设计物体来制作3D内容,并能通过新加入的类和方法修改它们。Flash Player 10.0,现在是beta版,将会为智能手机和其他移动设备带来3D效果。
在3D Web真正成熟之前,它还需要克服重重的障碍。
比如说,插件,在某些情况下,时常会导致浏览器崩溃或者其他的问题。让浏览器能够天生就有渲染3D的能力,并且克服当前3D技术不能和所有的浏览器、操作系统和应用程序兼容的问题,这些都是很大的挑战。另外,缺乏标准化也是一个问题。如果没有标准化,网络将会出现各种不同的互不兼容的格式和技术,这使得开发者为了在不同的浏览器上运行需要创建很多版本的程序。同时,开发网络上的3D内容需要很长的开发时间,并且很少的开发者对该方法很熟悉。
对于上网本和智能手机使用的迅猛增长,这些具有较慢的处理器,意味着更多的人在使用无法运行3D内容的设备。技术硬件能力和网络带宽已经大幅度的提升了,但它们仍然不能满足高度复杂的3D模型的需求。并且网络3D技术的推崇者们并没有为普通用户设计在线3D技术,这是在犯和VRML一样的错误。
WebGL是一个非常有趣的网络3D开发技术,因为它无需插件。一旦WebGL推出,我们将在网络上看到3D内容的迅速增多。然而,3D在10年内是很难成功的,直到迅猛增长的流行上网本和智能手机拥有足够强大的处理器能力来播放数据密集的内容。不过总有一天,3D将在网络上做到像现在视频所做到的一样,网络3D的时代终会到来。
The brand-new World Cup brought by the mysterious African continent is coming!!! The opening match between South Africa and Mexico is in just half an hour.
It should have been the time to fully enjoy myself in football. However, sadly, I am still engaged in my thesis work, because the preliminary oral defense for my postgraduate thesis is just tomorrow. What a time! Oh my goodness, I am still rehearsing my defense presentation, while watching TV to wait for the first World Cup match at the same time. Hopefully tomorrow everything will be alright.
God bless me. God bless Africa.
And, God bless Spain & Argentina.
God bless Messi. God bless Xavi. God bless Iniesta.
Oh my goodness, how long has it been since I wrote the first part of this article? What on hell was I buzzing around for during this period which seemed years to me? This plug-in is nearly becoming a legacy for me. Now it’s time to bring it back and finish the remaining parts. And I will also upload the whole project’s source code and related docs later.
First part of this article: http://www.bennychen.cn/?p=640
After we’ve got some basic concepts about 3DS Max, now it’s time to define our own mesh file format. It’s very hard to directly define a format from the scratch. Researching some already typical and mature file formats is a good starting point. Recommended by my tutor, I chose .md2 & .md3 formats as my learning material which are famous for being used in the Quake series game. Based on several days’ research on them, I defined my own mesh file format, which is sort of like .md2 & .md3 but also differs from them at some point.
I did not just define one format. They are a suite of formats, see the following table.
File Type
|
File Format
|
Basic mesh file
|
*.CSM (Crowd Simulation Model)
|
Texture
|
*.jpg, *.bmp, ……
|
Animation
|
*.AM
|
Animation Configuration
|
*.CFG
|
Mounting Configuration
|
*.CSM_PACK
|
There are 5 parts in total. But some of them are not necessary. Only one file is essential – the basic mesh file, which is named as CSM( Crowd Simulation Model ), because at that time I programmed this plug-in mainly for a crowd simulation project. The texture part is the textures file used by the mesh. If a mesh includes animation, the AM file( short for animation ) and animation configuration file(.CFG) are also needed. My format also supports mesh mounting, so if a mesh is mounted by several sub-meshes, .CSM_PACK is used to store the mount info.
These are some of the features of my format.
And the 2 figures below are the inside structure of CSM and AM. If you want to know more detail of them, later I will upload the docs.
I stored my animation data in .AM file, bone by bone, animation by animation, and frame by frame.
OK, so far, all the preparation work is done. We can finally start the programming process.
For the last 2 steps, I will not present very detailed info here. I will only talk on the difficulties needed to overcome when I programmed them. All the programming job is strictly based on the format we defined last step. For more detail, please turn to my source code.
Firstly we need to handle the static mesh data. In this step, some difficulties are.
1. Transformation between different types of coordinate system.
Basically 3DS Max uses right-hand coordinate system. But some common rendering system( i.e. DirectX ) uses left-hand coordinate system. They have totally different coordinate systems, see figure below. So, the coordinate data needs to be transformed before outputting. See the figure below, the left is a typical rendering system’s coordinate system, and the right is of 3DS Max.
About how to transform, you can refer to this paper – 《一种不同坐标系之间的变换矩阵的转换方法》by 杨卫东&刘玉树.
2. Handle mesh with multiple textures.
This is a tricky problem. We know that a single vertex could be shared by different faces, so if these faces are attached with different textures, the vertex should have multiple UV coordinates. This leads to the fact that we need to split the vertex into multiple vertices, so that we can ensure one vertex only maps to one UV coordinate. And the whole mesh needs to be reorganized.
From my CSM format definition, you may have found that a mesh is comprised of multiple submeshes. Actually the submeshes are split based on textures, that is, vertices using the same texture are categorized into one submesh. So if an original vertex is using 2 textures, this vertex is firstly split into 2 vertices and will exist under 2 submeshes respectively.
3. Vertex normal
This is another painful issue. About this topic, I once wrote an article in my blog before. Turn to it here.
Now, we have come to the most complex, most sticky part of the whole work. I can still remember the time, the pain and the effort when I tried to tackle this problem. Those memories are so unforgettable. But they all deserve.
Why I did it so painfully was that, firstly I was still not familiar with the mechanism of bone animation at that time, secondly the mechanism of 3DS Max skeletal system is hard to figure out, whether its bone system or biped system, lastly, decouple the vertex data and the animation data is another challenge.
About the computational process of bone animation, thanks to this blog, it is the key article that helped me accomplish the whole work.
http://www.cnblogs.com/neoragex2002/archive/2007/09/13/Bone_Animation.html
The figure below is my exporter plug-in UI. The upper part is used to include animations, which will later generate .CFG file. Ant the lower part is used to configure mesh mounting, which will later generate .CSM_PACK file.
And here is an example of exporting. On the back is the 3ds max software interface, rendering a mesh with or without some animation. And on the front is the mesh viewer developed by me, which renders the same mesh with the same animation.
This is another example, the Tiananmen Gate.
解决方法:
– su root
– xhost +
关于xhost: http://linux.about.com/library/cmd/blcmdl_xhost.htm
解决方法:
– su dasusr1
– db2admin start
Application code page not determined, using ANSI codepage 1208
Error opening list file. Terminating …
**Error occured while opening a file.
解决方法:
db2的用户对于当前文件夹没有写权限,使用chown改变owner或者chmod改变权限。
chown db2inst1:db2iadm1 $directory_name -R
(1). 删除所有关联的instance
$DB2DIR/instance/db2idrop InstName
(2). 删除db2
$DB2DIR/install/db2_deinstall -a
原因是在安装db2的时候,可能选用了typical模式,则不会安装这些头文件。使用custom 模式,并在select features to install中选中SDK
db2level
FC Barcelona will not be going to the 2010 Champions League final. They dominated Inter Milan tonight, but the goals just would not come. Gerard Pique’s 83rd minute goal set up a gripping finale but it is the Italians that will be going to Madrid.
巴萨将无法前往2010的冠军杯决赛了。在今夜,他们控制了国际米兰,但需要的进球却没有到来。皮克83分钟的进球奏响了一篇扣人心弦的结尾曲,但前往马德里的却将是意大利人。
我们充满信心的Comeback一战最终未能如愿,巴萨还是被淘汰了。这是怎样的一个夜晚,激情,紧张,期待,愤怒,悲伤,各种感情掺杂在一起。尽管我们最终未能进入决赛,但这是如此难忘的一个夜晚,我们一小撮最死忠的巴萨球迷挤在一个小酒吧里,一起呐喊,一起承受。
不出所料,国米人把901大巴开进了诺坎普,铁桶一样的毁灭足球式的打法令人恶心。一度让人几近绝望,但皮克迟来的进球点燃了我们所有人的希望,之后博扬那个被吹掉的进球一度让那个酒吧在几秒之内陷入了疯狂,在刹那间,我想起了去年伊涅斯塔的最后一击,难道去年的那一幕又要再次上演,但只有那几秒,因为几秒后,裁判抹杀了那神奇一刻的复制。
巴萨,被淘汰了。
但今夜,巴萨我为你感到自豪,我坚信国米的晋级只是运气好而已,我们输给了1000公里,输给了毁灭足球的打法,输给了昏庸的裁判。
有人说国米征服了诺坎普,这简直太可笑了。作为一个全场龟缩在禁区里,全场只1脚射门,控球只20%,最终也输掉了比赛的球队,这叫征服?太他妈可笑了。巴萨被淘汰只是在梅阿查败走了麦城,在诺坎普,国米是个彻底的Loser。
至于穆里尼奥,我不想多说什么了: just a bitch,总有一天会有报应的。
冠军杯没了,但接下来还有联赛,只有最关键的4轮了,巴萨加油!
Recent Comments