Graphics Animation Framework Layer Tree Render Tree Decoupling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics animation and compositing frameworks for graphical user interfaces in computer applications, such as Mac OS X, lack built-in support for animating objects or views, requiring developers to implement explicit animation code, which can be complex and resource-intensive, especially when handling dynamic content and maintaining a consistent frame rate.

Innovation Solution

A framework that separates graphics animation and compositing into two processes: a layer tree process for interacting with the application and a render tree process for the render engine, allowing for implicit animation and layout, decoupling animation from the application logic and enabling synchronization with the frame rate.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If explicit animation code is used to animate GUI elements, then animation functionality can be achieved, but the code complexity and resource consumption increase significantly

Engineering Contradiction:
Improveanimation functionalityVSAvoidcode complexity
Core Design Contradiction:
Extent of automationVSDevice complexity

Solution Approach 1:

The framework enables self-service animation by allowing GUI elements to define their own animation properties and behaviors through declarative configurations. Elements automatically animate when their model data changes, eliminating the need for external animation control code and reducing overall system complexity.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

Animation functionality is extracted from the application logic and embedded directly into the framework's rendering system. The framework separates animation concerns from business logic by implementing a dedicated animation engine that handles all animation operations independently, reducing code complexity in applications.

Inventive Principle:
Principle #2Taking out (Extraction)

2Extent of automation

If explicit animation code is used to animate GUI elements, then animation functionality can be achieved, but resource consumption increases

Engineering Contradiction:
Improveanimation functionalityVSAvoidresource consumption
Core Design Contradiction:
Extent of automationVSUse of energy by moving object

Solution Approach 1:

Elements automatically manage their own animation resources by declaring animation properties in their model data. The framework's animation engine efficiently allocates and manages rendering resources, avoiding redundant computations and reducing overall resource consumption compared to manual animation management.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The framework implements incremental animation updates that only recalculate and render affected elements when model data changes. This partial action approach avoids full scene graph traversals and unnecessary rendering operations, reducing resource consumption while maintaining animation functionality.

Inventive Principle:
Principle #16Partial or excessive action

3Extent of automation

If explicit animation code is used, then animation can be implemented, but synchronization with frame rates becomes difficult

Engineering Contradiction:
Improveanimation implementationVSAvoidsynchronization with frame rates
Core Design Contradiction:
Extent of automationVSEase of operation

Solution Approach 1:

The animation system automatically synchronizes with the display frame rate by integrating with the framework's existing render loop. Animation updates are automatically scheduled to occur at appropriate frame intervals, eliminating manual timing code and simplifying synchronization operations.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The framework introduces an animation coordinator that acts as an intermediary between model data changes and the rendering system. This coordinator manages timing and synchronization automatically, translating business logic changes into properly timed animation sequences that sync with the display frame rate without requiring application developers to handle timing details.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Speed

If snapshots are used for animation, then movement can be visualized, but the approach becomes resource-intensive

Engineering Contradiction:
Improvemovement visualizationVSAvoidresource intensity
Core Design Contradiction:
SpeedVSUse of energy by moving object

Solution Approach 1:

Instead of capturing and rendering full snapshots of the entire GUI for animation, the framework implements incremental rendering that only updates and renders the specific elements that have changed. This partial action approach maintains smooth movement visualization while significantly reducing memory allocation and rendering resource requirements.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The rendering system is segmented into independent element renderers that can update individual GUI elements without regenerating the entire scene. This segmentation allows animation to proceed by updating only affected elements, reducing resource intensity compared to snapshot-based approaches that must process complete frames.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP3441943A1Framework for graphics animation and compositing operations
Publication Date: 2019.02.13 APPLE INC
  • EP3441943A1 patent drawingFigure 1A~1B
  • EP3441943A1 patent drawingFigure 2A~2B
  • EP3441943A1 patent drawingFigure 3

AI summary

A framework for performing graphics animation and compositing operations has a layer tree for interfacing with the application and a render tree for interfacing with a render engine. Layers in the layer tree can be content, windows, views, video, images, text, media, or any other type of object for a user interface of an application. The application commits change to the state of the layers of the layer tree. The application docs not need to include explicit code for animating the changes to the layers. Instead, an animation is determined for animating the change in state. In determining the animation, the framework can define a set of predetermined animations based on motion, visibility, and transition. The determined animation is explicitly applied to the affected layers in the render tree. A render engine renders from the render tree into a frame buffer for display on the processing device. Those portions of the render tree that have changed relative to prior versions can be tracked to improve resource management.