Swiftでは、SpriteKit/SceneKitを使用して、点をプロットすることができます。
今回数万個の点をプロットし、一つ一つをタップで選択できるような機能が必要でした。
発生した問題
- 点の1つ1つを
SCNNode
で表示させると、点が多すぎて動作が非常に重い。 - 一方で
SCNGeometry
で1つのオブジェクトとして表示させると動作は軽いが、点1つ1つをタップで検出できない。
解決策
SCNGeometry
を作成する手前でvertices: [simd_float3]
として座標データリストを定義しておく。SCNGeometry
を表示する一方で、タップ検出はvertices
の中で一番近いものとする。
これで動作速度の大幅に改善しました!ラグ等一切なくなりました!