0

Blender のゲーム エンジンでの Python の使用に関して質問があります。

始める前に、Blender のゲーム エンジンでオブジェクトの色を変更しようとしていることを述べたいと思います。これを行うために、オブジェクトのテクスチャを更新する方法を見つけようとしています (基本的には、赤、(黄)、緑の 2 つまたは 3 つの状態が必要です)。

私が今していることは次のとおりです。

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

ただし、実行print(material.__class__.__name__)すると出力されますKX_BlenderMaterialKX_PolygonMaterialBlender Game Engine を実行している場合、取得するべきではありませんか? KX_BlenderMaterialドキュメントに何も見つからないため、色やテクスチャを変更する方法はありますか? KX_PolygonMaterial上記のコードから のインスタンスを取得できますか?

...それとも別のアプローチを取るべきですか?

ありがとう!

編集:誰かが疑問に思っている場合に備えて、Python 3 を使用する Blender 2.65 を使用しています。

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 メーターがゲーム内で正常に赤に変わります。

さらに、私が試みた別の方法は、オブジェクトのメッシュを取得し、メッシュのマテリアルを取得し、その各頂点の色を変更することでした。これも機能しませんでしたが、Vertex Color Paintオプションがマテリアルメニューでチェックされている場合は機能すると推測しています. 私はこれをテストしていません。

于 2013-01-03T16:41:23.833 に答える