【问题标题】:Getting an instance of KX_PolygonMaterial in Blender在 Blender 中获取 KX_PolygonMaterial 的实例
【发布时间】:2012-12-17 01:12:33
【问题描述】:

我有一个关于在 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,以防有人想知道。

【问题讨论】:

    标签: python textures game-engine blender


    【解决方案1】:

    我确定了一种使用 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 选项,它会。不过我还没有测试过。

    【讨论】:

      猜你喜欢
      • 2018-07-04
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多