• This repository has been archived on 22/Jul/2024
  • Stars
    star
    769
  • Rank 59,078 (Top 2 %)
  • Language
    Java
  • License
    Mozilla Public Li...
  • Created almost 7 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

INACTIVE - A fast and secure browser for standalone virtual-reality and augmented-reality headsets.

Firefox Reality

The goal of the Firefox Reality project is to create a full-featured browser exclusively for standalone AR and VR headsets.

You can find us in #fxr:mozilla.org on the Matrix (Instructions for joining), Twitter @MozillaReality, and at [email protected].

Download developer APKs

Download developer APKs for Firefox Reality generated from latest main.

Locale support

Firefox Reality supports Chinese (China), Chinese (Taiwan), English, French, German, Italian, Japanese, Russian, and Spanish for user interface, voice search, and text entry. Localization is provided by Mozilla's amazing community of volunteer localizers.

For more info on localization, how it works in the Firefox Reality project, and how to correctly edit localizable text in the application, please see the localization wiki page.

Setup instructions

Clone FirefoxReality.

git clone [email protected]:MozillaReality/FirefoxReality.git
cd FirefoxReality

Clone the third-party repo.

If you're developing for the Oculus, Snapdragon VR, or VIVE, you need to clone the repo with third-party SDK files.

git clone [email protected]:MozillaReality/FirefoxReality-android-third-party.git third_party

This repo is only available to Mozilla employees. If you have access to the relevant SDK but not this repo, you can manually place them here:

  • third_party/ovr_mobile/ for Oculus (should contain a VrApi folder)
  • third_party/wavesdk/ for Vive (should contain a build folder, among other things)

The repo in third_party can be updated like so:

pushd third_party && git fetch && git checkout main && git rebase origin/main && popd

Fetch Git submodules.

You may need to set up two-factor authentication for the command line.

git submodule update --init --recursive

You can build for different devices:

  • oculusvr: Samsung Gear VR & Oculus Go
  • wavevr: VIVE Focus

For testing on a non-VR device:

  • noapi: Runs on standard Android phones without a headset

Building for Oculus Mobile, and WaveVR requires access to their respective SDKs which are not included in this repo.

The command line version of gradlew requires JDK 8 from Oracle. If you see an error that Gradle doesn't understand your Java version, check which version of you're using by running java -showversion or java -version. You're probably using JDK 9 or 10, which won't work.

Open the project with Android Studio then build and run it. Depending on what you already have installed in Android Studio, the build may fail and then may prompt you to install dependencies. Just keep doing as it suggests. To select the device to build for, go to Tool Windows > Build Variants and select a build variant corresponding to your device.

If you want to build FirefoxReality for WaveVR SDK:

Download the VIVE Wave SDK from the VIVE Developer Resources, and unzip it. Then, from the top-level project directory, run:

mkdir -p third_party/wavesdk
cp /path/to/the/sdk/2.0.32/SDK/libs/wvr_client.aar third_party/wavesdk
cp ./extra/wavesdk/build.gradle ./third_party/wavesdk

Make certain to set the build flavor to wavevrDebug in Android Studio before building the project.

Local Development

Dependency substitutions

You might be interested in building this project against local versions of some of the dependencies. This could be done either by using a local maven repository (quite cumbersome), or via Gradle's dependency substitutions (not at all cumbersome!).

Currently, the substitution flow is streamlined for some of the core dependencies via configuration flags in local.properties. You can build against a local checkout of the following dependencies by specifying their local paths:

  • GeckoView, specifying its path via dependencySubstitutions.geckoviewTopsrcdir=/path/to/mozilla-central (and, optionally, dependencySubstitutions.geckoviewTopobjdir=/path/to/topobjdir). See Bug 1533465.
    • This assumes that you have built, packaged, and published your local GeckoView -- but don't worry, the dependency substitution script has the latest instructions for doing that.

Do not forget to run a Gradle sync in Android Studio after changing local.properties. If you specified any substitutions, they will be reflected in the modules list, and you'll be able to modify them from a single Android Studio window.

Install dev and production builds on device simultaneously

You can enable a dev applicationID sufix to install both dev and production builds simultaneously. You just need to add this property to your user.properties file:

simultaneousDevProduction=true

Locally generate Android release builds

Local release builds can be useful to measure performance or debug issues only happening in release builds. Insead of dealing with release keys you can make the testing easier just adding this property to your user.properties file:

useDebugSigningOnRelease=true

Note: the release APKs generated with a debug keystore can't be used for production.

Compress assets

ETC2 compression is used to improve performance and memory usage. Raw assets are placed in the uncompressed_assets folder. You can generate the compressed textures using the compressor utility in tools/compressor. You need to set up etc2comp and make it available on your PATH before running the script. Run this command to generate the compressed assets:

cd tools/compressor
npm install
npm run compress

Enable OpenXR builds

You can enable OpenXR API for Oculus by adding this property to your user.properties file:

openxr=true

Development troubleshooting

Device supports , but APK only supports armeabi-v7a[...]

Enable USB Remote Debugging on the device.

Firefox > Web Developer > WebIDE > Performance gets stuck with greyed out "stop and show profile"

Restart FxR and close and re-open the WebIDE page.

Tool Windows > Build Variants list is empty

  1. If you're not on the latest version, update Android Studio from Android Studio > Check for Updates….
  2. Run File > Sync Project with Gradle Files.

Debugging tips

  • When using the native debugger you can ignore the first SIGSEGV: address access protected stop in GV thread. It's not a crash; you can click Resume to continue debugging.
  • On some platforms such as Oculus Go the native debugger stops on each input event. You can set this LLDB post-attach command in Android Studio to fix the problem: pro hand -p true -s false SIGILL
  • You can use adb shell am start -a android.intent.action.VIEW -d "https://aframe.io" org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity to load a URL from the command line
  • You can use adb shell am start -a android.intent.action.VIEW -n org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity -e homepage "https://example.com" to override the homepage
  • You can use adb shell setprop debug.oculus.enableVideoCapture 1 to record a video on the Oculus Go. Remember to run adb shell setprop debug.oculus.enableVideoCapture 0 to stop recording the video.
    • You can also record videos on the Oculus Go by exiting to the system library, and from the Oculus tray menu (toggle with the Oculus button on the controller): Sharing > Record Video
  • You can set disableCrashRestart=true in the gradle user.properties to disable app relaunch on crash.

Experimental Servo support

To compile with Servo support, create a file called user.properties in the top-level project directory and add enableServo=1. Then to enable Servo in Firefox Reality, go the Developer Options panel in the Settings, and toggle the Servo option. Then a new button will be added to the navigation bar. Clicking that button will reload the current page with Servo.

More Repositories

1

unity-webxr-export

INACTIVE - Assets for creating WebXR-enabled Unity3D projects.
JavaScript
622
star
2

WebXR-emulator-extension

INACTIVE - WebXR emulator extension
JavaScript
459
star
3

servo-unity

INACTIVE - Servo for Unity - experimental
C
317
star
4

hello-webxr

INACTIVE - Hello WebXR
JavaScript
288
star
5

vr-web-examples

Example VR enabled web pages.
JavaScript
205
star
6

hubs-blender-exporter

The Hubs Blender Add-on enables artists to export their creations to the immersive web with Mozilla Hubs
Python
165
star
7

webvr-spec

*** MOVED TO https://github.com/w3c/webvr ***
HTML
158
star
8

sechelt

INACTIVE - A virtual reality fly through of a 3D landscape, built with Three.js and Cinema 4D.
JavaScript
151
star
9

immersive-custom-elements

INACTIVE - Immersive Custom Elements
JavaScript
134
star
10

hubs-avatar-pipelines

Mozilla Hubs avatars and related assets for avatar customization.
95
star
11

panorama-viewer

A Three.js panorama viewer
JavaScript
93
star
12

webxr-ios-js

INACTIVE - A JS implementation of WebXR used *only* in Mozilla's WebXR Viewer
JavaScript
71
star
13

webvr-demos

Archived WebVR demos from Mozilla WebVR, circa GDC 2016.
JavaScript
63
star
14

blender-gltf-multiexport-addon

INACTIVE - Blender add-on to export multiple glTFs at once
Python
56
star
15

hubs-discord-bot

A Discord bot that helps you use Mozilla Hubs together with people in Discord.
JavaScript
47
star
16

hiro

JavaScript
42
star
17

jumpy-balls

INACTIVE - Example game with ecsy, three.js and ammo.js physics
JavaScript
34
star
18

gamepad-plus

INACTIVE - a superb library that extends the Gamepad API with super powers
JavaScript
34
star
19

webxr-geospatial

INACTIVE - A library that combines the Web geolocation API with WebXR to support geospatial AR
JavaScript
34
star
20

puzzle-rain

INACTIVE - A musical WebVR journey for the HTC Vive. Brought to you by Mozilla VR.
JavaScript
33
star
21

mred

INACTIVE - Mixed Reality Editor
JavaScript
27
star
22

xr-store

INACTIVE - A progressive XR demo. Powered by A-Frame.
JavaScript
23
star
23

FirefoxRealityPC

INACTIVE - Firefox Reality for PC-connected VR platforms
C#
22
star
24

hubs-docs

JavaScript
21
star
25

blender-gltf-behavior-graph

Tool for editing GLTF Behavior graphs in Blender (extremely experimental, opinionated for usage in Mozilla Hubs)
Python
20
star
26

webvr-addon

Mozilla WebVR Plus browser extension for Firefox
JavaScript
19
star
27

foxr-run

INACTIVE - Run Foxr, Run!
JavaScript
19
star
28

webgfx-tests

INACTIVE - Performance tests for canvas and webgl
JavaScript
19
star
29

MOZ_text

INACTIVE - MOZ_text glTF Extension
JavaScript
18
star
30

three-batch-manager

TypeScript
17
star
31

hubs-plugin-api

INACTIVE - Experimental Hubs plugin API discussion and evaluation
JavaScript
16
star
32

hubs-architecture-kit

JavaScript
14
star
33

vrb

INACTIVE - Support render library for FirefoxReality
C++
13
star
34

gltf-navmesh-generator

Small library and command line utility for generating precomputed navmesh data for aframe-extra's nav-mesh
JavaScript
12
star
35

botomatic

INACTIVE - Hubs Bot lambda
JavaScript
10
star
36

photomnemonic

Simple AWS Lambda service for grabbing web screenshots
JavaScript
10
star
37

lib-hubs

Common Hubs and Spoke libraries.
JavaScript
9
star
38

OpenWnn

INACTIVE - OpenWnn fork
C
9
star
39

vr-mozilla-org

INACTIVE - Source for Mozilla Mixed Reality static site
CSS
9
star
40

gltf-bundle

INACTIVE
JavaScript
9
star
41

hubs-glb-tools

Tools for working with glb files for Mozilla Hubs [WIP]
TypeScript
8
star
42

gltf-unlit-generator

INACTIVE
Rust
6
star
43

mr-social-assets

INACTIVE - Open Source Assets from the Social Mixed Reality Team
Mathematica
6
star
44

blender-behavior-graph-examples

A collection of Blender files demonstrating behavior graphs
6
star
45

webvr-libs

WebVR libraries
JavaScript
6
star
46

nearspark

AWS lambda service for creating image thumbnails
JavaScript
5
star
47

Hubs-Backup-Tool

A tool for baking up your Hubs instance account data
TypeScript
5
star
48

avatar-texture-tool

A resource for creating avatar textures for Hubs avatars
JavaScript
5
star
49

ecsy-webpack-boilerplate

INACTIVE - A simple boilerplate project for getting up and running with ECSY and Webpack.
JavaScript
5
star
50

fxr-cli

INACTIVE - A command-line tool for installing and automating the Firefox Reality virtual-reality browser.
JavaScript
4
star
51

gltf-content-hash

INACTIVE
JavaScript
4
star
52

hubs-duck-addon

TypeScript
4
star
53

symbolgenerator

INACTIVE - The symbol generator for Firefox Reality native code
Python
4
star
54

hubs-configtool

Tool for reading and writing Hubs configuration values.
JavaScript
3
star
55

spoke-react-components

https://mixedreality.mozilla.org/spoke-react-components
JavaScript
3
star
56

pathfinder_cpp

INACTIVE - c++11 implementation of PathFinder
C
3
star
57

hubs-template-addon

A template project for creating Hubs add-ons
TypeScript
3
star
58

hubs-sound-pack

JavaScript
3
star
59

hubs-ts-types

Typescript definitions for Hubs
TypeScript
3
star
60

hubs-portals-addon

A hubs add-on that adds support for portals.
TypeScript
3
star
61

oculus

JavaScript
2
star
62

webxr-todo

INACTIVE - List of ideas to improve the WebXR ecosystem
2
star
63

lobby

INACTIVE - WebVR Lobby
JavaScript
2
star
64

webxr-agent

Helper for handling presentation, navigation, and telemetry for WebXR experiences.
JavaScript
2
star
65

FirefoxReality-gvr-android-sdk

INACTIVE - GVR headers and library dependancies for Daydream build of Firefox Reality
C++
1
star
66

hubs-iframe-test

INACTIVE - GitHub Pages hosted page for testing Hubs in iframes
HTML
1
star
67

fbx-gltf-pipeline

INACTIVE
JavaScript
1
star
68

ita

A service for doing Hubs configuration management.
JavaScript
1
star
69

hubs-behavior-graphs-addon

A behavior graphs addon for Hbs
TypeScript
1
star
70

create-hubs-app

INACTIVE
JavaScript
1
star
71

badge-maker

INACTIVE
JavaScript
1
star
72

gltf-component-data

INACTIVE - Small library and command line utility for adding component data to a glTF file.
JavaScript
1
star
73

ecsy-three-webpack

INACTIVE - Boilerplate project for ecsy-three and Webpack
JavaScript
1
star
74

gltf-collision-exporter

INACTIVE
1
star
75

horizon

(2015) Horizon was an experimental VR browser built on web standards using CSS-VR.
JavaScript
1
star
76

area-demo-service-task

INACTIVE - Integration of OpenSceneGraph-based rendering with WebXR in a demonstration service task for AR Enterprise Alliance
JavaScript
1
star