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