1. Не, это не getFaceNormal. Давай объясню поподробнее. На примере любимого чайника. У него есть галка "Smooth". Если ее убрать то действительно, для каждой тройки вертексов любого фэйса будет одна и та же нормаль - getFaceNormal этого фэйса, поэтому он такой "граненый". Если же поставить "Smooth" то чайник будет гладкий, потому что на одном и том же фэйсе у всех трех вертексов будет разная нормаль. Вот как их узнать?
Когда экспортируешь в ASE он пишет и FaceNormal-и и VertexNormal-и.
Появилось еще пара вопросов по скрипту. Чтобы не спамить спрошу тут.
1. Как узнать первый и последний кадр анимации? (которые по дефолту 0 - 100)
2. Как узнать количество кадров в секунду?
3. Можно ли запускать скрипт или его часть в отдельном потоке? Типа CreateThread в Win32 API, а то пока скрипт выполняется - MAX виснет нафиг 🙁
4. Как принудительно заставить перерисоваться Rollout?
Главный вопрос. У меня есть бегающий человечик сделанный с помошью плагина C.A.T. Скелет + обшивка. Написал на скрипте простейший экспортер с анимацией. Запускаю и смотрю фильм ужасов - тело стоит на месте, из него выходит скелет и идет гулять 🙂 Тоесть ситуация такая:
at time i
matrix = geometry[n].transform
WriteFloat ...
Так вот этот geometry[n].transform не зависит от того, какой у меня at time. Типа "ан нэту у нас анымацыи", хотя в максе она есть. В чем может быть проблемма?
1. Не, это не getFaceNormal
значит считаеш их сам.
1. Как узнать первый и последний кадр анимации
animationRange.start --Get the start frame of the range
animationRange.end
3. Можно ли запускать скрипт или его часть в отдельном потоке? Типа CreateThread в Win32 API, а то пока скрипт выполняется - MAX виснет нафиг 🙁
нет
4. Как принудительно заставить перерисоваться Rollout?
интелигентно нет, Интерфейс на полном автомате
5. geometry[n].transform не зависит от того, какой у меня at time
значит применяют какойто нетипичный контроллер
нужно работать с ним напрямую если есть возможность
По поводу getFaceNormal... Я думаю что все же можно получить smooth нормаль. Есть ведь getVertexNormal. И как мне кажется ему надо каким-то образом сообщить о каком фэйсе идет речь.
Кадры в секунду нашел. Просто переменная frameRate 🙂
По поводу перерисовки... Очень неприятная бага - если после GetSaveFileName сразу уйти в долгий цикл то окно скорее всего не перерисуется. Смотрится убого 🙁 Надо попробовать вариации на тему GetDialogPos - SetDialogPos...
По поводу вильма ужасов - все в порядке. Это плагин глючит. Экспортировал его в 3DS а потом импортировал - увидел то же что и в своей проге.
Еще два вопросика:
1. Вот перебираю я массивы geometry, cameras, lights... Как узнать, выделен ли объект? Не считая извратного способа на тему поиска объекта среди selection?
2. Можно ли свой скрипт встроить в панель макса? Типа как плагин. Чтобы при загрузке появлялся?
Поделись ссылочкой на простенький пример макроскрипта? 🙂
Ну и все же о отичках, точнее о нормалях...
В файлике MAXScript Reference 6.0 сказано следующее:
getNormal <mesh> <vert_index_integer>
Returns the normal at the indexed vertex’s position as a point3. The normal is based on the faces that use the vertex and the smoothing groups assigned to those faces.
Главная фраза - The normal is _based on the faces_ that use the vertex... Значит все же как-то можно указать о каком фэйсе идет речь?... ВОТ КАК???..
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Гость
Как получить нормаль к вертексу в заданном фэйсе? getNormal как-то странно работает... Как ему сказать о каком фэйсе идет речь?
2. Анимация.
Как в заданый момент времени получить матрицу меша, соответствующую его трансформации в этот самый момент времени?
Гость
Savin Denis
2. проверить нужный контроллер параметра $.transform.isAnimated
Гость
Когда экспортируешь в ASE он пишет и FaceNormal-и и VertexNormal-и.
2. Спасибо за подсказку 🙂
Гость
1. Как узнать первый и последний кадр анимации? (которые по дефолту 0 - 100)
2. Как узнать количество кадров в секунду?
3. Можно ли запускать скрипт или его часть в отдельном потоке? Типа CreateThread в Win32 API, а то пока скрипт выполняется - MAX виснет нафиг 🙁
4. Как принудительно заставить перерисоваться Rollout?
Главный вопрос. У меня есть бегающий человечик сделанный с помошью плагина C.A.T. Скелет + обшивка. Написал на скрипте простейший экспортер с анимацией. Запускаю и смотрю фильм ужасов - тело стоит на месте, из него выходит скелет и идет гулять 🙂 Тоесть ситуация такая:
at time i
matrix = geometry[n].transform
WriteFloat ...
Так вот этот geometry[n].transform не зависит от того, какой у меня at time. Типа "ан нэту у нас анымацыи", хотя в максе она есть. В чем может быть проблемма?
Savin Denis
значит считаеш их сам.
1. Как узнать первый и последний кадр анимации
animationRange.start --Get the start frame of the range
animationRange.end
3. Можно ли запускать скрипт или его часть в отдельном потоке? Типа CreateThread в Win32 API, а то пока скрипт выполняется - MAX виснет нафиг 🙁
нет
4. Как принудительно заставить перерисоваться Rollout?
интелигентно нет, Интерфейс на полном автомате
5. geometry[n].transform не зависит от того, какой у меня at time
значит применяют какойто нетипичный контроллер
нужно работать с ним напрямую если есть возможность
Гость
По поводу getFaceNormal... Я думаю что все же можно получить smooth нормаль. Есть ведь getVertexNormal. И как мне кажется ему надо каким-то образом сообщить о каком фэйсе идет речь.
Кадры в секунду нашел. Просто переменная frameRate 🙂
По поводу перерисовки... Очень неприятная бага - если после GetSaveFileName сразу уйти в долгий цикл то окно скорее всего не перерисуется. Смотрится убого 🙁 Надо попробовать вариации на тему GetDialogPos - SetDialogPos...
По поводу вильма ужасов - все в порядке. Это плагин глючит. Экспортировал его в 3DS а потом импортировал - увидел то же что и в своей проге.
Еще два вопросика:
1. Вот перебираю я массивы geometry, cameras, lights... Как узнать, выделен ли объект? Не считая извратного способа на тему поиска объекта среди selection?
2. Можно ли свой скрипт встроить в панель макса? Типа как плагин. Чтобы при загрузке появлялся?
Savin Denis
.isSelected
2. только если писать как скрипт-плаг
принято оформлять в виде макроскрипта
Гость
Ну и все же о отичках, точнее о нормалях...
В файлике MAXScript Reference 6.0 сказано следующее:
getNormal <mesh> <vert_index_integer>
Returns the normal at the indexed vertex’s position as a point3. The normal is based on the faces that use the vertex and the smoothing groups assigned to those faces.
Главная фраза - The normal is _based on the faces_ that use the vertex... Значит все же как-то можно указать о каком фэйсе идет речь?... ВОТ КАК???..
Savin Denis
3dsmax\UI\marcroscripts
полнное описание с примерами найдеш в хелпе
собственно итегрирует твой скрипт в итерфейс макса
что позволит настроить его через меню cutomize UI
на клавишу, вытащить на туллбар или RC меню.
getNormal
Никак.Забуть этот метод.
Если хочеш работать с vertx Normals
прийдется либо счиать их
либо работать через модификатор Edit_Normals