IP Library Granted Patent US 9,171,381
Granted Patent B1
US 9,171,381 · App. 13/659,801 · Granted Oct 27, 2015

System and method for rendering an image of a frame of an animation

Inventor: Ramond Cook (Castro Valley, CA)
Assignee: Kabam, Inc.
G06T7/2053G06F17/30902
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,171,381
App. No.
13/659,801
Granted
Oct 27, 2015
Kind
B1
Abstract

An exemplary system and method for recursively rendering an image, including marking renderable items of the image that have changed from a previous image, are provided. In some implementations, a client computing device may receive a plurality of frames as part of an animation. An image list may be maintained, where the image list is configured to store one or more references to one or more respective bitmap objects associated with a first image of a first frame in the animation. The bitmap objects referenced in the image list may be marked as having changed from the first image to the second image. The second image may be rendered based on the marked bitmap objects in the image list.

Claims (136)

1. A computer-implemented method of rendering an image, the method being implemented on a client computing platform, the method comprising:

receiving a plurality of frames as part of an animation;

maintaining an image list configured to store one or more references to one or more respective bitmap objects associated with a first image of a first frame in the animation;

maintaining, for a bitmap object associated with the first image, a flag indicating whether bitmap data of the bitmap object has changed and one or more of: the bitmap data, a location of the bitmap object within the first image, one or more references to other bitmap objects, or one or more references to child bitmap objects;

obtaining information defining a vector image in a second frame in the animation, the second frame being obtained subsequent to the first frame;

detecting a color bound of a first object at a first location of the vector image;

comparing the first object with the bitmap object of the first image at the bitmap location of the bitmap object corresponding to the first location of the vector image; and

responsive to the first object not matching the bitmap object,

marking a flag of the bitmap object as dirty.

2. The method of claim 1 , wherein, responsive to the first image not including a corresponding bitmap object at the bitmap location, the method further comprises:

generating the corresponding bitmap object;

augmenting the image list with a reference to the corresponding bitmap object; and

marking a flag of the corresponding bitmap object as dirty.

3. The method of claim 1 , wherein the method further comprises:

responsive to an nth bitmap object referenced in the image list not being compared with an object of the vector image, removing a reference to the nth bitmap object from the image list.

4. The method of claim 1 , further comprising:

responsive to the first object not matching the bitmap object, detecting a color bound of a first child object at a first child location of the first object;

comparing the first child object with a child bitmap object of the first bitmap object, where the child bitmap object is at a child bitmap location of the first bitmap object corresponding to the first child location of the first object;

when the first child object does not match the child bitmap object, marking a flag of the child bitmap object as dirty; and

when the first child object matches the child bitmap object,

detecting a color bound of a second child object at a second child location of the first object, and

comparing the second child object with a second child bitmap object of the first bitmap object, where the second child bitmap object is at a second child bitmap location of the first bitmap object corresponding to the second child location of the first object.

5. The method of claim 4 , further comprising:

responsive to marking the flag of the child bitmap object as dirty:

detecting the color bound of the second child object at the second child location of the first object,

comparing the second child object with a second child bitmap object of the first bitmap object, where the second child bitmap object is at the second child bitmap object is at a second child bitmap location of the first bitmap object corresponding to the second child location of the first object; and

when the second child object does not match the second child bitmap object, marking a flag of the second child bitmap object as dirty.

6. The method of claim 1 , further comprising:

responsive to the first object matching the bitmap object,

detecting a color bound of a second object at a second location of the vector image, and

comparing the second object with a second bitmap object of the first image, where the second bitmap object is at a second bitmap location of the first image corresponding to the second location of the second object.

7. The method of claim 1 , further comprising:

detecting a color bound of a second object at a second location of the vector image, and

comparing the second object with a second bitmap object of the first image, where the second bitmap object is at a second bitmap location of the first image corresponding to the second location of the second object.

8. The method of claim 1 , wherein comparing the first object with the bitmap object comprises:

removing, from the first object, one or more pixels that match respective one or more pixels of the vector image to generate a non-transparent first object; and

comparing the non-transparent first object with the bitmap object.

9. The method of claim 4 , wherein comparing the first child object with the child bitmap object comprises:

removing, from the first child object, one or more pixels that match respective one or more pixels of the first object to generate a non-transparent first child object; and

comparing the non-transparent first child object with the bitmap child object.

10. Non-transitory electronic storage media storing information related to an image, the stored information comprising:

an image list configured to store one or more references to one or more respective bitmap objects associated with a first image of a first frame in the animation;

a bitmap object cache configured to store one or more bitmap objects for the first image, a bitmap object comprising a flag indicating whether bitmap data of the bitmap object has changed and one or more of: the bitmap data, a location of the bitmap object within the first image, one or more references to other bitmap objects, or one or more references to child bitmap objects; and

instructions configured to cause a client computing platform to:

receive a plurality of frames as part of an animation;

obtain information defining a vector image in a second frame in the animation, the second frame being obtained subsequent to the first frame;

detect a color bound of a first object at a first location of the vector image;

compare the first object with a bitmap object of the first image at a bitmap location of the bitmap object corresponding to the first location of the vector image; and

responsive to the first object not matching the bitmap object, mark a flag of the bitmap object as dirty.

11. The electronic storage media of claim 10 , wherein, responsive to the first image not including a corresponding bitmap object at the bitmap location, the instructions are configured to cause a client computing platform to

generate the corresponding bitmap object;

augment the image list with a reference to the corresponding bitmap object; and

mark a flag of the corresponding bitmap object as dirty.

12. The electronic storage media of claim 10 , wherein, responsive to an nth bitmap object referenced in the image list not being compared with an object of the vector image, the instructions are configured to cause a client computing platform to remove a reference to the nth bitmap object from the image list.

13. The electronic storage media of claim 10 , wherein the instructions are configured to cause a client computing platform to

responsive to the first object not matching the bitmap object, detect a color bound of a first child object at a first child location of the first object;

compare the first child object with a child bitmap object of the first bitmap object, where the child bitmap object is at a child bitmap location of the first bitmap object corresponding to the first child location of the first object; and

when the first child object does not match the child bitmap object, mark a flag of the child bitmap object as dirty; and

when the first child object matches the child bitmap object,

detect a color bound of a second child object at a second child location of the first object, and

compare the second child object with a second child bitmap object of the first bitmap object, where the second child bitmap object is at a second child bitmap location of the first bitmap object corresponding to the second child location of the first object.

14. The electronic storage media of claim 13 , wherein the instructions are configured to cause a client computing platform to

responsive to marking the flag of the child bitmap object as dirty:

detect the color bound of the second child object at the second child location of the first object,

compare the second child object with the second child bitmap object of the first bitmap object, where the second child bitmap object is at the second child bitmap location of the first bitmap object corresponding to the second child location of the first object; and

when the second child object does not match the second child bitmap object, mark a flag of the second child bitmap object as dirty.

15. The electronic storage media of claim 13 , wherein the instructions are configured to cause a client computing platform to

responsive to the first object matching the bitmap object,

detect a color bound of a second object at a second location of the vector image, and

compare the second object with a second bitmap object of the first image, where the second bitmap object is at a second bitmap location of the first image corresponding to the second location of the second object.

16. The electronic storage media of claim 10 , wherein the instructions are configured to cause a client computing platform to

detect a color bound of a second object at a second location of the vector image, and

compare the second object with a second bitmap object of the first image, where the second bitmap object is at a second bitmap location of the first image corresponding to the second location of the second object.

17. The electronic storage media of claim 10 , wherein the instructions are configured to cause a client computing platform to compare the first object with the bitmap object by removing, from the first object, one or more pixels that match respective one or more pixels of the vector image to generate a non-transparent first object; and

comparing the non-transparent first object with the bitmap object.

18. The electronic storage media of claim 13 , wherein the instructions are configured to cause a client computing platform to compare the first child object with the child bitmap object by removing, from the first child object, one or more pixels that match respective one or more pixels of the first object to generate a non-transparent first child object; and

comparing the non-transparent first child object with the bitmap child object.

19. A computer-implemented method of rendering an image, the method being implemented on a client computing platform, the method comprising:

receiving a plurality of frames as part of an animation;

maintaining an image list configured to store one or more references to one or more respective bitmap objects associated with a first image of the animation;

maintaining, for a bitmap object associated with the first image, a flag indicating whether bitmap data of the bitmap object has changed and one or more of: the bitmap data, a location of the bitmap object within the first image, one or more references to other bitmap objects, or one or more references to child bitmap objects;

obtaining information defining a vector image in a second frame in the animation, the second frame being obtained subsequent to the first frame;

retrieving, for a first bitmap object at a first location of the first image, a first flag associated with the first bitmap object;

responsive to the first flag indicating that the first bitmap object has changed, retrieving, for a first child bitmap object at a first child bitmap location of the first bitmap object, a first child flag; and

responsive to the first child flag indicating that the first child bitmap object has changed:

detecting a first child color bound of a first child object of a first object of the vector image at a child location of the vector image corresponding to the first child bitmap location of the first bitmap object;

implementing the vector information to rasterize the first child object within the first child color bound of the vector image to generate first child bitmap data for the first child object; and

updating the first child bitmap object with the generated first child bitmap data.

20. The method of claim 19 , further comprising:

responsive to the first child flag indicating that the first child bitmap object has not changed,

when a second child bitmap object at a second child bitmap location is associated with the first bitmap object, retrieving, for the second child bitmap object, a second child flag associated with the second child bitmap object; and

when the first bitmap object is not associated with another child bitmap object, retrieving, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object.

21. The method of claim 19 , further comprising:

responsive to updating the first child bitmap object with the generated first child bitmap data:

when a second child bitmap object at a second child bitmap location is associated with the first bitmap object, retrieving, for the second child bitmap object, a second child flag; and

when the first bitmap object is not associated with another child bitmap object, retrieving, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object.

22. The method of claim 19 , further comprising:

responsive to the first flag indicating that the first bitmap object has not changed, retrieving, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object;

responsive to the second flag indicating that the second bitmap object has changed, retrieving, for a second child bitmap object at a second child bitmap location of the first bitmap object, a second child flag; and

responsive to the second child flag indicating that the second child bitmap object has changed:

detecting a second child color bound of a second child object of a second object of the vector image at a second child location of the vector image corresponding to the second child bitmap location of the second child bitmap object;

implementing the vector information to rasterize the second child object within the second child color bound of the vector image to generate second child bitmap data for the second child object; and

updating the second child bitmap object with the generated second child bitmap data.

23. The method of claim 19 , wherein generating the first child bitmap data for the first child object comprises:

removing, from the first child object, one or more pixels that match respective one or more pixels of the first object.

24. Non-transitory electronic storage media storing information related to an image, the stored information comprising:

an image list configured to store one or more references to one or more respective bitmap objects associated with a first image of a first frame in an animation;

a bitmap object cache configured to store one or more bitmap objects for the first image, a bitmap object comprising a flag indicating whether bitmap data of the bitmap object has changed and one or more of: the bitmap data, a location of the bitmap object within the first image, one or more references to other bitmap objects, or one or more references to child bitmap objects;

a child bitmap object cache configured to store one or more child bitmap objects for a bitmap object; and

instructions configured to cause a client computing platform to:

receive a plurality of frames as part of the animation;

obtain information defining a vector image in a second frame in the animation, the second frame being obtained subsequent to the first frame;

retrieve, for a first bitmap object at a first bitmap location of the first image, a first flag associated with the first bitmap object;

responsive to the first flag indicating that the first bitmap object has changed, retrieve, for a first child bitmap object at a first child bitmap location of the first bitmap object, a first child flag; and

responsive to the first child flag indicating that the first child bitmap object has changed:

detect a first child color bound of a first child object of a first object of the vector image at a child location of the vector image corresponding to the first child bitmap location of the first bitmap object;

implement the vector information to rasterize the first child object within the first child color bound of the vector image to generate first child bitmap data for the first child object; and

update the first child bitmap object with the generated first child bitmap data.

25. The electronic storage media of claim 24 , wherein the instructions are configured to cause a client computing platform to

responsive to the first child flag indicating that the first child bitmap object has not changed,

when a second child bitmap object at a second child bitmap location is associated with the first bitmap object, retrieve, for the second child bitmap object, a second child flag associated with the second child bitmap object; and

when the first bitmap object is not associated with another child bitmap object, retrieve, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object.

26. The electronic storage media of claim 24 , wherein the instructions are configured to cause a client computing platform to

responsive to updating the first child bitmap object with the generated first child bitmap data:

when a second child bitmap object at a second child location is associated with the first bitmap object, retrieve, for the second child bitmap object at the second child bitmap location of the first child bitmap object, a second child dirty flag; and

when the first bitmap object is not associated with another child bitmap object, retrieve, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object.

27. The electronic storage media of claim 24 , wherein the instructions are configured to cause a client computing platform to

responsive to the first flag indicating that the first bitmap object has not changed, retrieve, for a second bitmap object at a second bitmap location of the first image, a second flag associated with the second bitmap object;

responsive to the second flag indicating that the second bitmap object has changed, retrieve, for a second child bitmap object at a second child bitmap location of the first bitmap object, a second child flag; and

responsive to the second child flag indicating that the second child bitmap object has changed:

detect a second child color bound of a second child object of a second object of the vector image at a second child location of the vector image

corresponding to the second child bitmap location of the second child bitmap object;

implement the vector information to rasterize the second child object within the second child color bound of the vector image to generate second child bitmap data for the second child object; and

update the second child bitmap object with the generated second child bitmap data.

28. The electronic storage media of claim 24 , wherein the instructions are configured to cause a client computing platform to generate the first child bitmap data for the first child object by

removing, from the first child object, one or more pixels that match respective one or more pixels of the first object.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2018
From: AFTERSHOCK SERVICES, INC.
To: ELECTRONIC ARTS INC.
Reel/Frame 045474/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2017
From: KABAM, INC.
To: AFTERSHOCK SERVICES, INC.
Reel/Frame 042211/0425 →
TERMINATION OF INTELLECTUAL PROPERTY SECURITY AGREEMENT, RECORDED AT REEL/FRAME: 039268/0910 Recorded Mar 2, 2017
From: SILICON VALLEY BANK
To: KABAM, INC.
Reel/Frame 041857/0538 →
SECURITY AGREEMENT Recorded Jul 6, 2016
From: KABAM, INC.
To: SILICON VALLEY BANK
Reel/Frame 039268/0910 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2012
From: COOK, RAYMOND
To: KABAM, INC.
Reel/Frame 029185/0620 →