Quick Start Examples
This page provides examples to quickly get started with the Genies Android SDK.
Integrated Path
This example shows the integrated path to load an Avatar and perform common actions.
// One-time process init
NafContainerApi.init(this, NafKitConfig.normalizedResolverConfig(this))
NafDefaultAssets.ensureLoaded(this)
// Drop a `NafView` and load an Avatar
val view = NafView(this)
setContentView(view)
view.onSurfaceReady = {
lifecycleScope.launch {
val avatar = NafAvatar.fromJson(assets.open("avatar.json").bufferedReader().readText())
view.session.loadAvatar(avatar) // default mode = Animated()
}
}
// toon shader, bundled preset
view.applyDefaultToonPreset()
// wearables
// WARNING: Equipping wearables is not currently functional (pending auth + inventory integration)
view.session.equip(NafAssetEntry("hat_001"))
view.session.unequip("hat_001")
// camera
view.cameraDistance = 2.5f
view.frameAvatar()
// lighting
view.lighting.setKeyLightDirection(45f, 10f)
view.lighting.setExposure(1.2f)
// opt-in pick + gizmo
view.clearColor = floatArrayOf(0.95f, 0.55f, 0.50f, 1f)
view.isPickingEnabled = true
view.isGizmoEnabled = true
view.onPick = { hit -> view.isGizmoVisible = (hit != null) }
// frame rate
view.adaptiveFrameRate = true
view.preferredFramesPerSecond = 60
view.renderScale = 0.75f
// teardown
view.unloadAvatar()