This project is the logical continuation of the previous practical sessions, so it is necessary to start from the Unity project obtained at the end of the practical sessions.
Several users can join each other in the same virtual universe
The virtual universe is correctly synchronized between the different "views" of the universe (WYSIWIS)
Each user must be visible / perceptible through an avatar
Each user must be identified / recognizable (color, name, avatar, ...)
Each user interacts using tools that are visible to all users
There is some collaborative work to be done in this shared universe
Collaboration is possibly asymmetric between desktop users and users using VR headsets (only for students from TAF IHM, not for students from M2 SIIA)
Each user can choose the place in the shared universe where he will appear when he will enter the virtual universe
Each user receives a particular information when another user joins or leaves the shared universe
Each user can consult the list of connected users
Tools are provided to allow users to communicate (to call for help to collaborate for example)
Here are some possible "co-manipulation" collaborations:
Level 0: a user watches another user manipulating objects:
this level should have been obtained at the end of the practical class number 1, it is not enough to validate the UE
Level 1: several users manipulate each one an object to contribute to a global collaborative task
this is almost the state in which we are at the end of the practical class number 3, it does not allow to validate the UE unless the proposed solution is really original and if the perception of the collaboration is really efficient (see the remarks on the collaboration awareness at the end of this section)
Level 2: several users interact at the same time to co-manipulate the same object
If we take the example of an object that is too heavy to be handled alone, the implementation of this collaboration can be done in different ways, because a user can give extra strength to another user:
by putting himself at a particular place (near the object, near the user): for this to be interesting there must be the possibility that the first user moves during the manipulation and then the second must follow him or at least interact also in a certain way (for example one can imagine imposing that the first user remains in the field of vision of the second)
by making a different interaction from the first user: for example by activating a weight reduction tool
by doing a similar interaction to the on interaction of the first user: by doing a real co-manipulation by grabbing the shared object with a tool of the same type as the tool of the first user
With such notions of weighted object and a of lifting capacity of an interaction tool, with the idea to only allow an object to move if the sum of all lifting capacities is greater than or equal to the object weight:
It is the interactive object that must check if this lifting capacity is reached by all the tools interacting with it
It is therefore also the interactive object that must keep a list of the tools currently interacting with it and calculate the resulting position of the collaborative interaction
One could imagine several rules or constraints to allow collaborative interaction:
for example, should the different interaction tools keep the focus on the interactive object during the whole manipulation or not? And what if we impose this constraint but the focus is lost?
For other types of co-manipulations, one can also imagine averaging or summing the contributions of each user
We can also imagine separating the degrees of freedom of manipulation between the users, for example reserving translation to one of the users and rotation to another
In all these cases of collaborative interactions, one must try to provide interaction and collaboration awareness to the users, i.e. make them perceive the potential actions they can or cannot do. If we refer to "heavy" objects that cannot be manipulated alone or with a single tool, it is necessary to make the users understand that there is a need for collaboration when they try to manipulate such objects alone, and to make them understand that it becomes OK when another user or tool comes to help them.
A way to call for help from another user is desirable (or at least to make another user understand that their help is required to perform a co-manipulation).
At the end of the project, you must provide a zip file containing:
A zip file of your Unity 3D project
A demonstration video showing the results obtained and explaining/showing the collaborative actions that can be performed
A small report explaining the work done