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

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

skyfan

Пользователь сайта
Рейтинг
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
и по двум кривым построить поверхность.
вообще, конечно не все понятно в хелпе там написано.
Еще проблема в том, что с помощью макрорекодера невозможно отследить построения все эти , он их просто не отображает.
Спасибо за помощь заранее.

Вложения

Savin Denis

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

skyfan

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

Mur D

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

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
polyline низкоуровневая функция отрисовки, ее нужно каждый раз обновлять при обновлении вьюпорта.

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

Mur D

Пользователь сайта
Рейтинг
2
с какими параметрами использовать splineshape?... в helpe мало понятно написано... подскажите пож-та

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Не похоже что ты его даже открывал. для плохо понимающих там полно примеров.

Mur D

Пользователь сайта
Рейтинг
2
По maxscript опыта у меня действительно не много, .. Как вот соединить массив точек A =#([x1,y1,z1],...,[xn,yn,zn]) c помощью splineshape, у меня таких трэков N... можно тут описать??

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Ты руками линии в максе создавать умеешь ?
Теперь все тоже самое только с помощью скрипта.
Главу splineShape читал ?
Примеры запускал ?

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

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

Mur D

Пользователь сайта
Рейтинг
2
Так где же мне прочитать про splineshape с примерами, есть какая нибудь ссылка или что нибудь?

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
В хелпе по скрипту так называется глава, пользуйся поиском.

Bames Jond

Активный участник
Рейтинг
5
Как создать нурб сплайн скриптом, а конкретно Cv_curve чтобы указать количество точек и их координаты?

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
-- 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]

Bames Jond

Активный участник
Рейтинг
5
Нашел тоже самое в хелпе... очень стыдно =(