Visual weight is the ability of an element or region to draw attention to itself. It is often created through the use of contrast and/or with the use of color.
Placing the visual weight in the middle of elements allows users to rest their gaze there. This decreases the risk of the user looking at the outskirts of an object, which could lead to the user’s gaze missing the element.
For UI, this can mean putting text in the middle of a button, having padding, and avoiding strong outlines.
When it comes to 3D objects, it is much harder to control the visual weight, because doing so might alter the visuals of the 3D object too much, changing the intended design. The user might also look at the 3D objects from different angles (as compared to UI, where the UI will preferably always face the user).
Spacing is the distance between objects and allows the user to look at the contours of elements without accidental activation of adjacent elements.
In a 3D world where the user can move, spacing is dynamic and dependent on the user’s perspective.
Try to have spacing in all three dimensions (x, y, z) to make it the least likely that the objects will overlap. This won’t always be possible but it’s good to strive for.
Cost of Error
If the user accidentally triggers an unwanted effect with a Gaze Interaction State, for example when gaze enters an element, the user will experience a cost of error.
In a mild case, the cost could be that the incorrect object is highlighted. This can be caused by the eye tracking accuracy being off target.
In a worse case, the cost could be the user activating the wrong element, such as inadvertently pressing Confirm instead of Cancel. This can happen when performing tasks using Hand-Eye Coordination since our eyes don’t always remain fixated on a target until the task is completed.
Try to use spacing between elements and to have the visual weight in the center to combat the risk of the user experiencing a cost of error.