【问题标题】:How to draw infinitely long line in SCENEKIT?如何在 SCENEKIT 中绘制无限长的线?
【发布时间】:2015-12-22 00:38:37
【问题描述】:

我想在 SketchUp 中绘制无限长的轴。我已经画了固定长度的线,但我希望它无限长。

【问题讨论】:

  • 您可以在屏幕移动时重绘线条,也可以让线条居中
  • 尝试将'INFINITY'作为math.h的宽度或高度
  • 没有成功。不过好主意:)

标签: ios objective-c swift scenekit


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 非常非常感谢。把上面函数的实现展示出来会更有帮助。
【解决方案2】:

根据您的意思的上下文,您检查线条的大小何时将穿过屏幕中的某个 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
}

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 2022-01-25
    • 2016-04-13
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2019-05-18
    相关资源
    最近更新 更多