IP Library Granted Patent US 10,909,772
Granted Patent B2
US 10,909,772 · App. 16/051,340 · Granted Feb 2, 2021

Precise scaling of virtual objects in an extended reality environment

Inventors: Devin Bhushan (Campbell, CA); Jesse Chor (Los Gatos, CA); Glen Wong (Santa Clara, CA)
Assignee: SPLUNK INC.
G06T19/20G06F3/017G06F3/0346G06F3/04845G06T3/0006G06F2203/04808
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,909,772
App. No.
16/051,340
Filed
Jul 31, 2018
Granted
Feb 2, 2021
Kind
B2
Art Unit
2612
USPC
345/648
Abstract

A mobile device is fitted with a camera and an extended reality (XR) software application program executing on a processor within an XR system. Via the XR software application program, various techniques are performed for manipulating virtual objects in an XR environment. In a first technique, the XR software application program facilitates the movement of a virtual object from a first location to a second location. In a second technique, the XR software application program facilitates the rotation of a virtual object. In a third technique, the XR software application program facilitates the scaling of a virtual object along one or more axes.

Claims (93)

1. A computer-implemented method, comprising:

identifying a plurality of reference axes of a virtual object based on an orientation of a virtual camera associated with the virtual object;

receiving, via a client device, first user input associated with a first location and second user input associated with a second location;

determining that a first line connecting the first location and the second location is within a first threshold angle of a first reference axis included in the plurality of reference axes of the virtual object;

in response to determining that the first line is within the first threshold angle of the first reference axis, selecting, for scaling the virtual object, the first reference axis of the virtual object from among the plurality of reference axes of the virtual object; and

scaling the virtual object along the first reference axis based on the first user input and the second user input without scaling the virtual object along at least one other reference axis included in the plurality of reference axes.

2. The computer-implemented method of claim 1 , further comprising, determining an angle of the client device relative to a reference orientation of the client device, wherein determining that the first line is within the first threshold angle is based on the angle of the client device.

3. The computer-implemented method of claim 1 , wherein the first user input and the second user input correspond to a pinch gesture, and scaling the virtual object along the first reference axis is performed based on a magnitude of the pinch gesture.

4. The computer-implemented method of claim 1 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along both the first reference axis and the second reference axis based on the third user input and the fourth user input.

5. The computer-implemented method of claim 1 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within a second threshold angle of a second reference axis of the virtual object; and

scaling the virtual object along only the second reference axis based on the third user input and the fourth user input.

6. The computer-implemented method of claim 1 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along the first reference axis based on the first user input and the second user input, and scaling the virtual object along the second reference axis based on the third user input and the fourth user input.

7. The computer-implemented method of claim 1 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along the first reference axis, the second reference axis, and a third reference axis based on the third user input and the fourth user input.

8. The computer-implemented method of claim 1 , wherein determining that the first line is within the first threshold angle comprises determining that an angle of the first line is within an angular range that includes the first threshold angle.

9. The computer-implemented method of claim 1 , wherein determining that the first line is within the first threshold angle comprises:

computing a reference angle based on the first line;

selecting a first angular range included in a plurality of angular ranges, wherein the first angular range includes the reference angle; and

determining that the first angular range includes the first threshold angle.

10. The computer-implemented method of claim 1 , wherein scaling the virtual object along the first reference axis comprises:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

computing a first distance between the first location and the second location;

computing a second distance between the third location and the fourth location; and

scaling the virtual object along the first reference axis based on a ratio of the second distance to the first distance.

11. The computer-implemented method of claim 1 , further comprising:

determining a midpoint location between the first location input and the second location input; and

selecting the virtual object based on the midpoint location.

12. The computer-implemented method of claim 1 , wherein the virtual object is an extended reality overlay of a real-world object.

13. The computer-implemented method of claim 1 , wherein the virtual object is an extended reality overlay of a real-world object that is a data representation of real-time data or near-real-time data.

14. The computer-implemented method of claim 1 , wherein the virtual object is an extended reality overlay of a real-world object that is a data representation of real-time data or near-real-time data from a data intake and query system, wherein the real-time or near-real-time data is generated by executing a query of machine data, at least part of which machine data is related to the real-world object.

15. One or more non-transitory computer-readable storage media including instructions that, when executed by one or more processors, cause the one or more processors to perform the steps of:

identifying a plurality of reference axes of a virtual object based on an orientation of a virtual camera associated with the virtual object;

receiving, via a client device, first user input associated with a first location and second user input associated with a second location;

determining that a first line connecting the first location and the second location is within a first threshold angle of a first reference axis included in the plurality of reference axes of the virtual object;

in response to determining that the first line is within the first threshold angle of the first reference axis, selecting, for scaling the virtual object, the first reference axis of the virtual object from among the plurality of reference axes of the virtual object; and

scaling the virtual object along the first reference axis based on the first user input and the second user input without scaling the virtual object along at least one other reference axis included in the plurality of reference axes.

16. The one or more non-transitory computer-readable storage media of claim 15 , further comprising, determining an angle of the client device relative to a reference orientation of the client device, wherein determining that the first line is within the first threshold angle is based on the angle of the client device.

17. The one or more non-transitory computer-readable storage media of claim 15 , wherein the first user input and the second user input correspond to a pinch gesture, and scaling the virtual object along the first reference axis is performed based on a magnitude of the pinch gesture.

18. The one or more non-transitory computer-readable storage media of claim 15 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along both the first reference axis and the second reference axis based on the third user input and the fourth user input.

19. The one or more non-transitory computer-readable storage media of claim 15 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within a second threshold angle of a second reference axis of a virtual object; and

scaling the virtual object along only the second reference axis based on the third user input and the fourth user input.

20. The one or more non-transitory computer-readable storage media of claim 15 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along the first reference axis based on the first user input and the second user input, and scaling the virtual object along the second reference axis based on the third user input and the fourth user input.

21. The one or more non-transitory computer-readable storage media of claim 15 , further comprising:

receiving, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determining that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scaling the virtual object along the first reference axis, the second reference axis, and a third reference axis based on the third user input and the fourth user input.

22. The one or more non-transitory computer-readable storage media of claim 15 , wherein determining that the first line is within the first threshold angle comprises determining that an angle of the first line is within an angular range that includes the first threshold angle.

23. A computing device, comprising:

one or more memories that include an extended reality application program; and

one or more processors that are coupled to the one or more memories and,

when executing the extended reality application program, are configured to:

identify a plurality of reference axes of a virtual object based on an orientation of a virtual camera associated with the virtual object;

receive, via a client device, first user input associated with a first location and second user input associated with a second location;

determine that a first line connecting the first location and the second location is within a first threshold angle of a first reference axis included in the plurality of reference axes of the virtual object;

in response to determining that the first line is within the first threshold angle of the first reference axis, selecting, for scaling the virtual object, the first reference axis of the virtual object from among the plurality of reference axes of the virtual object; and

scale the virtual object along the first reference axis based on the first user input and the second user input without scaling the virtual object along at least one other reference axis included in the plurality of reference axes.

24. The computing device of claim 23 , wherein, when executing the extended reality application program, the one or more processors are further configured to determine an angle of the client device relative to a reference orientation of the client device, wherein determining that the first line is within the first threshold angle is based on the angle of the client device.

25. The computing device of claim 23 , wherein the first user input and the second user input correspond to a pinch gesture, and scaling the virtual object along the first reference axis is performed based on a magnitude of the pinch gesture.

26. The computing device of claim 23 , wherein, when executing the extended reality application program, the one or more processors are further configured to:

receive, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determine that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scale the virtual object along both the first reference axis and the second reference axis based on the third user input and the fourth user input.

27. The computing device of claim 23 , wherein, when executing the extended reality application program, the one or more processors are further configured to:

receive, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determine that an additional line defined between the third location and the fourth location is within a second threshold angle of a second reference axis of a virtual object; and

scale the virtual object along only the second reference axis based on the third user input and the fourth user input.

28. The computing device of claim 23 , wherein, when executing the extended reality application program, the one or more processors are further configured to:

receive, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determine that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scale the virtual object along the first reference axis based on the first user input and the second user input, and scaling the virtual object along the second reference axis based on the third user input and the fourth user input.

29. The computing device of claim 23 , wherein, when executing the extended reality application program, the one or more processors are further configured to:

receive, via the client device, third user input associated with a third location and fourth user input associated with a fourth location;

determine that an additional line defined between the third location and the fourth location is within an angular range that is between the first reference axis of the virtual object and a second reference axis of the virtual object; and

scale the virtual object along the first reference axis, the second reference axis, and a third reference axis based on the third user input and the fourth user input.

30. The computing device of claim 23 , wherein determining that the first line is within the first threshold angle comprises determining that an angle of the first line is within an angular range that includes the first threshold angle.

Assignments (3)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2018
From: BHUSHAN, DEVIN; CHOR, JESSE; WONG, GLEN
To: SPLUNK INC.
Reel/Frame 046548/0431 →
Continuity (1)
Related Publication 20200043244A1 · Feb 6, 2020
Cited By (1)
US 12,265,878