A computer-implemented method for presenting a user interface in a three dimensional virtual environment, the user interface having a set of user interface elements, and the three dimensional virtual environment including a curved visual surface having a first curved axis, a second axis, a reference point on the curved visual surface, wherein the reference point is a focal point of the curved visual surface and is the viewing point of a user, the method comprising: for at least one UI element: determining a first position for the UI element on the first curved axis (x, 312) of the curved visual surface and the second axis (y) of the curved visual surface wherein the first position is angled or rotationally displaced with respect to the reference point; determining a second axis rotation of the UI element with respect to the second axis wherein the second axis rotation of the UI element is toward the reference point and is based on the angle or rotational displacement of the first position of the UI element with respect to the reference point and the second axis rotation rotates the UI element to be tangential to the curved visual surface, rotating the UI element on the second axis to the determined second axis rotation to orient the UI element toward the reference point so that the UI element is orientated toward the reference point for presentation to the user, determining whether a dimension of the UI element exceeds a threshold size, and if the UI element does not exceed the threshold size, then rendering the rotated UI element at the first position on the curved visual surface, else if the UI element exceeds the threshold size, then curving the UI element through sharding or a curved mesh and rendering the curved UI element at the first position on the curved visual surface, wherein the UI element includes a visual component and a collider component, wherein the visual component comprises an image that is displayed to the user, the collider component comprises an interactive element which the user will contact in virtual space to interact with the UI element and wherein the collider component is configured to select or activate the UI element when the user interacts with the collider component. determining a first position for the UI element on the first curved axis (x, 312) of the curved visual surface and the second axis (y) of the curved visual surface wherein the first position is angled or rotationally displaced with respect to the reference point; determining a second axis rotation of the UI element with respect to the second axis wherein the second axis rotation of the UI element is toward the reference point and is based on the angle or rotational displacement of the first position of the UI element with respect to the reference point and the second axis rotation rotates the UI element to be tangential to the curved visual surface, rotating the UI element on the second axis to the determined second axis rotation to orient the UI element toward the reference point so that the UI element is orientated toward the reference point for presentation to the user, determining whether a dimension of the UI element exceeds a threshold size, and if the UI element does not exceed the threshold size, then rendering the rotated UI element at the first position on the curved visual surface, else if the UI element exceeds the threshold size, then curving the UI element through sharding or a curved mesh and rendering the curved UI element at the first position on the curved visual surface, if the UI element does not exceed the threshold size, then rendering the rotated UI element at the first position on the curved visual surface, else if the UI element exceeds the threshold size, then curving the UI element through sharding or a curved mesh and rendering the curved UI element at the first position on the curved visual surface, wherein the UI element includes a visual component and a collider component, wherein the visual component comprises an image that is displayed to the user, the collider component comprises an interactive element which the user will contact in virtual space to interact with the UI element and wherein the collider component is configured to select or activate the UI element when the user interacts with the collider component.