2016-09-08 7 views
1

上のオブジェクトにテクスチャを追加します。Three.js:私はThree.jsで非常に新しいだと私はリングを作るしようとしているだけで外

http://www.websuvius.it/atma/myring/preview.html

を私は背景テクスチャを持っています(銀色のもの)とテキスト付きのものがあります。 私はリングの外面にのみテキストをしたい。

これは私のコードの一部です:

var loader = new THREE.OBJLoader(manager); 
var textureLoader = new THREE.TextureLoader(manager); 

loader.load('assets/3d/ring.obj', function (event) { 

    var object = event; 
    var geometry = object.children[ 0 ].geometry; 
    var materials = []; 

    var backgroundTexture = textureLoader.load('img/texture/silver.jpg'); 

    backgroundTexture.flipY = false; 

    var background = new THREE.MeshBasicMaterial({ 
     map: backgroundTexture, 
     color: 0xffffff 
    }); 



    materials.push(background); 

    var customTexture = textureLoader.load('img/text.png'); 

    customTexture.flipY = false; 

    var custom = new THREE.MeshBasicMaterial({ 
     map: customTexture, 
     transparent: true, 
     opacity: 1, 
     color: 0xffffff 
    }); 

    materials.push(custom); 

    mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, materials); 

    mesh.position.y=-50; 
    scene.add(mesh); 

}, onProgress, onError); 

それは可能ですか? ありがとう

+0

試行 'customTexture.repeat.set(0、0)にオブジェクトをロードした後の頂点のUV座標を調整し;' – guardabrazo

+0

私が試みたが、テクスチャが完全に消失します。 –

+0

テクスチャの透明部分のサイズを大きくして、テクスチャのラップを繰り返す必要がない場合はどうなりますか? – guardabrazo

答えて

1

問題の原因は、.objファイルにあるようです。ファイルに格納されているテクスチャ座標を素早く見れば、リングの内側はテクスチャ画像の同じ部分をリングの外側として使用します。

イメージの透明部分を増やすことは役に立ちません。また、テクスチャの繰り返しを止める試みもありません。テクスチャの座標が1より大きい場合、それらは助けになりますが、残念ながらこれはあなたのケースではありません。外リングの内側 - -

  • スプリット二つのオブジェクトに3Dモデリングソフトウェアでオブジェクトと最初のものだけにテクスチャを適用します。

    はしかし、そこにいくつかのソリューションです。

  • 3DモデリングソフトウェアでオブジェクトのUV座標を調整します。
  • プログラムThree.JS
関連する問題