在Blender中获取KX_PolygonMaterial的实例

问题描述 投票:0回答:1

我有一个关于在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 Game Engine,是否应该获得KX_PolygonMaterial?无论如何,是否有KX_BlenderMaterial来更改颜色或纹理,因为我在文档中找不到任何内容。我可以从上面的代码中获取KX_PolygonMaterial的实例吗?

...还是我应该一起采取不同的方法?

谢谢!

EDIT:我正在使用Blender 2.65,如果有人想知道的话,它将使用Python 3。

python textures game-engine blender
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仪表在游戏中成功变为红色。

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

© www.soinside.com 2019 - 2024. All rights reserved.