Примеры использования

Ниже приведены типовые сценарии применения 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-сценарии — от простых обучающих заданий до сложных промышленных симуляций.