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 和创建参考制作器 的相关文章

  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • 如何动态创建

    我想在我的网络表单中动态创建输入类型文本 更具体地说 我有一个文本字段 用户可以在其中输入所需文本字段的数量 我希望以相同的形式动态生成文本字段 我怎么做 使用 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