Render.ru

fillet ?

mifestofel

Активный участник
Рейтинг
15
#1
Как дать скругление вершины в скрипте?Какую команду надо использовать?
В хэлпах что-то непонятное написано.
Спасибо.
 

mifestofel

Активный участник
Рейтинг
15
#3
вершину сплайна.Естественно использую fillet но как в скрипте это - понять не иогу в хэлпах - ноль.
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4
никак, прийдется свою функцию писать

можно только включить ручной режим:

splineOps.startFillet <editable_spline_or_line_node_or_modifier>
Enters "Fillet" command mode - valid in Vertex Sub-Object level.
 

mifestofel

Активный участник
Рейтинг
15
#5
спасибо тебе, в таком случае не подскажешь, как манипулировать векторами безье, или где это можно прочесть?Эх...Спасибо.
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#6
Прочесть можеш в разделе: SplineShape : Shape

У каждой точки в безье кривой есть два параметра - invec , outvec

Если ты только строиш прямую то можеш укарать сразу все параметры

addKnot <shape> <spline_index_integer> \
( #smooth | #corner | #bezier | #bezierCorner ) \
( #curve | #line ) <position_point3> \
[invec_point3 outvec_point3] \
[where_integer]

Если нужно управлять у готовой :

getKnotType <shape> <spline_index_integer> <knot_index_integer>
Returns the knot type of the indexed knot in the indexed spline. The value is one of the names #smooth, #corner, #bezier, or #bezierCorner.

setKnotType <shape> \
<spline_index_integer> \
<knot_index_integer> \
(#smooth | #corner | #bezier | #bezierCorner )

getInVec <shape> <spline_index_integer> <knot_index_integer>
Retrieves the coordinates of the in-vector handle for the indexed knot as a point3 in the current working coordinate system.

setInVec <shape> <spline_index_integer> <knot_index_integer> <point3>
Sets the coordinates of the in-vector handle of the indexed knot. Coordinates are given in the current working coordinate system.

getOutVec <shape> <spline_index_integer> <knot_index_integer>
Retrieves the coordinates of the out-vector handle for the indexed knot as a point3 in the current working coordinate system.

setOutVec <shape> <spline_index_integer> <knot_index_integer> <point3>
Sets the coordinates of the out-vector handle of the indexed knot. Coordinates are given in the current working coordinate system.


незабудь в коце проапдейтить - updateShape()
 

Settip

Пользователь сайта
Рейтинг
2
#8
А можно ли как нибудь через скрипт какой - Выделив несколько точек на bezier или bezierCorner выделить и перемещать(манипулировать) сразу несколько knot-ов этих точек на bezier с помощью мыши? Про ротейты нескольких точек с knot-ами знаю но это не то что нужно.
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#9
Да это вполне возможно: управлять узлами есть возможность, методы для получения данных с мышки тоже есть, выделенные точки можно получить, а вот скнотами сложнее но и это можно обойти при должной смекалки. Так что все в твоих руках.
Один из примеров как работать с мышю глянь главу: How To ... Draw a Freehand Spline

PS
Тут идельно было-бы написать Манипулятор(тип скрипта плугина для визульного управления параметрами), но это намного сложнее.
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#11
Сильно помочь тебе сейчас не смогу, напряженно со свободным временем, возможно кто-то из ребят согласиться помочь.
Но алгоритм может быть примерно такой:

Выделяееш на линии нужныйе узлы, дальше работа скрипта:
1.сохраняем в tmp масиве начальные значения in и out векторов для выделенных узлов
2.с помощью mouse tool (см пример Draw a Freehand Spline ) вычисляется дельта позиции курсора между перым нажатием и текущим положением = d
3. в цикле по выденнвм узлам:
4. .Если нажата левая клавиша мыши: то новый InVec для i узла будет равен начальному значению из ранее сохраненного масива плюс дельта. InVec = tmpInVec + d
5. .Если нажата правая левая клавиша мыши: тожесамое для OutVec
6 Если Esc востановить значения InVec, OutVec векторов из tmp масива.
 
Сверху