Almost all entities - animate or inanimate - that we see around us change with time. The changes are brought about by changes in the values of their attributes. By using a set of parameters to represent the variable attributes of an entity, and by suitably manipulating their values at run time, the behaviour of an entity can be broadly mimicked in animation. The majority of entities, however, are all too complex to animate directly. They are better described in terms of nested layers of smaller and simpler entities, which we call components. Each component is structurally and behaviourally complete and can be described independent of its application. In the present paper, we propose a scheme for 3D animation that broadly follows this line. The keystone of this scheme is a language, nicknamed 'V', which defines the structural and visual attributes of each component of the scene and associates a parameterized behaviour with it, if necessary, in the form of a program script. Thereafter, wherever such a component appears, it does so with a built-in behaviour, which can nevertheless be regulated by its higher-level component through its parameters. The advantage is that an entire animation can be modelled in a declarative fashion in terms of nested components with embedded behaviour. Besides, each component is easy to write, alter and reuse. The effort for development, debugging and maintenance of animation modelled in this way is much less as the concerns are almost always local. Copyright © 2002 John Wiley & Sons, Ltd.