1

Object3D を次のようにインポートしました。

var globalObject; // this is a global object

var loader = new THREE.ObjectLoader();
loader.load('path/to/object3d.json', function(object) {
    globalObject = object;
    scene.add(globalObject);
});

私が達成したいのは、ユーザーがボタンをクリックすると、オブジェクト全体の特定のメッシュ要素がテクスチャを取得することです。私はこのようにします:

// on button click {
    for(var i in globalObject.children) {
        // apply to Mesh of interest {
            var texture = THREE.ImageUtils.loadTexture('path/to/image.jpg');
            globalObject.children[i].material = new THREE.MeshLambertMaterial({map: texture, needsUpdate: true});
        } // end apply to Mesh of interest
    }
} // end on button click

上記のコードは、テクスチャの設定に関しては機能しているようです。ここでの問題は、テクスチャが少し歪んで見えることです。こんな感じhttp://db.tt/S5VEsByd

これを修正して、両方のサーフェスに完全なテクスチャが適用されるようにするにはどうすればよいですか?

4

1 に答える 1

4

これでうまくいくはずです:

// on button click {
    for(var i in globalObject.children) {
        // apply to Mesh of interest {
            var texture = THREE.ImageUtils.loadTexture('path/to/image.jpg');
            texture.wrapS = THREE.RepeatWrapping;
            texture.wrapT = THREE.RepeatWrapping;
            globalObject.children[i].material = new THREE.MeshLambertMaterial({map: texture, needsUpdate: true});
        } // end apply to Mesh of interest
    }
} // end on button click
于 2013-09-04T22:24:49.653 に答える