Примеры использования
Ниже приведены типовые сценарии применения Python API Varwin в реальных проектах. Примеры охватывают управление объектами, асинхронные сценарии, взаимодействие с пользователем и интеграцию с внешними системами.
Автоматизация учебного сценария
Создание последовательного обучающего процесса с визуальной обратной связью:
async def TrainingSequence():
# Появление инструкции
instruction.Activate()
await Varwin.WaitForSeconds(3)
instruction.Deactivate()
# Активация оборудования
machine.Activate()
await Varwin.WaitForSeconds(1)
# Ожидание правильного действия от пользователя
await Varwin.WaitWhile(lambda: not valve.IsOpen)
success_sound.Play()
await Varwin.WaitForSeconds(2)
# Завершение этапа
stage_complete.Activate()
Varwin.Async.AddStart(TrainingSequence)
Взаимодействие с Yandex GPT
Использование облачной языковой модели Yandex GPT для генерации контекстно-зависимых ответов или подсказок в симуляции:
import json
async def GetHintFromGPT(context: str):
# Токен и каталог из настроек Yandex Cloud
iam_token = "YOUR_IAM_TOKEN"
folder_id = "YOUR_FOLDER_ID"
payload = {
"modelUri": f"gpt://{folder_id}/yandexgpt/latest",
"completionOptions": {
"stream": False,
"temperature": 0.6,
"maxTokens": "50"
},
"messages": [
{"role": "system", "text": "Ты — помощник в VR-тренажёре по технике безопасности."},
{"role": "user", "text": f"Пользователь не может открыть аварийный клапан. Контекст: {context}"}
]
}
response = await Varwin.Requests.Post(
"https://llm.api.cloud.yandex.net/foundationModels/v1/completion",
json=payload,
headers={
"Authorization": f"Bearer {iam_token}",
"Content-Type": "application/json"
}
)
if response.status_code == 200:
data = json.loads(response.text)
hint_text = data["result"]["alternatives"][0]["message"]["text"]
hint_ui.SetText(hint_text)
hint_ui.Show()
else:
Varwin.Debug.LogError(f"Ошибка GPT: {response.status_code}")
# Вызывается при нажатии кнопки "Подсказка"
Varwin.Async.Run(GetHintFromGPT("Клапан заклинило, требуется повернуть рычаг против часовой стрелки."))
Реакция на события сцены
Обработка взаимодействия пользователя с объектами в реальном времени:
def OnAlarmButtonPressed(sender):
alarm.Play()
door.Lock()
Varwin.Async.Run(StartEmergencyProtocol())
# Регистрация обработчика
alarmButton.AddButtonPressedHandler(OnAlarmButtonPressed)
Эти примеры демонстрируют, как Python API Varwin позволяет создавать гибкие, интерактивные и интегрируемые VR-сценарии — от простых обучающих заданий до сложных промышленных симуляций.