Render.ru

MAXScript FileIn Exception: -- Unknown property: "z" in undefined

Почемучкин

Активный участник
Рейтинг
7
#1
Здравствуйте, Знатоки!

Помогите, пожалуйста, решить проблему.
При попытке запустить скрипт (.ms), мгновенно выскакивает ошибка:
"MAXScript FileIn Exception
Unknown property: "z" in undefined"​

В Maxscript Listner выводится следующий текст:
-- Error occurred during fileIn in <File:C:\Program Files\Autodesk\3ds Max 2011\Scripts\Importer.ms>
>> MAXScript FileIn Exception: -- Unknown property: "z" in undefined <<​

Больше никакой информации не выводится.
Притом через Evaluate All скрипт нормально запускается и работает без каких-либо проблем и ошибок.
Пытался удалять папку enu из C:\Users\UserName\AppData\Local\Autodesk\3dsMax\2011 - 64bit\enu, но результата это не дало.
Пытался частями удалять код из скрипта, пытаясь найти в какой функции проблема, но результата это так же не дало.
Уже раз десть просмотрел весь код скрипта, но так и не нашел этот "неопределенный z".
Самое интересное, что в 3ds max 2020 скрипт запускается без проблем.
Это какой-то "сбой" 3ds max 2011? Если да, то как его вылечить?

Спасибо за помощь.
 

LastJedi

Знаток
Рейтинг
27
#2
Не видя сам скрипт сложно что-то сказать. Очевидно в скрипте идёт попытка обращения к свойству .z у какой-то переменной, но при этом сама переменная в момент обращения оказывается неинициализирована — неопределена.
 

Почемучкин

Активный участник
Рейтинг
7
#3
Я не смог найти эту переменную.
Переменную .z я использую лишь в трех функциях:
fn ReadFVector bs =
(
local v = point3 0 0 0
v.x = ReadFloat bs
v.z = ReadFloat bs
v.y = ReadFloat bs
return v
)
fn ReadVFVector bs =
(
local v = point3 0 0 0
v.x = ReadFloat bs * -1 --отзеркаливаем сетку (нормали ломаются)
v.z = ReadFloat bs
v.y = ReadFloat bs * -1 -- поворачиваем сетку лицом вперед
return v
)
fn ReadQuat bs =
(
local q = quat 0 0 0 0
q.x = ReadFloat bs * -1 --отзеркаливаем скелет
q.z = ReadFloat bs
q.y = ReadFloat bs * -1 -- поворачиваем скелет лицом вперед
q.w = ReadFloat bs
return q
)
Однако, здесь вроде бы все в порядке. К тому же эти функции задействуются лишь после нажатия кнопки импорта. А у меня даже интерфейс не запускается. Кстати, почему скрипт запускается без проблем через Evaluate All?
Если через л.с. я дам вам ссылку на скрипт (не хочу пока что выкладывать публично), вы сможете поглядеть в чем проблема?
 

Почемучкин

Активный участник
Рейтинг
7
#7
По какой-то причине ваш профиль отображается у меня черным окном. :(
Отправил письмо с ссылкой на почту.

Спасибо за помощь.
 

LastJedi

Знаток
Рейтинг
27
#8
Такое впечатление, что дело не в скрипте. По тексту я «криминала» пока не нашёл. Воспроизвести проблему пока тоже не удалось (пробовал 3ds MAX 2012, 2015, 2017 и 2020). Сейчас, чуть позже, развернётся 2011-й — попробую в нём, но что-то мне подсказывает, что тоже будет работать.

Даже теоретически, причин для «Unknown property: "z" in undefined», в тексте скрипта я не вижу. Можно предположить какой-нибудь конфликт с другими скриптами или что-то посторонние в ms-файле (если он у Вас чем-нибудь отличается то того, что прислали мне).

Буду ещё смотреть…
 

Почемучкин

Активный участник
Рейтинг
7
#9
В том то и дело, что в 2020 максе скрипт запускается, а в 2011 перестал.
В коде я тоже не могу найти проблему. :(

Кстати, что-то я сразу не догадался дать файлы модели для проверки скрипта:
https://www.dropbox.com/sh/e50edf32ufbl2xw/AABRT3RMrQFtEl83d11fQwgKa?dl=0
В 2020 максе у меня почему то не импортировался меш. Хотя ошибок не выдавало.
 
Последнее редактирование:

LastJedi

Знаток
Рейтинг
27
#10
Поскольку у меня пока не воспроизводится проблема, сам попробовать не могу… Надо, как Вы уже писали, удалить из скрипта бОльшую часть кода — оставьте только UI и пустые заголовки функций. Изменится ли что-нибудь?
 

LastJedi

Знаток
Рейтинг
27
#11
Кстати, что-то я сразу не догадался дать файлы модели для проверки скрипта:
https://www.dropbox.com/sh/e50edf32ufbl2xw/AABRT3RMrQFtEl83d11fQwgKa?dl=0
В 2020 максе у меня почему то не импортировался меш. Хотя ошибок не выдавало.
Видимо у меня всё-таки не весь код. В скрипте есть обращение к функции CreateLayer:
Код:
local layerMeshes = CreateLayer "Meshes" --создаем слой Meshes в менеджере слоев
Но её реализации нет. При попытке импорта, в любом Максе вылетает ошибка: Call needs function or class, got: undefined
 

Почемучкин

Активный участник
Рейтинг
7
#12
Поскольку у меня пока не воспроизводится проблема, сам попробовать не могу… Надо, как Вы уже писали, удалить из скрипта бОльшую часть кода — оставьте только UI и пустые заголовки функций. Изменится ли что-нибудь?
Удалил весь код из каждой функции. Оставил лишь функции UI. Теперь вообще что-то сверхъестественное выдало:
-- Error occurred during fileIn in <File:C:\Program Files\Autodesk\3ds Max 2011\Scripts\Importer.ms>
-- Error occurred in anonymous codeblock; filename: C:\Program Files\Autodesk\3ds Max 2011\Scripts\Importer.ms; position: 5161; line: 261
>> MAXScript FileIn Exception: -- Syntax error: at +, expected <factor>
-- In line: +р <<
Безымянный.png

Причем в лиснере символ после + другой, на кракозябру похож.
Безымянный.png

Сама 261 строка выглядит так:
g_skinFileName = g_SKLDir + sSKLName + ".skn" --сохраняем в переменную путь+имя+расширение SKN файла

Что-то я совсем не понимаю. Позиция 5161 это часть комментария --сохраняем в переменную путь+имяасширение SKN файла

Удалил комментарий полностью и интерфейс запустился.
Восстановил все функции, но опять все та же ошибка с z.
 
Последнее редактирование:

Почемучкин

Активный участник
Рейтинг
7
#13
Видимо у меня всё-таки не весь код. В скрипте есть обращение к функции CreateLayer:
Код:
local layerMeshes = CreateLayer "Meshes" --создаем слой Meshes в менеджере слоев
Но её реализации нет. При попытке импорта, в любом Максе вылетает ошибка: Call needs function or class, got: undefined
Да, во всей этой суматохе я забыл добавил в конце функции ReadSCB строку:
layerMeshes.addNode newMesh --добавляем сетку в слой Meshes в менеджере слоев

UPD: Только сейчас заметил, что название функции SetupLayer, а не CreateLayer.
 
Последнее редактирование:

LastJedi

Знаток
Рейтинг
27
#14
Позиция 5161 это часть комментария --сохраняем в переменную путь+имяасширение SKN файла
Кстати, тоже тема) MAXScript никогда не любил национальные символы. Были какие-то глюки с чтением файлов, содержащих символы, отличные от латиницы. Я уже как-то и забыл об этом, сам обычно пишу комментарии на английском. Для чистоты эксперимента стоит попробовать убрать все комментарии с русскими буквами.
 

Почемучкин

Активный участник
Рейтинг
7
#15
Кстати, тоже тема) MAXScript никогда не любил национальные символы. Были какие-то глюки с чтением файлов, содержащих символы, отличные от латиницы. Я уже как-то и забыл об этом, сам обычно пишу комментарии на английском. Для чистоты эксперимента стоит попробовать убрать все комментарии с русскими буквами.
Как раз этим и занимался со времени последнего моего сообщения. :)
Видимо произошел какой-то сбой и кодировка скрипта сменилась, а я не заметил и продолжил писать комментарии на русском. Но, как оказалось, Макс тот еще вредина и "встал в позу". Пришлось построчно удалять комментарии, вызывающие сбой Макса, пока нервы у меня не сдали и я не удалил все русские комментарии из скрипта. После чего скрипт запустился без проблем. Мне было крайне обидно терять столь нужные для меня комментарии и я решил сверить кодировку моего скрипта с кодировкой скрипта другого автора. И оказалось, что кодировка моего скрипта сбилась. Я восстановил из бэкапа все русские комментарии и изменил кодировку файла на UTF-8. И свершилось чудо!!! Скрипт прекрасно запустился и работает с русскими комментариями. Если честно, я впервые встречаюсь с подобной дичью.

Огромное вам спасибо за помощь. :)
 
Сверху