搜索 社区服务 统计排行 帮助
  • 1464阅读
  • 5回复

[测试]TMPGEnc之强大而混乱且不实用的60FPS(修正版)

楼层直达
级别: 侠客
注册时间:
2005-04-09
在线时间:
0小时
发帖:
412
  非常感谢adamhj及其他网友对本文几处基础概念的指正,所谓“失之毫厘,差之千里”恐怕就是指这个例子了。又好多原因,冒言春节后准备V2却拖到了现在,实在是…:o

  正文开始:60FPS(以下除非说明是场速率,其余均指帧速率)说起来复杂,做起来也许麻烦,用起来也不怎么实用。不过,技术总是为创意而服务的,所以,必要的时候还是需要知道这东西是个啥。下面进行下测试,你会发现60FPS不过如此。

  制作60FPS的标准定义是:在DVD→DVDRip的时候,把一帧拆成奇偶两场,然后把场补成帧,于是我们就可以获得60FPS。(其强大在拆,其混乱在补)


一、3:2 pulldown的两种形式:“Top field first”型和“Bottom field first”型

1、到底什么是“Top field first”型?在3:2 pulldown时“Top field first”方式的话会这样做胶卷过带:

A│B│C│D│   (24FPS一个最小片段——4帧)

Odd Field,也叫Top Field:奇数场
Even Field,也叫Bottom Field:偶数场

首先拆成场:Ao│Ae│Ao│Be Bo│Ce│Co│Ce│Do│De│(注意看,A被拆成了三份场,C也被拆成了三份,B、D被拆成了二场,形状如“3 2 3 2”,这个就是3:2pull-down的名称由来。并且是以Ao(奇数场)优先。

把Ao│Ae│Ao│Be Bo│Ce│Co│Ce│Do│De│写成帧的形式:A1表示奇数场,A2表示偶数场:

A1│A1│B1│C1│D1│
A2│B2│C2│C2│D2│ <-- 这个就是“Top field first”型的具体结构

2、在3:2 pulldown时“Bottom field first”方式的话会这样做胶卷过带:“Bottom field first”型:

首先拆成场: Ae│Ao│Ae│Bo│Be│Co│Ce│Co│De│Do│(注意看,A被拆成了三份场,C也被拆成了三份,B、D被拆成了二场,形状如“3 2 3 2”,并且是以Ae(偶数场)优先。

把Ae│Ao│Ae│Bo│Be│Co│Ce│Co│De│Do│写成帧的形式:

A1│B1│C1│C1│D1│
A2│A2│B2│C2│D2│<-- 这个就是“Bottom field first”型的具体结构


二、TMPGEnc中的拆分重组的过程分析

  头大了两圈,貌似终于想通了TMPGEnc的拆分组合原理——TMPGEnc只做一件事:如果片子是“Top field first (field A)”型,那它就会在拆帧成场后,以奇数场优先顺序重新顺序两两组合场成帧,以得到正序;如果片子是“Bottom field first (field B)”型,那它就会在拆帧成场后,以偶数场优先顺序重新顺序两两组合场成帧。以得到正序。

  在TMPGEnc里:MPEG设定→高级→场的顺序→有两个选项:“Top field first (field A)”和“Bottom field first (field B)”。选项说明:这个设定在以下情形中起作用:a、MPEG-2 隔行扫描;b、逆转为Telecine;c、消除交错信号。“逆转为Telecine”的意思就是IVTC(反胶卷过带)。

  下面是TMPGEnc到底如何拆分5帧(最小序列单位)为10帧的具体过程分析:

1、“Top field first”型:

A1│A1│B1│C1│D1│
A2│B2│C2│C2│D2│ <-- 这个就是“Top field first”型的具体结构

→ TMPGEnc → Top field first (field A) →

 ⌒  ⌒ ⌒ ⌒  ⌒ ⌒  ⌒ ⌒ ⌒  ⌒
A1│A2│A1│B2│B1│C2│C1│C2│D1│D2│ → 两两顺序组合 →

A1│A1│A1│B1│B1│C1│C1│D1│D1│A1(下一个)│
A2│A2│B2│B2│C2│C2│C2│C2│D2│D2│→ 反交错滤镜:偶数-奇数场(场) →

A1│A1│A1│B1│B1│C1│C1│D1│D1│A1(下一个)│
A2│A2│B2│B2│C2│C2│C2│C2│D2│D2│
1 0 0 10 1 0 0 1 0

  此时我们可以看到如果以场为帧,顺序是:A2│A1│B2│B1│C2│C1│C2│D1│D2│A1(下一个)│(正序)。如果使用“1001010010”算法,可以完美得到原本的24FPS。

但是如果我们错选为“Bottom field first (field B)”型:

A1│A1│B1│C1│D1│
A2│B2│C2│C2│D2│<-- 这个就是“Top field first”型的具体结构

→ TMPGEnc → “Bottom field first (field B)” →

A2│A1│B2│A1│C2│B1│C2│C1│D2│D1│ → 两两顺序组合 →

A1│A1│A1│A1│B1│B1│C1│C1│D1│D1│
A2│B2│B2│C2│C2│C2│C2│D2│D2│A2│→ 反交错滤镜:偶数-奇数场(场) →

A1│A1│A1│A1│B1│B1│C1│C1│D1│D1
A2│B2│B2│C2│C2│C2│C2│D2│D2│A2│
1 0 0 0 0 0 1 0 1 0

  此时我们可以看到如果以场为帧,顺序是:A2│A1│B2│A1│C2│B1│C2│C1│D2│D1│,出现倒退帧。并且不能使用任何算法,不能完美得到原本的24FPS。

2、“Bottom field first”型

A1│B1│C1│C1│D1│
A2│A2│B2│C2│D2│<-- 这个就是“Bottom field first”型的具体结构

→ TMPGEnc → “Bottom field first (field B)” →

A2│A1│A2│B1│B2│C1│C2│C1│D2│D1│ → 两两顺序组合 →

A1│A1│B1│B1│C1│C1│C1│C1│D1│D1│
A2│A2│A2│B2│B2│C2│C2│D2│D2│A2│→ 反交错滤镜:偶数-奇数场(场) →

A1│A1│B1│B1│C1│C1│C1│C1│D1│D1
A2│A2│A2│B2│B2│C2│C2│D2│D2│A2│
1 0 0 1 0 1 0 0 1 0

  此时我们可以看到如果以场为帧,顺序是:A2│A1│A2│B1│B2│C1│C2│C1│D2│D1│(正序)。如果使用“1001010010”算法,可以完美得到原本的24FPS。

但是如果我们错选为“Top field first (field A)”型:

A1│B1│C1│C1│D1│
A2│A2│B2│C2│D2│<-- 这个就是“Bottom field first”型的具体结构

→ TMPGEnc → Top field first (field A) →

A1│A2│B1│A2│C1│B2│C1│C2│D1│D2│ → 两两顺序组合 →

A1│B1│B1│C1│C1│C1│C1│D1│D1│A1│
A2│A2│A2│A2│B2│B2│C2│C2│D2│D2│→ 反交错滤镜:偶数-奇数场(场) →

A1│B1│B1│C1│C1│C1│C1│D1│D1│A1
A2│A2│A2│A2│B2│B2│C2│C2│D2│D2│
1 0 0 0 0 0 1 0 1 0

  此时我们可以看到如果以场为帧,顺序是:A2│B1│A2│C1│B2│C1│C2│D1│D2│A1│,出现倒退帧。并且不能使用任何算法,不能完美得到原本的24FPS。

  另外,TMPGEnc里没有“奇数-偶数场(场)”:如果你看上边把红色的场部分与黑色的部分交换一下,你会发现其实结果是一样的。


三、实际例子的场顺序表现:

  关于上边的分析,TMPGEnc里使用“CTRL+P”输入“1111111111”,反交错滤镜选择“偶数-奇数场(场)”有以下几个实际例子效果:

  1、GIG-OP.VOB(攻壳机动队2):如果TOP优先,那么顺序正常,如果BOTTOM优先,则倒退帧连连不断。

  2、Chobits-op.VOB:如果TOP优先,仅明显观察到原始帧序的89b出现倒退(不过,这段本来就变化很特别,变化顺序不是容易看出)。如果BOTTOM优先,则全部正常。

  3、SCRAPPED+PRINCESS NCOP.vob: 如果TOP优先,则第一个24/24FPS渐变及之前出现倒退,之后的以及第2个渐变全部正常。如果BOTTOM优先,第1个24/24FPS渐变及之前的正常,但后面的基本上全部出现倒退。分析来看,它是由TOP型一段连接了BOTTOM型一段。

  SCRAPPED+PRINCESSNCOP.vob的现象其实是我如此大费周折分析原理的原因。以后我们做60FPS的话似乎需要注意下,不行的话则连过渡处都要分段处理了。要不逐行的显示器看来就没法看了。

  不过这种情况,使用24IVTC后再对细小处进行“帧率加倍”反交错更适合吧。或者干脆舍弃部分场,直接CTRL+P输入“1010101010”然后使用反交错滤镜 “奇数场”来做30FPS算了。


四、最标准的60FPS的做法:

  最标准也最完美的60FPS处理做法(120FPS、VFR等等都可以靠边去了):每一帧拆成奇偶场,然后宽高均缩小一半,即整个画面缩小为原画面的1/4。原因是隔行的电视为隔行(奇偶场)而优化,但电脑用的显示器比较精细为逐行而优化。因此,不缩小画面也不补象素的话,对于显示器而言意味着超重的锯齿(因为对于奇数场的两行象素间少了一个偶数场的过渡象素)。

  做法简易图示:TMPGEnc中首先按“ctrl+p”,然后输入“1111111111”,然后从第一帧开始,右键菜单选择“指定从本帧开始的交错解除方式”为“偶数-奇数场(场)”:如果原片子不是由几段TOP和BOTTOM段组合,那么就直接OK;如果是的话,请分段重复以上步骤。




五、24/30FPS的overlay的图示:

A1│A1│B1│C1│D1│
A2│B2│C2│C2│D2│ 左边24FPS部分。随意选了个“Top field first”型

a1│b1│c1│d1│e1│
a2│b2│c2│d2│e2│右边30FPS部分

上下混合overlay(mix):

A1a1│A1b1│B1c1│C1d1│D1e1│
A2a2│B2b2│C2c2│C2d2│D2e2│→ TMPGEnc → Top field first (field A) →

A1a1│A2a2│A1b1│B2b2│B1c1│C2c2│C1d1│C2d2│D1e1│D2e2│ →两两顺序组合→

A1a1│A1b1│A1b1│B1c1│B1c1│C1d1│C1d1│D1e1│D1e1│A1a1│
A2a2│A2a2│B2b2│B2b2│C2c2│C2c2│C2d2│C2d2│D2e2│D2e2│ → 反交错滤镜:偶数-奇数场(场) →

A1a1│A1b1│A1b1│B1c1│B1c1│C1d1│C1d1│D1e1│D1e1│A1a1
A2a2│A2a2│B2b2│B2b2│C2c2│C2c2│C2d2│C2d2│D2e2│D2e2│
1 0 0 0 0 01 0 10
1 0 0 奇 0奇00 10

  在这种60FPS下,看上边红色的部分,无论是左边24FPS还是右边30FPS都是正序。并且左右两边的画面信息都被全部保留。


六、对于24/24FPS或者24/30FPS的渐变的几种IVTC处理办法:

针对下面这个序列“24/30FPS的overlay(mix)”:

A1a1│A1b1│A1b1│B1c1│B1c1│C1d1│C1d1│D1e1│D1e1│A1a1│
A2a2│A2a2│B2b2│B2b2│C2c2│C2c2│C2d2│C2d2│D2e2│D2e2│
10 0 1 01 0 0 10
10 1 0 10 1 0 10

a、以场为帧,60FPS做法:如上分析。

b、补象素,24FPS做法:

  我们还原保证左边的24FPS部分的正确IVTC(A、B、C、D)——ctrl+p输入“1001010010”获得左边的正确IVTC,

A1a1│B1c1│C1d1│D1e1│
A2a2│B2b2│C2c2│D2e2│

然后很明显,中间两帧仍然存在来自右边30FPS的交错,如果我们继续简单的把中间两帧取场做帧,比如取奇数场:不仅存在丢场(b2)的问题,还有图象模糊的问题。

c、补象素,30FPS做法:

  我们还原保证右边的30FPS部分的正确IVTC(a、b、c、d、e)——ctrl+p输入“1010101010”获得右边的正确IVTC:

A1a1│A1b1│B1c1│C1d1│D1e1│
A2a2│B2b2│C2c2│C2d2│D2e2│

  那么,第2、第3两帧存在来自左边24FPS的交错,如果我们简单的把这两帧取场做帧,比如取奇数场:场是不丢了,但图象模糊的问题还在。

  而且,如果做成30FPS的,那么左边24 FPS的部分会重复一个场。例如C1。由于重复某个场,会导致该场的显示时间改变:比如原本是1/24秒,会变成1/30秒*2,因此在运动变化上会出现不均匀的现象。即使这种变化未必能被我们所觉察,但还是不建议对于SCRAPPED+PRINCESS NCOP.vob这种左右均为24FPS的渐变进行30FPS化或者60FPS化。

d、补象素,帧场混合式60FPS做法:麻烦,也不怎么好用。

A1a1│A1b1│A1b1│B1c1│B1c1│C1d1│C1d1│D1e1│D1e1│A1a1│
A2a2│A2a2│B2b2│B2b2│C2c2│C2c2│C2d2│C2d2│D2e2│D2e2│ <-- 24/30FPS的overlay(mix)

  你只要在这里视片源情况进行手动反交错即可。如果你选择做成24FPS的话,你只能在这10帧里挑出4帧;如果你选择做成30FPS的话,你只能在这10帧里挑出5帧;如果你做成60FPS,此时就可以把这10帧全部使用。

  此情况最复杂我们的灵活性也最大。单场、双倍、自适应、拷贝帧,手法随你用。只要能保证流畅性,怎么漂亮怎么好看就怎么来吧。

  (此外,我们还可以在这个基础上进行改进,也就是当某一帧不得不使用单场的话,我们可以通过AVS以及其他AU的插件对这一单场进行美化。例如:AVS写法:先柔滑再锐化。此外,有文档表明AU里面还有个二次反交错插件,可以把某一帧在IVTC后单独进行改进,没有用过。仅供了解。)

  其实呀,这里就要看是哪部分比较重要了:如果背景重要,就可以做成24FPS的,如果前景比较重要,就可以做成30FPS。两者都想保留最多信息的话就可以考虑60FPS的做法。

  总之,以上交错情况我们都只能无限的接近完美。而不能说哪个是最正确的做法。

  顺便说下我对IVTC的一些理念问题:首先我们要明确一个概念,由于过去的兼容性标准,导致在模拟与数字之间存在着一些根本的矛盾(关于这一点,我就不准备展开叙述了,大家了解即可)。因此,不存在所谓最正确的做法,只存在不断接近完美的做法。因此RIP就好比翻译,“信、达、雅”原则仍然适用。第一要播放顺序正确,并尽可能保持原汁原味,完美点也就是不要遗失任何画面信息,;第二要尽可能没有交错,再要求完美点就是没有交错;第三要尽可能画面漂亮,无锯齿、无模糊等等最好。

  举个例子:EVA09的那个倒记时字幕交错,如果要“信”和“达”,就要至少做成30FPS,以便保留全部的字幕,但这样做会出现大量不美的帧,比如锯齿、因拷贝帧而带来的停顿等等,考虑到“雅”,这部分字幕的意义远没有背景动画重要,而且缺少部分字幕并不会引起歧义,因此,最后考虑的结果是:优先背景,做成24FPS。EVA09当时用的滤镜是“帧率加倍(场-自适应)”,这算是个局部反交错的滤镜,简易而接近目的的处理了交错。


七、60FPS的一些扩展想法(没有特别的实用处,仅仅供大家做为一种思路参考):

  另外,我们还可以用以拷贝帧为基础的复杂式60FPS来做成单一60FS帧速或者30FPS的。但是因为过于烦琐以及缺陷几率的增大,其实用价值太小了。顺便写出仅供大家了解。

  做法:以30FPS的交错处理手法,把纯24FPS与纯30FPS部分都解除然后每一帧后都使用一下拷贝帧变成60FPS(如果不做拷贝,那么就是30FPS,后面的渐变解除也要做成30FPS,以便做成单一30FPS的);然后用60FPS的做法解除渐变处的交错。最后连接全部片段即可。

  首先处理纯24FPS部分成30FPS或者60FPS。

A1│B1│C1│D1
A2│B2│C2│D2 --->胶卷过带 ---->

A1│B1│C1│C1│D1│
A2│A2│B2│C2│D2│-- 24FPS部分 --> TMPGEn ---->BOTTOM---->

A2│A1│A2│B1│B2│C1│C2│C1│D2│D1│

A1│A1│B1│B1│C1│C1│C1│C1│D1│D1│
A2│A2│A2│B2│B2│C2│C2│D2│D2│A2│
↑  ↑ ↑  ↑  ↑ ↑  ↑ ↑  ↑ ↑
1  23   4  5  6   78   910

简化一下:ctrl+p输入1001012010 获得了

A1│B1│C1│C1│D1│
A2│B2│C2│C2│D2│
↑↑ ↑↑↑
1 3 6 7(6) 9

  这个要仔细看啊,不是24FPS的1001010010,而是以拷贝帧为基础的1001012010算法获得的30FPS。也就是把24FPS转成了30FPS。当然你也可以ctrl+p输入1221212212 获得60FPS。检查好麻烦那,还有潜在的运动不均匀缺陷。放弃!

  最后:TMPGEn本身那个做复杂式24/30FPS到60FPS化的滤镜太简陋了,非常的不可靠。

  至本文,TMPGEn的相关测试完结。(小声说,希望不要再出修正版的修正版了^0^)

僧:风吹树动
佛:心动树动
切,把佛拖出去斩了

竹与笛:http://www.dizyh.cn/

中国不能用《帽儿山的鬼子兵》这个动漫恶搞日本,否则就是“无耻”、“弱智”、“对不起抗战”、“污蔑智商”。
以上这些帽子通通属于恶搞小日本的愤青;
中国应该拍二战战败的小日本“蝗军高大威猛,战无不胜”的高大全形象。
中国恶搞小日本有些东西可以拿来恶搞,将另一些东西拿出来搞笑却未必可取。
例如不可以恶搞那个“桃太郎”不是日本人,但可以说其实他是中国派过去拯救日本于鬼世界的英雄。
例如中国不可以恶搞“日本人的身高真的很矮。”但可以说其实他们通通应该是10米高的巨人。
例如中国不可以恶搞《源氏物语》其实是中国的一个和尚写的,但可以说其实《源氏物语》后来被“紫式部”这个“人妖”抄袭。

另外呢——

小日本有必要把“三国群雄”全部恶搞成Q版女。
小日本有责任把《红楼梦》恶搞成妓院风云。等等等等……
小日本恶搞中国,那是对中国的赞美。是地球的礼赞,是宇宙的荣幸。

这些都是神论呀!神论!还是扯淡级的!我要说“小日本、网奸、网特、媚日分子,你们其实可以无耻到更高的境界呀!”^0^

“民主法西斯主义!民主法西斯主义!民主法西斯主义!布什立功了,布什立功了!他伟大而前瞻地提出了‘伊斯兰法西斯主义’概念,不给希望地球和平的国家和组织以任何藉口!伟大的美利坚合从国的领导人,他继承了‘做我帮凶者、给我石油就是民主;不从我者,违抗美国就是无赖邪恶轴心国’的美国的光荣的民主法西斯主义传统,成为了民主法西斯主义概念诞生的伟大素材!”

“希特勒、东条英机、墨索里尼、小泉纯一郎在这一刻灵魂附体,布什他代表了人类恐怖主义和地球恐怖主义悠久的历史和传统,这一刻他不是一个人在战斗!他不是一个!”

“这个胜利属于美国,属于布什,属于希特勒,属于墨索里尼,属于东条英机,属于查了多年没见查出伊拉克有大规模杀伤性武器的国际原子能机构,属于所有热爱玩民主法西斯的人!属于宇宙恐怖主义的胜利!”


东京大三光得选楼最多的地段,使最糙的炸弹,用国产轰炸机!弹头上捆一哈日族,染金毛特猥琐那种,一起飞甭管有事没事都让丫嚷嚷:“下回再不当汉奸!”一口地道的东京腔,倍儿带劲!周围战友不是炸议会就是炸内阁,你要炸一民房,都不意思跟人打招呼!你说这样下来一天得死多少小日本儿?我觉得怎么着也得两百万吧?两百万?那是郊区!四百万起!您得理解日本军国主义的冥顽不化!愿意死两百万小日本儿的日本,根本不在乎多死两百万!咱们的口号是:不求精确,但求精光!
级别: 精灵王
注册时间:
2005-12-13
在线时间:
0小时
发帖:
3859
只看该作者 5楼 发表于: 2006-06-04
=__= 哇这贴 被人顶上来了. 真有本事

= =
级别: 工作组
注册时间:
2002-06-30
在线时间:
0小时
发帖:
576
只看该作者 4楼 发表于: 2006-06-04
好是好 ,只是看着有些头晕。

有谁认识这个MM的阿,认识的联系我,拜托!
另外,以前是“杨浦职校群众文艺(影视节目制作)这个专业的朋友也联系我,和找mm有关的。



qq: 122098553
手机:13816357125
mail:mayuanzhi@citiz.net


我的世贝司: spaces.msn.com/azhizhi/

历史中的亚瑟王与fate中的亚瑟王 连载中
级别: 精灵王
注册时间:
2005-12-13
在线时间:
0小时
发帖:
3859
只看该作者 3楼 发表于: 2006-04-01
囧看完了头晕

= =
级别: 侠客
注册时间:
2005-04-09
在线时间:
0小时
发帖:
412
只看该作者 2楼 发表于: 2006-04-01
嘿嘿,谁叫咱是做网站设计的,如果弄个拿不出手的东西,怎么有脸见哥们~~:D

僧:风吹树动
佛:心动树动
切,把佛拖出去斩了

竹与笛:http://www.dizyh.cn/

中国不能用《帽儿山的鬼子兵》这个动漫恶搞日本,否则就是“无耻”、“弱智”、“对不起抗战”、“污蔑智商”。
以上这些帽子通通属于恶搞小日本的愤青;
中国应该拍二战战败的小日本“蝗军高大威猛,战无不胜”的高大全形象。
中国恶搞小日本有些东西可以拿来恶搞,将另一些东西拿出来搞笑却未必可取。
例如不可以恶搞那个“桃太郎”不是日本人,但可以说其实他是中国派过去拯救日本于鬼世界的英雄。
例如中国不可以恶搞“日本人的身高真的很矮。”但可以说其实他们通通应该是10米高的巨人。
例如中国不可以恶搞《源氏物语》其实是中国的一个和尚写的,但可以说其实《源氏物语》后来被“紫式部”这个“人妖”抄袭。

另外呢——

小日本有必要把“三国群雄”全部恶搞成Q版女。
小日本有责任把《红楼梦》恶搞成妓院风云。等等等等……
小日本恶搞中国,那是对中国的赞美。是地球的礼赞,是宇宙的荣幸。

这些都是神论呀!神论!还是扯淡级的!我要说“小日本、网奸、网特、媚日分子,你们其实可以无耻到更高的境界呀!”^0^

“民主法西斯主义!民主法西斯主义!民主法西斯主义!布什立功了,布什立功了!他伟大而前瞻地提出了‘伊斯兰法西斯主义’概念,不给希望地球和平的国家和组织以任何藉口!伟大的美利坚合从国的领导人,他继承了‘做我帮凶者、给我石油就是民主;不从我者,违抗美国就是无赖邪恶轴心国’的美国的光荣的民主法西斯主义传统,成为了民主法西斯主义概念诞生的伟大素材!”

“希特勒、东条英机、墨索里尼、小泉纯一郎在这一刻灵魂附体,布什他代表了人类恐怖主义和地球恐怖主义悠久的历史和传统,这一刻他不是一个人在战斗!他不是一个!”

“这个胜利属于美国,属于布什,属于希特勒,属于墨索里尼,属于东条英机,属于查了多年没见查出伊拉克有大规模杀伤性武器的国际原子能机构,属于所有热爱玩民主法西斯的人!属于宇宙恐怖主义的胜利!”


东京大三光得选楼最多的地段,使最糙的炸弹,用国产轰炸机!弹头上捆一哈日族,染金毛特猥琐那种,一起飞甭管有事没事都让丫嚷嚷:“下回再不当汉奸!”一口地道的东京腔,倍儿带劲!周围战友不是炸议会就是炸内阁,你要炸一民房,都不意思跟人打招呼!你说这样下来一天得死多少小日本儿?我觉得怎么着也得两百万吧?两百万?那是郊区!四百万起!您得理解日本军国主义的冥顽不化!愿意死两百万小日本儿的日本,根本不在乎多死两百万!咱们的口号是:不求精确,但求精光!
级别: 骑士
注册时间:
2004-09-27
在线时间:
3小时
发帖:
1362
只看该作者 1楼 发表于: 2006-04-01
好教程一定要顶:D

dizyh兄的网站挺有诗意的:cool:

快速回复

限150 字节
上一个 下一个