Slate材质编辑器中的回调函数

时间:2014-05-13 03:51:48

标签: maxscript 3ds

是否有可用的回调函数,当我们使用平板材质编辑器将纹理贴图附加到材质时触发该函数。

原因:
我有自定义材料,如果用户没有有效的许可证,我不希望他将任何纹理附加到自定义材料上。在Compact材质编辑器中,我通过禁用UI来创建地图来实现此目的。但是当我使用Slate材质编辑器时,我可以将纹理连接到我的材质。

所以我的想法是,如果我在尝试附加地图时从平板材质编辑器中获得回调函数,我可以执行许可检查并阻止他创建连接。我做得对吗,或者你们有任何其他的建议。

谢谢,
Saneesh

2 个答案:

答案 0 :(得分:0)

maxscript手册中有很多关于它的信息:

http://docs.autodesk.com/3DSMAX/16/ENU/MAXScript-Help/files/GUID-7C91D285-5683-4606-9F7C-B8D3A7CA508B.htm

向下滚动到名为的主题:

Node Material Callbacks:

你有以下内容:

materialOtherEvent: 

只要节点的材质发生变化,就会调用提供的函数。

尝试并使用它来捕捉您的活动,并根据您的许可证状态应用您需要的结果。

答案 1 :(得分:0)

我不建议在场景中进行连续回调(即,在正常场景交互触发的事件上)。它在性能方面确实有成本,不提供额外的安全性,并且您可能会对其他系统组件可能导致的问题数量感到惊讶。打断另一个组件操作并改变预期结果肯定存在缺点。如果max的另一部分正在设置纹理,并且没有检查操作是否失败,则可能最终导致崩溃。

一个建议是将验证移至OnSave。

预先保存,检查许可证。如果未找到许可证,请将纹理设置为' undefined' (当然有适当的警告信息)。这意味着您不会因为与材料相关的每个用户操作而不断地进出maxscript,您只需要维护一个入口点,最重要的是,它可以让用户试用您的插件执照。确实有一个缺点,即许可用户与未经许可的用户共享的场景无法由未经许可的用户重新保存,但除非您使用C ++,否则您的选项会受到限制。

但是,我不会把太多的时间或信念放在基于maxscript的安全性上。 MxS本质上是由用户编辑的,即使没有源代码,也不会花费很长时间来找到您的安全性并禁用它。