我有一个关于在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,以防有人想知道。
答案 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
选项它会。我没有测试过这个。