> For the complete documentation index, see [llms.txt](https://docs.otherside.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherside.xyz/odk-docs/odk-plugin/odk-koda-cam.md).

# ODK Koda Cam

Selfie Cam

![](https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2Fgit-blob-678d1778f8712210cec035a133c8edb0d87c7d79%2F0.gif?alt=media)

The Selfie Cam example is made up of several modular pieces to showcase the various features required for the end-to-end flow.

At a high-level, the system is composed of the following key components and functions:

**BPC\_ODK\_ScreenshotComponent**

A component attached to the `BP_ODK_PlayerCharacterBase`, responsible for toggling selfie camera mode. It spawns the various `BP_ODK_CameraActor` camera actors to take different shots.

**BP\_ODK\_SelfieCamera**

This actor contains a CineCamera component. Once spawned, it attaches to the player's hand socket and communicates its location to the Animation Blueprint via a Blueprint Interface. This enables the Animation Blueprint to sync the hand's location using an IK chain. The actor also manages the Camera UI and binds to its events.

### Using the Selfie Cam <a href="#id-3tcxig5qpz99" id="id-3tcxig5qpz99"></a>

<mark style="background-color:$danger;">**Important Note**</mark><mark style="background-color:$danger;">: The BP\_AttachmentManagerODK singleton must be defined in your level's world settings > Non Morpheus singletons section.</mark>\ <mark style="background-color:$danger;">The Koda Cam system relies on this manager to perform mesh attachments to both character and crowd actor instances. If the singleton is not present, attached meshes will fail to render, and the avatar selfie stick functionality (for short-arm configurations) will not execute correctly.</mark>

The Koda Cam can be activated using the `IMC_ODK_KodaCam` Enhanced Input Mapping with the following actions:

**IA\_ODK\_KodaCam\_Toggle** - Enable/Disable the Selfie Camera

**IA\_ODK\_KodaCam\_Rotate** - Rotate the camera when active

**IA\_ODK\_KodaCam\_Zoom** - Changes to field of view to simulate camera zoom

**IA\_ODK\_KodaCam\_TakePhoto** - Save the image to disk

### Live Config <a href="#ac237jldyiug" id="ac237jldyiug"></a>

The selfie cam is capable of saving high resolution images to disk and uploading them. This could lead to several large files being uploaded by multiple users.\
To mitigate any risk, several Live Config values have been added:

**ODK.ScreenshotCam.Enabled** - Allows for disabling the activation of the Selfie Cam. If this is set to false, when a user presses the toggle shortcut, the BP\_SelfieCamActor will not be spawned.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.otherside.xyz/odk-docs/odk-plugin/odk-koda-cam.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
