1
var crateTexture = new THREE.ImageUtils.loadTexture( 'img src="1.jpg' );
var crateMaterial = new THREE.MeshBasicMaterial( { map: crateTexture } );
var cube = new THREE.Mesh( THREE.GeometryUtils.clone(cubeGeometry), crateMaterial );
 cube.position.set(-60, 50, -100);
scene.add(  cube );     

私はこれを次のように試しましたが、黒く、写真にロードしたものが表示されませんでした

4

1 に答える 1

0

これを引き起こしている可能性のあることがいくつかあります。

最初の行は次のようになります。

var crateTexture = new THREE.ImageUtils.loadTexture( '1.jpg' );

loadTextureHTML 属性ではなく、通常の URLを指定していることに注意してください。

テクスチャが表示されない理由として次に考えられるのは、Web サーバー経由ではなく、ファイル システムからローカルでページを表示していることです。ファイル システム (別名file://ではなく で始まる URL http://) からページを表示している場合、ページがテクスチャをロードしようとするとエラーが発生します。

クロムでは、エラーは次のようになります。

Cross-origin image load denied by Cross-Origin Resource Sharing policy.

テクスチャが表示されない最後の理由は、シーンを常にレンダリングしていないことです。animate()シーンを継続的にレンダリングするある種の関数があることを確認してください。

ブラウザがテクスチャをダウンロードしてロードするのに実際には数秒かかります (これは非同期で行われます)。そのため、シーンを 1 回だけレンダリングすると、画像がダウンロードされる前にレンダリングされる可能性が高くなります。

あなたのコードの動作バージョンのライブ デモがここにあります。そして、ここにコードへのリンクがあります。

于 2012-10-04T04:24:50.573 に答える