如何在SCENEKIT中绘制无限长的线?

How to draw infinitely long line in SCENEKIT?

我想像 SketchUp 中那样绘制无限长的轴。我已经画了固定长度的线,但我想要它无限长。

根据您的意思的上下文,您检查线条的大小何时即将穿过屏幕中的某个 x 或 y 轴。您可以使用 size.frame 检测屏幕的大小。或者,您可以使用 CGRectGetMidX、CGRectGetMidY 等。

例如,我会这样做:

var x = CGRectGetMaxX(self.frame)
//Where y is the max size of the line you have
if x <= y {
    //Code where you make the line shape extend or add another line over it to make it look continous
}

用固定长度的线来伪造它,这些线从相机的视野之外(称为平截头体)延伸,穿过它,然后再次超出它。

您可以为每个轴创建开始和结束 SCNNode 实例。然后每次相机改变它的视图时,调用

func isNodeInsideFrustum(_ node: SCNNode,
     withPointOfView pointOfView: SCNNode) -> Bool

在您的 6 个端点中的每一个上。如果端点在截锥体内,则将其移得更远,直到不在为止。

SCNSceneRendererDelegate 协议中的方法可能对您有所帮助。