CPC G06F 16/972 (2019.01) [G06T 15/005 (2013.01)] | 15 Claims |
1. A method for on demand rendered image delivery, the method comprising:
a) determining that a first local image server from a set of one or more local image servers should process a first request for an image of a three dimensional object;
b) sending the first request for the image of the three dimensional object to the first local image server;
c) at the first local image server, in response to the first request for the image of the three dimensional object:
i) determining that the requested image of the three dimensional object is not present in an image store corresponding to that local image server;
ii) based on determining that the requested image of the three dimensional object is not present in the image store corresponding to that local image server:
A) obtaining the requested image of the three dimensional object; and
B) storing the requested image of the three dimensional object in the image store corresponding to that local image server;
and
iii) returning the requested image of the three dimensional object;
d) receiving, at a set of one or more rendering servers, a request message indicating that a requesting local image server is obtaining the requested image of the three dimensional object and, based on that request message:
i) generating the requested image of the three dimensional object based on rendering, using special purpose rendering hardware, a three dimensional model of the three dimensional object; and
ii) after generating the requested image of the three dimensional object:
A) storing the requested image of the three dimensional object in a global image store; and
B) sending a completion message indicating that the requested image of the three dimensional object has been generated;
and
e) at the first local image server, in response to a second request for the image of the three dimensional object, wherein the second request for the image of the three dimensional object is received after the first request for the image of the three dimensional object:
i) determining that the requested image of the three dimensional object is present in the image store corresponding to that local image server;
ii) returning the requested image of the three dimensional object from the image store corresponding to that local image server;
wherein:
A) the completion message indicating that the requested image of the three dimensional object has been generated is a message that the requested image of the three dimensional object is available in the global image store;
B) sending the completion message indicating that the requested image of the three dimensional object has been generated comprises broadcasting the completion message indicating that the requested image of the three dimensional object has been generated to the set of one or more local image servers;
C) each local image server from the set of one or more local image servers is programmed to obtain the requested image of the three dimensional object by performing obtaining acts comprising:
I) determining if the requested image of the three dimensional object is available in the global image store;
II) based on determining that the requested image of the three dimensional object is available in the global image store, retrieving the requested image of the three dimensional object from the global image store;
III) based on determining that the requested image of the three dimensional object is not available in the global image store, performing a set of generation acts comprising:
a) sending the request message indicating that that local image server is obtaining the requested image of the three dimensional object; and
b) based on receiving the completion message indicating that the requested image of the three dimensional object has been generated, retrieving the requested image of the three dimensional object from the global image store;
D) the method comprises the first local image server:
I) determining, based on the first request for the image of the three dimensional object, that the requested image of the three dimensional object is not available in the global image store;
II) based on determining that the requested image of the three dimensional object is not available in the global image store:
a) generating an identifier for the requested image of the three dimensional object;
b) using the identifier for the requested image of the three dimensional object and a lock file stored in a globally accessible memory, determining whether no request message for the requested image of the three dimensional object has previously been sent to the set of one or more rendering servers; and
c) including the first request for the image of the three dimensional object in a set of requests in a memory of that local image server:
III) when returning the requested image of the three dimensional object, for each request in the set of requests in the memory the first local image server which requests the requested image of the three dimensional object, return a response to that request which comprises the requested image of the three dimensional object;
E) each local image server from the set of one or more local image servers is programmed to only send the request message indicating that that local image server is obtaining the requested image of the three dimensional object based on that local image server determining that no request message for the requested image of the three dimensional object has previously been sent to the set of one or more rendering servers.
|