Files
VrchStudio-comfyui-web-viewer/docs/gamepad_nodes.md
T

5.7 KiB
Raw Blame History

Node: Gamepad Loader @ vrch.ai (vrch.ai/control/gamepad)

  1. Add the Gamepad Loader @ vrch.ai node to your ComfyUI workflow.

  2. Configure the Node:

    • Gamepad Selection:
      • index: Select the gamepad index (0-7) to use. Default is 0.
      • name: Displays the detected gamepad's name (read-only).
    • Performance Settings:
      • refresh_interval: Set the data polling frequency in milliseconds (10-10000ms). Default is 100.
    • Debug Options:
      • debug: Enable to view detailed debug information in the console and display raw data. Default is False.
      • raw_data: Shows the raw gamepad data in JSON format (only visible when debug is enabled).
  3. Connecting a Gamepad:

    • Connect a compatible gamepad to your computer before starting ComfyUI.
    • Most USB and Bluetooth gamepads compatible with your browser should work.
    • Press buttons on your gamepad to ensure it's detected by the browser.
  4. Data Access:

    • The node continuously polls the connected gamepad at the specified refresh interval.
    • It extracts and processes the gamepad's buttons and axes data.
    • When a gamepad is detected at the specified index, its identifier will appear in the name field.
  5. Node Outputs:

    • RAW_DATA: Complete gamepad data in JSON format.
    • LEFT_STICK: Array containing X and Y values for the left analog stick [x, y] (values range from -1.0 to 1.0).
    • RIGHT_STICK: Array containing X and Y values for the right analog stick [x, y] (values range from -1.0 to 1.0).
    • BOOLEAN_BUTTONS: Array of boolean values indicating if each button is pressed (True) or not (False).
    • INT_BUTTONS: Array of integer values (1 for pressed, 0 for not pressed).
    • FLOAT_BUTTONS: Array of float values representing the pressure sensitivity of each button (0.0-1.0).

Note:

  • Gamepad support varies by browser. Chrome and Edge typically provide the best compatibility.
  • The number of buttons and axes depends on your specific gamepad model.
  • Standard gamepads typically follow this mapping:
    • Buttons 0-3: Face buttons (A/B/X/Y or ×/○/□/△)
    • Buttons 4-5: Shoulder buttons (LB/RB)
    • Buttons 6-7: Triggers (LT/RT)
    • Buttons 8-9: Back/Select and Start buttons
    • Buttons 10-11: Analog stick press buttons (L3/R3)
    • Buttons 12-15: D-pad (Up/Down/Left/Right)
    • Axes 0-1: Left analog stick (X, Y)
    • Axes 2-3: Right analog stick (X, Y)

Node: Xbox Controller Mapper @ vrch.ai (vrch.ai/control/gamepad)

  1. Overview:

    • The Xbox Controller Mapper @ vrch.ai node provides optimized mapping for Xbox controllers.
    • It takes raw gamepad data from the Gamepad Loader @ vrch.ai node and maps it to standard Xbox controller inputs.
    • This makes it easier to work with Xbox controllers by providing named outputs for each button and control.
  2. Setup:

    • First add a Gamepad Loader @ vrch.ai node to your workflow.
    • Then add the Xbox Controller Mapper @ vrch.ai node.
    • Connect the RAW_DATA output from the Gamepad Loader to the raw_data input of the Xbox Controller Mapper.
  3. Inputs:

    • raw_data: JSON data from the Gamepad Loader @ vrch.ai node.
    • debug: Enable to view detailed debug information in the console. Default is False.
  4. Outputs:

    • Analog Controls:

      • LEFT_STICK: Array containing X and Y values for the left analog stick [x, y] (values range from -1.0 to 1.0).
      • RIGHT_STICK: Array containing X and Y values for the right analog stick [x, y] (values range from -1.0 to 1.0).
      • LEFT_TRIGGER: Value for the left trigger (LT) (values range from 0.0 to 1.0).
      • RIGHT_TRIGGER: Value for the right trigger (RT) (values range from 0.0 to 1.0).
    • Face Buttons:

      • A_BUTTON: Boolean state of the A button (bottom face button).
      • B_BUTTON: Boolean state of the B button (right face button).
      • X_BUTTON: Boolean state of the X button (left face button).
      • Y_BUTTON: Boolean state of the Y button (top face button).
    • Shoulder Buttons:

      • LB_BUTTON: Boolean state of the left bumper (LB).
      • RB_BUTTON: Boolean state of the right bumper (RB).
    • Center Buttons:

      • VIEW_BUTTON: Boolean state of the View button (formerly Back).
      • MENU_BUTTON: Boolean state of the Menu button (formerly Start).
      • XBOX_BUTTON: Boolean state of the Xbox logo button.
    • Stick Presses:

      • LEFT_STICK_PRESS: Boolean state of the left stick press (L3).
      • RIGHT_STICK_PRESS: Boolean state of the right stick press (R3).
    • D-Pad:

      • DPAD_UP: Boolean state of the D-pad up direction.
      • DPAD_DOWN: Boolean state of the D-pad down direction.
      • DPAD_LEFT: Boolean state of the D-pad left direction.
      • DPAD_RIGHT: Boolean state of the D-pad right direction.
    • Complete Data:

      • FULL_MAPPING: Complete mapping of all controller inputs as a JSON object.
  5. Usage Examples:

    • Use A_BUTTON to trigger actions in your workflow.
    • Use LEFT_STICK to control position or movement parameters.
    • Use RIGHT_TRIGGER to control intensity or pressure-sensitive parameters.

Note:

  • This node is specifically optimized for Xbox controllers and follows the standard Xbox controller button layout.
  • The button mapping is based on the standard Web Gamepad API implementation for Xbox controllers.
  • If your controller has a different layout, you may need to adjust your workflow accordingly.