Script controller 3ds max вылетает

Обновлено: 06.07.2024

Как выглядит процесс в диспетчере задач :

Изображение использования ЦП / ОЗУ 3ds max во время выполнения скрипта :

Сцена .max, которая вызывает ошибку, может быть найдена здесь: большая сцена .max, которая вызывает ошибку

Сценарий работает следующим образом (псевдокод):

Примечание: идентичные ячейки (в этом контексте) определяются как ячейки, имеющие одинаковый множитель, vertcount, edgecount, position.

3 ответа

Я плохо отлаживаю чужой код, поэтому, опять же, быстрый взгляд - я бы определенно избегал цикла for в for duplicate in obj_dups do(delete duplicate) , delete - это сопоставленная функция, и вы можете передать коллекцию в качестве аргумента Это. Таким образом, не будет так много обновлений проводника сцены, и это должно быть намного быстрее. Я также предпочел бы итерацию рекурсии. В общем, вот как я бы это написал:

На первый взгляд, я бы предостерег от использования objs[i].mesh.numFaces , так как он создает новый экземпляр сетки в памяти, и вы не вызываете утилиту dispose, чтобы удалить его - если вы решите пойти по этому пути и сравнить и polycount, и tricount, определенно сначала выполните преобразование и соберите сетки вне цикла (и, предпочтительно, также используйте snapshotAsMes). Кроме того, вы можете использовать getPolygonCount <node> , который дает вам счетчик полигонов узла (если результатом стека является многообъектный) и счетчик вершин.

Я отредактировал свой код, используя предложения Swordslayer; сбор информации о мешах теперь происходит вне цикла, и я использую getpolygonCount, чтобы получить как poly-, так и vertcount.

Сцена, упомянутая в моем исходном вопросе, содержащая стандартные примитивные объекты 4051, больше не вызывает сбоев (и значительно быстрее), однако другая сцена, содержащая импортированные объекты, теперь вызывает «ошибку переполнения стека» внутри 3ds max . Странно то, что эта ошибка возникает только при первом запуске скрипта после запуска 3ds max. При запуске сценария через секунду (или третий и т. Д.) После того, как произошла ошибка переполнения стека, сценарий выполняется без ошибок (для его завершения требуется около 10-20 секунд), и сценарий функционирует так, как должен (как при его удалении). дубликаты объектов). Ошибка переполнения стека возникает каждый раз, когда я запускаю скрипт на исходной сцене ПОСЛЕ только что запущенного 3ds max.

Еще одна странная вещь (для меня) заключается в том, что даже при возникновении ошибки переполнения стека сценарий действительно удаляет нужные объекты (дубликаты объектов) перед выдачей указанной ошибки.

Мой текущий код:

Проблема не связана с количеством объектов / полигонов в сцене; Я запустил сценарий на сцене, содержащей 16204 стандартных примитивных объекта. Эта сцена состоит из 11 418 736 полигонов и 5 780 404 вершин, в то время как сцена с импортированными объектами, вызывающая ошибку переполнения стека, состоит всего из 703 737 полигонов и 769 886 вершин (что значительно ниже).

Ошибка, возникшая при первом сбое:

stack overflow error 1

Ошибка, возникшая при втором сбое:

stack overflow error 2

Произошла ошибка при третьем сбое:

stack overflow error 3

Ошибка, отображаемая в окне прослушивателя, говорит мне об ошибке, возникшей в Macro_SceneExplorer.mcr в строке 1001, эта строка содержит следующий код: sceneexplorermanager.ExplorerIsOpen

Это также говорит мне, что эта строка кода была вызвана из строки 44 моего скрипта 'delete_duplicates.ms', которая содержит следующий код: for duplicate in obj_dups do(delete duplicate)

Ошибка продолжается до тех пор, пока уровень стека не станет равным 386 . остальная часть ошибки выглядит аналогично разделу, показанному ниже (еще раз ошибка продолжается в течение длительного времени, для полной ошибки см. Ранее упомянутый файл .txt) :

Я попытался найти дополнительную информацию об ошибке «3ds Max перестал работать», используя окно просмотра событий:

Будем весьма благодарны за любые предложения о том, что я делаю неправильно / что может быть причиной этих ошибок, спасибо!

Устранение некоторых ошибок, которые появляются при запуске 3D Max-а 2018.

Если ошибка носит такой характер:

Could not initialize the graphic device

Potential solutions are :

The application will exit


Если ошибки имеют такой вид:


Ошибки могут ругаться и на другие классы и DLL:


То дело хуже. Что-то установилось не так. Либо поврежденный установочный дистрибутив либо несоответствие мощности компьютера, устарелости операционной системы и много чего ещё.

В этом случае рекомендую скачивать 3D Max только с официального сайта. Для студентов программа на 3 года бесплатна. Если и после этого программа не запуститься, значит скорее всего надо менять компьютер.

Сегодня обратились с проблемой запуска приложения 3ds Max, при запуске с ярлыка проходит инициализация, начинает писать Starting 3ds max и на этом всё останавливается. Данное окно висит пока не снимешь процесс приложения в диспетчере задач.

1. Включите отображение скрытых файлов и папок, для этого воспользуйтесь инструкцией "Показать скрытые файлы и папки в Windows".


2. Зайдите через проводник на локальный диск С в папку Пользователи (C:Users) => откройте папку с именем пользователя под которым вы заходите в систему => удалите всё с папки C: Users имя вашего пользователя Autodesk 3ds Max , данной папки может и не быть => теперь откройте папку AppData => Roaming => Autodesk => 3DSMAX и удалите всё внутри этой папки.

3. Также удалите всё внутри папки C:UsersUKRAppDataLocalAutodesk3dsMax

Добрый день.Установил 3Ds Max 2018 студенческий и при запуске не появляется ровным счетом не чего.не ошибок,не чего.только на доли секунды появляется заставка 3Ds max.Как решить данную проблему?Устанавливал на win 7 х64

Спасибо большое.Но не чего из этого не помогло.

Благодарю)Все запустился)но теперь он не хочет активироваться пишет ошибку (0015.111)

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


Shiva



Просмотр профиля

Красив как Бог, умен как Дъявол

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

учить мат часть.. для начала. ))

Привяжи обьект к пустышке, будет полегче. А вообще без мат части тут никак. Вращения они такие - запутатся раз плюнуть.


tamagochy



Просмотр профиля

с дамиком попробую спасиюо

тут ещё такая проблема: никак не могу вкурить как использовать this в скрипт контролере, чтоб скрипт копировать на разные объекты и переменные автоматом назначались от текущего объекта.

тут поднималась уже эта тема, но ответа я чето не нашел.


SIL

Александр Подвойский

Присоединяюсь к вышеперечисленному. Системы ни какой нет. Грешил на несовместимость 5.4 Фореста. Но не в нем дело. Причем с 1.6.1 короной вылетать стали как 2017 так и 2015 (который держал в запасе) Максы. На 1.5 возращаться не хочется, 1.6.1 в разы интереснее в всем. Значительно меньше вылетать стал при удвоении оперативки с 16 до 32. но все равно вылетает. Так что, терпим, но рисуем.

Александр Борисов


Александр Борисов

попробуй все текстуры сцены через ресурс коллектор положить в корневаю папку макса, на диск C, может крашится изза того что супер-пупер текстуры и hdri-ки не успевает взять с того диска где они у тебя. У меня коллекция текстур всегда на диске С, макс во время рендера еще никогда не крашился. думаю это за софтом железо не успевает и ложит макс.

Дмитрий Болдырев

Дмитрий Болдырев

Андрей Корзняков


Андрей Корзняков ответил Дмитрию

Дмитрий, пользую разен 1700 без разгона на 16 гб оперативы. до сих пор никаких проблем не было. откатись на корону 1,5 лучше

Дмитрий Болдырев

Андрей, мой с разгоном . Добавил оперативной памяти, пока полет ровный, спасибо

Читайте также: