3ds Max .NET SDK 和创建参考制作器

2024-02-06

我有 .Net DLL for Max 和 ui,我想对视口中某些节点的参数更改做出反应。我想到的最简单的解决方案是创建 ReferenceMaker 插件并为我想要观看的节点设置参考。根据文档应该是

 public class ReferenceListener : Autodesk.Max.Plugins.ReferenceMaker{ ... }

但是,当我创建此类的新实例并尝试设置引用时,它会因“对象引用未设置为对象的实例”而崩溃。 当我尝试调试它时,我发现所有基类属性均为 null,因此它表明 ReferenceMaker 插件实例未在 Max 中创建。

终于找到MaxSharp源码了here https://area.autodesk.com/blogs/chris/3ds-max-2013-net-sdk-and-the-maxsharp-source-code但使用生成的 dll 让我得到相同的结果,坦率地说,实现与我之前的一样安静。由于基类中存在空值,尝试将 ReferenceListener 附加到 ReferenceTarget 总是会崩溃。 所以我真的不知道如何解决这个问题,但也许有人尝试创建这样的东西并成功了?现在我正在考虑将这些参数更改回调写入 maxscript,并以它的形式调用 .net,但这感觉很hacky.. 我使用的是 Max 2014(MaxSharp 是 2013 年),但我没有发现文档中提到的任何差异,如果有任何帮助,我们将不胜感激。

谢谢

UPDATE

因此,我将其范围缩小到非常奇怪的问题。我创建了 C++/CLI 插件,在 C++ SDK 中创建了 ReferenceMaker 类,并使用 .net 包装器来调用 C# 形式的插件,但它仍然无法解决相同的症状。

似乎错误的指针地址存储在 Autodesk.Max 包装对象内,因此这就是它失败的原因。我对.Net DLL和C++ SDK返回的指针进行了比较,它们总是相差64。而且总是这样。

C++/CLI 代码

IINode^ al =  Autodesk::Max::GlobalInterface::Instance->COREInterface->GetSelNode(0);
IReferenceTarget^ ak = (IReferenceTarget^)al;
ReferenceTarget* nativeTarget = (ReferenceTarget*)ak->Handle.ToPointer();
m_notifyListener->Test(nativeTarget);

C++ Max SDK 代码

void NotifyListener::Test(RefTargetHandle managedPointer)
{
     Interface* ip = GetCOREInterface();

     RefTargetHandle nativePointer = ip->GetSelNode(0);
     intptr_t P1 = (intptr_t)managedPointer;
     intptr_t P2 = (intptr_t)nativePointer ;
}

结果变量是例如。

P1 = 1490452112
P2 = 1490452048

P2 始终比 P1 小 64。 如果这些指针完全不同,我会理解,但这种轻微的转变对我来说真的很奇怪。 有谁知道那里发生了什么吗?这是我实在想不明白的事情。

我需要测试 Max 2013 或 2015 中是否有与我使用 2014 年相同的行为。我在其他一些论坛上看到其他人抱怨示例 .net 插件在 2014 年不起作用,所以也许这就是原因?

感谢您的任何建议。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3ds Max .NET SDK 和创建参考制作器 的相关文章

随机推荐

  • 如何动态创建

    我想在我的网络表单中动态创建输入类型文本 更具体地说 我有一个文本字段 用户可以在其中输入所需文本字段的数量 我希望以相同的形式动态生成文本字段 我怎么做 使用 JavaScript var input document createEle
  • 通过超链接打开新的gridview

    如何通过同一页面上的超链接打开一个新的 gridview 当用户单击此表上的任何超链接时 我不想关闭现有的 gridview 而是想显示与此相邻的另一个 gridview 我有一些如下所示的数据 当我单击这些超链接中的任何一个时 我想在同一
  • 如何递归地忽略 git 存储库中的所有隐藏目录/文件?

    我想让 Git 忽略所有隐藏的文件和目录 IE aptitude ssh bash rc config hidden 是否有一个简单的规则可以涵盖这个问题而无需专门添加每个条目 只需添加一个图案即可 gitignore gitignore
  • REST 和大型数据库查询

    众所周知 ReST Web 服务无法保存状态 当我考虑大型数据库事务时 这对我来说是一个问题 我想知道您是否可以提供帮助 我的 ReST Web 服务有一个主要作用 对数据库执行 CRUD 操作 问题是 如果我必须查询包含数千行的表并将其作
  • 使用 JavaScript 添加外部样式表

    我需要使用外部 javascript 文件在标头中添加指向外部 css 文件的链接 不要问为什么 我只需要这样做 document write 顺便说一句 不起作用 var element document createElement li
  • 如何在文本上应用 CSS 渐变(从透明颜色到不透明颜色)

    Cheers 我是 CSS HTML 的新手 但我想在文本上应用渐变 如下图所示 我如何用css来实现它 相关CSS在伪元素上 after of the
  • jquery 与相同脚本冲突

    我正在使用 jquery 将内容加载到选项卡中 并在单击时切换选项卡 我的问题是 我在一页中使用了这个 选项卡切换器 两次 并且它导致了冲突 我对jquery不太有经验 所以我的问题可能在于我在头脑中创建了两次函数 这是我的 jquery
  • ST_Buffer 相当于 MySQL 中基于圆的搜索吗?

    我需要使用 MySQL GIS 搜索具有指定圆内的点的行 伪代码示例查询是 select from gistable g where isInCircle g point circleCenterPT radius 看来 PostGIS 可
  • AWS ELB(弹性负载均衡器)有时会立即返回 504(网关超时)

    我目前正在将应用程序切换到亚马逊 但我注意到有时收到的响应是 504 我们的系统设置方式是在 ELB 前面有一个 LB 然后直接转到 tomcat 目前 我们正在对服务中的所有请求以及记录响应时间的 servlet 过滤器进行计时 它们始终
  • Zip Mime 类型无法识别

    我正在尝试返回一个 zip 文件 作为浏览器上的流 这适用于其他类型的文件 例如 Excel 文件 但是当我开始处理 zip 文件时 我无法让浏览器识别出它是 zip 我的测试机上运行的 Firefox 和 IE 都会提示 询问使用什么程序
  • Python UCS2 从十六进制字符串解码

    我正在使用 python 2 7 需要将十六进制字符串解码为 un icode 字符串 在 php 中 我做了以下简单的操作 line hex2bin line finish iconv UCS 2BE UTF 8 nline 例如十六进制
  • 我可以在 android xml 布局或字符串值文件中编写 java 代码吗?

    我想知道是否可以在 android XML 布局或字符串值文件中编写 java 代码 我的意思是这样的
  • 给定3个点,如何构造穿过它们的弧?

    假设我有 3 个连续点 P1 P2 P3 如何构造一条经过所有3个点的弧 弧必须具有以下 3 个属性 开始弧度 结束弧度 中心点 弧线是从Start Radian to End Radian以逆时针方向 我已经尝试过解决方案here htt
  • 东向北转纬度经度

    我有东向 北向格式的位置坐标 但我需要将其转换为正确的经纬度 以使其在 bing 地图中居中 有任何公式或详细信息如何将东距 北距转换为纬度 经度吗 编辑 更具体地说 我需要将 SVY21 坐标转换为 WGS84 东距和北距分别是基点向东和
  • EMR-5.32.0 上的 Spark 未生成请求的执行程序

    我在 EMR 版本 5 32 0 上的 Py Spark 中遇到了一些问题 大约一年前 我在 EMR 集群上运行了相同的程序 我认为版本一定是 5 29 0 然后我可以使用配置我的 PySpark 程序spark submit正确地论证 但
  • 正在验证 MVC 隐藏字段

    我的页面上有一些字段 它们的显示和消失取决于您在页面上所做的下拉选择 所以 举例来说 我有 section Html LabelFor model gt model AuctionTypeId div Html DropDownList A
  • 在我的下一个 Android 应用程序更新中使用新的数据库版本覆盖现有的已发布 Sqlite DB

    我想覆盖旧应用程序版本附带的现有数据库 并在下一个应用程序更新中使用新完全填充的数据库 然而 onUpgrade 永远不会被调用 尽管我尝试在将 DB version 传递给 SQLiteOpenHelper 类时更改它 public cl
  • FTDI 的 libMPSSE 上“遇到 NULL 表达式”

    我的问题是针对 FTDI 的 libMPSSE 库在 Linux 上与 USB 转串口 SPI I2C 等 适配器配合使用的问题 当我执行与该库链接的任何程序时 会调用方法 Init libMPSSE 无需显式调用 并抛出以下消息 Infr
  • 如何在 Python 中的 Opencv Cam 窗口中提供启动、停止、捕获和关闭按钮

    如何在视频捕获窗口中提供开始 停止 捕获和关闭按钮来启动 停止 拍摄快照 关闭窗口 我使用以下代码打开相机进行视频流 import cv2 cv as cv cv NamedWindow camera 1 capture cv Captur
  • 3ds Max .NET SDK 和创建参考制作器

    我有 Net DLL for Max 和 ui 我想对视口中某些节点的参数更改做出反应 我想到的最简单的解决方案是创建 ReferenceMaker 插件并为我想要观看的节点设置参考 根据文档应该是 public class Referen