Computational Design of Wind-up Toys

Peng Song1   Xiaofei Wang1   Xiao Tang1   Chi-Wing Fu2   Hongfei Xu1   Ligang Liu1   and   Niloy J. Mitra3

1 University of Science and Technology of China     2 The Chinese University of Hong Kong     3 University College London

SIGGRAPH Asia 2017, technical paper


Figure 1

Figure 1: (a) Input model with user-provided parts geometry and motion; (b) wind-up mechanism constructed by our method; (c) 3D-printed parts (top two rows) and spring motor (bottom); and (d) assembled toy (9.2 x 6.7 x 6.4cm^3; and 16.1g shell + 7.9g motor + 7.3g mechanism).


Wind-up toys are mechanical assemblies that perform intriguing motions driven by a simple spring motor. Due to the limited motor force and small body size, wind-up toys often employ higher pair joints of less frictional contacts and connector parts of nontrivial shapes to transfer motions. These unique characteristics make them hard to design and fabricate as compared to other automata. This paper presents a computational system to aid the design of wind-up toys, focusing on constructing a compact internal wind-up mechanism to realize user-requested part motions. Our key contributions include an analytical modeling of a wide variety of elemental mechanisms found in common wind-up toys, including their geometry and kinematics, conceptual design of wind-up mechanisms by computing motion transfer trees to realize the requested part motions, automatic construction of wind-up mechanisms by connecting multiple elemental mechanisms, and an optimization on the part and joint geometry with an objective of compacting the mechanism, reducing its weight, and avoiding collision. We use our system to design wind-up toys of various forms, fabricate a number of them using 3D printing, and show the functionality of various results.


high-res PDF(~30M)
low-res PDF(~2M)
supplementary material(~1.5M)
source code(~6M)



Figure 2

Figure 2: Elemental mechanisms we modeled in our system. Each mechanism includes a driver (blue), a follower (brown), and one or more fixed supporters (grey), for transferring motion from the driver to the follower; see the equation below each mechanism, and also the red arrows next to each driver and follower. We categorize the mechanisms into four groups (R, O, T, and OT) according to the motion of the driver.

Figure 2

Figure 3: Some of the wind-up toys produced from our system; from left to right: Bunny, Horse, Mickey, Dragon, Tree, and House. From top to bottom: input models and prescribed toy part motions, the optimized wind-up mechanisms, and the associated motion transfer trees, where we color the nodes connected to the external toy parts in orange.

Figure 2

Figure 4: Wind-up toys designed by the participants in the user evaluation and generated from our system accordingly; from left to right: Box, Flower Pot, Minion, Jack O��Lantern, Crab, and Gecko. From top to bottom: input models and user-prescribed toy part motions, the optimized wind-up mechanisms, and the associated motion transfer trees.

Figure 2

Figure 5: Four of the six wind-up toys (top) that we have fabricated and assembled from 3D-printed parts (bottom). From left to right: Bunny (13.0g shell + 7.8g motor + 9.0g mechanism), Horse (15.3g shell + 5.9g motor + 26.1g mechanism), Flower Pot (34.8g shell + 5.8g motor + 8.0g mechanism), and House (48.9g shell + 6.0g motor + 6.4g mechanism).


We thank the reviewers for the valuable comments, and Thingiverse for providing 3D models of Angry Bird, Horse, Dragon, Tree, Flower Pot, Minion, and Gecko. This work is supported in part by the National Natural Science Foundation of China (61403357, 61672482, 11626253), the One Hundred Talent Project of the Chinese Academy of Sciences, the Hong Kong RGC General Research Funding Project (14203416), the ERC Starting Grant SmartGeometry (StG-2013-335373), and gifts from Adobe.


@article {Song-2017-Wind-upToy,
    title        = {Computational Design of Wind-up Toys},
    author   = {Peng Song and Xiaofei Wang and Xiao Tang and Chi-Wing Fu and Hongfei Xu and Ligang Liu and Niloy J. Mitra},
    journal   = {ACM Transactions on Graphics (SIGGRAPH Asia 2017)},
    volume = {36},
    number = {6},
    pages   = {238:1 -- 238:13},
    year      = {2017}}