1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Получение параметров меша. Проблеммы.

Тема в разделе "MAXScript", создана пользователем -, 7 мар 2005.

Модераторы: Savin Denis
  1. Guest

    1. Нормали.
    Как получить нормаль к вертексу в заданном фэйсе? getNormal как-то странно работает... Как ему сказать о каком фэйсе идет речь?

    2. Анимация.
    Как в заданый момент времени получить матрицу меша, соответствующую его трансформации в этот самый момент времени?
     
  2. Guest

    Со вторым вопросом разобрался. Оказалось так просто, что возникла новая проблемма :) Как узнать, а есть ли вобще у объекта анимация?
     
  3. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    1. Втаком случае это просто нормаль к фэйсу getFaceNormal

    2. проверить нужный контроллер параметра $.transform.isAnimated
     
  4. Guest

    1. Не, это не getFaceNormal. Давай объясню поподробнее. На примере любимого чайника. У него есть галка "Smooth". Если ее убрать то действительно, для каждой тройки вертексов любого фэйса будет одна и та же нормаль - getFaceNormal этого фэйса, поэтому он такой "граненый". Если же поставить "Smooth" то чайник будет гладкий, потому что на одном и том же фэйсе у всех трех вертексов будет разная нормаль. Вот как их узнать?
    Когда экспортируешь в ASE он пишет и FaceNormal-и и VertexNormal-и.

    2. Спасибо за подсказку :)
     
  5. Guest

    Появилось еще пара вопросов по скрипту. Чтобы не спамить спрошу тут.

    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. Типа "ан нэту у нас анымацыи", хотя в максе она есть. В чем может быть проблемма?
     
  6. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    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
    значит применяют какойто нетипичный контроллер
    нужно работать с ним напрямую если есть возможность
     
  7. Guest

    Denis, спасибо за ответы :)

    По поводу getFaceNormal... Я думаю что все же можно получить smooth нормаль. Есть ведь getVertexNormal. И как мне кажется ему надо каким-то образом сообщить о каком фэйсе идет речь.

    Кадры в секунду нашел. Просто переменная frameRate :)

    По поводу перерисовки... Очень неприятная бага - если после GetSaveFileName сразу уйти в долгий цикл то окно скорее всего не перерисуется. Смотрится убого :( Надо попробовать вариации на тему GetDialogPos - SetDialogPos...

    По поводу вильма ужасов - все в порядке. Это плагин глючит. Экспортировал его в 3DS а потом импортировал - увидел то же что и в своей проге.

    Еще два вопросика:

    1. Вот перебираю я массивы geometry, cameras, lights... Как узнать, выделен ли объект? Не считая извратного способа на тему поиска объекта среди selection?

    2. Можно ли свой скрипт встроить в панель макса? Типа как плагин. Чтобы при загрузке появлялся?
     
  8. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    1. Смотри общие свойства обьектов
    .isSelected

    2. только если писать как скрипт-плаг
    принято оформлять в виде макроскрипта
     
  9. Guest

    Поделись ссылочкой на простенький пример макроскрипта? :)

    Ну и все же о отичках, точнее о нормалях...
    В файлике 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... Значит все же как-то можно указать о каком фэйсе идет речь?... ВОТ КАК???..
     
  10. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    >Поделись ссылочкой на простенький пример макроскрипта? :)
    3dsmax\UI\marcroscripts
    полнное описание с примерами найдеш в хелпе

    собственно итегрирует твой скрипт в итерфейс макса
    что позволит настроить его через меню cutomize UI
    на клавишу, вытащить на туллбар или RC меню.

    getNormal
    Никак.Забуть этот метод.
    Если хочеш работать с vertx Normals
    прийдется либо счиать их
    либо работать через модификатор Edit_Normals
     
Модераторы: Savin Denis

Поделиться этой страницей