Render.ru

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

skyfan

Пользователь сайта
Рейтинг
2
#1
Здравствуйте. помогите пожалуйста советом или идеей или скриптом. Есть сплайн построенный по точкам на рис.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
#2
Чтоб собрать в один шейп
1. Можно написать свою функцию
2. Использовать :
Код:
addAndWeld $Line01 $Shape01 0
PS.
NURBS трогать не советую, через одно место прикрученный низкоуровневый интерфейс, ни когда не отлаживался.
 

skyfan

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

Mur D

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

Savin Denis

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

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

Mur D

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

Savin Denis

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

Mur D

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

Savin Denis

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

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

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

Mur D

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

Savin Denis

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

Bames Jond

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

Savin Denis

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