IP Library Granted Patent US 9,756,375
Granted Patent B2
US 9,756,375 · App. 14/603,213 · Granted Sep 5, 2017

Predictive server-side rendering of scenes

Inventors: David Chiyuan Chu (Kirkland, WA); Eduardo Alberto Cuervo Laffaye (Bellevue, WA); Johannes Peter Kopf (Hamburg, DE); Alastair Wolman (Seattle, WA); Yury Degtyarev (Saint Petersburg, RU); Kyungmin Lee (Ann Arbor, MI); Sergey Grizan (Krasnoyarsk, RU)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04N21/42653A63F13/35G06T15/20H04L67/36
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 9,756,375
App. No.
14/603,213
Granted
Sep 5, 2017
Kind
B2
Abstract

A server device and method are provided for use in predictive server-side rendering of scenes based on client-side user input. The server device may include a processor and a storage device holding instructions for an application program executable by the processor to receive, at the application program, a current navigation input in a stream of navigation inputs from a client device over a network, calculate a predicted future navigation input based on the current navigation input and a current application state of the application program, render a future scene based on the predicted future navigation input to a rendering surface, and send the rendering surface to the client device over the network.

Claims (38)

1. A server device for use in predictive rendering of scenes for a client device, comprising:

a processor; and

a storage device holding instructions for a server application program executable by the processor to:

receive, at the server application program, a current user navigation input in a stream of user navigation inputs from a client device over a network;

calculate a predicted future navigation input based on the current user navigation input and a current application state of the server application program;

determine, based on the current application state of the server application program, a plurality of alternative impulse input sequences for different permutations of impulse inputs that can occur within a communication lag time between the server device and client device;

render a plurality of future scenes based on each of the alternative impulse input sequences and the predicted future navigation input to a plurality of rendering surfaces; and

send the plurality of alternative impulse input sequences and the plurality of rendering surfaces to the client device over the network.

2. The server device of claim 1 , wherein the future scene is rendered with a larger field of view than a viewport of a client application program executed on the client device.

3. The server device of claim 2 , wherein the rendering surface is a cubemap.

4. The server device of claim 2 , wherein the rendering surface has fewer rendering planes than a cubemap.

5. The server device of claim 4 , wherein the rendering surface is a clipped cubemap.

6. The server device of claim 5 , wherein a percentage of clipping of the clipped cubemap is determined based on an expected variance of a prediction error of the predicted future navigation input.

7. The server device of claim 4 , wherein the rendering surface is an edge.

8. The server device of claim 4 , wherein the rendering surface is a tetrahedron.

9. The server device of claim 1 , wherein an impulse input is only determined to occur at a subsampling periodicity that is greater than one clock tick of the server application program.

10. A method for predicting user input and rendering a future scene of an application comprising:

at a server device:

receiving, at a server application program executed on the server device, a current user navigation input in a stream of user navigation inputs from a client device, over a network;

calculating a predicted future navigation input based on the current user navigation input and a current application state of the server application program;

determining, based on the current application state of the server application program, a plurality of alternative impulse input sequences for different permutations of impulse inputs that can occur within a communication lag time between the server device and client device;

rendering a plurality of future scenes based on each of the alternative impulse input sequences and the predicted future navigation input to a plurality of rendering surfaces; and

sending the plurality of alternative impulse input sequences and the plurality of rendering surfaces to the client device over the network.

11. The method of claim 10 , wherein the future scene is rendered with a larger field of view than a viewport of a client application program executed on the client device.

12. The method of claim 11 , wherein the rendering surface is a clipped cubemap.

13. The method of claim 12 , wherein a percentage of clipping of the clipped cubemap is determined based on an expected variance of a prediction error of the predicted future navigation input.

14. The method of claim 11 , wherein the rendering surface is an edge.

15. The method of claim 11 , wherein the rendering surface is a tetrahedron.

16. The method of claim 10 , wherein an impulse input is only determined to occur at a subsampling periodicity that is greater than one clock tick of the server application program.

17. A server device, comprising:

a processor; and

a storage device holding instructions for a server application program, executable by the processor to:

receive, at the server application program, a current user navigation input in a stream of user navigation inputs from a client device over a network;

calculate a predicted future navigation input based on the current user navigation input and a current application state of the server application program;

determine, based on the current application state of the server application program, a plurality of alternative impulse input sequences for different permutations of impulse inputs that can occur within a communication lag time between the server device and client device;

render a plurality of future scenes based on each of the alternative impulse input sequences and the predicted future navigation input to a plurality of rendering surfaces, wherein the plurality of future scenes are rendered with a larger field of view than a viewport of the client device; and

send the plurality of alternative impulse input sequences and the plurality of rendered rendering surfaces to the client device over the network.

18. The server device of claim 17 , wherein the plurality of rendering surfaces are selected from the group consisting of: a cubemap, a clipped cubemap, an edge, and a tetrahedron.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2015
From: CHU, DAVID CHIYUAN; LAFFAYE, EDUARDO ALBERTO CUERVO; KOPF, JOHANNES PETER; WOLMAN, ALASTAIR; DEGTYAREV, YURY; LEE, KYUNGMIN; GRIZAN, SERGEY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034794/0193 →
Continuity (1)
Related Publication 20160219325A1 · Jul 28, 2016