A method for evaluating a constraint system for use in rendering three-dimensional graphics, the method comprising: accessing a first directed acyclic graph 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 being constraining to the second DAG wherein it is determined that the two DAG's are not compatible if a constraint interface associated with the first DAG delivers data in a format that is incompatible with a constraint interface for receiving data associated with 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; determining whether the constraint relationship is not cyclic; in response to the determination that the constraint relationship is not cyclic: rendering an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object; and in response to the determination that the constraint relationship is cyclic rendering, after determining (514, 518) 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. accessing a first directed acyclic graph 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 being constraining to the second DAG wherein it is determined that the two DAG's are not compatible if a constraint interface associated with the first DAG delivers data in a format that is incompatible with a constraint interface for receiving data associated with 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; determining whether the constraint relationship is not cyclic; in response to the determination that the constraint relationship is not cyclic: rendering an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object; and rendering an image depicting at least a portion of the first virtual 3D object and at least a portion of the second virtual 3D object; and in response to the determination that the constraint relationship is cyclic rendering, after determining (514, 518) 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.