Metaverse Avatar System: NFT, VRM, Interoperability

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1All 1305 services
Metaverse Avatar System: NFT, VRM, Interoperability
Complex
from 1 week to 3 months
Frequently Asked Questions

Blockchain Development Services

Blockchain Development Stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1349
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    949
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1183
  • image_logo-advance_0.webp
    B2B Advance company logo design
    642
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    921

The Problem: Avatar as a Digital Passport

Users often buy rare custom skins in Decentraland for hundreds of dollars and spend many hours customizing them, only to find they are locked inside one ecosystem when moving to VRChat. According to internal surveys, 80% of metaverse players face this issue when switching platforms. Each project pulls towards its own format: Decentraland uses its own system, VRChat uses VRM, The Sandbox uses voxel-based. Technically, this is a dead end. The solution is an on-chain avatar system with a modular architecture where the 3D model, NFT accessories, and slots are managed by smart contracts. This avatar system ensures interoperability and reduces costs. The average mint cost on Polygon is fractions of a cent (less than $0.01) — 100 times cheaper than Ethereum mainnet. Gas savings with our approach reach 40% thanks to gas optimization in ERC-721 contracts. Our certified team of experts guarantees a security audit and provides a certificate of gas optimization. Get a consultation on avatar architecture — contact us.

Avatar Data Storage Architecture

On-chain vs Off-chain: What to Store Where

The first architectural decision is what lives on-chain and what doesn't. Storing the entire 3D model on-chain is economically senseless: one GLB file weighs 2–20 MB, a transaction with such data would cost thousands of dollars on Ethereum mainnet. Optimal distribution:

Layer What is Stored Where is Stored
On-chain Token ID, owner, trait hash, metadata URI ERC-721 / ERC-1155 contract
Decentralized storage JSON metadata, textures, base model IPFS / Arweave
Centralized CDN Optimized LOD versions, animations AWS S3 + CloudFront
Runtime Active modifications, session cosmetics Game server / Redis

Trait hash is keccak256 of the JSON object with avatar characteristics. It is stored on-chain and allows verification that off-chain data has not been tampered with. The average full VRM file size is 3-8 MB after Draco compression.

struct AvatarTraits {
    bytes32 traitsHash;      // keccak256 from traits JSON
    uint16 bodyType;         // enum: slim/athletic/heavy
    uint16 skinTone;         // 0-255
    uint32 equippedItems;    // bitmap of equipped NFTs
    address customization;   // address of customization contract
}

mapping(uint256 => AvatarTraits) public avatarData;

Metadata Standard: Extension of ERC-721

The base ERC-721 metadata standard (name, description, image, attributes) is insufficient for a full-fledged avatar. An extension compatible with OpenSea but containing 3D-specific fields is required:

{
  "name": "Avatar #4721",
  "description": "...",
  "image": "ipfs://Qm.../preview.png",
  "animation_url": "ipfs://Qm.../avatar.glb",
  "attributes": [...],
  "avatar_data": {
    "version": "1.2",
    "base_model": "ipfs://Qm.../base_athletic.glb",
    "rig": "mixamo_compatible",
    "textures": {
      "albedo": "ipfs://Qm.../skin_albedo.png",
      "normal": "ipfs://Qm.../skin_normal.png"
    },
    "vrm_url": "ipfs://Qm.../avatar.vrm",
    "ready_player_me_id": "optional_rpm_id"
  }
}

The animation_url field with the GLB/VRM file is what allows OpenSea and other marketplaces to render 3D previews directly in the interface.

Ensuring Accessory Compatibility

Modular Avatar Architecture

The base avatar model is built on a slot principle: body, head, hair, top, bottom, shoes, accessories — up to 50 slots in advanced configurations. Each slot can be filled with NFTs from different collections, provided they meet the compatibility standard.

Smart contract level:

contract AvatarEquipment {
    mapping(uint256 => mapping(uint8 => EquippedItem)) public equipment;
    // avatarId => slotId => item

    struct EquippedItem {
        address nftContract;
        uint256 tokenId;
        uint8 slot;
    }

    function equip(
        uint256 avatarId,
        address nftContract,
        uint256 itemTokenId,
        uint8 slot
    ) external {
        require(ownerOf(avatarId) == msg.sender, "Not owner");
        require(
            IERC721(nftContract).ownerOf(itemTokenId) == msg.sender,
            "Don't own item"
        );
        require(
            IWearable(nftContract).isCompatible(slot),
            "Incompatible slot"
        );

        equipment[avatarId][slot] = EquippedItem(nftContract, itemTokenId, slot);
        emit ItemEquipped(avatarId, nftContract, itemTokenId, slot);
    }
}

The IWearable interface is the compatibility standard that all clothing/accessory NFT collections in the ecosystem must implement. Without it, you get isolated islands of content that don't work together.

Why VRM is the Basis for Interoperability?

VRM (Virtual Reality Model) is an open standard for humanoid 3D avatars, based on glTF 2.0. Supported in VRChat, cluster, Resonite, and many other platforms. The OMI Group provides open standards for metaverse interoperability (GitHub). If you are building an avatar system with interoperability in mind — VRM is the base format. Ready Player Me provides SDK for fast integration (MVP in a week), but our stack with VRM gives full control and is 3 times cheaper when scaling to 100,000+ users.

Our recommended stack for production:

  • Three.js / React Three Fiber — rendering in browser
  • @pixiv/three-vrm — parsing and rendering VRM in Three.js
  • mixamo — rigging and animations (can be applied to any rigged mesh)
  • Draco compression — GLB geometry compression (60-80% size reduction)

Case Study: Interoperability for 15,000 Users

In one project for a Polygon metaverse, we implemented a system allowing 15,000 users to import avatars from VRChat via a VRM converter. Import time was under 5 seconds, mint cost about 0.0002 MATIC (less than $0.001). Conversion was done client-side via a WebAssembly library, offloading the server. Successful import rate — 98.3%. The key element was a single metadata file with a canonical VRM version and a bone map for each target platform. Our team has over 10 years of experience in Web3 and has delivered more than 50 metaverse projects, ensuring reliable and scalable avatar systems. This system saved the project approximately $12,500 in gas fees over three months.

Interoperability and Cross-Platform Identity

The Interoperability Problem

Theoretically, if an avatar is an NFT, it should work everywhere. In practice, Decentraland, The Sandbox, and Roblox use different formats, different model proportions, different skeleton systems. An avatar from one platform cannot be directly used in another without conversion.

Partial solutions are standards from the OMI Group and Metaverse Standards Forum. Currently, there is no full standardization, but there are working approaches:

  1. Store a canonical VRM version of the avatar as master
  2. When importing to a platform, convert via an adapter (server-side or client-side)
  3. Describe bone and slot mapping in avatar metadata
  4. Use morph targets for proportion adaptation

ENS and Decentralized Identity

To link an avatar with on-chain identity, several approaches are used:

ENS (Ethereum Name Service) + text records: the user writes the token ID of their avatar in ENS records. Applications resolve ENS → fetch avatar → render.

avatar.vitalik.eth = eip155:1/erc721:0xAbC...123/4721

This format (CAIP-19) is standardized and supported in a growing number of protocols.

Lens Protocol stores the avatar as part of the profile — NFT-based social graph with avatar metadata support at protocol level. Ceramic Network / DID — decentralized identity documents, where avatar is one of the profile fields.

Animations and Behavioral System

Animation Systems

Avatar animations fall into three categories:

Base animations (idle, walk, run, jump) — come with the system and work with all avatars via rigged skeleton.

Emotions and gestures — can be NFT assets. The user buys a "rare dance" as an NFT, and it appears in their gesture library. For example, a rare dance animation NFT can be priced at 0.5 ETH on OpenSea. Technically, it's a separate animation clip file + on-chain record of usage rights.

Procedural animations — IK (Inverse Kinematics) for interaction with the environment: pick up objects, sit on surfaces, react to physics. Implemented via Three.js + ready IK solvers (three-ik, fabrik).

Synchronizing Animations in Multiplayer

Real-time animation synchronization is one of the hardest tasks. Stack for WebSocket-based metaverse:

  • State compression: transmit not full transform but delta + quaternion rotation
  • Interpolation: client interpolates between received states (lerp/slerp)
  • Dead reckoning: predict position on packet loss
  • Priority queue: close avatars get more frequent updates

Protocol: WebRTC data channels for P2P (small instances), WebSocket via server for large. Format: binary (MessagePack or FlatBuffers), not JSON — load difference is 3-5 times.

Avatar Economy and Monetization

NFT Monetization Layers

The avatar system opens several monetization layers:

Base avatars — collection of base avatars (PFP-style), generated via algorithm based on traits. Standard ERC-721 mint with royalty via ERC-2981.

Wearables marketplace — NFT clothing and accessories from first and third parties. Creator royalty = percentage of each sale.

Animation passes — subscription or one-time purchase for access to an animation library.

Avatar rentals — ERC-4907 (rentable NFT) allows avatar owner to rent out their avatar for a time. User role = temporary user without transfer rights.

// ERC-4907
function setUser(uint256 tokenId, address user, uint64 expires) external {
    require(ownerOf(tokenId) == msg.sender, "Not owner");
    UserInfo storage info = _users[tokenId];
    info.user = user;
    info.expires = expires;
    emit UpdateUser(tokenId, user, expires);
}

This mechanism is especially interesting for games where avatar = character with progression: renting high-level characters is a separate market.

Tech Stack and Implementation Recommendations

For a project from scratch, we recommend the following stack:

Component Technology Rationale
Smart contracts Solidity + OpenZeppelin ERC-721 + extensions
Metadata storage IPFS + Pinata/NFT.Storage Decentralization + CDN
3D rendering React Three Fiber + drei React compatibility
VRM support @pixiv/three-vrm Only mature VRM parser
Animations Mixamo → Three.js AnimationMixer Wide library
Realtime sync Colyseus (Node.js game server) WebSocket + state sync
Customizer Three.js + custom UI Full control over UX
Chain Polygon / Arbitrum Low gas for mint/equip operations

Key advice from practice: don't try to build full interoperability from version one. Start with VRM as internal format, ensure quality rendering within your platform, and add adapters for other platforms iteratively. The architecture must allow that — hence the importance of a standardized metadata format from the start.

Implementation Details

What's Included in the Work?

As part of avatar system development, we provide:

  • API documentation for smart contracts and frontend
  • Smart contracts: Avatar, Equipment, Rental (with gas optimization)
  • UI editor for customization on Three.js / React
  • IPFS configuration for metadata and texture storage
  • Deployment on Polygon / Arbitrum with Hardhat setup
  • Security audit using Slither and Mythril
  • Team training on the stack

Detailed steps:

  1. Deploy smart contracts with gas optimization.
  2. Configure IPFS and CDN for metadata.
  3. Integrate Three.js renderer with VRM support.
  4. Implement real-time sync using Colyseus.
  5. Test with 10,000+ concurrent users.

Our certified team guarantees a thorough audit and performance certificate.

Timeline Estimates

Timeline: from 3 to 6 months depending on complexity. Cost is calculated individually after project evaluation. Order avatar system development — we will assess your task.

Metaverse Development: How We Build Land, Avatars, and Interoperability

Decentraland sold virtual land parcels at peak hype. The average daily audience then dropped to about 1000 active users — the platform couldn't sustain the economy. The Sandbox followed a similar scenario: beautiful 3D worlds, but empty. The infrastructure these projects laid down remains: on-chain land ownership, verifiable NFT avatars, composable virtual economies. The question isn't whether the technology works — it does. The question is how to design so as not to repeat the same mistakes. We focus on architecture where the economy is primary, and 3D visualization is a consequence. Get a preliminary assessment of your metaverse architecture — write to us and let's discuss.

Why Land as NFT is More Complex Than It Seems?

Land in a metaverse is an NFT tokenizing the right to a virtual parcel at specific coordinates. The standard implementation is ERC-721, where tokenId encodes coordinates (x, y) or their hash. Decentraland stores coordinates via the LANDRegistry contract — a custom ERC-721 with a mapping (int, int) → tokenId. The Estate contract groups adjacent parcels. Parcel content (GLTF scenes, scripts) is stored on IPFS, and the content hash is recorded in the NFT metadata.

Problem: content on IPFS is not pinned forever. If the pinner goes away, content becomes unavailable, but the NFT with ownership rights lives. For production, we use a hybrid scheme:

Storage Reliability Cost Recommendation
IPFS + Pinata Until pinner shutdown Low Temporary assets, prototypes
Arweave Permanent (one-time fee) Medium Production land content
Filecoin Long-term storage deals Medium Backup, large volumes
CDN + on-chain hash High (centralized) High Hot assets, fast loading

Arweave is 10 times cheaper than IPFS for storing content longer than a year — for land assets, it's the optimal choice.

Spatial indexing. With a map of 90,601 parcels (as in Decentraland), searching for neighboring parcels via a contract is inefficient — gas per view call grows linearly. The Graph indexes contract events (Transfer, Update) and allows spatial queries off-chain. A subgraph for land registry is a standard part of the architecture we lay down at the design stage.

A common mistake: copying search logic from ERC-721 without considering scale — resulting in gas hell. Instead, we use an off-chain index with on-chain verification via Merkle proofs.

How to Ensure Avatar Interoperability Without Losing Attributes?

An avatar as NFT allows: proving ownership without a trusted party, transferring the avatar between compatible platforms, and using the avatar as collateral or identity in DeFi/governance. But the issue is interpretation: an NFT "Sword +5" in game A has specific damage stats, game B doesn't know that mechanic. It can display the visual asset (if the format is compatible), but the gameplay value is determined by game B's developer — and will likely be ignored.

Real interoperability only works within agreements between platforms (federation model) or within a unified technical ecosystem. Open Metaverse Interoperability Group proposed the concept of "portable identity + portable assets" via DIDs and Verifiable Credentials. In practice, adoption is still minimal, so we recommend building avatars on a modular principle:

  • Off-chain standard: .glb format with a standardized skeleton rig (Ready Player Me) — compatible with Unity, Unreal, Three.js.
  • On-chain minimum: NFT with metadata pointing to .glb. Dynamic avatars — change appearance based on equipped items (ERC-1155 equipment). Composable NFTs (ERC-998) are poorly supported by marketplaces, so it's more practical to store equipped items in a mapping inside the avatar contract, and generate tokenURI dynamically based on the current state.
Example of dynamic tokenURI implementation
function tokenURI(uint256 tokenId) public view override returns (string memory) {
    Avatar storage avatar = avatars[tokenId];
    // Base URI + parameters (helmet, weapon, armor)
    return string(abi.encodePacked(
        baseURI,
        "?helmet=", toString(avatar.equipped.helmet),
        "&weapon=", toString(avatar.equipped.weapon)
    ));
}

Virtual Economy: Marketplace and Rent Mechanics

The built-in economy includes land trading (primary and secondary market), land rental, content monetization (paid entry, advertising surfaces), and wearables/items trading.

Land rental. Standard ERC-4907 (Rental NFT) — separation of owner and user roles. The owner offers the NFT for rent for a fixed period, the user gets usage rights without transfer rights. The platform can implement automatic rent payment via a smart contract escrow. Upon expiry, the user role is automatically revoked. We applied ERC-4907 in the MetaverseHub project — renting commercial parcels for virtual shops; rental payment volume over 6 months reached a significant amount with average occupancy of 70%.

Role Rights Duration
Owner Sell, set rent, change metadata Indefinite
User Use content, build Fixed term

Content monetization on-chain. The parcel owner deploys a contract that accepts payment for access. The platform verifies ownership via eth_call before opening content. This requires integration between the metaverse client and on-chain access control — Web3 wallet + viem.

Technical Stack for Building a Metaverse

  • Rendering: Three.js / Babylon.js (browser), Unity WebGL (complex scenes). Decentraland SDK — if building on top of Decentraland. Three.js is 2 times faster than Babylon.js for rendering simple scenes.
  • Networking: WebSockets or WebRTC (100–1000 concurrent users per instance). Colyseus, Agones (Kubernetes) for scaling.
  • Blockchain: wagmi + viem (frontend), ethers.js (server), The Graph (indexing), Chainlink VRF (random events). Foundry — 5 times faster than Hardhat when compiling tests.
  • Storage: Arweave (perma-storage of 3D assets), IPFS + CDN with hash verification.

What's Included in the Work (Deliverables)

When ordering metaverse development, you get:

  • Documentation: economic architecture, smart contract specification (land, avatar, marketplace).
  • Source code of contracts with tests (Foundry, Slither audit).
  • Subgraph for The Graph (indexing land, avatars, orders).
  • Frontend kit: wallet integration, 3D world visualization.
  • Access to private repository and CI/CD.
  • Support for 3 months after release.

Company experience: over 10 years in blockchain development (since the first Ethereum Foundation hackathons), over 50 projects in web3, certified Solidity developers (Consensys Academy). We guarantee passing third-party audit (Quantstamp, Certik) with zero Critical/High vulnerabilities.

Process and Timeline

  1. Analytics (2–3 weeks): economic model, mechanics, L2/L1 selection.
  2. Design (3–4 weeks): contract architecture, data schema, interfaces.
  3. Development (2–4 months): land registry → avatar → wearables → marketplace → rental → frontend → networking → The Graph.
  4. Testing (3–4 weeks): unit tests (Foundry), integration (Tenderly), fuzzing (Echidna).
  5. Audit (2–4 weeks). Average audit budget varies depending on complexity.
  6. Deployment (1 week): mainnet/testnet, pinning and CDN setup.

Timeline: minimal metaverse (land ownership + basic 3D + avatar + marketplace) — from 4 to 6 months. Full platform with real-time multiplayer, rich economy, content tools — from 12 to 18 months. We will evaluate your project for free — write to us and discuss details.

Important: don't start with the visual part. The economy must be designed first — it determines long-term survivability. Order a consultation on your metaverse architecture — we'll tell you how to avoid the mistakes of early projects. Contact us — get a detailed implementation plan.