Render.ru
Поддержать

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

Почемучкин

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

Помогите, пожалуйста, решить проблему.
При попытке запустить скрипт (.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
Не видя сам скрипт сложно что-то сказать. Очевидно в скрипте идёт попытка обращения к свойству .z у какой-то переменной, но при этом сама переменная в момент обращения оказывается неинициализирована — неопределена.

Почемучкин

Активный участник
Рейтинг
7
Я не смог найти эту переменную.
Переменную .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
LastJediДа, могу посмотреть. Присылайте.
Это здорово, спасибо.
Однако, что-то я не могу разобраться, как здесь отправлять л.с.?

LastJedi

Знаток
Рейтинг
27
В профиле (моём) кнопка «Добавить в контакты». Тогда можно будет писать ЛС.
Если удобнее, то можно на почту: LastJedi@ya.ru или Телеграм: @p_ky3

Почемучкин

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

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

LastJedi

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

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

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

Почемучкин

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

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

LastJedi

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

LastJedi

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

Почемучкин

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

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

LastJedi

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

Почемучкин

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

Огромное вам спасибо за помощь. 🙂