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

Матрица объекта...

Тема в разделе "MAXScript", создана пользователем Neomix, 27 июл 2010.

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

    Neomix Пользователь сайта

    С нами с:
    13.07.2007
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Добрый день! :)

    Прочитал очень интересную статью на этом сайте (Нюансы при экспорте из 3DS MAX - большой респект автору!), вроде все понятно и хорошо, и все нюансы взял на заметку... Но, вот получилась заминка...


    Цитата из статьи:

    Напрямую получить матрицу объекта невозможно. Можно получить матрицу преобразования геометрии в мировое пространство (INode->GetObjectTM()), и помножить ее справа на инвертированную матрицу узла.

    Ряд вопросов который для меня темный лес, но хотел бы их разобрать более подробно.


    1. GetObjectTM() - в ответ на такую функцию вернулась ошибка (3ds max 2011, получается что нет этой функции):

    $Box:Box005 @ [0.000000,0.000000,0.000000]
    -- Error occurred in anonymous codeblock; filename: E:\Downloads\Work\Script for 3dsmax\; position: 22; line: 2
    -- Type error: Call needs function or class, got: undefined

    Как я решил проблему:

    Ввел:

    b=box()
    b.transform

    В ответ получил ту самую (не уверен) про которую говорил автор, матрицу преобразования геометрии в мировом пространстве:

    $Box:Box006 @ [0.000000,0.000000,0.000000]
    (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])


    2. Матрицу узла получил без проблем как написано:

    GetNodeTM $box006

    В ответ вернулось:

    (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])

    3. Как можно инвертировать матрицу узла (что делать если она не квадратная)?
    4. Не понятно вот еще что: помножить ее справа? (полный стопор...)
    5. Предположим получили эту матрицу объекта, она будит с учетом с учетом родителей или без?
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Neomix, все перепутал.
    Статья написана для разработчиков плагинов, и функции там API`шные из SDK.

    b.transform готовый трансформ в мировом пространстве больше ничего не нужшо с ним делать

    Читай хелп maxscript.


    >3. Как можно инвертировать матрицу узла (что делать если она не квадратная)?
    Ищи раздел матрицы
    >Не понятно вот еще что: помножить ее справа? (полный стопор...)
    Право право и есть, сторона такая =) Сено, солома
    Предположим получили эту матрицу объекта, она будит с учетом с учетом родителей или без?
    b.transform - в мировом пространстве (а не в пространстве родителя)
     
  3. Neomix

    Neomix Пользователь сайта

    С нами с:
    13.07.2007
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Savin Denis - сильно не серчай. :)

    Я еще новичок в maxscript-e, а в английском не так сильно силен к сожилению... :-(

    Так правельно я понял что b.transform и есть получение матрицы объекта?
     
  4. Valeriy_tc

    Valeriy_tc Активный участник

    С нами с:
    15.05.2008
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    8
Модераторы: Savin Denis

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