扩展投影矩阵

时间:2015-04-23 15:37:00

标签: ios opengl-es augmented-reality vuforia

我想使用增强现实将3D心脏放在人体内。我有一个源自iPhone相机内在函数的投影矩阵。使用Vuforia SDK生成的投影矩阵和姿势,可以完美地显示相对于帧标记的对象。但是,我想在framemarker后面的场景中放置一个对象。为了保持幻觉,标记后面的任何物体确实需要将摄像机图像放在物体前面。这是一张用于解释的图。

Problem illustration - heart should be drawn behind image

由于投影矩阵将是图像平面前方的空间而不是远平面,因此在我看来,我需要扩展投影矩阵或将整个世界放在另一个投影中。简单地将心脏移位到标记后面并不起作用,原因很明显,你实际上永远不会在图像平面后面放任何东西。所以我要问的问题是,这可能是通过某种投影矩阵扩展来实现的,还是有其他可行的方法呢?

1 个答案:

答案 0 :(得分:1)

这不是一个严格的编程答案,但我会尽力帮助。 我没有为iOS XCode编程,而是通过Unity使用Vuforia,我希望这能让你了解如何在你的方法之外解决这个问题。

Unity有一个名为resolution = 1024 multiplier = float(resolution) / (lut[-1][0] - lut[0][0]) lookup = [(0, 0, 0, 0)] * resolution for index in range(resolution): r, g, b, a = find_color(lut[0][0] + i / multiplier, vlist, lut) lookup[index] = (r, g, b, a) def find_color2(x): return lookup[int((x - lut[0][0]) * multiplier)] 的东西,它基本上允许一个Object出现在ImageTarget后面。但是,由于您的应用程序要求您查看ImageTarget,您可以在DepthMask内尝试并更改ImageTarget的

  • OnTrackingFound()为透明材料
  • tranform.renderer.material.maintexture并实施shader减免

我知道这并不像你期望的那样有用,但我希望你能找到答案。

祝你好运。