Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3ds Max C++;修改器在2+;修改器位于修改器列表中 有一个修改插件的麻烦,我在3DS MAX 2015中用C++制作,我遇到一个问题,我在一个对象上加上2个修饰符(可以是任何类型的修饰符,这并不重要),然后我应用我自己的修饰符(OpenSudiV.MPS),它将在第一遍通过我的代码,但是,当我更新对象的任何内容时,第二次通过代码3ds Max时,会得到一个对象,其中包含一个没有任何贴图数据的网格。这导致我的插件崩溃,因为我需要它的映射数据_C++_3dsmax - Fatal编程技术网

3ds Max C++;修改器在2+;修改器位于修改器列表中 有一个修改插件的麻烦,我在3DS MAX 2015中用C++制作,我遇到一个问题,我在一个对象上加上2个修饰符(可以是任何类型的修饰符,这并不重要),然后我应用我自己的修饰符(OpenSudiV.MPS),它将在第一遍通过我的代码,但是,当我更新对象的任何内容时,第二次通过代码3ds Max时,会得到一个对象,其中包含一个没有任何贴图数据的网格。这导致我的插件崩溃,因为我需要它的映射数据

3ds Max C++;修改器在2+;修改器位于修改器列表中 有一个修改插件的麻烦,我在3DS MAX 2015中用C++制作,我遇到一个问题,我在一个对象上加上2个修饰符(可以是任何类型的修饰符,这并不重要),然后我应用我自己的修饰符(OpenSudiV.MPS),它将在第一遍通过我的代码,但是,当我更新对象的任何内容时,第二次通过代码3ds Max时,会得到一个对象,其中包含一个没有任何贴图数据的网格。这导致我的插件崩溃,因为我需要它的映射数据,c++,3dsmax,C++,3dsmax,以下是Max中的修改器列表: (很抱歉,尚未发布图像) 如果我在它之前只使用一个修改器或者没有其他修改器,那么一切都很好。我也可以在它之后放置任意数量的物品。我注意到的另一个奇怪现象是,如果我首先创建修改器,然后在它和对象之间添加2+个修改器,映射数据将正确返回 我假设这与我以前遇到的有效性/通道问题有关,并且能够通过自己设置通道有效性来解决。但是,我无法再次用这种方法解决问题 以下是3ds Max为我的修改器调用的ModifyObject函数的代码 void OpenSubdiv_MPS::M

以下是Max中的修改器列表:

(很抱歉,尚未发布图像)

如果我在它之前只使用一个修改器或者没有其他修改器,那么一切都很好。我也可以在它之后放置任意数量的物品。我注意到的另一个奇怪现象是,如果我首先创建修改器,然后在它和对象之间添加2+个修改器,映射数据将正确返回

我假设这与我以前遇到的有效性/通道问题有关,并且能够通过自己设置通道有效性来解决。但是,我无法再次用这种方法解决问题

以下是3ds Max为我的修改器调用的ModifyObject函数的代码

void OpenSubdiv_MPS::ModifyObject(TimeValue t, ModContext& mc, ObjectState* os, INode* node) 
{
    Interval valid = GetValidity(t);
    valid &= os->obj->ChannelValidity(t,TOPO_CHAN_NUM);
    valid &= os->obj->ChannelValidity(t,GEOM_CHAN_NUM);

    if (os->obj->IsSubClassOf(polyObjectClassID)) 
    {
            PolyObject *polyOb = (PolyObject*)os->obj;
            ModifyPolyObject(polyOb, t, mc);
    }
    // Convert to a tri mesh if possible
    else if(os->obj->CanConvertToType(polyObjectClassID)) 
    {
            PolyObject  *polyOb = (PolyObject *)os->obj->ConvertToType(t, polyObjectClassID);
            // Now stuff this into the pipeline!
            os->obj = polyOb;

            ModifyPolyObject(polyOb, t, mc, 3);
    }

    os->obj->SetChannelValidity (GEOM_CHAN_NUM, valid);
    os->obj->SetChannelValidity (TOPO_CHAN_NUM, valid);

    os->obj->SetChannelValidity (VERT_COLOR_CHAN_NUM, valid);
    os->obj->SetChannelValidity (TEXMAP_CHAN_NUM, valid );
    os->obj->SetChannelValidity (SELECT_CHAN_NUM, valid);
    os->obj->SetChannelValidity (MTL_CHAN_NUM, valid);
}
有没有关于是什么原因导致3ds Max没有为我的网格提供贴图数据的想法


谢谢你的时间。

由于这里的回复,我最终弄明白了

没有点击链接,我只需要确保更新

ChannelMask ChannelsUsed(); ChannelMask ChannelsChanged()

最初,它们分别设置为其默认值:地形通道、几何通道和几何通道

将ChannelIsChanged()更新为GEOM|u CHANNEL | TOPO|u CHANNEL | TEXMAP|u CHANNEL | VERTCOLOR|u CHANNEL解决了该问题