2012-07-03 15 views
9

私のゲームには家のモデルがあり、私は家の幾何学のためのいくつかの資料を持っています。家の壁には素材があり、レンガを示すテクスチャマップ画像があります。上記このようにGL_REPEATのようなテクスチャマップを繰り返すには?

var mat = new THREE.MeshPhongMaterial({ 
    ambient: 0x969696, 
    map: THREE.ImageUtils.loadTexture('textures/G/G0.jpg'), 
    overdraw: true,combine: THREE.MultiplyOperation 
}); 

、テクスチャマップは、私はそれがGL_REPEATのように表示したいGL_CLAMPのように表示されます。

どうすればよいですか?

画像が表示されない場合は、thisを確認してください。

答えて

4

これはTHREE.RepeatWrappingと呼ばれています。 loadTextureのデフォルトはTHREE.ClampToEdgeWrappingです(前のリンクのctor関数を参照)。 callbackを使用できるかどうかわかりません(JSのthisはちょっと変わっています(作成されたImageではなく、Textureのように見えます)。署名:

loadTexture: function (path, mapping, callback) { 

より良いあなただけのローカルテクスチャに名前を付け、手動でラップモードを設定する:あなたは、実際のコードを見ずにthreejsと遠くつもりはないよう

var t = THREE.ImageUtils.loadTexture('textures/G/G0.jpg'); 
t.wrapS = t.wrapT = THREE.RepeatWrapping; 

が見える...

+0

私はwrapSを設定しようとしましたが、そのようなwrapTは動作しません。私はおそらく材料が間違っていると思う、私は代わりにShaderMaterialを使用する必要がMeshPhongMaterialを使用する? – user1497753

+0

わかりませんが、私はこれを稼働させようとします。テクスチャは2の累乗でなければなりません。[WebGLRenderer、l。 5721](https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLRenderer.js)。 –

+0

私は同様の問題を抱えていました。私はキューブをスケーリングし、テクスチャは伸ばしました。これを防ぐには 'render()'のように新しいキューブサイズを設定する必要があります: 'texture.repeat.set(2 * cWidth、2 * cHeight);'(テクスチャはスケーリングされていないパターンのように振る舞います)。希望が役立ちます。 –

13

私はでフル作業例を掲載している:コード例の関連部分がある http://stemkoski.github.com/Three.js/Texture-Repeat.html

// for example, texture repeated twice in each direction 
var lavaTexture = THREE.ImageUtils.loadTexture('images/lava.jpg'); 
lavaTexture.wrapS = lavaTexture.wrapT = THREE.RepeatWrapping; 
lavaTexture.repeat.set(2, 2); 
var lavaMaterial = new THREE.MeshBasicMaterial({ map: lavaTexture }); 
var lavaBall = new THREE.Mesh(THREE.GeometryUtils.clone(sphereGeom), lavaMaterial); 
scene.add(lavaBall);  
+0

ありがとうございました!私はキューブと球でテクスチャを繰り返す方法を知っていました。しかし、ジオメトリのマテリアルでテクスチャを繰り返す方法については別の質問があります。私はゲームにロードされたモデルをいくつか持っています。材料は、それぞれが異なるテクスチャイメージを持っているので、私はいくつかの提案や例を教えていただけますか?ありがとう! – user1497753

+1

私はそれを持っています。それはちょうど同じ方法です!私が使用していたイメージは120 * 120のサイズで、128 * 128に変更して、問題を解決しました!イメージのサイズは128 * 128または256 * 256でなければなりません。 – user1497753

+4

はい、繰り返し機能を使用するには、画像の寸法は2の累乗でなければなりません。 –

3

画像は8×8、16×16、32×32、128×128、256×256、512×512など そして、すべてが動作することでなければなりません。 =)

+1

折り返しには、画像を2のべき乗(POT)にする必要がありますが、正方形である必要はありません。 – WestLangley

+0

@ WestLangleyあなたは8x512も同様に動作することを意味しますか? – fuchs777

+1

@ fuchs777それは正しいです。 – WestLangley

関連する問題