Kinetix Documentation
Website
  • 🖐ïļWelcome
  • 🕚About Kinetix
  • 🖌ïļUser-Generated Emote
    • ðŸĪ–Video-to-animation AI
    • ðŸĪļKinetix Emote Standards
    • ðŸĶīRetargeting
    • 🏂Kinanim (Emote streaming)
    • 🖊ïļTry the User-Generated Emote feature
  • INTEGRATION
    • ðŸĪ·SDK or API: what to choose
    • ðŸĪĐKinetix SDK
      • ⚙ïļSDK - Core Package
      • ðŸ§ĐSDK - Sample scene
      • 🧑‍ðŸ’ŧTested & approved Game Engines for the SDK
      • ðŸ’ŧSDK Integration in Unity
        • ⮇ïļSet-up Unity & Import the SDK
          • 🔑Get your Game authentification API Key
          • ⚙ïļSetup your Unity environment
          • 🔧Install the Kinetix SDK in Unity
          • âŒĻïļSDK Initialization - Unity
        • ⚡Quickstart - Unity SDK
        • ðŸĶ‹SDK Core Modules activation - Unity
          • 🔐Account Management in Unity
          • 💃Animation System - Unity
            • ðŸŽĒUnity's Animator System
            • ðŸŽĻCustom Animation System
            • ðŸŒģRoot Motion
              • RootMotion + NavMeshAgent
            • 🎞ïļFrame Controller
            • 💊IK Controller
            • ðŸŦĨAvatar Mask
          • ðŸ“ķNetwork - Unity SDK
            • Photon PUN
            • Photon Fusion
        • 🕚User-Generated Emote integration (Unity)
          • Embedding the PWA in your Unity application
          • Validation / Retake
        • 🚧How to update Kinetix SDK in Unity?
        • 📕SDK API Reference - Unity
          • KinetixCore
          • KinetixCore.Account
          • KinetixCore.Animation
          • KinetixCore.Metadata
          • KinetixCore.Network
          • KinetixCore.UGC
        • 📂Unity SDK Changelog
      • ðŸ•đïļSDK Integration in Unreal Engine
        • ⮇ïļSet-up Unreal Engine & Download the SDK
          • 🔑Get your Game authentification API Key
          • ⚙ïļSet up your Unreal Engine environment
          • 🔧Install the Kinetix SDK in Unreal
          • âŒĻïļUE SDK Core Package Initialization
        • ⚡Quick Start
        • ðŸĶ‹SDK Core Modules activation - Unreal
          • 🔐Account Management - UE
          • 💃Animation System - UE
            • Local player system in Unreal Engine
            • Avatar system in Unreal Engine
            • Without uploading an avatar (deprecated)
              • Animation in a Third Person Template
              • Animation in an existing project
          • ðŸ“ķNetwork - UE SDK
        • 🕚User-Generated Emote integration (UE)
        • 📕SDK API Reference - UE
          • KinetixCore
          • KinetixCore.Account
          • KinetixCore.Animation
          • KinetixCore.Metadata
          • KinetixCore.Network
        • ⮆ïļUpdating from 0.3 to 0.4
        • 📂UE SDK Changelog
    • 😍Kinetix API
      • 🔑Get your Authentification API key
      • 🔌API routes
      • 🊝API Webhooks
      • 🏓Possible Return Codes
  • Management
    • 🚊Developer Portal
      • ðŸ‘―Avatar Upload
      • ðŸ‘ŪUGC Moderation
    • 🖌ïļUGE: Guides & Best Practices
      • 📐User-Generated Emote specifications
      • 👌Video recording best practices
      • ðŸ‘ŧUser-Generate Emote Use Cases
  • SUPPORT
    • 📎Bugs reports & features requests
    • ❓FAQ
      • FAQ: General questions
      • FAQ: Unity SDK
      • FAQ: Unreal Engine SDK
    • ðŸĪ•Troubleshooting
    • 📚Glossary of terms
Powered by GitBook
On this page
  • Update via git
  • Register your avatar
  • Editing the pawn
  • Components
  • Code
  • Networking

Was this helpful?

Export as PDF
  1. INTEGRATION
  2. Kinetix SDK
  3. SDK Integration in Unreal Engine

Updating from 0.3 to 0.4

This page serves as a guide for those who have a project already setup with the plugin 0.3

PreviousKinetixCore.NetworkNextUE SDK Changelog

Last updated 1 year ago

Was this helpful?

From v0.4, we implemented a new paradigm where the retargeting is done on server side. To benefit from this upgraded emote quality, please follow this guide.

Update via git

Go to the plugins folder and git pull the latest version of the plugin

Register your avatar

Go on and upload your avatar as a .fbx file.

Add and setup your avatar correctly.

Animations generated BEFORE adding your avatar will not work with your newly added avatar.

After your avatar is successfully processed you can create new emotes and play them directly on your pawn in game.

Your setup is done. Click on "Display ID" and copy it.

Now let's get back to Unreal.

Editing the pawn

Components

Now the pawn doesn't need 2 skeletal meshes anymore as the animations downloaded are directly retargeted for the given rig server-side.

Remove the SkeletalMeshComponent "SkeletalMeshSource" and just let your own SkeletalMeshComponent.

You can refer to Avatar system in Unreal Engine for more details

Code

On the code, there is a new variable that comes with the Avatar uploading on the dev portal, the AvatarUUID.

After you have register your anim instance with its AvatarID, you can follow the same path to download an animation until you reach LoadLocalPlayerAnimation node:

If nothing shows or you can't play the animation, verify that the status of your avatar on the dev portal is "Available"

UWorld* CurrentWorld = GetWorld();
if (!IsValid(CurrentWorld))
    return;

UGameInstance* GI = CurrentWorld->GetGameInstance();
if (!IsValid(GI))
    return;

UKinetixCoreSubsystem* KinetixCore = GI->GetSubsystem<UKinetixCoreSubsystem>();
if (!IsValid(KinetixCore))
    return;

USkeletalMeshComponent* OwnSkeletalMesh = GetComponentByClass<USkeletalMeshComponent>();
if (!IsValid(OwnSkeletalMesh))
return;

KinetixCore->KinetixAnimation->RegisterLocalPlayerAnimInstance(
    OwnSkeletalMesh->GetAnimInstance(), TEXT("[MY_AVATAR_UUID]"));
    
FString Dummy;
FOnKinetixLocalAnimationLoadingFinished OnAnimationLoaded;
OnAnimationLoaded.BindUFunction(this, TEXT("OnAnimationLoaded"));
KinetixCore->KinetixAnimation->LoadLocalPlayerAnimation(
	AnimationIDToLoad,
	Dummy,
	TEXT("[MY_AVATAR_UUID]"),
	OnAnimationLoaded);

And after doing the path to download the animation you can simply call PlayAnimationOnLocalPlayer

UWorld* CurrentWorld = GetWorld();
if (!IsValid(CurrentWorld))
    return;

UGameInstance* GI = CurrentWorld->GetGameInstance();
if (!IsValid(GI))
    return;

UKinetixCoreSubsystem* KinetixCore = GI->GetSubsystem<UKinetixCoreSubsystem>();
if (!IsValid(KinetixCore))
    return;

FAnimationID AnimationIDToPlay;
UKinetixDataBlueprintFunctionLibrary::GetAnimationIDFromString(
    TEXT("[MY_EMOTE_UUID]"),
    AnimationIDToPlay);
KinetixCore->KinetixAnimation->PlayAnimationOnLocalPlayer(AnimationIDToPlay);

Networking

A new way of networking that saves a lot of bandwith and resources is to disable the SendPose in Project Settings > Kinetix Settings section.

ðŸĪĐ
ðŸ•đïļ
⮆ïļ
https://portal.kinetix.tech
Example of avatar available