This repository is intended to be a curated repository of resources that are relevant to developing XR-based studies for experimental psychology or similar fields of research. Where possible, it is focused on free and open-source resources. If relevant, the resources should be actively maintained/updated, because this space moves relatively quickly and the changes tend to be substantive. It is not intended to be a list of all VR-related resources, but high-quality general resources that might be useful to VR experiments will be included. The goal is to provide a centralized location for all of the tools available to VR researchers, so the time normally spent searching for them can instead be spent developing, and development decisions can be made with all the relevant info available.
If you have any suggestions for additions, please feel free to open a discussion thread, issue or pull request (after checking CONTRIBUTING.md), or just reach out to the maintainer (@jashobell) via another platform. If you are building an experiment and would like to either ask for assistance or share your experiences, triumphs and frustrations, feel free to open a discussion.
Planned Additions:
- Hardware platforms/Tracking systems
- More content (esp. Unreal Engine)
- A wiki (Started, see: Wiki)
- Tutorials/Informational content
- References
- Guidelines/Best Practices (e.g. Vasser & Aru, 2020)
- Exemplars
- Previous Work/Examples
- Platforms
- Experimental Design
- 3D Environment Development
- Avatars
- Feature Development
These are the applications you might use to build your experiment. Platform constraints on assets/resources will be noted via a preceding emoji.
PsychVRToolbox - A collection of functions for building VR experiments with MATLAB/GNU Octave.
PsychXR - A Python library for building VR experiments, could be considered a VR extension of PsychoPy (and uses PsychoPy for rendering).
🟢 Unity - A free cross-platform engine focused on game development but capable of VR experiments. Note: Requires a free Unity account to use.
🟧 Unreal Engine - A free and open-source cross-platform engine focused on game development, but also able to be used for VR experiments. Note: Requires a free Epic Games account to use.
🔷 Vizard - A VR application development platform focused on professional use that leverages Python as its scripting language. Note: Closed source, license fee involved.
⬜ Platform-agnostic/Multiplatform
This section covers experimental "frameworks", or libraries that simplify the essential processes of conducting a behavioral experiment.
- 🟢 BioMotionLab Toolkit (Bebko & Troje, 2020) - An framework for building experiments in Unity, aimed at reducing the amount of code needed to bring your design into practice (Article).
- 🟢 Mixed Reality - Remote Immersive Experiment Workflows (MR-RIEW; Bovo et al., 2022) - A toolkit for virtual and augmented reality that provides researchers with a dynamic way to design an immersive experiment workflow including instructions, environments, sessions, trials and questionnaires (Paper).
- 🟢 Unity Experiment Framework (UXF; Brookes et al., 2019) - A set of components which simplify human behaviour experiments developed in the Unity engine. Includes a tutorial (Article).
- 🟢 Ubiq-Exp: A set of tools and examples that extends the Ubiq system to support distributed and remote MR experiments (Note: Not publicly released as of 01/13/22; Article).
- 🟢 Unified Suite for Experiments (USE; Watson et al., 2019) - "a software and hardware solution for the development, management, and analysis of dynamic, video-game-like behavioral neuroscience experiments", uses a custom Arduino-based Synchbox to synchronize multiple hardware peripherals (Article).
- 🔷 vexptoolbox (Schuetz et al., 2022) - A software toolbox for human behavior studies using the Vizard virtual reality platform (Article).
These resources augment the experimental design frameworks above with additional features for data collection.
- 🟢 Rapid Sampling for Unity Experiments - Some custom UXF-based tracking scripts that use multithreading to sample motion data from a variety of tracking sources at a higher rate than Unity's framerate cap (currently, OpenVR and VRPN).
- 🟢 VRQuestionnaireToolkit - A Unity toolkit for building and presenting questionnaires in VR (Paper).
This section is primarily focused on the creation of realistic 3D environments for VR experiments.
- ⬜ Blender - A free and open-source 3D creation suite.
- (Recommended Add-on) Archimesh - Easy generation of rooms, doors, windows and some objects.
- ⬜ Materialize - A free and open-source application that allows you to create seamless tiles and texture maps from a single image.
- ⬜ AmbientCG - A collection of high-quality CC0 assets, including textures, models, and HDRIs. Many textures are procedurally generated with Substance Designer.
- ⬜ Polyhaven - A collection of high-quality CC0 assets, including textures, models, and HDRIs. Most textures are based on photographs.
- ⬜ Sketchfab - A collection of assets varying in quality, licensing status, and price. Many assets are CC0, and many others are free to use in non-commercial settings with attribution.
- 1702+ Photogrammetry-based Animal/Plant Models - Massive collection of models based on photogrammetry scans of animals and plants. CC-BY Non-commercial.
- ⬜ Textures.com - A collection of high-quality 3D assets. A limited number of free downloads each day with an account, but assets are not redistributable.
- ⬜ OpenVirtualObjects (Tromp et al., 2020) - 124 realistic 3D models of commonly-used and encountered household objects, rated "for recognizability, familiarity, details (i.e., visual complexity), contact, and usage (i.e., frequency of usage in daily life)" by adult participants (Article).
- ⬜ Standardized Set of 3D Objects (Peeters, 2017) - 147 objects belonging to "several different semantic categories, including food items, furniture, clothing, toys, and vehicles". Objects "have been normed for name agreement, image agreement, familiarity, visual complexity, and corresponding lexical characteristics of the modal object names" (Article).
- 🟢 🟧 Microsoft Rocketbox (Gonzalez-Franco et al., 2020) - A large and relatively diverse collection of characters and avatars released under the MIT license, including children and animals. Avatars are rigged with Mixamo animations and facial blendshapes Article.
- Note: If you intend to use them as self-avatars in Unity, see this pull request that fixes an issue with the avatar's construction on import.
- (Relevant Utility) Movebox - A toolbox for animating the rocketbox avatars.
- 🟢 🟧 Mixamo - A collection of humanoid models with animations. Also a system for adding animations to your own models.
Third-party libraries and tools that can be used to implement features in your VR experiment.
- 🟢 🟧 Mixed Reality Toolkit - "MRTK is a Microsoft-driven project that provides a set of components and features, used to accelerate cross-platform MR app development in Unity or Unreal".
- 🟢 QuickVR (Oliva et al., 2022) - A Unity library aimed at simplifying the integration of several VR features, with a focus on VR embodiment and avatar-related functionality (e.g. inverse kinematics; Article).
These resources enable the implementation of self-avatars for participants.
- 🟢 FinalIK - A paid asset (often on sale) for Unity that includes a variety of IK solvers. VRIK in particular is useful in this context, and implements full-body IK.
- 🟢 🟧 Manus Polygon - Free full-body motion capture software that can stream data into Unity or Unreal. Does not facilitate partial IK (i.e., you need enough trackers attached for full-body tracking).
- 🟢 VRArmIK (Parger et al., 2018) - IK solver focused on recreating arm movements from the head and hand. Useful for implementing a self-avatar with only a head-mounted tracker and a hand tracker (Abstract).
These resources can be used to smooth positional data in real-time. Useful if representing virtual objects with potentially noisy motion capture data (e.g., Infrared LED) that don't otherwise implement smoothing.
- 🟢 OneEuro Filter (Unity Implementation) - A port of the OneEuro filter to Unity.