3

繰り返しの頻度がはるかに少ないバンプマップを適用して、テクスチャの繰り返しを分割しようとしています。残念ながら、(1)に設定した値ではなく、(64)の下の「landTexture」の繰り返し値を使用しているようです。

landTexture.wrapS = landTexture.wrapT = THREE.RepeatWrapping;
landTexture.repeat.set(64, 64);
bumpTexture.wrapS = bumpTexture.wrapT = THREE.RepeatWrapping;
bumpTexture.repeat.set(1, 1);
var m = new THREE.MeshPhongMaterial({map:landTexture, 
                                     ambient: 0x552811, 
                                     specular: 0x333333, 
                                     shininess: 25, 
                                     bumpMap: bumpTexture, 
                                     bumpScale: 1, 
                                     metal: false });

コメントアウトするmap:landTextureと、バンプマップの縮尺は1になります。これら2つの繰り返し値をどうにかして混合できますか?

4

2 に答える 2

4

いいえ。オフセット値とリピート値は、デフォルトで次のいずれかになります。

// uv repeat and offset setting priorities
//  1. color map
//  2. specular map
//  3. displacement map
//  4. normal map
//  5. bump map
//  5. roughness map
//  5. metalness map
//  6. alpha map
//  7. emissive map

あなたの場合、それがlandTexture設定になります。

回避策は、テクスチャを変更するか、カスタムを作成することShaderMaterialです。

編集:例外はライトマップとアンビエントオクルージョンマップで、それぞれ2番目のUVセットを使用します。これにより、他のテクスチャをライト/AOマップよりも詳細にすることができます。

three.js r.84

于 2013-01-17T04:30:43.093 に答える
2

はい。最近のバージョンでは、three.jsr90^には、GLSLで組み込みマテリアルの動作を変更するために使用できるAPIがあります。

行うのは簡単ではありませんが、例が作成されています。

https://github.com/pailhead/three.js/blob/aa72250835b82f7dde2e8375775a4b039cb719c6/examples/webgl_materials_extended_multiple_uvs.html

https://github.com/mrdoob/three.js/pull/14174

#include <some_chunk>基本的に、組み込みのマテリアルは、ステートメントの順序付きリストであるシェーダーテンプレートに基づいています。

これらの「チャンク」の一部には、次のようなコードが含まれています

/*...*/ texture2D( foo, vUv ) /*...*/

、、などfooはどこにありますか。これは、補間されたuv属性で、そのサンプラーでテクスチャルックアップが実行されることを意味します。このコードの前にあるもの、またはそれに続くものは実際には気にしません(セミコロンまたはマスクの場合もあります)。alphaMapmapspecularMap;.xy

したがって、必要なのはオフセットを適用することです。つまり、three.jsが行う方法で、mat3変換を適用します。

したがって、GLSLは次のように見える必要があります

texture2D( foo, foo_transform * vUv )

問題は、シェーダーにこのユニフォームを供給することです。この例では、最初にシェーダーをコンパイルし、次に全体を検索することで、少し力を入れています(そうでない場合は、このテクスチャルックアップを検索するチャンクを知る必要があります)。

これは、テクスチャを変更するよりもはるかに優れたソリューションであり、実際にはカスタムを作成するよりも簡単なはずShaderMaterialです。

免責事項-3は、実際にはこのように使用することを意図したものではありませんが、使用することができます。したがって、たとえば、すべてのマップに接頭辞が付いている場合somethingMap、アルベドマップはそうではなく、単にと呼ばれますが、この例の正規表現であるmap場合は、より単純になります。albedoMap

于 2018-06-12T01:16:21.687 に答える