🔗Links to Applications/Tutorials
RESOURCES, FALL 2020:
IDM XR LAB WEBSITE:
CARLA TUTORIALS & SCRIPTS:
LIGHTING (Light Maps and Light Probe Groups)
POST PROCESSING, CHANGING SCENES, UI INTERACTIVITY, ANIMATION ON XR RIG, ANIMATED SHADERS
SNAP TURN SCRIPT WITH FADE (STEAM, can it be adapted for XR Toolkit?)
using UnityEngine; using System.Collections; namespace Valve.VR.InteractionSystem { //----------------------------------------------------------------------------- public class SnapTurn : MonoBehaviour { public float snapAngle = 90.0f; public bool showTurnAnimation = true; public AudioSource snapTurnSource; public AudioClip rotateSound; public GameObject rotateRightFX; public GameObject rotateLeftFX; public SteamVR_Action_Boolean snapLeftAction = SteamVR_Input.GetBooleanAction("SnapTurnLeft"); public SteamVR_Action_Boolean snapRightAction = SteamVR_Input.GetBooleanAction("SnapTurnRight"); public bool fadeScreen = true; public float fadeTime = 0.1f; public Color screenFadeColor = Color.black; public float distanceFromFace = 1.3f; public Vector3 additionalOffset = new Vector3(0, -0.3f, 0); public static float teleportLastActiveTime; private bool canRotate = true; public float canTurnEverySeconds = 0.4f; private void Start() { AllOff(); } private void AllOff() { if (rotateLeftFX != null) rotateLeftFX.SetActive(false); if (rotateRightFX != null) rotateRightFX.SetActive(false); } private void Update() { Player player = Player.instance; if (canRotate && snapLeftAction != null && snapRightAction != null && snapLeftAction.activeBinding && snapRightAction.activeBinding) { //only allow snap turning after a quarter second after the last teleport if (Time.time < (teleportLastActiveTime + canTurnEverySeconds)) return; // only allow snap turning when not holding something bool rightHandValid = player.rightHand.currentAttachedObject == null || (player.rightHand.currentAttachedObject != null && player.rightHand.currentAttachedTeleportManager != null && player.rightHand.currentAttachedTeleportManager.teleportAllowed); bool leftHandValid = player.leftHand.currentAttachedObject == null || (player.leftHand.currentAttachedObject != null && player.leftHand.currentAttachedTeleportManager != null && player.leftHand.currentAttachedTeleportManager.teleportAllowed); bool leftHandTurnLeft = snapLeftAction.GetStateDown(SteamVR_Input_Sources.LeftHand) && leftHandValid; bool rightHandTurnLeft = snapLeftAction.GetStateDown(SteamVR_Input_Sources.RightHand) && rightHandValid; bool leftHandTurnRight = snapRightAction.GetStateDown(SteamVR_Input_Sources.LeftHand) && leftHandValid; bool rightHandTurnRight = snapRightAction.GetStateDown(SteamVR_Input_Sources.RightHand) && rightHandValid; if (leftHandTurnLeft || rightHandTurnLeft) { RotatePlayer(-snapAngle); } else if (leftHandTurnRight || rightHandTurnRight) { RotatePlayer(snapAngle); } } } private Coroutine rotateCoroutine; public void RotatePlayer(float angle) { if (rotateCoroutine != null) { StopCoroutine(rotateCoroutine); AllOff(); } rotateCoroutine = StartCoroutine(DoRotatePlayer(angle)); } //----------------------------------------------------- private IEnumerator DoRotatePlayer(float angle) { Player player = Player.instance; canRotate = false; snapTurnSource.panStereo = angle / 90; snapTurnSource.PlayOneShot(rotateSound); if (fadeScreen) { SteamVR_Fade.Start(Color.clear, 0); Color tColor = screenFadeColor; tColor = tColor.linear * 0.6f; SteamVR_Fade.Start(tColor, fadeTime); } yield return new WaitForSeconds(fadeTime); Vector3 playerFeetOffset = player.trackingOriginTransform.position - player.feetPositionGuess; player.trackingOriginTransform.position -= playerFeetOffset; player.transform.Rotate(Vector3.up, angle); playerFeetOffset = Quaternion.Euler(0.0f, angle, 0.0f) * playerFeetOffset; player.trackingOriginTransform.position += playerFeetOffset; GameObject fx = angle > 0 ? rotateRightFX : rotateLeftFX; if (showTurnAnimation) ShowRotateFX(fx); if (fadeScreen) { SteamVR_Fade.Start(Color.clear, fadeTime); } float startTime = Time.time; float endTime = startTime + canTurnEverySeconds; while (Time.time <= endTime) { yield return null; UpdateOrientation(fx); }; fx.SetActive(false); canRotate = true; } void ShowRotateFX(GameObject fx) { if (fx == null) return; fx.SetActive(false); UpdateOrientation(fx); fx.SetActive(true); UpdateOrientation(fx); } private void UpdateOrientation(GameObject fx) { Player player = Player.instance; //position fx in front of face this.transform.position = player.hmdTransform.position + (player.hmdTransform.forward * distanceFromFace); this.transform.rotation = Quaternion.LookRotation(player.hmdTransform.position - this.transform.position, Vector3.up); this.transform.Translate(additionalOffset, Space.Self); this.transform.rotation = Quaternion.LookRotation(player.hmdTransform.position - this.transform.position, Vector3.up); } } }
XR TOOLKIT
AUTHORING for Mozilla Hubs using Spoke - 53 minutes
Tutorial Videos:
(1) mozilla hubs tutorial 01 (12:42) - working in spoke
(2) mozilla hubs tutorial 02 (38:11) - working in spoke and playing in hubs
(3) mozilla hubs tutorial 03 (02:00) - teleporting/leaving hubs
INTRO TO UNITY (demo) Basic Setup, Packages, Asset store
(1) unity tutorial 01: installation (01:08) installing the editor to your computer
(2) unity tutorial 01: editor part 01 (11:17) getting to know the UI
(3) unity tutorial 01: editor part 02 (08:46) still getting to know the UI
(4) unity tutorial 01: editor part 03 (06:21) creating/assigning materials to objects
(5) unity tutorial 01: editor part 04 (17:21) game mode/adding simple physics to the objects/asset store/package manager/exporting as a package
BUILD SETTINGS with Oculus Quest https://www.youtube.com/watch?v=LZjUn2qvJC0
UNITY QUEST FUN (full tutorial to be posted here soon) https://www.youtube.com/watch?v=U86r8F1Z1ZY&list=PL7J3RrJiIfAz9JQhI_rfBDbuX7x9oH_tW&index=19
ADDITIONAL TUTORIALS/RESOURCES
Unity XR Tookit Git Hub Repository - Toolkit Examples (Unity Files)
Unity XR Interaction Toolkit - XR Teleporting Setup with Oculus Quest
Unity Build Settings Oculus Quest 2020 (Updated)
Learn.Unity (Tutorials by Unity)
SPECIFIC FUNCTIONALITY TUTORIALS
GREAT YOU TUBE CHANNELS TO FOLLOW:
ARCHIVE OF RESOURCES, FALL 2019:
Week 09
Unity Integration with Github Mark Young :: YouTube (this is a series)
Customizable Hands, Teleportation, Touchpad Movement https://www.youtube.com/watch?v=5C6zr4Q5AlA
Optimizing Unity Files
https://www.youtube.com/watch?v=w0n4fuC4fNU
Shaders in Unity with Amplify
Create Dynamic Materials Without the Need for Code
Week 08
https://catlikecoding.com/unity/tutorials/
There's a few different thoughts on getting Processing to work inside Unity.
https://assetstore.unity.com/packages/tools/input-management/osc-simpl-53710
https://answers.unity.com/questions/520581/how-to-send-data-from-client-to-client.html
Particle Systems in Unibyt
https://mobile.twitter.com/_kzr
https://blogs.unity3d.com/2018/11/27/creating-explosive-visuals-with-the-visual-effect-graph/
Rendering 360 Images in Maya
https://www.youtube.com/watch?v=m6aNOBsNRYM
https://www.youtube.com/watch?v=q4RK77jspvU
Here's an example of a 360 room I built in Maya: https://aworldofonesown.glitch.me/
Week 07
TUTORIALS MAYA 3D Maya_CreatingARockyPlane Maya_Rigging_Part01 Maya_Rigging_Part02 Maya_Rigging_Part03 Maya_Retopology for Beginners Maya_Create a Normal Map (why to use normal maps: https://docs.unity3d.com/Manual/StandardShaderMaterialParameterNormalMap.html)
UNITY Shading, Lighting, Skyboxes Unity-How To Make a Skybox in Photoshop Unity_Create a Reflection Probe (lighting) Unity_LightWeightRenderPipeline Unity_Materials Color and Texture Part 1 Unity_Materials Color and Texture (Emission & Transparency) Part 2 Unity_LightProbes Animation & Video Unity_CreatingAnimation Unity_AnimatedVideoTexture Unity_Video on a Screen Object
Systems Unity_3D solar system with OpenGL and C#
Interactivity Unity_ViveTriggerPressDept (SteamVR) Unity_VR Body_3DOF Unity_InputUsingActions Unity_LensFlare Unity_FlyingLikeSuperman Unity_FlyingLeftAndRight Unity_FortuneWheelSpinner Unity_Opening a Door Unity_Teleportation and Grabbing Objects Unity_TeleportationForOculus (no code) Unity_Grabbing, Walking, Opening Doors Unity_PaintingInVR Unity_SwitchingScenes with C# Unity_SteamVR_LoadLevels Unity_Basic Loading Levels w Steam VR Unity_Creating a Button Unity_Switching Between Scenes with Buttons Unity_Keyboard and Joystick Controls in Unity 2019! (New Input System Tutorial)
Altering Body Perception Unity_The Resizable Human How to Make Simple Games Unity_How to Make a Horror Game in Virtual Reality (this one for the dream projects) Unity_How to Make an Oculus Quest Game Explorer 3D Game Kit (no code)
Asset Store (Drawing & Painting + UI) VR Brush ($6.99) For painting in VR VR UI Kit ($29.99) Build Cross-platform VR App With Ease
PLATFORMS You can render directly to Oculus Rift and HTC Vive Oculus Go, Oculus Quest, and Gear VR are a little more complicated Oculus Quest Development in Unity (text based) Oculus Quest Development in Unity (video based)
UNITY MANUAL Graphics Audio VR Overview VR Devices Scripting Open Source Repositories
Week 05
Platform Agnostic View Unity tutorial here: https://vimeo.com/363607099 And view VR demo here: https://vimeo.com/363608607
HTC Vive Input Utility View Unity tutorial here: https://vimeo.com/363612387 And view VR demo here: https://vimeo.com/363612544
Steam VR Plugin View Unity tutorial here: https://vimeo.com/363616615 And view VR demo here: https://vimeo.com/363621707
Week 04
Maya Essential Training: https://www.linkedin.com/learning/maya-2016-essential-training/welcome?u=2131553 Maya Lesson 06 : humanoid tutorial with Maya Quick Rig: https://vimeo.com/363668885 Maya Lesson 07 : importing objects and manipulating them: (part 01) https://vimeo.com/363676635 and here (part 02) https://vimeo.com/363677595
Week 03
Unity Intro: https://vimeo.com/362086710
Last updated
Was this helpful?