A method for generating virtual content in a three-dimensional, 3D, physical environment of a user, the method comprising: under control of a hardware processor: analyzing data acquired from a pose sensor to identify a pose of a user; identifying a physical surface (1242, 1244, 1246, 1248, 1250, 1350, 1510) in a 3D physical environment of the user based at least partly on the pose; receiving an indication to initiate an interaction with the physical surface; determining an orientation of the physical surface; accessing information indicating a first set of virtual objects associated with a first surface orientation and a second set of virtual objects associated with a second surface orientation; in response to determining that the orientation of the physical surface is the first surface orientation, selecting the first set of virtual objects; in response to determining that the orientation of the physical surface is the second surface orientation, selecting the second set of virtual objects; determining a set of available user interface options corresponding to the selected first or second set of virtual objects; determining a first number of user interface options from the set of available user interface options that can legibly fit in a virtual user interface associated with an area available on the physical surface, wherein the first number is less than a number of user interface options in the set of available user interface options; selecting, from the set of available user interface options, a subset of user interface options equal to the first number; generating the virtual user interface including the subset of user interface options; generating an instruction for presenting the virtual user interface containing the subset of user interface options that can legibly fit in the virtual user interface in a 3D view to the user; and in response to selection of a first user interface option of the subset of user interface options, generating an instruction for displaying a corresponding first virtual object on the physical surface. analyzing data acquired from a pose sensor to identify a pose of a user; identifying a physical surface (1242, 1244, 1246, 1248, 1250, 1350, 1510) in a 3D physical environment of the user based at least partly on the pose; receiving an indication to initiate an interaction with the physical surface; determining an orientation of the physical surface; accessing information indicating a first set of virtual objects associated with a first surface orientation and a second set of virtual objects associated with a second surface orientation; in response to determining that the orientation of the physical surface is the first surface orientation, selecting the first set of virtual objects; in response to determining that the orientation of the physical surface is the second surface orientation, selecting the second set of virtual objects; determining a set of available user interface options corresponding to the selected first or second set of virtual objects; determining a first number of user interface options from the set of available user interface options that can legibly fit in a virtual user interface associated with an area available on the physical surface, wherein the first number is less than a number of user interface options in the set of available user interface options; selecting, from the set of available user interface options, a subset of user interface options equal to the first number; generating the virtual user interface including the subset of user interface options; generating an instruction for presenting the virtual user interface containing the subset of user interface options that can legibly fit in the virtual user interface in a 3D view to the user; and in response to selection of a first user interface option of the subset of user interface options, generating an instruction for displaying a corresponding first virtual object on the physical surface.