Skip to main content

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()