3

3D hex グリッドを作成しようとしていますが、fog of war を実装したいと考えています。

現時点でグリッドがどのように見えるかのサンプルを次に示します。

three.js 16進グリッド

次のように照明を設定しました。

// hemisphere light
var hemisphereLight = new THREE.HemisphereLight(0xffffff, 0.3);
scene.add(hemisphereLight);

// point light
var pointLight = new THREE.PointLight(0xffffff, 0.7);
pointLight.position = camera.position;
pointLight.rotation.y = Math.PI/2;
scene.add(pointLight);

私がやろうとしているのは、戦争の霧の中にあるタイルを に反応させないようにすることです。そうすれば、タイルはpointLight低い強度しか持たなくなりhemisphereLightます。これを行う方法が見つからないようです。MeshBasicMaterial「戦争の霧」タイルに からの照明を持たせたいので、どのライトにも反応しないを使用するようにタイルを変更することはできませんhemisphereLight

霧の戦争を別の方法で実装するための提案も受け付けています。

アップデート:

カスタムシェーダーを使用して動作させることができました。

戦争の霧の完成

4

1 に答える 1

3

いいコンセプトですね、私見。

本当に、あなたの唯一の選択肢はShaderMaterial、「戦争の霧」タイル用に独自のものを作成することです. シェーダーでは、そうでないすべてのライトを無視しますHemisphereLights

を使用する予定でShaderMaterial、シーン ライトにアクセスできるようにする場合は、マテリアル パラメータを設定する必要があることに注意してくださいlights: true。これには、多くの three.js の例があります。

three.js r.58

于 2013-06-29T10:33:57.677 に答える