現在、セル シェーディング スクリプトを使用して、使用しているモデルのランバート マテリアルをシェーディングしています。同じスクリプトを使用したいカスタム シェーダー マテリアルもありますが、言うは易く行うは難しです。カスタム マテリアルをランバート マテリアルに変更する方法があるかどうか疑問に思っていました。いくつか調べてみましたが、何も見つからないようです。どんな助けでも大歓迎です。これはこれまでのコードです。three_lamberton スクリプトは私が使用しているもので、画像を適用するオブジェクトに適用されます。上部のスクリプトは、画像をレイヤー化し、カスタム シェーダー マテリアルを設定するために使用しているものです。一部の画像が素材に複数回読み込まれるという事実は無視してください。現在、プレースホルダーとしてのみ行っています。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Web GL test 2</title>
</head>
<body style="overflow: hidden; background: black;">
<div id="container">
</div>
<script src="three.min.js"></script>
<script src="OBJLoader.js"></script>
<script src="three_lambertoon_c.js"></script>
<script id="fragment_shh" type="x-shader/x-fragment">
#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D tOne;
uniform sampler2D tSec;
uniform sampler2D tThree;
uniform sampler2D tFour;
uniform sampler2D tFive;
uniform sampler2D tSix;
varying vec2 vUv;
void main(void)
{
vec3 c;
vec4 Ca = texture2D(tOne, vUv);
vec4 Cb = texture2D(tSec, vUv);
vec4 Cc = texture2D(tThree, vUv);
vec4 Cd = texture2D(tFour, vUv);
vec4 Ce = texture2D(tFive, vUv);
vec4 Cf = texture2D(tSix, vUv);
c = Ca.rgb * Ca.a + Cb.rgb * Cb.a + Cc.rgb * Cc.a + Cd.rgb * Cd.a
+ Ce.rgb * Ce.a + Cf.rgb * Cf.a * (1.0 - Ca.a - Cb.a - Cc.a - Cd.a - Ce.a);
gl_FragColor= vec4(c, 1.0);
}
</script>
<script id="vertex_shh" type="x-shader/x-vertex">
varying vec2 vUv;
void main()
{
vUv = uv;
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_Position = projectionMatrix * mvPosition;
}
</script>