C++中的软映像访问参数

Softimage access parameters in C++

本文关键字:访问 参数 映像 C++      更新时间:2023-10-16

我在这里有点绝望...我正在尝试访问软图像中光源的一个参数。

首先,当我们这样做时:

light.GetParameterValue(L"LightExponent")

它有效!

但是当我们尝试时:

light.GetParameterValue(L"soft_light.atten")

它完全失败了!

我试图找到文档,但我唯一能找到的代码是 Python 格式,C++ 中没有等效代码的指示。在python中,他们设法做这样的事情:

xsi = Application
test = xsi.GetValue("LightName.point.soft_light.atten")

但是我无法弄清楚什么是应用程序,它与API中的XSI::Application不同。

那么,知道如何访问此值吗?另外,如果我能找到等效的Application.GetValue(在脚本中,你可以看到Application.SetValue...所以我想 GetValue 以某种形式存在!C++,那就太好了...我可以简单地使用灯的名称,然后添加访问该值所需的信息,例如:

SomeUnknownClassForNow::GetValue(light.GetName() + ".point.soft_light.atten");

知道吗?

在我们客户的帮助下,我终于设法找到了合适的解决方案。

首先,有一些直接参数,如"LightExponent"。但是,在其他类别中,还有其他与对象(如光源)关联的参数,称为着色器。

对于光源,或者至少是点光源,只有一个着色器,称为"soft_light"。可以通过以下方式访问它:

light.GetShaders()[0]

可以使用 GetName() 验证其名称。在这种情况下,这将是"LightName.point.soft_light"。

最后,要访问 "soft_light.atten" 参数:

light.GetShaders()[0].GetParameterValue("atten")

因此,在Softimage中,对象中有某种层次结构,所有这些都作为着色器分开。对于更复杂的对象,只需找到合适的着色器并提取其参数即可。