LogoLogo
API Status
  • 👋Welcome
  • 🌐What is Morpheus Platform?
    • Interoperability
  • â„šī¸Help
    • 📗Glossary
    • 🆘Support
    • Firewall problems
    • EULA
  • CREATION
    • 🎮Unreal Development
      • ⚡Get Started
        • âš’ī¸Download the Editor
        • âĢUpload Content
        • 🌎Creating your own map
        • 📝Morpheus Base Project
        • ❓Differences from Unreal
          • 🧍Character Configuration
        • 📡Morpheus Networking
          • Introduction to Morpheus Networking
          • Network Levels
          • Replicated Properties
          • RPCs
          • Morpheus Render Targets
          • Morpheus Array
          • Networking FAQ
          • Replicating Sublevels
      • 📚Features & Guides
        • 📒Example Plugin
          • Nameplates
          • In-game roles
          • Resizing
        • 🏊Actor Pooling
        • 🔊Audio
        • 🎭Avatars
          • Creating an Avatar
          • Attachments
            • MML Attachments
          • Custom Animation Variables
          • Importing an NFT collection
          • Capsules and Mesh Transforms
        • 🤖Bots
        • đŸŽ™ī¸Chat
          • Unreal Text Chat
        • đŸŽ›ī¸Control Panels
          • Control Panel Configuration
          • DJ booth mission control
          • Observer Controls
        • 🔉Crowd Audio
        • đŸ¤ŧCrowd Rendering
          • Legacy Animated Crowd
            • Animated Crowd Console Commands
            • Attaching static meshes to crowd members
          • Crowd Materials
          • Performance Parameters
          • Live Config Settings
          • Crowd Animation
            • Crowd Anim Blueprint
              • User Guide - Crowd Anim Blueprint
              • Reference Guide - ABP Nodes
                • Animation Playback
                • States and State Machines
                • Variables
                • Transitions
                • Special
                • Blends
                • Additional Notes
        • 🍱Helpers & Extras
          • "Instanced Objects" in Blueprints
          • Objects with "world context"
          • Making DataAsset classes
          • Duplicate Objects
          • The Bootflow Subsystem
          • The "Wait For Condition" System
          • Advanced Graphics settings
          • Listening to inputs on UObjects
          • Morpheus UserID
          • World Services
          • M2Extras: Skins System
        • đŸ–Ĩī¸Loading Screen
        • ⚡Live Config
          • Editing for a World
          • Editing Locally
          • Default Settings
          • Accessing via Blueprint
          • Adding New Settings
          • Overriding Defaults
          • Using Arrays
        • 🧊MML
        • đŸ•ēMotion Capture
        • 📡Networking
        • đŸ“ĸNotifications
        • Raycastable Crowd
        • 🌐Singletons
        • 📱Streaming & Multiplatform
          • GFN on mobile
        • đŸ–Ĩī¸UI
          • "UI Mode"
        • đŸ—ƒī¸User Collections
          • Creating a New Object Definition
          • Accessing from Unreal
            • Creating Objects Definitions
            • Transfer Objects
            • User Collection Views
            • Receiving Updates
        • đŸ“ēVideo Players
          • Embedded Video Player
          • Millicast video streaming
            • How to Setup an In-Game Video Stream
            • Picture-in-Picture mode
          • Streaming Video Player
            • How to Setup a URL Video Player
            • Picture-in-Picture mode
        • 🐞Visual Debugging
          • Inspector
        • đŸĒŸWeb UI
        • Online Services
          • KV Store Service
        • 💠Web Requests
          • Http Requests
            • Legacy HTTP Nodes
          • JSON Handling
          • WebSockets
          • Identity Validation
          • Allowed External URLs
          • Walkthrough Example
            • Example Counter Service
        • âœˆī¸World Travel
          • World Travel in the editor
        • Avatar Physics Assets
        • Action Gameplay Helper Components
      • 🔑Workflows
        • â†—ī¸Upgrade the Editor
          • đŸ–Ĩī¸Version History
        • âš™ī¸Editing Project Settings
        • 📈Profiling
        • đŸ§ēMarketplace Importing
        • đŸ› ī¸Extra Workflows
          • Setup Play-in-Editor
          • Setup Local Asset Validation
          • Adding Gameplay Tags
          • Validating Game Assets
          • Custom Connection Modes
          • Connect Editor to a World
          • Common Issues
      • 📚Useful Reading
        • ⭐Best Practices
    • 🌎Worlds
      • 📩Invite Players
        • Setting Role Groups
      • Persistent Worlds
      • Always on Worlds
    • 📅Running events
      • ✅Large scale events - Checklist
      • 👾Anti-Cheat (EAC)
      • 🎮Player Entry
        • 📱React Native
        • Steam
        • đŸ’ģHardware Reqs
      • đŸŽĨBroadcast
        • 📹OBS Integration
      • Failover
      • 🏁Capacity And Queue Management
  • ADMINS
    • đŸ‘ĒAccess Control
      • Adding metaverse contributors
      • Creating a new project
    • 💲Pricing
      • Development Support
      • Included Usage & Overages
      • Cloud Streaming
      • Access Modes
      • War Room Support
      • Platform SLA
    • âš™ī¸Settings
      • đŸ—ƒī¸Projects
  • APIs and Tooling
    • đŸ–Ĩī¸API Reference
      • Accounts
      • Events
      • Key/Value Store
      • Organizations
      • Realtime
      • User Profile
      • World Builder
      • Worlds
    • đŸ’ģTemplate Web App
      • đŸ’ĸModeration
    • Pixel Streaming
    • 🚀Launcher
  • Integrations
    • 📊Analytics
      • Sending events from web
      • 🎮Sending Events from Unreal
    • đŸ’ŦChat
      • 🎮Integrating Pubnub with your Unreal Project
      • Adding Moderation to Chat
Powered by GitBook
On this page
  • Overview
  • Usage
  • Adding to the static mesh store
  • Adding to your character
  • Limitations
  • Navigating to the mesh store

Was this helpful?

  1. CREATION
  2. Unreal Development
  3. Features & Guides
  4. Crowd Rendering
  5. Legacy Animated Crowd

Attaching static meshes to crowd members

PreviousAnimated Crowd Console CommandsNextCrowd Materials

Last updated 1 month ago

Was this helpful?

Overview

The technical owner of attachments to crowd members is the rendering team.

You can attach/unattach static meshes to crowd members (which is any character further away than the closest ~30) dynamically. This has a similar function to attaching things to skeletal meshes in regular Unreal, but is for rendering only.

Examples usages are for rendering guns attached to players' arms, or for rendering forcefields which can be spheres attached to a different socket on the player.

Usage

Adding to the static mesh store

Each mesh that you want to use as an attachment needs to be in your level's skeletal crowd mesh store.

Add your static mesh to the Meshes array, specifying the socket name of the sockets you want this mesh to attach to.

Important: make sure your mesh has "Allow CPUAccess" set to true in the Details panel, or your game will crash in cooked builds.

The socket name is used for both the socket on the static mesh, and the socket on the skeletal mesh that you're attaching to.

For example, to attach the origin point of the static mesh mesh to the socket "socket_lHand" on the player, you leave the socket name as socket_lHand. But to attach a specific socket on the static mesh to "socket_lHand" on the player, you will need to name the socket in the static mesh to also be "socket_lHand".

If the specified socket doesn't exist in the skeletal mesh, it will attach to the root bone of the skeletal mesh.

You can scale the size of the mesh when it gets attached by adjusting the "Relative Scale" of the static mesh socket.

Adding to your character

The mesh store is just the list of meshes that are possible to attach to a crowd member. To actually attach them, you need to use the Added Crowd Static Meshes override array in the Character Asset Component of your Morpheus Character.

Adding a mesh to this array in the defaults will cause the character to render with that attachment when in the crowd. You can update the attachments that the character has dynamically by modifying this array at runtime, then calling Reload Character on the character asset component.

Any mesh you add to this array must have been added to the mesh store.

Attachments can use materials using the custom data parameters in the same way that the animated crowd can.

Limitations

All meshes that can be used as attachments must be specified in the mesh store. This means you can't currently dynamically load new meshes at runtime (e.g. MML meshes) and add them as crowd attachments.

You cannot scale or alter meshes that are attachments at runtime in any way. This means that you can't change the size of the bubble dynamically. Instead, you need to provide every variation to your mesh that you need as an additional element in your mesh store array, pick from that list.

Navigating to the mesh store

Don't know which mesh store your project uses? Find your roles asset in WorldSettings.

In the roles asset, find the "Pawn Lod Level Set" of the role you want to configure (usually Default).

In your pawn lod level set asset, expand the crowd lod level set you want to configure (usually lod 1) and open your crowd data asset.

This asset gives you your mesh store!

🎮
📚
đŸ¤ŧ
If you don't know which mesh store is used in your level, you'll need to navigate to it, explained at the bottom of this page.
In my example, I have added a bubbleSocket socket to my SM. This socket does not exist on the skeletal mesh of the player.
Here, my code branches to either attach or unattach the bubble from my character.
A crowd member being rendered with the bubble attachment.
My mesh store is DA_SkeletalCrowdMeshStore_LoD1.