A SceneKit and Metal Powered interactive globe for UIKit and SwiftUI

dot-globe

A SceneKit and Metal Powered interactive globe for UIKit and SwiftUI

Features

  • Display an interactive 3D globe
  • Customize the appearance of the globe, including earth color, glow color, and reflection color etc.
  • Control the radius of the earth and size of the dots on the globe.
  • Enable/disable particle effects, such as stars.
  • Works with SwiftUI.

TODOs:

  • Add animation and interaction with the globe

Showroom

earthmap.mp4

Usage

UIKit

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
      // initialize controller here
       let globeController = GlobeViewController()
       globeController.earthColor = UIColor(red: 0.0, green: 0.482, blue: 0.871, alpha: 1.0)
       globeController.glowColor = UIColor(red: 0.0, green: 0.22, blue: 0.482, alpha: 1.0)
       globeController.reflectionColor =  UIColor(red: 0.0, green: 0.482, blue: 0.871, alpha: 1.0)
        
       present(globeController, animated: true, completion: nil)
    }
}

Customization:

  • dotCount: Amounts of dots used to draw the earth map, adjust it for your needs
  • earthRadius: Adjusts the radius of the earth in the globe.
  • dotSize: Sets the size of the dots displayed on the globe, by default, it is (0.005 / 1.0).
  • enablesParticles: Enables or disables particle effects, by default, background is starry.
  • particles: Sets the particle system for the globe’s background.
  • background
  • earthNode: You can directly access to the earthNode to customize the earth itself
  • earthColor: Sets the color of the earth on the globe.
  • glowColor: Sets the color of the earth’s glow effect.
  • reflectionColor: Sets the color of the earth’s reflection effect.
  • glowShininess: Adjusts the shininess of the earth’s glow effect.

GitHub

View Github