私は現在、bge (ブレンダー ゲーム エンジン) でトロンのようなゲーム モデルを実現しようとしています。これを行う唯一の方法は、GLSL シェーダーを使用することだと思います。この強力なツールの使い方を学ぶことに非常に興味があります。http://en.wikibooks.org/wiki/GLSL_Programming/Blenderというチュートリアル Web サイトを 1 つだけ見つけました。どれだけ調べても、トロンルックに必要なことを行う方法を見つけることができないようです. 私がそれをどのようにやりたいかというと、マテリアルが通常レンダリングされる場所は黒、「光」を追加する場所は白のセカンダリ テクスチャを持つことです。少しブルームをつけて日陰なしで描かれた光。
これがスタイルです: http://imgur.com/a/6vOwN
答えが見つからないように見える質問は次のとおりです。
マテリアル間で一致する色を取得するにはどうすればよいでしょうか。マテリアルのその部分が白 (明るい) か黒 (不透明) かを判断できますか?
影なしまたは不透明として出力できるように、マテリアルから色を取得するにはどうすればよいですか?
ブルームを追加するにはどうすればよいですか?
私の現在のコード(何もしない)は次のようになります。
(これは、ブレンダーが使用する構造を示すためのものです)
import bge
cont = bge.logic.getCurrentController()
VertexShader = """
varying vec4 color;
void main()
{
color = gl_MultiTexCoord0; // set the varying to this attribute
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
"""
FragmentShader = """
varying vec4 color;
void main()
{
gl_FragColor = color;
}
"""
mesh = cont.owner.meshes[0]
for mat in mesh.materials:
shader = mat.getShader()
if shader != None:
if not shader.isValid():
shader.setSource(VertexShader, FragmentShader, 1)