我几天来一直在努力解决这个问题。 我需要一个自定义花键形状用于我正在做的钻机,用于围绕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”变量。但我似乎找不到形状的相同属性。
任何帮助??
答案 0 :(得分:1)
我相信,因为您正在扩展现有插件(SplineShape),您需要使用关键字委托访问插件的祖先,并修改任何继承的参数。
如果你看一下脚本化的Shape插件示例,并阅读文档,很明显当你扩展插件时,你实际上是以此为基础并在创建时添加功能
似乎允许用户从头开始定义几何体创建的唯一插件是simpleobject插件。
通过maxscript创建插件相对有限。您可以通过创建与视口视图大小保持一致的网格(有点像点设置)来表示样条线,从而作弊。
希望这有帮助。
答案 1 :(得分:1)
如果您使用的是max 2016 SP2或更高版本,则可以使用simpleSpline。这个脚本化的自定义基元类在添加时考虑了MCG,因此没有暴露出操纵形状的maxscript方法。当然,您总是可以使用.NET方法。查看Arrow,Pulley Belt或Guilloche脚本形状以查看设置。