Traditional Thai Dance Game or Thai dance training Tool is to provide the technology platform for transferring Thai dance knowledge to Thai dance students through practicing with arcade game by selecting dance movement and following the instruction. The tool provides each body part score and total scores with the leaderboard. 

         The system diagram of Thai dance training tool, in our proposed the end-user (player or learner) can interact with the computer connected with Microsoft Kinect motion sensor. 

System Architecture of Thai dance training tool

        From motion capture process, to archive Thai dance knowledge according to performance model check list. The movements of Thai dance experts are captured using the Motion Capture system, then applied to the skeleton of the 3D human model and storing into a database in form of 3D Animation. Using the Microsoft Kinect sensor, receiving the dance movements from the user and applying this motion data to the skeleton of another 3D human model. The comparison both motion information is using the joints which is the subunit of the skeleton to control each body part of the model.

        Two processes are used to compare the joints of the skeletons every frame and provide a score feedback. As the skeletons are placed at a different position in the game, an offset of the distance between the skeleton needs to be applied to either skeleton. 

Skeleton and joints of the 3D model

        The distance between skeleton number 1 (Motion Capture Data) and skeleton number 2 (Kinect data) in X-axis is 10 units. Therefore, to offset the position just subtracts the offset value from skeleton number 2 position which will give us skeletons 2 joint information as if it was from the same location as skeleton number 1.

        The second process is to get a score by comparing every joint on the user-controlled skeleton to the Mo-cap controlled skeleton by finding the difference between each joint. The bigger the difference means the further away the user's joint is away from the Mo-cap joint. Inversing the distance would allow us to use this value to score the player since inversing would lead to higher values being good and lower values being bad. Figure 5 shows the examples of comparison.

The examples of comparison

        To find the position accuracy percentage, we set a maximum threshold in unity units which will define the range the user accuracy would be measured in, as the distance between two points can be infinite, we would need a maximum cap (threshold) as to which anything beyond that point would be set to 0. Using a build in Unity function which takes in two vector points (Position), it would return the distance between those two points. Dividing the distance by the maximum thresholds/cap and multiplying it by 100 to give us the inaccuracy of the joint comparison. Therefore, to get the accuracy, we need to inverse it by simply subtracting the result from 100.

        Finding the rotation accuracy percentage is similar to finding the position accuracy with two differences as follows. Instead of joint position, it will be replaced with the rotation angle calculated using the rotation values of the joint over aThreshold which would be 360 degrees since, for angles, the values are finite like a circle.

       To calculate the overall percentage simply add both the percentages and divide it by two, to get an average.

        The result in percentage is from the comparing process, it is still unable to simplify how accurate of the movement according to the scoring criteria from the curriculum that has been using in the classroom. The system evaluates and provides 2 forms of feedback using the percentage by the comparing process. First, the real-time feedback display in form of quality level categorized into 3 ratings, excellent, good and bad. Second, the ultimate result is shown in the form of a grade. Both quality level and grade are defined by the Thai dance teachers. 

        The quality level determined by each body part depending on how difficult of the movement. To set the range of percentage appropriate with the quality level result, the tool uses the analysis, testing and specifying by Thai dance expert. In addition, the system compiles all the mistake and analyze the associated instructions to give the user the efficient feedback.


        The menu stage will show the terminology choices to let the user chooses a terminology that they want to practice. The user could choose the Thai Dance terminologies for practicing one by one.

Example of Thai dance training tool user interface (left and right images)

        Starting the game with Thai dance graphic (left) and the user must be Infront of the arcade. To start the training tool, the user must do the Wong posture (ตั้งวง). And the tool will allow the user to go to the next stage.

Example of movement selection (left and right images)

        There is a choice of dance movement for the user to select, each one shows high score of users.


        The tool will enter the gameplay stage after the user chooses a body language term choice. Thai dance training tool will explain the meaning and start demonstrating the term that has been selected by the user. After that, the user can start moving according to the terminology. In the meantime, the system will receive the input data from Kinect sensor, comparing it with motion data and giving the Real-Time feedback such as movement accuracy.

Example of play mode and each body part score (left and right images)

        After select the dance, the user will start dancing along with the 3D character and the system will capture the user’s movement real time and compare with the motion capture database to evaluate both scores; each body part score and total score.

Result & Feedback

        This stage is giving the user an ultimate result which is evaluated from comparison and thoroughly pointing out the mistake from the user movement second by second with the analyzed instructions to improve the movement. Hence, the final result is shown in the form of the grade for easy understanding.

Example of total score and leaderboard (left and right images)

        After the tool shows the total score of the user, the user will type name and the leaderboard will be displayed the highest score.

Character Design

        In part of visualization, Thai dance training tool will focus on the traditional Khon dance concept for designing the characters, environments, storyline and mini training of Thai dance terminologies. The designing of the visuals could make this tool become more interesting and enjoyable.

Example of character design

        To design the interface of Thai dance training tool is very important, the program which is not designed to relate with the flow and be appropriate with user experience might be difficult to use, making the user feel uncomfortable. The user might get confused at some point after navigating through the menu or feel lost about where they need to focus. The interface design is the focal point to catch the attention of the user and these will make the process of learning easier. With the User-Friendly interface and interesting visualization, our beta testers are from Chiang Mai Dramatic Arts College, Thailand, will be able to enjoy their lesson. Moreover, it would be attractive enough to capture the attention of the people who are interested in learning traditional Thai dance.