MaxScript中的自定义样条线基元(3ds Max)

时间:2015-10-13 14:31:11

标签: plugins max spline maxscript 3ds

我几天来一直在努力解决这个问题。 我需要一个自定义花键形状用于我正在做的钻机,用于围绕4个单独移动轮子的Catarpillar轨道(Wall-E)

我希望样条曲线为四边形,其中4个单独的角落被切成一定量(基于车轮半径的半径)。

我的问题是,我似乎无法创建自定义SplineShape(就像我可以使用网格几何体)。

我被困在这里:

plugin shape FilletQuad
name: "FilletQuad"
classID:#(0x32cdee2b, 0x56acdf01)
extends:SplineShape version:1
category:"Splines"
(   

parameters main rollout:ro_filletQuad
(
    x1 type:#float animatable:true default:-30 ui:sp_x1
    y1 type:#float animatable:true default:20 ui:sp_y1
    r1 type:#float animatable:true default:10 ui:sp_r1
)

rollout ro_filletQuad "Hardware Shaders"
(
    label lbl_point1 "Point 1:"
    spinner sp_x1 "x:"
    spinner sp_y1 "y:"
    spinner sp_r1 "radius:"
)

fn createShape =
(
    print "code for shape creation goes here.."
)

tool create
(
    local startPoint
    on mousePoint click do
        case click of
        (
            1: startPoint = nodeTM.translation = gridPoint
            2: (
                createShape()
                #stop
            )
        )
    on mouseMove click do
    (
        case click of
        (
            2: (
                print "Dragging - N/A for this primitive"
            )
        )
    )
)
)

我需要一种方法来引用基础对象并构建样条曲线,并在参数更改时重建它。

在几何中,我使用“on buildMesh”事件,然后构建“mesh”变量。但我似乎找不到形状的相同属性。

任何帮助??

2 个答案:

答案 0 :(得分:1)

我相信,因为您正在扩展现有插件(SplineShape),您需要使用关键字委托访问插件的祖先,并修改任何继承的参数。

如果你看一下脚本化的Shape插件示例,并阅读文档,很明显当你扩展插件时,你实际上是以此为基础并在创建时添加功能

似乎允许用户从头开始定义几何体创建的唯一插件是simpleobject插件。

通过maxscript创建插件相对有限。您可以通过创建与视口视图大小保持一致的网格(有点像点设置)来表示样条线,从而作弊。

希望这有帮助。

答案 1 :(得分:1)

如果您使用的是max 2016 SP2或更高版本,则可以使用simpleSpline。这个脚本化的自定义基元类在添加时考虑了MCG,因此没有暴露出操纵形状的maxscript方法。当然,您总是可以使用.NET方法。查看ArrowPulley BeltGuilloche脚本形状以查看设置。