# Virtual Marker Technique to Enhance User Interactions in a Marker-Based AR System
## 4 Virtual Marker Technique in Marker-Based AR System
### Level 3: Combination of Level 1 and 2  
In addition to providing users with a basic function definition, virtual marker programming can also be used in the programming control of AR objects. Our system implements two examples to illustrate how to combine virtual marker programming and AR object control together.  
The first example is to control the movement of the car by programming, including 2D plane movement and 3D space movement. As shown in the figure, the user can arrange multiple markers in a certain order. The system will read the order according to the depth-first mode. In Figure 11, the sequence is the function marker, the left loop marker, the number 3 marker, the 3D vector marker, and the right loop marker. The defined function is that the object moves with the 3D vector of (1, 1, 1) as a parameter and repeats this movement process 3 times. Then, the user places the car marker, the moving marker, and  
Figure 10: Using markers to control the virtual timer. The first picture shows the virtual timer marker. The second picture shows the initial state of the virtual timer superimposed on the marker. In the third and fourth pictures, the user connects the two-digit number virtual marker and the virtual timer marker to set the left parameter of the virtual timer. Similarly, the user can set right parameter of the virtual timer, as shown in the fifth figure. After the setting is completed, the virtual timer will automatically start timing.  
the defined function virtual marker in order. When the marker sequence is correctly read, the user can use a defining gesture to tell the system to execute the program. After that, the car will move according to the defined function. This program has other variants. For example, users can use a rotation marker instead of a moving marker to define the rotation. Users can also use other virtual number markers to change the loop times. Markers containing variable and number information can also be used to replace 3D vector markers for movement in a 2D plane. In addition, users can freely add more combined markers to expand the program.  
The second example is controlling the avatar's action sequence and the time of each action through programming. Similarly, the user can arrange multiple markers in a certain order and the system will read the program accordingly. The sequence is the function marker, run marker, number 1 marker, idle marker, and number 4 marker. The defined process is that the object will run for 1 second and then perform casual action for 4 seconds. Then, the user places the avatar marker and the function marker in order. The user can use a defining gesture to execute the program. After that, the avatar will perform actions one by one, and each action will be executed at a user-defined time (see Figure 12). Users can also freely add action markers or loops to define more complex AR controls. For example, the user can add the loop marker and the number of loops as in the first example to control the repetition of the avatar's action sequence. The user can also add multiple action markers and change the time for each action to change the avatar's action.  
The above two examples show how to combine virtual and physical markers to program the control of AR objects in our system. In fact, the combination of level 1 and level 2 can accomplish more control functions than the above two examples. For example, users can also define control structures under different conditions or use other structures to program the AR objects. Since the main variable information in programming is dynamically created by the user and other structural information is provided by the physical markers, such a system is extensible.  
Figure 11: This is an example of controlling the 3D movement of the car. The markers will be read in a deep-first traversal mode—that is, read from left to right—and the column marker is read first when there is a column. The defined program is that the car moves with the 3D vector of (1, 1, 1) as a parameter and repeats this movement process 3 times.