WebGLRenderer の PhongMaterial で THREE.SpotLight にライト クッキー (またはゴボ、ライト テクスチャ、またはライト マスク) を実装しようとしています。目的は、次のようなライトのテクスチャをアタッチできるようにすることです。投影。
スポットライト コーン/スポットでの位置の計算に問題があるため、テストはできていませんが、「ライトにテクスチャをアタッチし、シェーダーでルックアップ用のユニフォームとして渡す」はカバーされていると思います。
スポットライトの光の寄与がここで計算されていることがわかります (独自のマテリアルを作成するのではなく、Three.js ソースを直接変更しています)。
https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLShaders.js#L1013
スポットライトのスポットは丸ですよね?または、角度がある場合は楕円。そのため、ここにコードを追加する必要があります。これにより、スポットライト スポットのどこにいるか (xy 座標) がわかります。これらの座標をテクスチャ ルックアップにマッピングし、それに応じてスポット拡散を下げ、できればゴボ プロジェクションが機能するようにします。
各ライトに関連してこれらの座標を計算するにはどうすればよいですか?
または、Three.js でライト クッキー / ゴボ / ライト テクスチャ / ライト マスクを実装するより良い方法はありますか? これはゲーム エンジンで人気のある機能だと思います。そのような機能が組み込まれているとよいでしょう。http://docs.unity3d.com/Documentation/Components/class-Light.htmlは、私が探しているもの (クッキーの部分) をかなりよく説明しています。