Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Focal Point VR
Information
Type Seated, Standing, Room-scale
Required Devices Motion-tracked controllers (HTC Vive)
Description To move small distances, Grip and drag the environment. To move large distances, place 2 focal points on the ground with the controllers then rotate, scale, and translate the world.
Pros No VR sickness (creator's claim); crosses large distances quickly by shrinking the world and scaling it back up
Cons Pointing accuracy drops when aiming toward the horizon; rotations that tilt the horizon cause sickness; package is deprecated on the Unity Asset Store
Creator Albert Hwang

Focal Point VR (also called Focal Point) is a Locomotion Method and open-source interaction framework for virtual reality, created by artist and developer Albert Hwang for the HTC Vive and the Unity engine.[1] Instead of carrying the user's viewpoint through a scene, it lets the user grab points in the environment with the controllers and translate, rotate and scale the world around themselves. The same "focal point" gestures are used to pick up, throw, rotate and resize objects.[2]

Hwang developed the framework in early 2016 while working with New York University's Media Research Lab.[3] He published it on the Unity Asset Store in April 2016 with four demo scenes and released the C# source code on GitHub under the MIT License.[4][5][6] The Asset Store listing is now marked as deprecated.[4]

Reviewed 27 September 2026. Checked every date, spec, quote and attribution against the v1.0 README PDF, Albert Hwang's project page and 2016 blog posts, the Unity Asset Store listing data, the GitHub README, license, notes and commit history, and the Ware and Osborne (1990) and Mine et al. (1997) papers. About review dates.

History

Hwang began the project in January 2016 at New York University's Media Research Lab (MRL), where he started implementing patterns from Spatial Computing in Unity.[3] Spatial Computing was a prototype augmented reality interaction design that he had worked on from 2009 to 2012 and presented as a three-part online video series.[7][8] In a lab post dated 6 February 2016, he wrote that the "focal point" concept was becoming central to the work and that the code could become a Unity asset "to kickstart Vive interactivity".[9]

He posted a preview of the framework on 8 March 2016, describing the work as distilling the fundamentals of Spatial Computing so that new VR developers could learn them quickly. The post names MRL colleagues he had worked with, including Ken Perlin, Maria Lantin, David Lobser and Thomas Meduri.[10] The version 1.0 documentation is dated 31 March 2016.[2] The Unity Asset Store gives 11 April 2016 as the package's first publication date, with "First release" as its release note and Unity 5.3.3 as the supported Unity version.[4] The GitHub README records version 1.0.0 as "Accepted and in asset store".[5]

In a post on 2 April 2016, Hwang wrote that the build mainly involved bringing the interaction patterns of Spatial Computing to the HTC Vive on the Unity platform. He called it his "first serious C# project" and invited feedback and pull requests on the GitHub repository.[11] The repository's most recent commit is dated 26 June 2016.[12]

Design approach

Hwang's project page says that many of the framework's principles "are taken from dance, mime, and other performance traditions" and that "Moving objects and navigating environments should feel liberating and freeing, not tedious."[1] Hwang's website says he has trained for nearly 20 years in liquid dance, an urban dance form, and he pointed to his "20 years of illusion-style dance experience" as a basis for his ideas about virtual object manipulation.[7][11] He described 3D points as "mechanically reliable, emotionally charged" and "kinesthetically / proprioceptively grock-able", and wrote that he believed this concept to be central to the future of VR interaction design.[11]

How it works

The framework is built around "focal points", 3D points of interaction attached to the controllers. The demos use the Vive controllers' grip buttons for grabbing and keep the triggers for selection and pointing. The documentation says the grip is not the most obvious choice, but "through testing we found that it felt the best".[2] Hwang's architecture notes place three focal points on each controller's "claw", alongside a telescope and a laser.[13]

Locomotion

Focal Point moves the environment rather than the user. For small movements, gripping with one controller and dragging translates the environment by the same distance the hand moves. For larger movements, the user points a controller at the ground and holds the trigger: a laser raycast marks the focal point, and dragging it moves the world under the user's feet. With two focal points on the ground, the user can rotate, scale and translate the world "as if you were standing on a giant touch screen", in the manner of pinch-to-zoom and two-finger rotation. The documentation suggests shrinking the world, then scaling it back up at a new location, as a quick way to cross large distances.[2]

In a development post, Hwang argued that moving the world around the user was "much less taxing on the proprioceptors" than moving the body through a world. He also wrote that it felt more natural than teleportation, because in the real world people move through spaces by translation.[9] The project page claims the locomotion works "with no motion sickness"; no independent study of this claim was found.[1]

Object manipulation

Gripping an object with one controller and dragging it moves the object by the same distance as the hand, whatever the distance to the object, and releasing at the right moment throws it. With both controllers gripping, moving the hands closer together or further apart scales the object, and moving them around each other rotates it. Both operations pivot around a "Pivot Point" halfway between the hands. Distant objects are selected by pointing a controller and pulling the trigger; a faint halo marks the selected object, and both controllers share one selection. An optional pinned mode ties a gripped object to the controller's rotation.[2]

Demo scenes

The package includes four demo scenes, described in the version 1.0 documentation:[2]

Demo Setting Interactions shown
1: Throwing a Ball A red ball and a wall of cubes Moving, throwing, scaling and rotating an object
2: Pill Fountain A fountain of pill-shaped objects Selecting distant objects, catching them in mid-air, pinned mode
3: Moving in a Room A room Small-scale and large-scale movement, with rotation limited to one axis
4: Moving in a World A world Moving, rotating and scaling the world with one or two focal points

Use in Unity projects

The package depends on the SteamVR Unity asset. To use it in a scene, a developer adds the SteamVR [CameraRig] prefab, places Focal Point's "Standard SteamVR Adapter" prefab inside it, and assigns the object to manipulate in the Interaction Manager component's Subject field. A Manipulation Handler component can lock translation, rotation or scale for an object. It can also make an object keep its momentum when released: physics-based objects receive a velocity or torque, while other objects animate in the direction they were moving.[2] The Asset Store description says the package is "Completely open source and is designed to be extended".[4]

Problems

The documentation and Hwang's notes describe several limitations. Laser pointing becomes less accurate when the user raycasts toward the horizon, and Hwang noted that pointing a ground focal point "off into the horizon has undesirable results".[2][14] According to the documentation, "Rotations that wobble the horizon line will make you sick."[2] During development, rotating the world against two focal points gave poor results because two points leave an unwanted rotational degree of freedom.[9] Hwang also wrote that, as a first serious C# project, the code might be hard to read and could lower frame rates.[11]

The Unity Asset Store now lists the package as deprecated: it is no longer available for purchase and is no longer supported by the publisher.[4]

Solutions

The laser has a default maximum distance of 7 meters, which developers can change in the adapter component. The room demo rotates only around one axis so that the horizon stays level.[2] For the two-point rotation problem, Hwang planned to place multiple focal points on each controller.[9] His notes list ideas deferred for later versions, including constraining movement to one dimension, separate layers of focal points so that each hand could manipulate its own object, and mapping a sphere around the user onto the ground so that pointing at the horizon would not send the user far away.[14]

Related techniques

Moving the scene instead of the viewer has earlier precedents in virtual environment research. In 1990, Colin Ware and Steven Osborne compared three camera-control metaphors using a six degree of freedom input device: "eyeball in hand", "scene in hand" and "flying vehicle control". They judged "scene in hand" good for manipulating closed objects but poor for moving through an interior.[15] At SIGGRAPH 97, Mark Mine, Frederick Brooks and Carlo Séquin described "scaled-world grab" as a locomotion mode in which users grab an object in the direction they want to travel and pull themselves toward it, reaching any visible destination in a single grab.[16]

Additional information

See also

References

  1. ↑ 1.0 1.1 1.2 Albert Hwang. "Focal Point VR". Albert Hwang. https://www.albert-hwang.com/focal-point-vr. Retrieved 2026-09-27.
  2. ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 Albert Hwang (2016-03-31). "Focal Point: A VR interaction framework for manipulating objects / environments (v1.0)". Albert Hwang. https://www.albert-hwang.com/s/README.pdf. Retrieved 2026-09-27.
  3. ↑ 3.0 3.1 Albert Hwang (2016-01-30). "MRL VR + Spatial Computing, getting started...". Albert Hwang. https://www.albert-hwang.com/blog/2016/01/mrl-vr-spatial-computing-getting-started. Retrieved 2026-09-27.
  4. ↑ 4.0 4.1 4.2 4.3 4.4 "Focal Point & SteamVR Adapter". Unity Asset Store. Unity Technologies. https://assetstore.unity.com/packages/tools/focal-point-steamvr-adapter-59625. Retrieved 2026-09-27.
  5. ↑ 5.0 5.1 Albert Hwang. "Albert/FocalPointVR". GitHub. https://github.com/Albert/FocalPointVR. Retrieved 2026-09-27.
  6. ↑ Albert Hwang. "FocalPointVR LICENSE (The MIT License)". GitHub. https://github.com/Albert/FocalPointVR/blob/master/LICENSE. Retrieved 2026-09-27.
  7. ↑ 7.0 7.1 Albert Hwang. "Albert Hwang: I Design Virtual Spaces". Albert Hwang. https://www.albert-hwang.com/home2. Retrieved 2026-09-27.
  8. ↑ Albert Hwang. "Spatial Computing". Albert Hwang. https://www.albert-hwang.com/spatial-computing. Retrieved 2026-09-27.
  9. ↑ 9.0 9.1 9.2 9.3 Albert Hwang (2016-02-06). "MRL VR + Spatial Computing, Day 2". Albert Hwang. https://www.albert-hwang.com/blog/2016/02/mrl-vr-spatial-computing-day-2. Retrieved 2026-09-27.
  10. ↑ Albert Hwang (2016-03-08). "Preview of "Focal Point" -- a design framework for Vive". Albert Hwang. https://www.albert-hwang.com/blog/2016/3/focal-a. Retrieved 2026-09-27.
  11. ↑ 11.0 11.1 11.2 11.3 Albert Hwang (2016-04-02). "Why I built "Focal Point VR" -- and other related thoughts". Albert Hwang. https://www.albert-hwang.com/blog/2016/4/why-i-built-focal-point-vr-and-other-related-thoughts. Retrieved 2026-09-27.
  12. ↑ Albert Hwang. "Commits - Albert/FocalPointVR". GitHub. https://github.com/Albert/FocalPointVR/commits/master. Retrieved 2026-09-27.
  13. ↑ Albert Hwang. "Technical Architecture". GitHub. https://github.com/Albert/FocalPointVR/blob/master/Notes/Technical%20Architecture.txt. Retrieved 2026-09-27.
  14. ↑ 14.0 14.1 Albert Hwang. "General notes". GitHub. https://github.com/Albert/FocalPointVR/blob/master/Notes/General.md. Retrieved 2026-09-27.
  15. ↑ Colin Ware, Steven Osborne (1990). "Exploration and virtual camera control in virtual three dimensional environments". ACM SIGGRAPH Computer Graphics, vol. 24, no. 2, pp. 175-183. https://doi.org/10.1145/91394.91442. Retrieved 2026-09-27.
  16. ↑ Mark R. Mine, Frederick P. Brooks Jr., Carlo H. Séquin (1997). "Moving objects in space: exploiting proprioception in virtual-environment interaction". Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH '97), pp. 19-26. https://doi.org/10.1145/258734.258747. Retrieved 2026-09-27.