在Blender中获取KX_PolygonMaterial的实例

时间:2013-01-02 16:56:36

标签: python textures game-engine blender material

我有一个关于在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。如果我正在运行Blender游戏引擎,我不应该得到KX_PolygonMaterial吗?无论如何都要使用KX_BlenderMaterial更改颜色或纹理,因为我在文档中找不到任何内容。我可以从上面的代码中获得KX_PolygonMaterial的实例吗?

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

谢谢!

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

1 个答案:

答案 0 :(得分: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仪表在游戏中成功变为红色。

此外,我尝试的另一种方法是获取对象的网格,获取网格的材质,并更改它的每个顶点颜色。这也不起作用,但是我推测如果在材料菜单中选中了Vertex Color Paint选项它会。我没有测试过这个。