Solid Experimnet
Новый эксперимент представляет собой часть уже находящегося в лаборатории прибора Sample Environment. Переключение между старым экспериментом и новым осуществляется с помощью двух кнопок, отмеченных надписью "Select Environment". UI эксперимента состоит из набора Toggle. При выборе одного из них (выбранный отмечен галочкой) происходит смещение красной решетки, которая подставляет под летящий рентгеновский импульс соответствующий образец (квадрат). При соприкосновении рентгеновского импульса с образцом на панели отображается график с актуальными данными.
Если интенсивность импульса (параметр объекта импульса, на значение которого влияют настройки приборов, стоящих в ряду приборов лаборатории до Sample Environment) превышает заданное в классе Solid Experiment значение, то объект, через который прошел импульс, разрушается (делается неактивным в Unity), и при следующем проходе импульса на панели не выводится график, так как объект для исследования уничтожен.
Во избежание непреднамеренного разрушения образцов в данном эксперименте отключено автоматическое появление рентгеновских и лазерных импульсов. Вместо этого в интерфейс эксперимента добавлена кнопка вызова импульса "X-Ray ON". По нажатию кнопки на экспериментальном столе появляется два импульса (рентгеновский и лазерный), при этом между ними соблюдается введенная в поле "Delay" задержка.
X-Ray Diffraction
Как источник дополнительной информации об экспериментах XFEL в лабораторию была добавлена сцена, показывающая дифракцию рентгеновских лучей.
Пользователь кнопками на панели может вращать решетку, после чего из центра сферы исходят лучи, проходящие лишь через те точки решетки, которые пересекаются со сферой.
Данные лучи необходимо было схематично изобразить на панели слева. Реализовано это следующим образом: перед сферой находится плоскость (Plane в Unity), которая фиксирует пересечения лучей с собой, а далее на местах пересечения создаются точки, определенные на отдельном слое (Layer). Отдельный слой необходим для того, чтобы обычная камера, которой управляет пользователь, не видела этих точек в пространстве. Для этого в свойстве Culling Mask объекта Camera отключен созданный для точек слой. А для отображения этих точек на панели создана отдельная камера, отображающая лишь один слой - слой создаваемых точек. Изображение с этой камеры подается на Render Texture, который далее передается в материал, отображаемый на панели слева.
Заключение
Таким образом, в проект было добавлено два эксперимента, для каждого из которых были созданы свои панели с UI-элементами, а также скрипты управления.