zoukankan      html  css  js  c++  java
  • 编写3ds max插件时遇到的问题总结

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/


    这几天在给公司的美术编写3ds max 2009使用的插件,遇到了一些问题,在此记录一下解决方案



    ## 一、调试3ds max插件的一个小技巧 这个我是参考了其他人的博客:[http://blog.csdn.net/zhengkangchen/article/details/6424806](http://blog.csdn.net/zhengkangchen/article/details/6424806)

    简单来说就是在3ds max sdk提供的接口的基础上再做一层封装,将实际的插件逻辑写在一个新的DLL里,通过动态加载、卸载这个新的DLL,达到不关闭3ds max就更新插件的目的。

    在使用过程中我遇到了一个小问题——卸载DLL时会导致3ds max崩溃,后来发现是因为在DLL中返回了字符串常量指针,导致FreeLibrary之后3ds max继续尝试访问该字符串常量指针时崩溃。
    解决方案是将相应的字符串常量储存到一个静态的string变量中,避免3ds max直接访问DLL中分配的内存。


    ## 二、将布料动画转化为Morpher动画导出 3ds max 2009支持将布料动画转化为关键帧动画,不幸的是这种关键帧动画并不能使用3ds max sdk提供的morpher modifier接口直接导出,因此需要另外使用其他的方法导出。

    解决方案是使用Interface提供的SetTime接口获取每一个采样时间点中模型顶点的位置,再保存为自己所需要的数据格式,这个过程中有几点需要注意:

    1. 每次SetTime之后都要重新初始化IGame,否则会导致获取的数据错乱
    2. 每次SetTime之后都要调用Mesh节点的EvalWorldState接口,更新网格的顶点,否则只能获取到第一次SetTime的数据
    3. 通过这种方式获取的顶点数据是应用网格Position/Rotation/Scale变换之前的顶点数据,如果网格包含相应的空间变换,还需要自行将顶点乘以相应的矩阵
  • 相关阅读:
    USACO Section 1.3 : Mixing Milk
    USACO Section 1.3 : Prime Cryptarithm
    USACO Section 1.2 : Name That Number
    USACO Section 1.3 : Calf Flac
    USACO Section 1.2 : Palindromic Squares
    Global.asax详解
    sql语句字符串处理大全
    ASP.net:URL重写实现IHttpHandler接口
    asp.net中使用基于角色role的Forms验证
    时间Table.TransformColumns(Power Query 之 M 语言)
  • 原文地址:https://www.cnblogs.com/dbylk/p/5642735.html
Copyright © 2011-2022 走看看