前两天用 Python 语言写了个小工具 Hamal,可以将一些朴素的数据文件转化为 POV-Ray 场景文件,然后进行光线跟踪渲染,从而实现数据的可视化。有关 Hamal 的用法,详见 「Hamal 指南」。

昨晚想给娃做一个伪全息投影的玩具,就是 4 张三角形的透明塑料片拼接成一个金字塔,然后用手机播放网上下载来的初音未来的伪全息视频,将屏幕画面投射到这个金字塔的四个面上。

制作这种金字塔的教程,百度一下,铺天盖地。淘宝上也有成品,不过,自己制作起来并不困难,要点就是金字塔底边框是一个正方形,边长与手机屏幕相同,并且金字塔的每个面与底边框围成的平面之间的夹角为 45 度角。硬一些的塑料板会更方便制作。

难度稍微大一些的是伪全息视频的制作,应该有这方面的专业软件。不过,由于我刚写了 Hamal,踌躇满志,文风开始进入不严肃模式。我决定投身演艺界,拍摄一部伪全息舞台剧。我围观了最近的演艺圈新闻,看看谁有潜力拿小金人。斯坦福兔子以一幅傲视群雌的姿态出现在我的视野……

斯坦福兔子最近化名为 foo.asc,潜伏在 github.com 山里。不够,他把自己隐居的事告诉了不止一个娱记。这种事,我只知道李白干过。我不远万里前往 github 山,许以重金和美貌的母兔子,将它请了回来:

$ wget https://github.com/liyanrui/hamal/blob/master/data/foo.asc

然后我开始写剧本,规划舞台布置以及照明等问题:

$ hamal foo.asc

没办法,整个拍摄团队就老哥我一个。

剧本与拍摄草案很快就就出来了。剧本太长,这里就不显摆了,它就在我的硬盘里躺着,文件名叫 foo.inc。舞台布置与照明的草案 foo.pov 的内容如下:

#version 3.7;
#include "colors.inc"
background {color White}
global_settings {assumed_gamma 1.0}#declare model_center = <8.315960, 8.015419, -6.846305>;
#declare model_radius = 12.512303;
#declare view_center = model_center;camera {orthographiclocation <0, 0, -2 * model_radius> + model_center * zlook_at <0, 0, 0>translate view_center
}light_source {model_center + <0, 0, -10 * model_radius>color rgb <1.000000, 1.000000, 1.000000>shadowless
}#declare point_size_of_foo = 0.031281;#include "foo.inc"
object {foopigment {color rgb <0.03, 0.2, 0.4>}
}

斯坦福兔子抓过 foo.pov 看了看,又扔到了一边,你傻啊,舞台背景怎么能是白色呢?

那我就改成黑色:

background {color Black}

兔子又看了看,鄙夷地说,我是着妆是白色的,而不是脏兮兮的灰蓝色!

那我就改成白色:

object {foopigment {color White}
}

兔子又看了看,没再说话。

那我们就开始拍吧!兔子先生,请你在上台,转一圈!

兔子没有动。兔子先生……请你……它居然发火了,老哥,你业余的吧!转圈是随便转的吗?一切都要设计,精心设计!

好吧,我从 foo.pov 里删掉了

object {foopigment {color rgb <0.03, 0.2, 0.4>}
}

然后又很耐心地用了 5 分钟的时间,给它设计了一套很精确很复杂很繁琐的转圈说明:

#declare offset_dist = 1.3 * model_radius;// 正面
object {footranslate -model_centerrotate clock * 360 * ytranslate model_centertranslate -offset_dist * ypigment {color White}
}// 背面
object {footranslate -model_centerrotate 180 * yrotate 180 * zrotate -clock * 360 * ytranslate model_centertranslate offset_dist * ypigment {color White}
}// 右面
object {footranslate -model_centerrotate -90 * yrotate -90 * zrotate clock * 360 * xtranslate model_centertranslate -offset_dist * xpigment {color White}
}// 左面
object {footranslate -model_centerrotate 90 * yrotate 90 * zrotate -clock * 360 * xtranslate model_centertranslate offset_dist * xpigment {color White}
}

兔子看了看 foo.pov,又一次没再说话。

好,那我们开拍!兔子没有动。我只好再说一遍,开拍!它还是没动。

对,还没有场记,不得不再客串一下。

在硬盘上,在 foo.inc 与 foo.pov 所在的目录里创建了场记单 foo.ini,让兔子转一圈需要拍 60 帧,于是我在 foo.ini 里写下了

Input_File_Name = foo.pov
Initial_Frame = 1
Final_Frame = 60

然后我说,开拍!

兔子说,你还没启动摄像机!

好吧,

$ povray foo.ini

刷唰唰唰,四台摄像机启动了起来,它们从舞台的四面同时拍摄。兔子走上台,按照 foo.pov 里的说明,开始漫不经心的转圈……

上面的是「视频」是我用 imagemagick 工具箱里的 convert 命令用 60 帧图片合成的动图:

$  convert -delay 10 -loop 0 foo*.png foo.gif

第一场,拍完后,把之前谈好的片酬给了兔子。它去找母兔子制造斐波那契数列了,而我只好与一个身无分文的我惺惺相惜。

看来,要拍下一场,要么靠打赏,要么找风投啊……

后记

由于我觉得伪全息投影比较好玩,所以我在 Hamal 中增加了这一功能,上述的繁琐过程(除了获取数据文件的步骤),现在可归结为三条命令:

$ hamal --holography foo.asc
$ povray foo.ini
$ convert -delay 10 -loop 0 foo*.png foo.gif

斯坦福兔子的伪全息舞台剧相关推荐

  1. matlab读入三维点云数据斯坦福兔子

    其中点云数据是斯坦福兔子,做三维点云重构后的人可以好好看看,只是简单读入程序,作为初学者比较好些,进一步的研究还在后边,有机会的话会继续上传,比如说delauny三角网格划分,还想进一步研究snake ...

  2. 斯坦福兔子和其他图形学模型数据下载

    常见模型的下载地址:http://www.cc.gatech.edu/projects/large_models/ 斯坦福兔子的下载地址:http://www.cc.gatech.edu/projec ...

  3. PCL环境配置+斯坦福兔子测试程序

    开发环境:windows10+VisualStudio2017+PCL-1.8.1-AllInOne-msvc2017-win64.exe+pcl-1.8.1-pdb-msvc2017-win64.z ...

  4. PCL1.12安装+VS2019环境配置+测试程序:斯坦福兔子

    PCL 本文源码:PCL环境配置以及测试案例,显示斯坦福兔子 安装 下载PCL的安装包和pdb文件,即PCL...AllInOne...exe和pcl...pdb...zip, 安装.exe文件 我安 ...

  5. 伪全息老婆制作1(Shader入门1)

    看见了一个很好看的银河系shader:Unity Shader Graph -- 银河效果教程 但是我好像没有UnlitGraph这个东西,百度下怎么回事? 看到了一篇文章ShaderGraph(一) ...

  6. 53位作者只有1个华人?NeurIPS 2021大奖揭晓,Google、DeepMind、斯坦福百花齐放

      视学算法报道   编辑:技术组 [新智元导读]11月30日,NeurIPS 2021会议公布了杰出论文奖(Outstanding Paper Awards).时间检验奖(Test of Time ...

  7. 第四次游戏革命:全息游戏 from:http://www.cnblogs.com/alamiye010/archive/2012/08/15/2640881.html...

    第四次游戏革命:全息游戏 最近一个月,把国内外十数款单机/网游大作横扫一遍,感慨颇多.国内游戏,抄袭遍地,十足的坑爹,浪费青春.反观国外,韩国网游经典而耐玩,<C9>+<洛奇英雄传& ...

  8. 虚拟现实、增强现实与全息投影的区别

    通俗而泛泛地说: 虚拟现实(VR): 能够让人感觉进入了一个并不存在的人工制造的环境之中. "这是哪儿,我怎么到了这里?" 增强现实(AR):能够让人感觉在所处的环境中增加了一些并 ...

  9. 3D成像方法汇总(原理解析):双目视觉、激光三角、结构光、ToF、光场、全息...

    作者丨路人甲ing..@CSDN 来源丨https://blog.csdn.net/tyfwin/article/details/89110067 编辑丨3D视觉工坊 3D成像方法汇总介绍: 这里要介 ...

最新文章

  1. C# 父类类型引用子类的实例理解
  2. vector和deque的区别?
  3. 【Java Calendar日历类】可视化日历程序(控制台输出)
  4. 三个月前被 K8S 弃用,Docker 火了!获 2300 万美元融资
  5. nhibernate事务锁表的问题
  6. 【RobotStudio学习笔记】(五)工具数据
  7. ANDROID模拟器访问本地WEB应用10.0.2.2
  8. OpenCv中 width 和 widthStep的区别
  9. Adaboost Random Forests 等机器学习方法 搜索热度
  10. ESDCAT静电猫项目
  11. 哔哩下载姬v1.3.3 B站视频下载工具
  12. #loj3090 [BJOI2019] 勘破神机
  13. 为什么很多视频一模一样,也没有被判定为搬运?
  14. fastboot的安装使用
  15. web攻防之跨站脚本攻击漏洞
  16. 史上最详细的maven仓库详解
  17. python模拟键盘打字_python模拟鼠标点击和键盘输入的操作
  18. iMeta | 厦门大学马永慧组探究捐菌者对肠菌移植的伦理认知和态度
  19. css中间镂空,怎么用纯CSS实现镂空效果
  20. 测试入门——搜索功能测试用例设计

热门文章

  1. CSS盒圆角、阴影、边界图片、背景
  2. Oracle按时间分组查询
  3. 通俗解释网络语到底什么是PTSD?什么是饭圈PTSD?
  4. db2与mysql编目_关于DB2相同的数据库编目问题
  5. 路由器突然断网服务器无响应,突然断网了 怎样判断路由器是不是坏了?
  6. 张洪斌 html css,网页设计与制作张洪斌 刘万辉体设计.doc
  7. 如何用java解一元二次方程方程
  8. 飞控地面站MissionPlanner界面修改------MainV2界面添加控件并动态刷新数据
  9. 干货!毫米波雷达超强解读
  10. 医学检验质量管理和控制计算机的,【临床医学论文】临床医学检验技术质量管理现状分析(共4169字)...