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

Nurbs В МАКССКРИПТЕ

Тема в разделе "MAXScript", создана пользователем skyfan, 3 фев 2010.

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

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

    С нами с:
    07.01.2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    2
    Здравствуйте. помогите пожалуйста советом или идеей или скриптом. Есть сплайн построенный по точкам на рис.1. То что хотелось бы иметь в итоге - на рис.2.(построено вручную). Пытался решить следующими способами:
    1) строю сплайн с такими же координатами, как первый, только Z=0, дальше бы по идее attach один к другому, потом crosssection и surface. Но, блин, есть только splineops.attachmultiple, после чего открывается окно и предлагает выбрать из списка объектов, чего мне не нужно, у меня всего 2 кривые и выбирать не из чего, либо есть startattach, что соответствует нажатию кнопки attach и опять же нужно вручную выбирать что к чему аttachить. есть attach <obj> <obj>, но это только для mesh работает, а если я в меш сплайны свои перевожу, то я их уже плоскость по ним не могу строить.
    2) можно с помощью extrude, потом обрезать, но неизвестно на какую величину выдавливать, потому что координаты прямой могут меняться.
    3) в итоге решил все в nurbs делать. как и в первом случае строю 2 сплайна, потом конвертирую в nurbs дальше
    aa=nurbsset ()
    c=$line02
    c1=$line01
    appendObject aa c
    appendObject aa c1
    но просто так не записывает, выдает ошибку
    Error occurred in anonymous codeblock; filename: G:\123.ms; position: 203
    -- Unable to convert: undefined to type: NURBSObject

    в итоге пытаюсь прийти к nurbsruledsurface
    и по двум кривым построить поверхность.
    вообще, конечно не все понятно в хелпе там написано.
    Еще проблема в том, что с помощью макрорекодера невозможно отследить построения все эти , он их просто не отображает.
    Спасибо за помощь заранее.
     

    Вложения:

    • 1632507.jpg
      1632507.jpg
      Размер файла:
      159,3 КБ
      Просмотров:
      65
    • 1632508.jpg
      1632508.jpg
      Размер файла:
      136,6 КБ
      Просмотров:
      67
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Чтоб собрать в один шейп
    1. Можно написать свою функцию
    2. Использовать :
    Код:
    addAndWeld $Line01 $Shape01 0
    PS.
    NURBS трогать не советую, через одно место прикрученный низкоуровневый интерфейс, ни когда не отлаживался.
     
  3. skyfan

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

    С нами с:
    07.01.2010
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    2
    СПАСИБО!!!, все получилось сразу, сам бы врят ли нашел. С nurbs действительно много проблем, причем бывает так, что при компиляции одного и того же скрипта при всех равных условиях выдаются разные ошибки.
     
  4. Mur D

    Mur D Пользователь сайта

    С нами с:
    20.11.2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    2
    Нужна помощь, помогите пож-та.... пишу на maxscript написать скрипт,
    Имеется массив координат a=#([x1,y1,z1],...,[xn,yn,zn])
    Нужно соединить эти точки линией, чтобы была видна траектория движения частицы...
    пишу polyline a false, но ничего не рисуется, хотя пишет OK может кто знает как надо ...???
     
  5. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    polyline низкоуровневая функция отрисовки, ее нужно каждый раз обновлять при обновлении вьюпорта.

    Если нужно нарисовать обычный сплайн используй:
    SplineShape
     
  6. Mur D

    Mur D Пользователь сайта

    С нами с:
    20.11.2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    2
    с какими параметрами использовать splineshape?... в helpe мало понятно написано... подскажите пож-та
     
  7. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Не похоже что ты его даже открывал. для плохо понимающих там полно примеров.
     
  8. Mur D

    Mur D Пользователь сайта

    С нами с:
    20.11.2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    2
    По maxscript опыта у меня действительно не много, .. Как вот соединить массив точек A =#([x1,y1,z1],...,[xn,yn,zn]) c помощью splineshape, у меня таких трэков N... можно тут описать??
     
  9. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Ты руками линии в максе создавать умеешь ?
    Теперь все тоже самое только с помощью скрипта.
    Главу splineShape читал ?
    Примеры запускал ?

    1. Создаеш splineShape
    2. В нем содаеш spline
    3. добавляешь в spline узлы из своего массива в цикле
    4. повторяешь с 2)го пункта столько сколько у тебя массивов N
    5. все обновляешь splineShape

    Если чего не получается, приводишь свой код без него разговора не будет.
     
  10. Mur D

    Mur D Пользователь сайта

    С нами с:
    20.11.2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    2
    Так где же мне прочитать про splineshape с примерами, есть какая нибудь ссылка или что нибудь?
     
  11. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    В хелпе по скрипту так называется глава, пользуйся поиском.
     
  12. Bames Jond

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

    С нами с:
    06.02.2010
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    5
    Как создать нурб сплайн скриптом, а конкретно Cv_curve чтобы указать количество точек и их координаты?
     
  13. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Код:
    -- create an empty NURBSSet object
    nset = NURBSSet ()
    -- create a new NURBSCVCurve and set the knots and CVs
    c = NURBSCVCurve name:"CV Curve" order:4 numCVs:4 numKnots:8
    for k in 1 to 4 do ( setKnot c k 0; setKnot c (k+4) 1 )
    cv = NURBSControlVertex [0, 0, 50]
    setCV c 1 cv
    cv.pos = [-100, 0, 50]
    setCV c 2 cv
    cv.pos = [-100, 100, 50]
    setCV c 3 cv
    cv.pos = [0, 100, 50]
    setCV c 4 cv
    -- add the NURBSCVCurve object to the set
    appendObject nset c
    -- create the NURBS object from the NURBSSet
    n = NURBSNode nset name:"nurbs01" pos:[10,0,0]
    
     
  14. Bames Jond

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

    С нами с:
    06.02.2010
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    5
    Нашел тоже самое в хелпе... очень стыдно =(
     
Модераторы: Savin Denis

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