Render.ru

Помогите с найти/написать скрипт

ДенисИЩЕ

Активный участник
Рейтинг
8
#1
Суть проблемы следущаяя. Я моделирую телегу. она будет сколочена из досок. И мне надо, чтобы
либо

1)по ходу перетаскивания досок у каждой доски сам по себе менялся seed в модификаторе noise

или

2)когда я закончу моделирование, скрипт сам расставил для каждого объекта свой случайный seed в модификаторе noise.
 

KoL'T

Знаток
Рейтинг
49
#3
Народ, нужна помощь.
Есть один замечательный скрипт для разгрузки хоткеев при работе в EditablePoly.
http://www.scriptspot.com/3ds-max/scripts/magic-hotkey

Накатал для себя скрипт по образу и подобию для работы в EditableSpline и дописал его в конце исходного скрипта.
Всё работает на ура, но хотелось бы сделать также, как и в исходном скрипте с возможностью программирования условий для одного или нескольких выбранных элементов подобъектов.

Например, при выборе 1 vertex в сплайне, включится chamfer, а при двух и более fuse. И точно также с Segment и Spline.

Облазил весь help по скриптам и даже что-то похожее для сплайнов не нашёл:

local vertSel = (polyop.getVertSelection curObj) as array
case vertSel.count of

Сам код скрипта с моей дописанной частью внизу:

Код:
macroScript HotKey_Magic
category:"miauu"
internalCategory:"miauu"
Tooltip:"Magic HotKey"
ButtonText:"Magic HotKey"
(
    if (selection.count == 1 and classOf selection[1].baseobject  == Editable_Poly) then
    (
        local curObj = $.baseobject
        case subobjectlevel of
        (
            1:    --    Vertex subobject level
            (
                local vertSel = (polyop.getVertSelection curObj) as array
                case vertSel.count of
                (
                    0:      --    no selected vertices - Start Cut tool
                    (
                        macros.run "Editable Polygon Object" "EPoly_Cut"
                    )
                
                    1:    --    if only one vertex is selected - Start Targed Weld
                    (
                        macros.run "Editable Polygon Object" "EPoly_TargetWeld"
                        --    to change what the script do when one vertex is selected comment line above
                        --    and uncomment the desired operation
--                         macros.run "Editable Polygon Object" "EPoly_Break"
--                         macros.run "Editable Polygon Object" "EPoly_Chamfer"
--                         macros.run "Editable Polygon Object" "EPoly_Extrude"
--                         macros.run "Editable Polygon Object" "EPoly_Remove"
                    )
                
                    default: --    if two or more vertices are selected - Connect them
                    (
                        $.EditablePoly.ConnectVertices ()
                    
--                         macros.run "Editable Polygon Object" "EPoly_Collapse"
                    )
                )
            )

            2:    --    Edge subobject level
            (
                local edgeSel = (polyop.getEdgeSelection curObj)as array
                case edgeSel.count of
                (
                    0: --    no edges selected - create Edge from vert to vert
                    (
                        macros.run "Editable Polygon Object" "EPoly_Create"
                    )
                    1:    --    one edge selected - divide edge
                    (
                        $.EditablePoly.divideEdge edgeSel[1] 0.5 select:on
                        subobjectLevel = 1
                    )                
                    default: -- if two or more edges are selected -    bridge or connect edges
                    (
                        $.bridgeSelected = 1    --    will bridge only selected edges
                        $.bridgeSegments = 1    --    change the value will change the number of Bridge Segments
                    
                        if ($.EditablePoly.Bridge () == false) do
                        (    --    if Bridge operation can not be done - connect edges
                            $.connectEdgeSegments = 1        --    change the value will chagne the default Connect Edge Segments value
                            $.EditablePoly.ConnectEdges ()
                        )
                    
                        --    to change what the script do when 2 or more edges are selected comment all 7 lines above
                        --    (from $.bridgeSelected = 1 to ")" ) and uncomment the desired operation
--                         macros.run "Editable Polygon Object" "EPoly_Remove"    --    remove selected edge/edges(and shared verts)
--                         macros.run "Editable Polygon Object" "EPoly_InsertVertex"
--                         macros.run "Editable Polygon Object" "EPoly_Extrude"
--                         macros.run "Editable Polygon Object" "EPoly_Chamfer"                     
--                         macros.run "Editable Polygon Object" "EPoly_Split"
--                         macros.run "Editable Polygon Object" "EPoly_ShapeFromEdges"
--                         macros.run "Editable Polygon Object" "EPoly_Collapse"
                    )
                )
            )
        
            3:    --    Border subobject level
            (    --    Cap
                macros.run "Editable Polygon Object" "EPoly_Cap"
            
--                 macros.run "Editable Polygon Object" "EPoly_Collapse"
            )
        
            4:    --    Polygon subobject level
            (
                local faceSel = (polyop.getFaceSelection $) as array
                case faceSel.count of
                (
                    0: --    no face selected - start creating polygons
                    (
                        macros.run "Editable Polygon Object" "EPoly_Create"
                    )
                
                    default: --    one or more faces selected - extrude them
                    (
                        macros.run "Editable Polygon Object" "EPoly_Extrude"
                        --    to change Extrude command with Bevel, Outline, Inset or Flip
                        --    uncomment desired command and comment "Extrude" command
--                         macros.run "Editable Polygon Object" "EPoly_Bevel"
--                         macros.run "Editable Polygon Object" "EPoly_Outline"
--                         macros.run "Editable Polygon Object" "EPoly_Inset"
--                         macros.run "Editable Polygon Object" "EPoly_Flip"
--                         macros.run "Editable Polygon Object" "EPoly_Detach"
--                         macros.run "Editable Polygon Object" "EPoly_Collapse"                    
                    )
                )
            )
        )
    )

-- Это уже моя часть скрипта:

else
    (
        local curObj = $.baseobject
        case subobjectlevel of
        (
            1:    --    Vertex subobject level
            (
                macros.run "Editable Spline Object" "ESpline_Connect"
--                $.modifiers[#Edit_Poly].ButtonOp #ConnectVertices
            )
            2:    --    Segment subobject level
            (
                macros.run "Editable Spline Object" "ESpline_Create_Line"
--                $.modifiers[#Edit_Poly].ButtonOp #ConnectEdges
            )
            3:    --    Spline subobject level
            (  
                macros.run "Editable Spline Object" "ESpline_Trim"
--                macros.run "Editable Polygon Object" "EPoly_Cap"
            )
            4:    --    Polygon subobject level
            (
                macros.run "Editable Polygon Object" "EPoly_Create"
            )
        )
    )
)
 
Последнее редактирование:

KoL'T

Знаток
Рейтинг
49
#4
Ещё появилась идея скрипта для оптимизации сплайна с тремя гладкими вершинами.

Например, нужно оптимизировать сплайн с тремя "Smooth" вершинами до двух "Bezier", сохранив форму сплайна.

Последовательность действий:
1) Выделить все вершины и перевести их в "Bezier".
2) Выбрать вершину под номером 2 и удалить её. Если таких сплайнов несколько, то необходимо выбрать вторую вершину у каждого сплайна.
3)Выбрать все оставшиеся Bezier вершины и увеличить их кривизну в 2 раза с помощью Scale.

Все известные оптимизаторы с такой задачей не справляются, а в ручную делать достаточно долго, когда таких сплайнов около сотни.

Подскажите, пожалуйста, как это сделать?
 

Вложения

  • 332,8 КБ Просмотров: 407
Последнее редактирование:
Сверху