想知道怎么自制初音360度全息投影吗,详细到爆
下面的文章出处——作者esby,来自百度初音未来吧下面是正文了
内容简介及版权说明:
本教程基于我原创的第一个版本教程扩充而成,更新的大部分内容来自mmdagent。org论坛和QQ群116145950 各位同学的讨论和贡献,在此向他们表示感谢。此外,我也参考了网上其他的相关信息,并会在教程中尽我所知的指明来源。同时,如果各位同学引用此篇文章,也请注明作者esby,来自百度初音未来吧或者mmdagent。org论坛。非常感谢。
初音未来与全息投影
初音是著名的虚拟偶像,并且大家对初音的全息投影演唱会一定都不陌生。初音演唱会的全息投影准确来说是基于2.5D的,采用投影仪+全息膜的方式进行投影,并不能同时看到侧面和后面啥的。全息膜采用了德国sax 3D的全息投影屏幕,特点就是只能透过特定方向的光,可以做到屏幕透明,以前用在橱窗投影比较多。首先让我们通过下面初音演唱会的视频,再一次欣赏一下初音感谢祭上的风采。
http://v.youku.com/v_show/id_XMjMzNDUwMzQ0.html
接下来我具体说一下如何自己实现这种初音演唱会的全息投影。演唱会最大的特点是采用了透明全息膜进行投影,而并非普通不透明的幕布。如果大家有投影仪,那么你只需要购买全息膜就可以了,在淘宝上就可以买到,但是可惜的是价格不菲,按平方米计价,尤其是想要做到像演唱会那样大屏幕真人尺寸。不过这个教程重点是低成本自制,所以我下面会介绍如何选择低成本投影材质以及如何实现在透明材质上进行投影。没有高亮度投影仪没关系,电脑显示器和手机屏幕就可以。买不起大块全息膜没有关系,我们可以买一小块A4样品,只需要三四十块,甚至不买全息膜找一块透明度好的塑料膜都可以,只不过和全息膜相比,在强光下的效果略差一些。投影的方式也很简单,只要把手机屏幕或者显示器和投影膜成45度附近夹角就可以了。对投影视频的要求就是黑色背景,所以拿到普通的vmd或者pmm 文件之后需要去除掉背景舞台只保留人物然后导出视频,或者直接下载黑色背景视频。不要觉得这种方法太简陋,实际投影的效果并不差,大家可以看看下面视频:
http://v.youku.com/v_show/id_XMzIwMTI2NDM2.html
前面提到过了,初音的全息投影演唱会仍然是平面的,你并不能看到初音的背面和侧面。因此我们对于上面的投影方式并不满足,下面我们会介绍怎么通过金字塔实现360度的初音幻影成像演唱会,效果会比真正感谢祭还要更炫
全息投影与幻影成像
在正式介绍之前,首先澄清一下全息投影和幻影成像的区别。我们介绍的金字塔投影方法更加正式的说法应该是360度幻影成像,和学术意义上的全息成像并不相同。本质上是光学反射和汇聚,但是很多时候也都把幻影成像俗称为全息投影。我们并不必过于纠结叫法上的问题,我们关注的重点是成本和最后实现的效果,也就是性价比。其实除了金字塔投影方式之外,我们还正在研究圆锥,圆柱以及光栅类的真正360度投影,欢迎大家关注,也许会在下一个教程中给大家介绍。
幻影成像简介
金字塔结构的360度幻影成像并不是我发明的一个特别新鲜的东西,据我所知大概在05年附近就由丹麦的vizoo公司发明。
http://v.youku.com/v_show/id_XNDQ4MDIxMg==.html
国内开始比较为人所知是开始于国内华南理工大学某位同学用类似的原理做了一个原型,引起很多人的兴趣。我感觉前面那一段蝙蝠侠的剪辑比较出彩。
http://v.youku.com/v_show/id_XMjk0NzQ1NzU2.html
另外这位同学还编了很有意思的一个小短剧,配音很赞
http://v.youku.com/v_show/id_XMzIwOTI1ODA0.html
然后在去年的感恩节假期,在我已经白发苍苍的生日那天,我很无聊的做了幻影成像的实验并写了百度博客文章“Miku及全息投影相关”。
幻影成像基本原理
前戏已经差不多,下面开始正经事。通过前面vizoo的视频,我们已经大概可以知道所谓金字塔幻影成像的原理,在此我再次引用一下。
简单来说透明金字塔四棱柱结构的四个面有来自四个不同投影仪的影像,它们分别是同一个动作的前后左右不同侧面。为了增强效果,金字塔的每一面贴有透明反射膜,目的是为了增强强光下的表现,不贴的话需要关灯或者灯光比较暗。不同侧面的光学投影在内部叠加,因此看起来就有360度全息投影的效果了。所以,我们可以发现,这种幻影成像是四个平面视频的光学叠加效果。最重要的东西讲完了,下面都是如何实现的细节。
四个投影仪显然不够环保低成本,所以我们考虑怎么简化一下。其实关键是有分屏输出就好了,考虑到是在金字塔结构上投影,所以其实可以用一个投影仪,或者仅仅一个手机,IPAD或者电脑屏幕投影来搞定,只是需要把屏幕分成几个区域显示不同角度的图像。这一点上,我需要引用十一区aircord实验室对 IPAD改装全息投影的视频。
http://v.youku.com/v_show/id_XMTkzNDY4NDM2.html
需要注意的是在这个里面似乎只是分三个角度输出的,应该是去除了后侧的输出,只有270°视角。我们下面会讲如何实现不同角度的视频在同一个屏幕上分屏实现,以及金字塔的具体尺寸参数设计。
四分屏视频合成方法
前面提到,如果想要实现幻影成像,需要特殊的四个或者三个角度分屏视频。这里主要介绍四分屏的制作思路及方法。
首先需要决定需要投影的展示内容是什么,这个在很大程度上决定了视频制作的难度。如果你要做一个模型的展示,首先需要得到四个角度的视频或者图片。你可以用各种 3D建模软件(Maya, 3ds max等等)进行模型的制作,然后设置摄像头导出不同角度的视频或者图像。你甚至可以用四个摄像头直接录制不同角度图像,然后处理掉不需要的背景类信息从而得到需要展示的模型的图像。我这里不去讨论如何建模或者录像并且去除背景的问题。具体到我们这里初音的幻影成像,因为我们已经有了 Mikumikudance以及对应的很多pmd模型和动作资源,因此可以很方便的采用MMD来导出一段舞蹈的前后左右四个角度的视频然后进行合成。需要注意的是,这里的要求和前面单面全息膜的投影视频要求类似,最好是黑色背景,或者是有简单的特效,比如雪花等等,去除不必要的舞台,尤其是平面类的配件。如何使用MMD导出四个角度的视频大家可以去mmdagent。org论坛或者百度mikumikudance查找资料。接下来我主要介绍如何把已经得到的四个角度视频合成一个四分屏视频。
首先根据金字塔光学反射幻影成像的原理,我们可以四分屏视频的合成结果应该类似于下面这样
可以看出,对四个视频的处理主要包括旋转和拼接。理论上,你可以使用很多视频处理软件,比如绘声绘影,Adobe Premiere等来进行视频的旋转合成。你可以选择你熟悉的软件,如果你都不熟悉也没关系,那么我接下来给出一种使用免费小巧的软件 virtualdub,加上avisynth以及一个Rotate插件实现四分屏合成的方法。这种方法不需要专业的视频处理技巧,也不需要下载巨大的视频处理软件。首先需要下载这三个软件,115的下载码分别是dpi0mdzf,bewfgp2w和c2zgqqbz。virtualdub不需要安装,avisynth需要安装,rotate是一个dll插件,后面会用到。接下来我们需要用到下面我写的一个脚本:
loadplugin("Rotate.dll插件的路径")
back=AviSource("后侧视频back.avi的路径")
back_crop=Crop(back,106,44,-106,-40)
back_rbg=converttoRGB32(back_crop)
Rotate(back_rbg, 135)
back_rotate=Last
left=AviSource("左侧视频left.avi的路径")
left_crop=Crop(left,106,44,-106,-40)
left_rbg=converttoRGB32(left_crop)
Rotate(left_rbg, 225)
left_rotate=Last
right=AviSource("右侧视频right.avi的路径")
right_crop=Crop(right,106,44,-106,-40)
right_rbg=converttoRGB32(right_crop)
Rotate(right_rbg, 45)
right_rotate=Last
front=AviSource("前侧视频front.avi的路径")
front_crop=Crop(front,106,44,-106,-40)
front_rbg=converttoRGB32(front_crop)
Rotate(front_rbg, 315)
front_rotate=Last
StackVertical(StackHorizontal(back_rotate, left_rotate), StackHorizontal(right_rotate,front_rotate))
将以上脚本内容复制到一个文本文件中,然后修改其中对应的你的Rotate.dll插件的目录位置,以及前后左右视频所在的路径,在这里分别是采用MMD导出的left/right/front/back四个avi视频。最后将该文本文件的扩展名改为avs文件,然后打开virtualdub软件,将这个 avs脚本文件拖动到virtualdub窗口内即可看到合成后的视频效果。
需要注意下面几个问题:
所有文件的路径中最好不要包含中文或者空格
前后左右视频的格式最好是MMD直接输出的,如果采用了一些virtualdub不兼容的压缩格式,在处理的时候可能会出问题
下面我具体对脚本中的重要几句进行解释,如果你需要自行调整脚本可以参考。
loadplugin("Rotate.dll插件的路径") ,这个是告诉软件Rotate.dll插件的位置,因为我们此处进行的是45度类的旋转,不同于普通的90度旋转,因此需要用到这个dll插件
back=AviSource("后侧视频back.avi的路径") ,此处告诉软件需要旋转的视频的位置
back_crop=Crop(back,106,44,-106,-40) ,此处是告诉软件对视频预先进行裁剪,裁剪的目的是为了把视频剪裁成正方形方便旋转。因此裁剪参数的设置和导出视频的分辨率有关,此处参数的是针对 512*384分辨率的视频进行裁剪,裁剪之后变为300*300分辨率。上面这句话的含义是指对视频左侧裁掉106,顶部裁掉44,右侧裁掉106,底部裁掉40像素,最后得到的结果就是300*300。一般来讲,如果原始视频人物在中央位置,你需要保证左右位置对称,上下可以根据头部空间留的大小来适当调整。如果你选择了其他分辨率,可以根据这个方法自行计算需要裁剪的像素多少。
back_rbg=converttoRGB32(back_crop) ,这一句是为了旋转做准备转换成RGB32格式
Rotate(back_rbg, 135) ,调用Rotate插件进行135度旋转
back_rotate=Last ,获取上次操作的结果保存在back_rotate中供合成的时候调用
对于其他几个角度的视频处理方法类似,最后我们调用下面的语句进行视频拼接。
StackVertical(StackHorizontal(back_rotate, left_rotate), StackHorizontal(right_rotate,front_rotate))
StackHorizontal(back_rotate, left_rotate)表示后侧和左侧视频水平排列
StackHorizontal(right_rotate,front_rotate)表示右侧和前侧视频水平排列
最后调用StackVertical将上述排列的结果再垂直排列,得到的结果就是600*600分辨率的方形视频,其排列如下
后,左
右,前
需要注意的是,这里得到的视频人物是呈现交叉形状的,因为投影的时候需要采用如下的方式
交叉形状的投影内容会导致液晶屏幕和金字塔的方向不一致,需要旋转一下金字塔或者液晶屏幕才可以。因此我们可以对得到的图像再次旋转45度,从而得到十字形状的视频,虽然可以修改脚本再次旋转,不过需要注意填充的问题,有一些繁琐。在得到X排列的视频之后,在Virtualdub中继续选择,视频 ->滤镜,然后选择rotate2,输入-45度旋转,并且选择扩充帧,即可得到旋转为十字的结果。下一步再次在视频->滤镜中选择 resize,将视频大小调整为合适的方形 (这种十字调整方法来自mmdagent。org论坛cocl2及落雪同学的贡献)。
最后在virtualdub中选择对合成后的视频进行导出,在导出之前必须选择一种压缩格式,在菜单中选择视频->压缩,并且选择一种压缩格式,比如Divx,不要使用默认的raw格式,因为会导出视频非常巨大。
采用MMDAgent全息投影版进行实时四分屏合成
首先介绍一下什么是MMDAgent。MMDAgent是十一区名古屋工业大学开发的一个基于 mikumikudance的pmd模型和vmd动作的语音交互软件。和Mikumikudance的不同在于,MMD重点是利用Pmd模型进行编舞得到 vmd动作文件,而MMDAgent则可以去读取pmd模型和MMD的vmd动作文件,并且重点是使用这些模型和动作基于脚本机制实现了日语的交互功能,包括语音识别和合成。前面提到的视频合成处理方法只能录制视频然后采用播放器进行播放,不能做到实时和交互,并且合成过程还是有一些繁琐。为了解决这个问题,我在原版MMDAgent的基础上修改后使其可以进行实时的四分屏显示和Avi视频导出功能。全息投影版MMDAgent的版本还在持续更新中,并且我正在向其中不断增加新的交互功能,比如中文的识别和合成,人工智能等等。如果你感兴趣可以到mmdagent。org论坛讨论并且下载最新版本 MMDAgent全息投影版。
使用MMDAgent全息投影版进行四分屏视频的显示和导出非常简单,只需要使用MMDAgent打开你想要的 pmd模型和vmd动作就可以实现四分屏的播放,并且你可以导出Avi视频将来使用手机和Pad/MP4进行播放。MMDAgent还支持很多其他交互功能,
金字塔参数设计方法
关于金字塔的尺寸参数问题,事实上对金字塔的尺寸要求重点只有一个,也就是金字塔四个侧面三角形和底面的夹角是45度。之所以设计45度的原因是45度情况下,屏幕上显示内容和金字塔成的虚像是对称的。具体原理可以用下面这个图来解释
根据这个侧面和底面夹角的要求,以及侧面是等腰三角形,底面是正方形,我们可以计算出金字塔侧面需要的尺寸比例。具体来讲,首先根据你的投影屏幕的尺寸设计需要的底面正方形的边长,然后作为侧面三角形的底边长,侧面三角形的顶角根据立体几何可以算出大约为70.53度。
除了手工采用量角器进行设计,你还可以通过尺规作图的方法进行,首先根据需要的底面边长乘以2分之根号3,即0.866,得到侧面三角形的腰长,然后利用此长度作为半径画一个圆形。然后在圆弧上用圆规使用底面边长作为半径画圆来切分四段圆弧。连接分割点以及圆形的中心即可得到需要的五边形,其中四个等同小三角形既是所需要的金字塔侧面。
金字塔材质及反射膜的选取
这一部分主要是金字塔材料的选择,一般来讲只要透明度好的材料就可以。一般是采用透明的有机玻璃,也就是亚克力材料来做。选择材料的时候要综合考虑亚克力的透光度以及厚度,比如2mm左右。太薄了强度比较弱,太厚了容易产生重影的问题。但是采用亚克力切割需要一定的设备,个人加工不太容易。在实验阶段很多同学采用玻璃甚至保鲜膜,不过这两个因为强度和透光率的问题效果一般比亚克力略差一些。
为了增强在光线比较亮的环境下的表现,可以在亚克力玻璃上贴透明反射膜,从而提高反射率,能够增强白天投影成像的效果。幻影成像使用的反射膜在淘宝上有卖,可以选择A4大小尺寸的进行切割,价格三四十元附近。因为反射膜主要是反射光线,所以一般贴在金字塔的外侧。除了采用亚克力+反射膜之外还可以直接采用幻象玻璃来进行。
投影屏幕(投影仪)以及支架问题
理论上讲成像的效果和投影源的投影光强度有关系,采用高亮度的投影仪可以增强显示效果。但是普通使用的高亮度投影仪一般都比较大,适合比较大金字塔使用。市面上有一些迷你LED投影仪比较合适一般的小型金字塔,但是那个的亮度一般不算太高。所以为了性价比考虑,大家可以采用液晶屏幕进行投影,小的可以用手机,MP4,大的可以用Pad甚至笔记本台式机液晶屏。虽然液晶屏幕的亮度不算高,但是如果采用亚克力+反射膜,在一般光线情况下白天的效果也还不错。
接下来在投影时候还有一个实际的问题需要考虑,那就是如何支撑投影屏幕的问题。在实际的幻影成像中,一般有两种投影方式。一种是投影屏幕在上面从上往下投,金字塔在下面正放。另外一种是屏幕在下面从下往上投影,金字塔倒放。第一种投影方式牵扯到如何使用支架来固定和放置屏幕的问题。第二种同样需要考虑如何固定金字塔防止倾倒的问题,虽然有一些同学直接把金字塔顶部削平然后倒放在屏幕上,但是这种方法只适合临时使用,就像第一种你可以用手拿着屏幕朝下投影一样。。
让我们一起来试试吧!
技术贴需要顶谢谢楼主分享{:H5_05:} = =感觉碉堡了 我火星了嘛。。科技何时进化成这样了。。{:H5_01:} 金字塔那个有看过 也有人试过可行 噗、噗好复杂.................. 完全没看懂{:H5_07:} 虽然没看明白但觉得好厉害…… 比我转的一帖还负责啊,好可怕 技术宅拯救世界! 一般人都不懂,因为我是5班人 好技术好方法{:KB15:} 伤不起的技术宅啊 技术宅啊~~真牛X~~