也许不是正确的做法,总归也算实现了想要的效果。
先说结论:
盒子是五个重新绘制mesh的cube,每个点都是实时更新的,以此实现全息的效果。
想要实现的效果:
屏幕显示的内容根据人的位置做变换来实现模拟真是的物体情况,也就是全息。
思考过程:
1.首先要怎么做到让程序知道我的位置上,从而让程序做变换。我想到的是使用摄像头来获取人脸的位置。unity可以用OpenCVForUnity或者MediaPipe,我倾向于使用MediaPipe,他相对于OpenCV可实现功能少,以手势识别和人脸识别为主,但是OpenCV太消耗性能了。
2.拿到人脸位置就可以模拟人的位置转动模型了,此时发现虽然功能虽然实现了,但是并没有很强的交互感觉,这就要引入盒子的概念。
3.这就出现了问题,我发现如果建一个盒子,不管是动相机还是转模型,盒子的边缘一定会穿帮,于是我尝试使用正交相机。这样效果就有了,但是还是会穿帮。
4.干脆,实时绘制盒子。我需要固定八个点,其中四个点是屏幕的四个角,另外四个点是盒子后边的四个角。屏幕的四个角好说是个固定的位置。后面的四个点是正交相机动的四个点。
5.中间的模型还保持透视相机,更真实。
Unity3D|全息盒子模拟|根据人脸位置改变画面
于 2024-04-22 11:06:28 首次发布