Plan:
- build a python https server (vr/ar APIs are generally unavailable to http servers) that will:
- Generate a self-signed ssl cert for a private IP
- Serve a desktop/AR/VR web app
- Serve a websocket comm ring the web app can use to keep state in sync across all connected devices (1 server == 1 "room")
- Voice comm ring as well? May need to dip into WebRTC nonsense.
https://hackathon-2022-april.jmcateer.pw:4430/
The server runs git pull
every hour, so the latest committed www/
directory will be served. To re-start the python process (for new files & websocket routing logic) login to the server and run sudo systemctl restart hackathon-2022-april.service
We will be using the WebXR Device API to use native AR/VR capabilities for display and pointer/hand input.
For iOS mobile devices this will require Mozilla's WebXR Viewer app.
VR JS Works on Oculus:
AR JS works on iphone / android:
If you need to generate an SSL cert tied to a domain name (b/c Mozilla's AR browser for iOS does not respect OS cert stores ヽ(ಠ_ಠ)ノ), using acme.sh:
yay -S acme.sh
acme.sh --register-account -m [email protected] --server zerossl
acme.sh --server zerossl --issue --dns -d publicip.jmcateer.pw -d localip.jmcateer.pw --yes-I-know-dns-manual-mode-enough-go-ahead-please
# Update DNS records, wait TTL minutes.
acme.sh --server zerossl --renew --dns -d publicip.jmcateer.pw -d localip.jmcateer.pw --yes-I-know-dns-manual-mode-enough-go-ahead-please
acme.sh --install-cert -d publicip.jmcateer.pw -d localip.jmcateer.pw --cert-file ssl/just_server.crt --key-file ssl/server.key --fullchain-file ssl/server.crt
Quickly reload peer machines:
window.socket.send('location.reload();')
-
Skybox stolen from https://www.mineimatorforums.com/index.php?/topic/76836-make-your-own-16k-night-skyboxes-100-free-tutorial/ (thanks, it looks awesome!)
-
https://michael-mcanally.medium.com/advanced-hello-world-for-a-frame-68738e022f07
-
https://rocketvirtual.com/aframePACKAGE/AdvancedHelloWorld.html
python
(3.8 or better or so, not picky)- One of
- web browser (WASD movement controls)
- smartphone (for AR experience, tap screen to move forward)
- VR Headset (joystick to move, also move to move*)
* movement movement in VR does not broadcase position changes to other players, this is a known bug we need to add a few lines of JS to handle properly. Improvements incoming as soon as we get idle weekends!
python -m run
Open https://<server-ip>:4430/
in a browser on a cell phone or any VR headset. For Mozilla's WebXR viewer on iOS you will require a publicly-signed ssl certificate from a trusted provider (ACME servers work great for free SSL certs & are trusted by major OSes and browsers). Because we are testing these on private networks, my recommendation is to use the DNS challenge (documented above using acme.sh
) and install the cert issued from there.
Jeffrey enjoys making cool things. He is clever as he is confident and not least of all he is a very good friend. He can do anything and while very talented, he is at times a little pessimistic by his own account.
"I'm so pessimistic about everything."
— Jeffrey McAteer
Adam loves connecting people and ideas. He is enjoying learning new things and is eager to meet creators and other people who can't stop making things. Adam is passionate and will sometimes talk very excitedly about his interests.
"Can you repeat that? I was thinking about something else, related to this project, but I totally zoned out my bad"
— Adam Becerra