如何在SCNSceneView中绘制跟随3D点的UIBezier路径?

如何在SCNSceneView中绘制跟随3D点的UIBezier路径?,3d,uikit,scenekit,uibezierpath,3d,Uikit,Scenekit,Uibezierpath,本质上,我只是想重新实现这段视频中显示的内容: 在本视频中,您将看到它们以某种方式在3D点之间绘制连接线,但这些线本身在本质上是2D的,因为它们在屏幕上保持完全相同的宽度,无论它们离相机有多近或多远 我猜他们正在将3D点投影到2D,并从2D点创建UIBezierPath。所以我采取了这种方法,它看起来效果非常好!然而,有一个问题我找不到很好的解决方案:3D点最终投影到2D视图上,不管它们是在相机前面还是后面 在做了一些研究之后,我发现这是3D图形的一个正常方面。通常的解决方案是截断与摄影机平面相

本质上,我只是想重新实现这段视频中显示的内容:

在本视频中,您将看到它们以某种方式在3D点之间绘制连接线,但这些线本身在本质上是2D的,因为它们在屏幕上保持完全相同的宽度,无论它们离相机有多近或多远

我猜他们正在将3D点投影到2D,并从2D点创建UIBezierPath。所以我采取了这种方法,它看起来效果非常好!然而,有一个问题我找不到很好的解决方案:3D点最终投影到2D视图上,不管它们是在相机前面还是后面

在做了一些研究之后,我发现这是3D图形的一个正常方面。通常的解决方案是截断与摄影机平面相交的任何几何体。然后可以忽略平面后面的任何点,只留下摄影机平面前面的顶点进行渲染,同时保持每条线中的角度相同

这一过程在本文中有很好的描述——从“从视图空间到剪辑空间”的副标题下开始

因此,我现在一直在想,我是否应该尝试实现我自己的janky版本的剪辑(对于像我这样的3D渲染高手来说,这听起来很吓人),或者是否有更好的方法需要更少的代码?这是一种仍有望利用UIBezierPath令人敬畏的渲染功能的方法


感谢您查看我的问题,伙计们。:)

你确定这些是2D线条,而不仅仅是视频中的小圆柱体吗?因为用一个圆柱体连接两个点是很容易的SceneKit@orangenkopf是的,我认为如果你仔细观察,很明显,这些线在透视投影中的宽度绝对没有变化,如果它们是实际的几何体,它们应该是这样的。如果要向用户传送线条,而不考虑它们与设备的距离,它们正是您想要的。您确定这些是2D线条,而不仅仅是视频中的小圆柱体吗?因为用一个圆柱体连接两个点是很容易的SceneKit@orangenkopf是的,我认为如果你仔细观察,很明显,这些线在透视投影中的宽度绝对没有变化,如果它们是实际的几何体,它们应该是这样的。如果您要向用户传送线路,而不考虑线路与设备的距离,则它们正是您想要的。