Skip to main content
Glama
BLENDER_VRM_WORKFLOW_ROBOTICS.mdโ€ข20.9 kB
# Blender to VRM Workflow for Robotics **Create custom VRM models in Blender for robots, machines, and non-humanoids - despite VRM's humanoid limitations** [![Blender](https://img.shields.io/badge/Blender-3D_Modeling-blue)](README.md) [![VRM](https://img.shields.io/badge/VRM-Export-green)](README.md) [![Non-Humanoid](https://img.shields.io/badge/Non--Humanoid-Robotics-orange)](README.md) --- ## ๐ŸŽฏ **The Challenge: VRM for Non-Humanoids** **VRM format is designed exclusively for humanoid avatars with standardized bone structures:** - Head, spine, arms, legs, hands, feet - Humanoid proportions and animations - Facial blend shapes for expressions **For robots and machines, VRM is NOT ideal, but here's how to make it work anyway.** ### **โš ๏ธ VRoid Studio vs. Blender: Know Your Tools** #### **VRoid Studio = Pretty Anime Humanoids Only** ๐ŸŽจ **VRoid Studio is fantastic for:** - โœ… **Beautiful anime-style humanoids** (perfect proportions, cute faces) - โœ… **Pretty clothes, hairstyles, decorations** (thousands of options) - โœ… **Facial expressions and accessories** (glasses, hats, jewelry) - โœ… **Easy VRM export** (one-click for humanoids) - โŒ **Does NOT do anything else** - โŒ **No robots, animals, or machines** - โŒ **No custom non-humanoid shapes** - โŒ **No mechanical parts or technical models** **VRoid Studio = Human beauty salon for VRM avatars** #### **Blender = Everything Else (Including Robots!)** ๐Ÿ”ง **For VRM dogbots, caterpillars, articulated arms, or ANY non-humanoid:** - โœ… **Custom robot modeling** (from scratch or modifications) - โœ… **Animal creation** (dogs, cats, insects, dinosaurs) - โœ… **Machine design** (excavators, arms, vehicles) - โœ… **Mechanical animations** (joints, hydraulics, servos) - โœ… **Complex rigging** (beyond humanoid constraints) - โœ… **VRM export** (with workarounds for non-humanoids) **Blender = Full workshop for any 3D model imaginable** #### **The Reality Check:** ``` Want a cute anime girl with twintails? โ†’ VRoid Studio Want a VRM caterpillar robot? โ†’ Blender (DIY required) Want a humanoid avatar? โ†’ VRoid Studio Want a VRM dogbot? โ†’ Blender (DIY required) ``` ### **Why Use VRM Despite Limitations?** - โœ… **Unity compatibility** (direct import) - โœ… **VR platform support** (VRChat, Resonite, Cluster) - โœ… **Blend shapes** for mechanical animations - โœ… **Standardized format** for sharing - โŒ **Humanoid-only** bone requirements - โŒ **Limited to bipedal structure** ### **Better Alternatives for Non-Humanoids:** - **FBX/GLB** (recommended for robots) - **Custom glTF extensions** - **Proprietary formats** (USD, etc.) --- ## ๐Ÿง  **AI-Powered Research Phase (Architect First)** **Before touching any 3D software, let AI be your research assistant.** Build comprehensive knowledge of the "VRM scene" through systematic information gathering. Implementation becomes dramatically easier with a solid research foundation. **๐Ÿ“š [General AI Research Workflow](AI_RESEARCH_WORKFLOW.md)** - This VRM-specific research phase follows our comprehensive AI-powered research methodology for all development projects. The general workflow covers domain mapping, tool discovery, community intelligence, and web scraping integration across all technology domains. ### **Why Research First?** - **Avoid dead ends** - Know which tools actually work for non-humanoids - **Understand constraints** - VRM's humanoid limitations become clear - **Find communities** - Connect with experienced developers - **Discover alternatives** - FBX/GLB options when VRM doesn't fit - **Save time** - Don't reinvent solutions that already exist ### **AI Research Workflow:** #### **Phase 1: Domain Mapping** ``` Prompt AI: "Map the VRM ecosystem for robotics applications" - Standards organizations (VRM Consortium) - Official repositories and documentation - Current limitations and workarounds - Success stories with non-humanoid VRM ``` #### **Phase 2: Tool Discovery** ``` Prompt AI: "Find all VRM creation tools beyond VRoid Studio" - Blender add-ons and plugins - Unity packages and scripts - Alternative 3D software with VRM export - Web-based VRM editors - Command-line tools and APIs ``` #### **Phase 3: Community Intelligence** ``` Prompt AI: "Research VRM communities and resources" - GitHub repositories with examples - Subreddits (r/VRchat, r/VRM, r/3Dmodeling) - Discord servers and forums - YouTube tutorials and channels - Academic papers and research ``` #### **Phase 4: Web Scraping Integration** ``` Prompt AI: "Use web scraping to collect comprehensive VRM information" - Scrape official VRM documentation - Collect community forum discussions - Gather tutorial links and resources - Extract code examples and snippets - Build knowledge base of best practices ``` ### **Web Scraping as Research Tool** **BrightData MCP tools are perfect for this research phase:** - **Bypass restrictions** - Access locked documentation sites - **Comprehensive coverage** - Scrape entire communities and forums - **Structured collection** - Organize information systematically - **Real-time updates** - Get latest developments and tools **Fetch MCP tool works for accessible sites:** - GitHub repositories and documentation - Official websites and blogs - Open forums and communities - Public code examples ### **Research Output Goals:** #### **Knowledge Base Structure:** ``` VRM_Research/ โ”œโ”€โ”€ standards_and_specs.md # Official VRM specifications โ”œโ”€โ”€ tools_and_software.md # Creation and conversion tools โ”œโ”€โ”€ communities_and_forums.md # Where to get help โ”œโ”€โ”€ tutorials_and_guides.md # Learning resources โ”œโ”€โ”€ code_examples.md # Implementation snippets โ”œโ”€โ”€ success_stories.md # Real-world applications โ”œโ”€โ”€ limitations_and_workarounds.md # Known issues and fixes โ””โ”€โ”€ future_developments.md # What's coming next ``` #### **Tool Evaluation Matrix:** - **Compatibility** with non-humanoid models - **Community support** and documentation quality - **Learning curve** and ease of use - **Cost and licensing** considerations - **Integration** with existing workflows --- ## ๐Ÿ”ง **Blender VRM Creation Workflow** ### **Phase 1: Model Preparation** #### **1. Create Base Model** ``` 1. Model your robot/machine in Blender 2. Use proper scale (real-world units) 3. Keep polygons reasonable (<50k triangles) 4. UV unwrap for texturing 5. Create materials (PBR workflow) ``` #### **2. Rigging for VRM (The Tricky Part)** **VRM requires humanoid bone structure - map your robot parts to human bones:** ``` Humanoid Bones โ†’ Robot Parts Mapping: Hips (Root) โ†’ Main body/chassis โ”œโ”€โ”€ Spine โ†’ Main body (duplicate for multi-segment) โ”œโ”€โ”€ Chest โ†’ Upper body section โ”œโ”€โ”€ Neck โ†’ Neck/head mounting โ””โ”€โ”€ Head โ†’ Camera/sensor head Left Arm โ†’ Left manipulator arm โ”œโ”€โ”€ Left Shoulder โ†’ Arm base joint โ”œโ”€โ”€ Left Upper Arm โ†’ Upper arm segment โ”œโ”€โ”€ Left Lower Arm โ†’ Lower arm segment โ”œโ”€โ”€ Left Hand โ†’ End effector/gripper โ””โ”€โ”€ Fingers โ†’ Individual gripper fingers Right Arm โ†’ Right manipulator arm (same structure) Left Leg โ†’ Left locomotion system โ”œโ”€โ”€ Left Upper Leg โ†’ Hip/thigh joint โ”œโ”€โ”€ Left Lower Leg โ†’ Knee/shin segment โ””โ”€โ”€ Left Foot โ†’ Wheel/track system Right Leg โ†’ Right locomotion system (same structure) ``` #### **3. Create Humanoid Armature** ```python # Blender Python script to create VRM-compatible armature import bpy def create_vrm_armature(): # Create armature object bpy.ops.object.armature_add(enter_editmode=True, location=(0, 0, 0)) # Get armature and bones armature = bpy.context.object bones = armature.data.edit_bones # Create required VRM bones root_bones = [ ('Hips', (0, 0, 0.8)), ('Spine', (0, 0, 1.0)), ('Chest', (0, 0, 1.2)), ('Neck', (0, 0, 1.4)), ('Head', (0, 0, 1.6)), ('LeftShoulder', (-0.2, 0, 1.3)), ('LeftUpperArm', (-0.4, 0, 1.2)), ('LeftLowerArm', (-0.7, 0, 1.0)), ('LeftHand', (-1.0, 0, 0.8)), ('RightShoulder', (0.2, 0, 1.3)), ('RightUpperArm', (0.4, 0, 1.2)), ('RightLowerArm', (0.7, 0, 1.0)), ('RightHand', (1.0, 0, 0.8)), ('LeftUpperLeg', (-0.1, 0, 0.6)), ('LeftLowerLeg', (-0.1, 0, 0.3)), ('LeftFoot', (-0.1, 0, 0.1)), ('RightUpperLeg', (0.1, 0, 0.6)), ('RightLowerLeg', (0.1, 0, 0.3)), ('RightFoot', (0.1, 0, 0.1)), ] # Create bones with proper hierarchy for bone_name, location in root_bones: bone = bones.new(bone_name) bone.head = location bone.tail = (location[0], location[1], location[2] + 0.1) # Set parent relationships (simplified) bones['Spine'].parent = bones['Hips'] bones['Chest'].parent = bones['Spine'] bones['Neck'].parent = bones['Chest'] bones['Head'].parent = bones['Neck'] # Arm hierarchy bones['LeftUpperArm'].parent = bones['LeftShoulder'] bones['LeftLowerArm'].parent = bones['LeftUpperArm'] bones['LeftHand'].parent = bones['LeftLowerArm'] # Same for right arm and legs... return armature # Run the script create_vrm_armature() ``` ### **Phase 2: VRM-Specific Setup** #### **1. Install VRM Add-on for Blender** ``` 1. Download from: https://github.com/vrm-c/UniVRM/releases 2. Install VRM add-on in Blender preferences 3. Enable "VRM Format" add-on ``` #### **2. VRM Bone Naming Convention** **Blender bones must use VRM standard names:** ``` โœ… Correct: Hips, Spine, Head, LeftUpperArm โŒ Wrong: hip, spine_01, robot_head, arm_left ``` #### **3. Create VRM Required Objects** ``` Required for VRM export: โ”œโ”€โ”€ Armature with humanoid bone names โ”œโ”€โ”€ Mesh objects parented to armature โ”œโ”€โ”€ Materials (PBR with metallic/roughness) โ”œโ”€โ”€ UV maps for all meshes โ”œโ”€โ”€ Optional: Shape keys for blend shapes ``` #### **4. VRM Meta Information** ``` VRM requires metadata: โ”œโ”€โ”€ Title: "DogBot V1" or "Articulated Arm V2" โ”œโ”€โ”€ Author: Your name โ”œโ”€โ”€ Contact: email (optional) โ”œโ”€โ”€ Reference: URL (optional) โ”œโ”€โ”€ License: Select appropriate license โ”œโ”€โ”€ Allowed User: Everyone (recommended) โ”œโ”€โ”€ Violent Usage: Not allowed (for robots) โ”œโ”€โ”€ Sexual Usage: Not allowed (for robots) โ”œโ”€โ”€ Commercial Usage: Allow (for robotics) โ”œโ”€โ”€ Modification: Allow (open source robotics) ``` ### **Phase 3: Export from Blender** #### **1. Prepare for Export** ``` 1. Select all mesh objects + armature 2. Ensure proper hierarchy (mesh โ†’ armature) 3. Apply transforms if needed (Ctrl+A) 4. Check UV maps are assigned 5. Verify materials are PBR compatible ``` #### **2. VRM Export Settings** ``` File โ†’ Export โ†’ VRM (.vrm) โ”œโ”€โ”€ [โœ“] Export Textures โ”œโ”€โ”€ [โœ“] Export Binary โ”œโ”€โ”€ Pose: T-Pose (required for VRM) โ”œโ”€โ”€ [โœ“] Export Invisible Meshes (if any) โ”œโ”€โ”€ Thumbnail: Add preview image (optional) ``` #### **3. VRM Validation** ``` After export, VRM file contains: โ”œโ”€โ”€ model.vrm (binary glTF container) โ”œโ”€โ”€ Thumbnail image โ”œโ”€โ”€ Metadata (title, author, license) โ”œโ”€โ”€ Bone mappings โ”œโ”€โ”€ Materials and textures โ”œโ”€โ”€ Blend shapes (if created) ``` --- ## ๐ŸŽจ **Non-Humanoid VRM Examples** ### **DogBot VRM Model** **Map quadruped to bipedal structure:** ``` DogBot Parts โ†’ VRM Humanoid Bones: Hips โ†’ Main chassis/body Spine โ†’ Body extension Head โ†’ Sensor/camera head Left Arm โ†’ Front left leg โ”œโ”€โ”€ Shoulder โ†’ Hip joint โ”œโ”€โ”€ Upper Arm โ†’ Upper leg โ”œโ”€โ”€ Lower Arm โ†’ Lower leg โ””โ”€โ”€ Hand โ†’ Paw/foot Right Arm โ†’ Front right leg (same) Left Leg โ†’ Rear left leg โ”œโ”€โ”€ Upper Leg โ†’ Hip joint โ”œโ”€โ”€ Lower Leg โ†’ Knee joint โ””โ”€โ”€ Foot โ†’ Rear paw Right Leg โ†’ Rear right leg (same) ``` ### **Articulated Arm VRM** **Map robotic arm to humanoid arm:** ``` Robot Arm โ†’ VRM Arm Bones: Shoulder โ†’ Base mounting point Upper Arm โ†’ First arm segment Lower Arm โ†’ Second arm segment Hand โ†’ End effector/wrist Fingers โ†’ Individual gripper fingers (if applicable) ``` ### **Digger Machine VRM** **Map excavator to humanoid:** ``` Excavator โ†’ VRM Structure: Hips โ†’ Main chassis Spine/Chest โ†’ Operator cabin area Head โ†’ Boom/arm base Left Arm โ†’ Excavator arm โ”œโ”€โ”€ Shoulder โ†’ Arm pivot โ”œโ”€โ”€ Upper Arm โ†’ Boom โ”œโ”€โ”€ Lower Arm โ†’ Stick/dipper โ””โ”€โ”€ Hand โ†’ Bucket Right Arm โ†’ Additional attachment (hammer, etc.) Legs โ†’ Undercarriage/tracks ``` --- ## ๐Ÿ”„ **Unity Import & Setup** ### **Phase 1: Import VRM** ``` 1. Drag .vrm file into Unity Assets 2. UniVRM importer dialog appears 3. Configure import settings: โ”œโ”€โ”€ [โœ“] Extract Textures โ”œโ”€โ”€ [โœ“] Extract Materials โ”œโ”€โ”€ [โœ“] Extract Meshes โ”œโ”€โ”€ [โœ“] Generate Animation Clips โ”œโ”€โ”€ [โœ“] Generate MToon Materials ``` ### **Phase 2: Fix Humanoid Mapping** ``` Unity humanoid system expects human proportions: 1. Select imported model 2. Go to Rig tab โ†’ Animation Type: Humanoid 3. Unity tries to auto-map bones 4. Manually adjust mappings for robot parts: โ”œโ”€โ”€ Hips โ†’ Robot main body โ”œโ”€โ”€ Head โ†’ Robot "head" (camera/sensor cluster) โ”œโ”€โ”€ Arms โ†’ Manipulator arms โ”œโ”€โ”€ Legs โ†’ Locomotion system ``` ### **Phase 3: Animation Setup** ```csharp // Create custom animations for non-humanoid movements using UnityEngine; public class RobotAnimationController : MonoBehaviour { private Animator animator; void Start() { animator = GetComponent<Animator>(); // Override humanoid animations with robot-specific ones } // Custom methods for robot animations public void ExtendArm() { // Use VRM "arm" bones for manipulator extension animator.SetTrigger("ExtendArm"); } public void Dig() { // Use VRM "hand" bones for bucket operation animator.SetTrigger("Dig"); } public void Walk() { // Override bipedal walk with robot locomotion animator.SetFloat("Speed", 1.0f); } } ``` ### **Phase 4: Blend Shapes for Robotics** ```csharp // Use VRM blend shapes for mechanical animations public class MechanicalBlendShapes : MonoBehaviour { private SkinnedMeshRenderer meshRenderer; void Start() { meshRenderer = GetComponent<SkinnedMeshRenderer>(); // Set up blend shape indices } public void OpenGripper(float amount) { // Map blend shape to gripper opening meshRenderer.SetBlendShapeWeight(0, amount * 100f); } public void ExtendArm(float amount) { // Use blend shapes for arm extension meshRenderer.SetBlendShapeWeight(1, amount * 100f); } public void ShowStatus(string status) { // Use blend shapes for status indicators switch (status) { case "working": SetBlendShapeWeight(2, 100f); break; case "error": SetBlendShapeWeight(3, 100f); break; case "charging": SetBlendShapeWeight(4, 100f); break; } } } ``` --- ## ๐Ÿš€ **Advanced Robotics Applications** ### **Custom Blend Shapes for Machines** ``` Create shape keys in Blender for: โ”œโ”€โ”€ Gripper open/close โ”œโ”€โ”€ Arm extension/retraction โ”œโ”€โ”€ Wheel/track movement โ”œโ”€โ”€ Status indicators (LEDs, screens) โ”œโ”€โ”€ Damage states โ”œโ”€โ”€ Operational modes ``` ### **Multiple VRM Variants** ``` Create different VRM files for: โ”œโ”€โ”€ Base model (no attachments) โ”œโ”€โ”€ With manipulator arms โ”œโ”€โ”€ With different end effectors โ”œโ”€โ”€ Different color schemes โ”œโ”€โ”€ Damage/wear variants ``` ### **VRM for Robot Teams** ``` Use VRM avatars to represent: โ”œโ”€โ”€ Individual robots in a swarm โ”œโ”€โ”€ Robot operator avatars โ”œโ”€โ”€ Virtual robot twins โ”œโ”€โ”€ Training simulations ``` --- ## โš ๏ธ **Limitations & Workarounds** ### **VRM Humanoid Limitations:** - **Bone count:** Limited to humanoid skeleton - **Proportions:** Human-like scaling expected - **Animations:** Designed for bipedal movement - **Blend shapes:** Limited to facial expressions ### **Workarounds:** - **Multiple VRM files:** Different models for different configurations - **Custom animations:** Override humanoid animations with robot-specific ones - **Secondary rigs:** Use additional non-humanoid bones for complex mechanisms - **Hybrid approach:** VRM for avatar representation, FBX for detailed mechanics ### **When NOT to Use VRM:** - **Complex robotics:** Better with FBX/GLB - **Non-humanoid shapes:** VRM validation may fail - **High-polygon models:** VRM has size limits - **Real-time simulation:** FBX often better for physics --- ## ๐Ÿ“Š **Alternative Formats for Non-Humanoids** ### **FBX/GLB (Recommended for Robots)** ```csharp // Unity import for FBX robot models public class RobotFBXImporter : MonoBehaviour { [MenuItem("Tools/Import Robot FBX")] static void ImportRobotFBX() { string path = EditorUtility.OpenFilePanel("Select FBX", "", "fbx"); if (string.IsNullOrEmpty(path)) return; // Import FBX with custom settings var assetPath = "Assets/Models/" + Path.GetFileName(path); File.Copy(path, Application.dataPath + assetPath); AssetDatabase.ImportAsset(assetPath); // Configure for robotics var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(assetPath); ConfigureRobotPrefab(prefab); } static void ConfigureRobotPrefab(GameObject prefab) { // Add robot-specific components prefab.AddComponent<RobotController>(); prefab.AddComponent<ArticulationBody>(); // For physics // Configure joints, colliders, etc. } } ``` ### **Custom glTF Extensions** ```json // Extended glTF for robotics { "extensions": { "ROBOT": { "joints": [ { "name": "shoulder_joint", "type": "revolute", "limits": {"min": -180, "max": 180}, "axis": [0, 0, 1] } ], "sensors": [ { "name": "camera", "type": "camera", "resolution": [1920, 1080] } ] } } } ``` --- ## ๐Ÿ”ง **Complete Workflow Summary** ### **Blender โ†’ VRM โ†’ Unity Pipeline:** ``` 1. Model robot/machine in Blender 2. Create humanoid armature (map robot parts to human bones) 3. Rig model to armature 4. Create materials and textures 5. Add blend shapes for mechanical animations 6. Set VRM metadata 7. Export as .vrm using VRM add-on 8. Import into Unity with UniVRM 9. Configure humanoid rig (with manual adjustments) 10. Create custom animations for robot movements 11. Implement robot control scripts 12. Test in VR environment ``` ### **Best Practices:** - **Start simple:** Begin with basic robot shapes - **Test frequently:** Import to Unity often to catch issues - **Use references:** Study existing VRM robot models - **Plan bone mapping:** Design robot to fit humanoid structure when possible - **Have fallbacks:** Be ready to use FBX if VRM doesn't work --- ## ๐Ÿ“š **Resources & Examples** ### **VRM Robot Examples:** - **GitHub VRM repos:** Search for "robot VRM" or "mechanical VRM" - **VRM community:** Forums with robot avatar examples - **Open-source robots:** Models available for modification ### **Blender VRM Tutorials:** - **VRM Add-on documentation:** https://vrm.dev/ - **Blender VRM workflow:** YouTube tutorials - **Community guides:** VRM creation for non-humanoids ### **Unity Robotics Integration:** - **Unity Robotics Hub:** https://github.com/Unity-Technologies/Unity-Robotics-Hub - **ROS# for Unity:** ROS integration - **Articulation Body:** Unity's robotics physics ### **Alternative Tools:** - **Mixamo:** For humanoid animations (if adapting) - **Blender Robot Add-on:** For mechanical modeling - **Unity's Robot SDK:** For industrial robot simulation --- ## ๐ŸŽฏ **When to Use VRM vs Alternatives** ### **Use VRM When:** - โœ… **VR platform deployment** (VRChat, Resonite) - โœ… **Avatar representation** of robots - โœ… **Social robotics** applications - โœ… **Blend shapes** for status indicators - โœ… **Standardized sharing** format ### **Use FBX/GLB When:** - โœ… **Complex robotics** with many joints - โœ… **Non-humanoid shapes** (quadrupeds, machines) - โœ… **High-fidelity simulation** required - โœ… **Physics-based interaction** needed - โœ… **Industrial applications** ### **Hybrid Approach:** ``` - Use VRM for avatar representation - Use FBX for detailed mechanics - Combine in Unity scenes - Best of both worlds ``` --- **Despite VRM's humanoid limitations, this workflow enables creating robot avatars for VR platforms while maintaining compatibility with existing tools!** ๐Ÿค–๐ŸŽฎ *Note: For serious robotics work, consider FBX/GLB formats instead of forcing non-humanoids into VRM's humanoid constraints.*

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/robotics-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server