IP Library Granted Patent US 9,892,529
Granted Patent B2
US 9,892,529 · App. 13/958,523 · Granted Feb 13, 2018

Constraint evaluation in directed acyclic graphs

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,892,529
App. No.
13/958,523
Granted
Feb 13, 2018
Kind
B2
Abstract

Systems and processes are described below relating to evaluating a dependency graph to render three-dimensional (3D) graphics using constraints. Two virtual 3D objects are accessed in a virtual 3D space. A constraint relationship request is received, which identifies the first object as a parent and the second object as a child. The technique verifies whether the graphs of the objects are compatible for being constrained to one another. The first object is evaluated to determine its translation, rotation, and scale. The second object is similarly evaluated based on the translation, rotation, and scale of the first object. An image is rendered depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object.

Claims (73)

1. A method for evaluating a constraint system for use in rendering three-dimensional (3D) graphics, the method comprising:

accessing a first directed acyclic graph (DAG) representing a first virtual 3D object;

accessing a second DAG representing a second virtual 3D object;

receiving a constraint relationship request, the constraint relationship request identifying the first DAG as a constraint parent and the second DAG as a constraint child;

verifying whether the first DAG is compatible for constraining to the second DAG;

connecting, in response to the first DAG and second DAG being compatible for constraining, an output of the first DAG to an input of the second DAG;

evaluating the first DAG to determine a first output value at the output of the first DAG;

evaluating, in response to determining that the first output value affects the evaluation of the second DAG, the second DAG based on the first output value received at the input of the second DAG from the output of the first DAG; and

rendering, after determining that the evaluation of the first DAG and second DAG is complete, an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object.

2. The method of claim 1 , wherein evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the first DAG.

3. The method of claim 1 , further comprising

receiving a further constraint relationship request, the further constraint relationship request identifying the second DAG as a constraint parent and the first DAG as a constraint child;

wherein evaluating the second DAG produces a second output value, the second output value at the output of the second DAG; and

evaluating, in response to determining that the second output value affects the evaluation of the first DAG, the first DAG based on the second output value received at an input of the first DAG from the output of the second DAG.

4. The method of claim 1 , wherein:

evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on the translation, rotation, or scale associated with the first DAG; and

evaluating the first DAG based on the second output value comprises evaluating the first DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the second DAG.

5. The method of claim 1 , wherein verifying whether the first DAG is compatible for constraining to the second DAG comprises verifying that a first constraint interface of the output of first DAG is compatible with a second constraint interface of the input of the second DAG.

6. The method of claim 5 , wherein:

the first DAG comprises a first child constraint node having an input with the first constraint interface and a first parent constraint node having an output with the second constraint interface; and

the second DAG comprises a second child constraint node having an input with the first constraint interface and a second parent constraint node having an output with the second constraint interface.

7. The method of claim 1 , wherein the constraint relationship request identifies one or more of a translation/rotation/scale constraint relationship or an aim constraint relationship.

8. The method of claim 7 , wherein the aim constraint relationship uses an identified axis of the second virtual 3D object.

9. A non-transitory computer-readable storage medium comprising computer-executable instructions for evaluating a constraint system for use in rendering three-dimensional (3D) graphics, the computer-executable instructions comprising instructions for:

accessing a first directed acyclic graph (DAG) representing a first virtual 3D object;

accessing a second DAG representing a second virtual 3D object;

receiving a constraint relationship request, the constraint relationship request identifying the first DAG as a constraint parent and the second DAG as a constraint child;

verifying whether the first DAG is compatible for constraining to the second DAG;

connecting, in response to the first DAG and second DAG being compatible for constraining, an output of the first DAG to an input of the second DAG;

evaluating the first DAG to determine a first output value at the output of the first DAG;

evaluating, in response to determining that the first output value affects the evaluation of the second DAG, the second DAG based on the first output value received at the input of the second DAG from the output of the first DAG; and

rendering, after determining that the evaluation of the first DAG and second DAG is complete, an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object.

10. The non-transitory computer-readable storage medium of claim 9 , wherein evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the first DAG.

11. The non-transitory computer-readable storage medium of claim 9 , further comprising instructions for:

receiving a further constraint relationship request, the further constraint relationship request identifying the second DAG as a constraint parent and the first DAG as a constraint child;

wherein evaluating the second DAG produces a second output value, the second output value at the output of the second DAG; and

evaluating, in response to determining that the second output value affects the evaluation of the first DAG, the first DAG based on the second output value received at an input of the first DAG from the output of the second DAG.

12. The non-transitory computer-readable storage medium of claim 9 , wherein:

evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on the translation, rotation, or scale associated with the first DAG; and

evaluating the first DAG based on the second output value comprises evaluating the first DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the second DAG.

13. The non-transitory computer-readable storage medium of claim 9 , wherein verifying whether the first DAG is compatible for constraining to the second DAG comprises verifying that a first constraint interface of the output of first DAG is compatible with a second constraint interface of the input of the second DAG.

14. The non-transitory computer-readable storage medium of claim 13 , wherein:

the first DAG comprises a first child constraint node having an input with the first constraint interface and a first parent constraint node having an output with the second constraint interface; and

the second DAG comprises a second child constraint node having an input with the first constraint interface and a second parent constraint node having an output with the second constraint interface.

15. The non-transitory computer-readable storage medium of claim 9 , wherein the constraint relationship request identifies one or more of a translation/rotation/scale constraint relationship or an aim constraint relationship.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the aim constraint relationship uses an identified axis of the second virtual 3D object.

17. An apparatus for evaluating a constraint system for use in rendering three-dimensional (3D) graphics, the apparatus comprising:

a memory configured to store:

a first directed acyclic graph (DAG) representing a first virtual 3D object; and

a second DAG representing a second virtual 3D object

a computer processor configured to:

access the first directed acyclic graph (DAG) representing a first virtual 3D object;

access the second DAG representing a second virtual 3D object;

receive a constraint relationship request, the constraint relationship request identifying the first DAG as a constraint parent and the second DAG as a constraint child;

verify whether the first DAG is compatible for constraining to the second DAG;

connect, in response to the first DAG and second DAG being compatible for constraining, an output of the first DAG to an input of the second DAG;

evaluate the first DAG to determine a first output value at the output of the first DAG;

evaluate, in response to determining that the first output value affects the evaluation of the second DAG, the second DAG based on the first output value received at the input of the second DAG from the output of the first DAG; and

render, after determining that the evaluation of the first DAG and second DAG is complete, an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object.

18. The apparatus of claim 17 , wherein evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the first DAG.

19. The apparatus of claim 17 , the computer process further configured to:

receive a further constraint relationship request, the further constraint relationship request identifying the second DAG as a constraint parent and the first DAG as a constraint child;

wherein evaluating the second DAG produces a second output value, the second output value at the output of the second DAG; and

evaluate, in response to determining that the second output value affects the evaluation of the first DAG, the first DAG based on the second output value received at an input of the first DAG from the output of the second DAG.

20. The apparatus of claim 17 , wherein:

evaluating the second DAG based on the first output value comprises evaluating the second DAG using a manipulation value based on the translation, rotation, or scale associated with the first DAG; and

evaluating the first DAG based on the second output value comprises evaluating the first DAG using a manipulation value based on at least one of the translation, rotation, or scale associated with the second DAG.

21. The apparatus of claim 17 , wherein verifying whether the first DAG is compatible for constraining to the second DAG comprises verifying that a first constraint interface of the output of first DAG is compatible with a second constraint interface of the input of the second DAG.

22. The apparatus of claim 21 , wherein:

the first DAG comprises a first child constraint node having an input with the first constraint interface and a first parent constraint node having an output with the second constraint interface; and

the second DAG comprises a second child constraint node having an input with the first constraint interface and a second parent constraint node having an output with the second constraint interface.

23. The apparatus of claim 17 , wherein the constraint relationship request identifies one or more of a translation/rotation/scale constraint relationship or an aim constraint relationship.

24. The apparatus of claim 23 , wherein the aim constraint relationship uses an identified axis of the second virtual 3D object.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2016
From: JPMORGAN CHASE BANK, N.A.
To: DREAMWORKS ANIMATION L.L.C.; PACIFIC DATA IMAGES L.L.C.
Reel/Frame 041193/0144 →
SECURITY INTEREST Recorded Mar 31, 2015
From: PACIFIC DATA IMAGES L.L.C.; DREAMWORKS ANIMATION L.L.C.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 035343/0829 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2013
From: POWELL, ALEXANDER P.; PAPP, ESTEBAN D.; WELLS, ALEX M.
To: DREAMWORKS ANIMATION LLC
Reel/Frame 031107/0544 →