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

