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

Не запускается проект на IOS

Домой Форумы Общие вопросы Не запускается проект на IOS

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

    Доходит до 100% и грузится по новой, тестил на iphone 6,7,11 только на SE запустилась

    #16632

    Скорее всего крашит из-за недостатка памяти. Попробуйте уменьшить размер текстур.

    Chief 3D Verger | LinkedIn | Twitter

    #16646
    dili71
    Участник

    Наблюдал ту же проблему. Сейчас тестирую подгрузку объектов в сцену с небольшим интервалом времени. Задумка такая: первая загрузка ложиться на основные геометрические объекты, после загрузки через 3 сек грузятся мелкие элементы и текстуры. Юрий правильно сказал, т.к. сцена и текстуры в совокупности могут весить более 100мб, возможно не хватает памяти.

    #16797
    vladimirm
    Customer

    Решено! Проблема была в одной текстуре сжатой с индексированными цветами.

    #17789
    kdv77kdv
    Участник

    у меня тоже возникла проблема, когда не загружалось с айфона SE (старого), при этом на 12м айфоне норм работало. ios 15.4.1. доходило до 100% и крашилось. решил довольно странным способом: подключил паззл checkPerfomance и проблема ушла. по факту проверки ничего не делается, но вероятность запуска приложения на SE стала 100%. но осталась другая проблема. тут поподробнее…

    имеется сцена, в которой отображается набор объектов (назовем этот набор вагоном). по сути, вагонов в сцене 5, но 4 скрыто, а 1 показан. каждый вагон – это примерно 250-300 тыс. полигонов. при нажатии на кнопку с моделью вагона текущий вагон скрывается, а вместо него показывается выбранный (паззлы hide и show). и вроде, все норм работает, но на iPhone SE приложение крашится после 5й смены hide-show. не важно, в каком порядке выбирать вагоны, на 5м крашится. пробовал версии v3d.js от 3.7.1 до 3.9.1. результат один и тот же. получше работает в 3.5.0 и 3.6.1 (смена hide-show происходит быстрее и крашится реже). собсно, вопрос: можно как-то после каждого скрытия-показа группы объектов очищать память до исходного состояния, как будто приложение только что загрузилось?

    #17795
    kdv77kdv
    Участник

    в функцию changeVis добавил строки

            if (!bool) {
                var meshArray = obj.resolveMultiMaterial();
                for (var j = 0; j < meshArray.length; j++) {
                    meshArray[j].geometry.dispose();
                    meshArray[j].material.dispose();
                }
            }

    и, вроде как, от невидимой геометрии избавляется исправно (количество Geometry Buffers не растет, а для каждой сцены постоянное). уже в плюс. мож кто подскажет, как еще текстуры из материалов у невидимых объектов выкидывать из памяти? как из объекта получить переменную типа Texture? еще бы количество текстур в памяти контролировать )))

    #17800

    мож кто подскажет, как еще текстуры из материалов у невидимых объектов выкидывать из памяти?

    Для этого есть метод API: MaterialUtils.disposeTextures.

    Попробуйте в цикл по meshArray добавить такую строчку:

    v3d.MaterialUtils.disposeTextures(meshArray[j].material);
    

    как из объекта получить переменную типа Texture?

    В материалах есть ряд отдельных свойств, в которых могут находиться текстуры: material.alphaMap, material.aoMap, material.bumpMap, material.displacementMap, material.emissiveMap, material.envMap, material.gradientMap, material.lightMap, material.map, material.metalnessMap, material.normalMap, material.roughnessMap, material.specularMap.
    И ещё есть объект material.nodeTextures, в котором лежат текстуры используемые именно в нодах материала.

    еще бы количество текстур в памяти контролировать )))

    Ну, здесь можно посмотреть результаты профайлера в консоли браузера по комбинации клавиш PPP – там в списке в самом конце будут перечислены текстуры приложения, правда, без указания загружены/выгружены ли они из видеопамяти:
    ppp.png

    Вложения:
    Вы должны войти для просмотра вложений.

    Co-founder and lead developer at Soft8Soft.

    #17827
    kdv77kdv
    Участник

    Для этого есть метод API: MaterialUtils.disposeTextures.

    Попробуйте в цикл по meshArray добавить такую строчку:

    v3d.MaterialUtils.disposeTextures(meshArray[j].material);

    отлично! огромное спасибо! то, что нужно!

    И ещё есть объект material.nodeTextures, в котором лежат текстуры используемые именно в нодах материала.

    да, находил я этот объект. но там не нашлось переменной типа Texture, чтоб можно было применить метод Texture.dispose() (точнее, я не смог найти подходящий способ таковую переменную вытащить оттуда), поэтому ничего не вышло )))

    еще раз спасибо за наводку! теперь вот эта презентация может работать и не вылетать из-за переполнения памяти почти на любом калькуляторе типа Redmi 7a)))

    жаль, не удаляет мусор типа такого
    N/A - Texture - 256x1
    который генерится материалами, где используются ноды ColorRamp или RGB Curves, но судя по размеру текстуры, памяти это занимает очень мало

    #17829

    да, находил я этот объект. но там не нашлось переменной типа Texture, чтоб можно было применить метод Texture.dispose() (точнее, я не смог найти подходящий способ таковую переменную вытащить оттуда), поэтому ничего не вышло )))

    А там как раз и должны быть текстуры, вроде Texture или DataTexture. Как раз ColorRamp текстура (и другие, генерируемые материалами) кладется именно туда. Вот она как обычно выглядит:
    color_ramp.png

    MaterialUtils.disposeTextures зачищает nodeTextures, поэтому и все такие текстуры тоже будут удаляться.

    Вложения:
    Вы должны войти для просмотра вложений.

    Co-founder and lead developer at Soft8Soft.

    #17832
    kdv77kdv
    Участник

    странная штука… пока редактировал и сохранял (несколько раз) развернутый и благодарственный ответ, он куда то исчез и теперь его не видно ))) спам-бот сожрал? в любом случае, очень спасибо за помощь!

    #17833

    Действительно, странно, потому что мне вот на почту приходило оповещение с форума с комментарием:

    kdv77kdv replied:

    да, да, я уже выяснил. просто надо было еще в функции assignMaterial подшаманить ))) в changeVis “зачищаются” материалы у мешей, которые скрываются, а в assignMaterial идет “зачистка” меша, который видимость не меняет, но меняет материал. при таком раскладе работает, как задумано :good:

    Раньше такое у нас бывало из-за каких-то слишком агрессивных анти-спам фильтров, надо будет проверить ещё раз. Ну, главное, что проблема разрешилась :good:

    Co-founder and lead developer at Soft8Soft.

    #17834
    kdv77kdv
    Участник

    в версии движка 3.9.1+ на айфоне SE (и на других не особо мощных телефонах) сильно портится изображение, как будто разрешение занижено (хотя, проверка показывает что PixelRatio = 1px). в 3.9.0 и ранее такого не наблюдается. как то можно исправить?

    Вложения:
    Вы должны войти для просмотра вложений.
    #17852

    Добрый день! В последней версии iOS замечены баги с аппаратным антиалиасингом (MSAA), поэтому мы его временно отключили. В качестве временной меры для борьбы с этой проблемой вы можете включить FXAA-антиаласинг в настройках экспорта.

    Verge3D’s Tech Chief
    FB | Twitter | VK

    #17857
    kdv77kdv
    Участник

    спасибо за ответ.

    от себя отмечу, что в последней версии iOS 15.4.1 при использовании v3d.js от 3.5.0 до 3.9.0 никаких багов со сглаживанием не замечено. а дело точно в iOS, а не в Verge3D? ))) в 3.5.0-3.9.0 все нормально со сглаживанием…

    #17887
    kdv77kdv
    Участник

    таки, а в чём баг то с MSAA был на айфонах? выпилил из скрипта 3.9.1 Blender все упоминания isSafariWithMultisamplingBug и никакого бага с аппаратным сглаживанием в iOS 15.5 не наблюдаю…

    з.ы. в 3.9.1 Ultimate этого кода почему то вообще нет и MSAA на айфонах не отключается. только с версии 4.0.0 pre3 Ultimate код появился…

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