1

これが私の問題です:

問題 .

テキストの影はそこにあるべきではなく、shadowMap の解像度を変更しても何も変わりません。これは、メッシュの生成に使用されるコードです。

var materialArray_Flying = [
        new THREE.MeshPhongMaterial( { color: 0xff00ff, ambient: 0xff00ff } ), //face
        new THREE.MeshPhongMaterial( { color: 0x008888, ambient: 0x008888 } )]; //sides

var textGeom_Flying = new THREE.TextGeometry( "{Flying}",
        {
        size: 4, height: .25, curveSegments: 3,
        font: "helvetiker", weight: "bold", style: "normal",
        bevelThickness: 0.025, bevelSize: 0.05, bevelEnabled: true,
        material: 0, extrudeMaterial: 1
        });
var textMesh_Flying = new THREE.Mesh(textGeom_Flying, new THREE.MeshFaceMaterial(materialArray_Flying));
scene.add(textMesh_Flying);
textMesh_Flying.castShadow = true;
textMesh_Flying.receiveShadow = true;

私のレンダラーは次のように設定されています。

var renderer = new THREE.WebGLRenderer({antialias: true});
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.shadowCameraNear = 3;
renderer.shadowCameraFar = camera.far;
renderer.shadowCameraFov = 50;
renderer.setClearColor(0x000000, 1);
renderer.shadowMapWidth = 4096;
renderer.shadowMapHeight = 4096;

どんな援助も大歓迎です。

4

1 に答える 1

1

あなたが見ているのは、オブジェクトが単位空間で非常に小さく、シャドウ マッピング テクニックがそのような小さなフロートを使用可能なテクスチャに変換するのに苦労しているという事実によるものだと思います。さらに、非常に「薄い」ジオメトリを使用すると、最小の shadowCameraNear 値でさえ、メッシュを通して「見る」のに十分な大きさになることがあります。

私は2つの解決策を見ることができます。

1) メイン メッシュでのシャドウの受け入れを停止する

textMesh_Flying.receiveShadow = false;

または 2) シーン全体のサイズ/文字の太さを増やして、シャドウ アルゴリズムに遊びの「肉」を与えます。

注: を試して、shadowCameraNear = 0.001;それが役立つかどうかを確認できます。

それが役立つことを願って、

于 2013-10-21T13:56:33.547 に答える