C++中的软映像访问参数
Softimage access parameters in C++
我在这里有点绝望...我正在尝试访问软图像中光源的一个参数。
首先,当我们这样做时:
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中,对象中有某种层次结构,所有这些都作为着色器分开。对于更复杂的对象,只需找到合适的着色器并提取其参数即可。
相关文章:
- 使用不带参数的函数访问结构元素
- 从C++dll访问C#中的一行主要参数
- 函数是否可以访问传递给main()的参数
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 如何从其他功能C++访问参数?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何访问模板参数自己的模板参数?
- 如何访问QT中传递给程序的参数
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 通过C++函数对象类访问参数
- 如何使用和访问参数包的模板参数包
- ARM访问参数与返回值
- 为什么 == 重载可以访问参数的私有成员
- C++中的软映像访问参数
- 重新配置C++代码以处理“警告:未按顺序修改和访问参数”
- 具有多个可访问参数的C++访客模式
- 方法可以访问参数的私有成员吗?
- 在这种特殊情况下,您是否建议使用程序集访问参数
- 如何访问参数包中的第一个参数
- 旧代码:将函数的访问参数作为参数传递给另一个函数