作者oginome (荻野目洋子)
看板Emulator
标题Re: [新闻] 3D NES emulator is witchcraft in your
时间Thu Mar 10 15:37:45 2016
※ 引述《wyvernlee (废死不可!)》之铭言:
: 3D NES emulator is witchcraft in your browser
: http://www.pcgamer.com/3d-nes-emulator-is-witchcraft-in-your-browser-2/
: 这东西很特殊,简单说是用 3D 的方式来模拟传统的任天堂游戏,
: 有兴趣的可以看一下影片:
: https://www.youtube.com/watch?v=Ti2fwroyP2A
我发现这东西酷到应该另起一篇~这家伙的想法真是天才
开发者想法很有意思~有些部分处理的满厉害的,比如说他让原本画面上的
sprites(拼合动画)做extruding(长出深度)以达到3D效果,但是程式怎麽判
断那些要长那些不要长?又长出深度为何?马力欧医生的DEMO他特别转角度
来做示范,除了秀一下3D的惊奇感觉外,其实我们可以看到不是每个物件都
延伸出一样的高度,一开始的设定画面就是如此:
http://imgur.com/7iLXay6
绿方块背景长出高度,但标题却在绿背景长出後再接着长,这边可以看
到它是用动画拚合的单位再做判断的依据,所以胶囊左右的圆弧没长,可能
因为该格算在绿背景的动画拼合里面。
那黑色的部分一律判断深度为0应该是没问题的。也就是遇黑就凹。
让我觉得好奇的是下方马力欧医生和病菌的部分,他怎麽知道单单这两
只要长成乐高人,而不是直接长深度而已?1 PLAYER或1990这些字就只有长
深度而已,如何让程式迳自判断?真是有一套。而我自己的猜想,可能是用
角色和背景的区别让程式自己去判断。
FC的限制是,如果是定义成脚色的拼合动画,那垂直解析度(水平方向)
最多只能有32个像素,像DQ系列他用8*8来定义一个脚色,所以横向最多就
是站四个人,有第五个人站在一起就开始闪烁,闪烁的意思就是,每一个时
间最多同时显示四个8*8的单位,所以用大家轮流不显示达成横向站五个人
的目标;但定义成背景拼合则不在此列,所以後期很多游戏出现超巨大角色
就是通通定义成背景角色,缺点是画面不能再有背景,所以都是全黑的,洛
克人、松鼠大冒险都是这样做的。
http://imgur.com/Hoq5aje
所以我猜也有可能用这样的方式让程式判断谁该长深度,谁该长成乐高人。
或者用动画拼合的FRAME数来决定。
不过以上方式误判的机率都有,这也很符合目前模拟器所展示的结果。
//-------------
接下来这张比较:
http://imgur.com/bmmjfUm
我们可以看到他每个物件长的高度其实不一样,右上的DR.MARIO就长的没那麽高
还有定义成角色的一样是乐高人,最好玩的是这作者判断了某种方式让某种图形
被显示成管状,如背景的紫圈圈,这功能超妙!
http://imgur.com/iC3Pl4c
我一开始以为是连续的pattern会被定义成管状,但看影片类似的部分,洛克人
的墙壁就没有,魂斗罗的树林踏台也没有,但玛莉三代的水管有变成管状,这个
太妙了,正好符合水管的感觉!更棒的是,香菇从管子出来的感觉非常棒!
http://imgur.com/8yo8DtH
除了玛莉以外,恶魔城的地板也是管状,超怪的~但恶魔城的楼梯长出就很立体!
虽然不知道他是怎样定义的,但真的非常有趣!
最後该模拟器对於类似杂点或柱状的判断还有很大的想像空间~
http://imgur.com/1sYG6UB
由图可以看见,对於像树叶、木材、草丛等的判断,有可能依照该像素的灰
阶值来模拟,灰阶值最亮(白,R:255 G:255 B:255)的高度,最暗(黑,R、G、B
值均为0),不过FC的灰阶只有2^4-10(10个重复)6阶而已,所以可能运算起来有6种
高度,关於色阶看下图的色盘会发现一堆重复:
http://blog-imgs-36.fc2.com/y/o/j/yojouhankurashi/yychr.jpg
对於利用像素的灰阶值来定义3D模型的深度(或高度)也早是个成熟的
作法了,从早期知名的3D地图、地形软体Bryce 3D开始,就是输入一随意
点阵图,他依照各像素的灰阶值建立一个地形:
https://www.youtube.com/watch?v=9K7J4Vw96_0
其他像3D STUDIO MAX也有类似的方法叫Displacement map:
https://www.youtube.com/watch?v=sNMYHATzNu8
还有MAYA、Softimage等等软体也都使用这样的概念,所以我才会做如此的猜测。
最後,柱子和树木如果只有单纯的长高度,但起来就像墙壁一样,人类在理解
上总会觉得不自然,但由於墙、柱子、树木,一个在平面上看起来都一样的东
西,长成3D应该是圆柱状抑或是块状都是人脑自己凭经验决定的,对於2D图来
讲那不过是个矩阵图形而已,所以最後这神奇的模拟器和那天才作者究竟要用
甚麽方法使得程式做更好更自然的表现实在令人期待啊~
这大概是这阵子最令人兴奋的模拟器新闻之一罗!
以上不负责任猜测和大家一起分享~TKS~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.166.72.179
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Emulator/M.1457595468.A.D1D.html
1F:推 rockmanx52: 你要不要乾脆把文章翻成英文直接跟对方讨论啊XD 03/10 15:53
2F:推 msun: 推 03/10 15:54
3F:推 kashin: 快推免得被发现看不懂 03/10 16:05
4F:推 erspicu: 以前在LAB有看过单一一张2D照片转3D的 没想到应用到 03/10 16:37
5F:→ erspicu: 游戏画面效果还满不错的 03/10 16:37
6F:推 twdvdr: 这样的3D像是以前没串接voodoo一代时 用2D显示卡的模拟3D 03/10 16:38
9F:推 qazxswptt: 所以林克冒险房子跟人叠在一起是什麽问题? 03/10 16:55
10F:→ oginome: 感谢erspicu大提共的资讯~第一个是提共多视点来满足3D的 03/10 17:03
11F:→ oginome: 条件,等於是三视图重新构建3D的意思,但这里提共了六视 03/10 17:04
12F:→ oginome: 图,所以建构好的3D资料更标准。 03/10 17:05
13F:→ oginome: 第二个由图片建3D的原理是要利用两张不同视点的图片去求 03/10 17:06
14F:→ oginome: 出图片中物件的景深,原理和戴3D眼镜很像,利用左右眼视 03/10 17:06
15F:→ oginome: 点的不同可以得到正确的景深,所以理论上独眼龙是没有远 03/10 17:07
16F:→ oginome: 近感的,能分别出远近完全是靠生活中的经验来弥补。 03/10 17:07
17F:→ oginome: 至於qazxswptt大的问题是,那房子应该往里面长,而不是外 03/10 17:08
18F:→ erspicu: 详细不清楚 但是真的有单一一张图转3D化的喔 只是效果 03/10 17:09
19F:→ oginome: 面,游戏里那些房子的景深值都是最低的(最下方的图层)。 03/10 17:09
20F:→ erspicu: 当然也有点假假的 03/10 17:10
21F:→ oginome: 所以理论上房子应该往内长,而不是往外长(往林克方向长) 03/10 17:11
22F:→ oginome: erspicu大说的是,那个MAKE 3D是这样写: 03/10 17:13
23F:→ oginome: Make3D takes a two-dimensional image and creates a 03/10 17:13
24F:→ oginome: a three-dimensional fly around model that includes 03/10 17:13
25F:→ oginome: depth and a range views 03/10 17:14
26F:→ oginome: 的确是可以由一张2D照片去构建3D的环状模型,包含景深和 03/10 17:16
27F:→ oginome: 视点,不过就数学定义来看,因为缺了Z值,所以理论上要 03/10 17:16
28F:→ oginome: 假设一个预设景深,只要预设值别差实际值太远,看起来也 03/10 17:17
29F:→ oginome: 会满真实的,那个DEMO的影片其实际满不错的~ 03/10 17:17
※ 编辑: oginome (218.166.72.179), 03/10/2016 17:17:54
30F:→ erspicu: two-dimensional image 是指 2D影像不是两张图喔 另外 03/10 17:17
31F:→ oginome: 是啊,two-dimensional只是指2D的意思,我是说要重建一个 03/10 17:18
32F:→ erspicu: but unlike Microsoft’s more extensive product..... 03/10 17:19
33F:→ oginome: 正确景深的3D图,现实上至少要有两张不同视点的图才行 03/10 17:19
34F:→ erspicu: that meshes many images together to create 3D models, 03/10 17:19
35F:→ erspicu: , Make3D is a one image only service. 03/10 17:19
36F:→ oginome: 当然,to create 3D model和to create correct 3D models 03/10 17:21
37F:→ oginome: 还是不一样的 03/10 17:21
38F:→ oginome: 这模拟器的作者,目前就碰到这样的问题啊~ 03/10 17:22
39F:→ oginome: 但若光建造一个3D模型是可以假设一个Z值来套用,看起来也 03/10 17:23
40F:→ oginome: 很立体,不过就是会出现景深会有任意假设的问题,不会是 03/10 17:23
41F:→ oginome: 正确景深,然後游戏中要做互动就免不了模型会互相穿过去 03/10 17:24
42F:→ oginome: erspicu大有实作模拟器的宝贵经验,或许e大可以和他交流 03/10 17:26
43F:→ oginome: 也替我辈造福啊~大家都等不及这EMU完美问世呢~ 03/10 17:26
44F:→ erspicu: 他做得东西比我好太多了 加上我英文也很普通 03/10 17:38
45F:→ erspicu: 交流就算了吧 倒是希望作者以後能有更多说明之类的分享 03/10 17:38
47F:→ erspicu: 有人能顺利执行的吗 回家再用我家电脑跑看看 03/10 17:39
48F:→ oginome: erspicu大,我家里、公司两台用FF都跑不了,不管是他的 03/10 17:42
49F:→ oginome: ROM还是我自己上传喂模拟器吃的,都没办法动,一片黑 03/10 17:42
50F:→ oginome: erspicu大,就凭你的实作经验在板众间也是大腕级的板友呢 03/10 17:43
51F:推 qazxswptt: 喔喔,感谢解答回家再研究看看 03/10 17:48
52F:推 srwcc: push! 03/10 18:34
53F:→ oginome: 不过他讲微软那段真的很酸... 03/10 19:01
54F:推 qazxswptt: 看懂了 有些物件长的方向或切换方向的时间不对 03/10 20:13
55F:→ qazxswptt: 才会造成叠在一起或闪烁的感觉 但已经是很新鲜了 03/10 20:13
56F:推 popbitch: 感觉有好几种3D模式可以切换 03/10 21:33