Plugins MaxScript(3ds Max)中的自定义样条线基本体

Plugins MaxScript(3ds Max)中的自定义样条线基本体,plugins,max,spline,maxscript,3ds,Plugins,Max,Spline,Maxscript,3ds,我已经为一个问题挣扎了几天了。 我需要一个自定义样条曲线形状的钻机,我正在做的,为一个卡塔皮尔轨道周围4个单独移动的车轮(墙-E) 我希望样条曲线是一个四边形,有4个独立的角以一定的量(基于车轮半径的半径)圆角 我的问题是,我似乎无法创建自定义样条曲线形状(就像我可以创建网格几何体一样) 我被困在这里: plugin shape FilletQuad name: "FilletQuad" classID:#(0x32cdee2b, 0x56acdf01) extends:SplineShape

我已经为一个问题挣扎了几天了。 我需要一个自定义样条曲线形状的钻机,我正在做的,为一个卡塔皮尔轨道周围4个单独移动的车轮(墙-E)

我希望样条曲线是一个四边形,有4个独立的角以一定的量(基于车轮半径的半径)圆角

我的问题是,我似乎无法创建自定义样条曲线形状(就像我可以创建网格几何体一样)

我被困在这里:

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”变量进行构建。但我似乎找不到形状的相同属性


有什么帮助吗???

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

如果您查看脚本形状插件示例,并阅读文档,很明显,当您扩展插件时,您实际上是在使用它作为基础,并在创建时添加功能

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

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


希望这有帮助。

如果您使用的是max 2016 SP2或更高版本,您可以使用simpleSpline。这个脚本化的自定义原语类是在考虑MCG的情况下添加的,因此没有暴露用于操纵形状的maxscript方法。当然,您可以始终使用.NET方法。查看或脚本化形状以查看设置