Мы используем файлы cookie, чтобы упростить навигацию на этом сайте. Если вы даете свое согласие на использование файлов cookie и обработку ваших персональных данных, нажмите «Принимаю».

Параметры от родительской страници, url на конфигурацию

Домой Форумы Общие вопросы Параметры от родительской страници, url на конфигурацию

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #20293
    3dma
    Customer

    Вопрос: Как можно отследить когда 3д полностью загрузилось, и передать «сигнал» родительскому интерфейсу для дальнейшей работы скрипта?

    Суть проблемы которая рандомно возникает- после загрузки иногда модель не реагирует на нажатия кнопок внешнего интерфейса, именно что иногда
    На видео вначале модель не реагирует на интерфейс, а следующая уже норм https://1drv.ms/v/c/e2089469a3fa305a/IQB9qUT8Guz3QLaV0in737D3Aewk_FY5iRLhBG6OdRXHahQ?e=5jfuOg

    При старте у нас работает логика что «приходит» клик по кнопкам после загрузки модели, для включения отображения стартового вида той или иной лодки

    Пробывали отправлять команду что 3д загруженно с задержкой 0,1сек, работало но редкие сбои бывают все же

    window.is3DLoaded = true;
    console.log("is3DLoaded set:", window.is3DLoaded);

    или отдельно добавили в visual logic.js

    Function('app', 'v3d', 'puzzles', 'VARS', 'PROC', (
      'if (!window.__verge3dLoadedSent) {\n' +
      '  window.__verge3dLoadedSent = true;\n' +
      '  window.parent.postMessage({ type: "VERGE3D_LOADED" }, "*");\n' +
      '}'
    ))(appInstance, v3d, PL, VARS, PROC);

    Разработчики все уже перепробывали. С их слов — похоже что вердж не всегда понимает когда модель до конца загрузилась и передает сигнал раньше. Возможно в чем-то другом дело..

    • Тема изменена 1 месяц, 2 недели назад пользователем 3dma.
    • Тема изменена 1 месяц, 1 неделя назад пользователем 3dma.
    • Тема изменена 1 месяц, 1 неделя назад пользователем 3dma.
    #20297
    3dma
    Customer

    Есть идея чтоб опции на предуставноленную конфигурацию приходили в сам вердж стартовые, а не прокликливались по интерфейсу как сейчас это сделанно,

    типа такого добавить

    window.addEventListener('message', (event) => {
      if (event.data?.type !== 'MODEL_CONFIG') return;
    
      const config = event.data.payload;
    
      console.log('Received model config:', config);
    
      applyModelConfig(config);
    });
    function applyModelConfig(config) {
      if (config.color) {
        v3d.SceneUtils.setMaterialColor(
          app.scene,
          'BodyMaterial',
          config.color,
        );
      }
    }

    опции тогда будут приходить такого вида, или по другому можно назвать

    [
        "tube_color_ice_white_hypalon",
        "tube_decor_black_carbon_hypalon",
        "fiberglass_gelcoat_white",
        "fiberglass_dashboard_black",
        "upholstery_taupe",
        "other_colors_seadek_mocha_black",
        "swimming_platforms",
        "bowrailing",
        "waterski_mast",
        "el_pack",
        "seadek_soft_anti_skid"
    ]
    

    то есть опции с фронт энда будут передаваться в iframe через postMessage ‘MODEL_CONFIG’ и в verge этот postMessage будет отслеживаться

    Подскажите пожалуйста как лучше это реализовать, какими пазлами? Как эти названия опций который будут приходить в пост меседж связать с стандартной логикой нажатия на кнопки интерфейса внутри пазл эдитора- делать все взаимодействия процедурами, а приходящие опции записывать в переменные, но как их извлечь из пост меседжа? Т.е. нужен какой-то аналог on event клик только который бы тригерило названия опций в постмеседже, а не клики? :unsure:

    • Ответ изменён 1 месяц, 1 неделя назад пользователем 3dma.
    • Ответ изменён 1 месяц, 1 неделя назад пользователем 3dma.
    #20310

    Добрый день!

    Загрузку сцены можно проверить с помощью события sceneLoad, например с помощью exec script-пазла с кодом:

    app.addEventListener('sceneLoad', () => {
        console.log('Scene loaded!')
    });

    Обработку события message можно сделать на пазле on event of, подав туда window через пазл DOM object selector. Параметры сообщения будут находиться в свойстве события data.

    • Ответ изменён 1 месяц назад пользователем Alexander Kovelenov.

    Soft8Soft Tech Chief
    Want more Verge3D updates? Follow me on X, Facebook, or LinkedIn

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.