0

我有一个关于在 Blender 的游戏引擎中使用 Python 的问题。

在开始之前,我想声明我正在尝试更改 Blender 游戏引擎中对象的颜色。为此,我试图找到一种方法来更新对象的纹理(我基本上想要两个或三个状态,红色、(黄色)、绿色)。

我现在正在做的是:

scene = GameLogic.getCurrentScene();    
pingMeter = scene.objects['Ping Meter'];
mesh = pingMeter.meshes;
materials = mesh[0].materials;
material = materials[0];

但是,当我这样做时,print(material.__class__.__name__)它会输出KX_BlenderMaterial. KX_PolygonMaterial如果我正在运行 Blender 游戏引擎,我不应该得到吗?反正有没有改变颜色或纹理,KX_BlenderMaterial因为我在文档中找不到任何东西。我可以KX_PolygonMaterial从上面的代码中得到一个实例吗?

...或者我应该一起采取不同的方法吗?

谢谢!

编辑:我正在使用 Blender 2.65,它使用 Python 3,以防有人想知道。

4

1 回答 1

0

我确定了一种使用 Blender 2.65 在 Python 中更改对象材质颜色的方法。在我上面的方法之前,我只是尝试了类似的东西:

scene = GameLogic.getCurrentScene();
pingMeter = scene.objects['Ping Meter'];
red = mathutils.Vector((1.0, 0.0, 0.0, 1.0));
pingMeter.color = red;

然而,这并没有改变材质的颜色(应该变成红色,并且对象也被正确点亮)。我发现必须在对象的材料菜单下选中一个选项,即Object Color. 选中此框后,ping 表在游戏中成功变为红色。

Additionally, another method I attempted was to get the mesh of the object, get the material of the mesh, and change each vertex color of it. This did not work either, however I speculate that if the Vertex Color Paint option is checked in the materials menu that it would. I have not tested this though.

于 2013-01-03T16:41:23.833 回答