12.2. Animation project structure

We will explain the structure of the animation project. Roughly speaking, it goes like this:

        flowchart LR
    subgraph File
        VRM[(VRM)]
        3dobj[(3D models)]
    end
    subgraph Project
        direction LR
        subgraph Timeline
            subgraph role[Role]
                direction LR
                cast((Cast))

                subgraph keyframe
                    direction TB
                    keys1{" "}
                    keys2{" "}
                    keys3{" "}
                end
            end
        end
        subgraph tl2["Timeline 2"]
            cast2((Cast))
        end
        subgraph tl3["Timeline 3"]
        end
    end

    style Project fill:#AAAAFA
    style role fill:#00FF00
    style cast fill:#FF9090
    style cast2 fill:#FF9090
    style keyframe fill:#FFFF25
    style keys1 fill:#FFFF00
    style keys2 fill:#FFFF00
    style keys3 fill:#FFFF00

    tl2 ~~~ tl3
    VRM ==> cast
    3dobj ==> cast2
    

12.2.1. Each element

Timeline
        flowchart LR
subgraph tl1[Timeline 1]
    avatar1((Role))
end
subgraph tl2[Timeline 2]
    avatar2((Role))
end
subgraph tl3[Timeline 3]
    avatar3((Role))
end

style avatar1 fill:#00FF00
style avatar2 fill:#00FF00
style avatar3 fill:#00FF00

tl1 ~~~ tl2 ~~~ tl3
    
The timeline is the basic unit of animation. One timeline corresponds to one role and one cast.
The following roles are responsible for all of the actual functions.






Role
        flowchart LR
subgraph role[Role]
    direction LR
    cast((Cast))

    subgraph keyframe
        direction TB
        keys1{" "}
        keys2{" "}
        keys3{" "}
    end
end

style role fill:#00FF00
style cast fill:#FF9090
style keyframe fill:#FFFF25
style keys1 fill:#FFFF00
style keys2 fill:#FFFF00
style keys3 fill:#FFFF00
    
A role is a collection of roles and character actions that determine how each object moves on the timeline.
Within the role there are casts to be assigned and keyframe data.
A role can be replaced with another object as long as it is of the same object type.

In effect, Timeline = Roll. When we say timeline in this manual, we mean role, and vice versa.





Cast / object / avatar
        flowchart LR

    cast((Cast))



style cast fill:#FF9090
    
A cast is an object assigned to a role. This is the substance of the actual VRoid/VRM, FBX, Light, Audio, and other objects.
In this application, they are simply referred to as OBJECT or AVATAR.



Key frame
        flowchart LR
subgraph keyframe
    direction TB
    keys1{" "}
    keys2{" "}
    keys3{" "}
end

style keyframe fill:#FFFF25
style keys1 fill:#FFFF00
style keys2 fill:#FFFF00
style keys3 fill:#FFFF00
    

A keyframe is the actual movement data of the roll, the motion. This data is only held by the role, and in principle it does not depend on each object.




12.2.2. timeline role cast relationship

The timeline is ultimately the same as the role. Then cast means the same as the actual object.
Roles are linked 1:1 with casts (objects). A role can be in an uncast state, but the role will not be animated at all.

You can later assign another cast (object) to the role.

For example, it would be as follows. (colors and icons correspond to the example above)

        flowchart LR
subgraph File
    VRM1[(VRM 1)]
    VRM2[(VRM 2)]
end
subgraph Timeline
    subgraph role[Role]
        direction LR
        cast((Cast))

        subgraph keyframe
            direction TB
            keys1{" "}
            keys2{" "}
            keys3{" "}
        end
    end
end

style role fill:#00FF00
style cast fill:#FF9090
style keyframe fill:#FFFF25
style keys1 fill:#FFFF00
style keys2 fill:#FFFF00
style keys3 fill:#FFFF00

VRM1 & VRM2 ==> cast
    
Role:

anime and drama characters

cast:

voice actor, actor himself

The actual animation data is held by the role. So it doesn’t matter what the actual cast (object) is to play that motion.
Because of the above mechanism, you can play your favorite animation with your favorite object.