2

jsonに変換して3dsMaxからインポートしたモデルにテクスチャを追加しようとしています。検索しましたが、three.jsr53を使用してjsonモデルにテクスチャを適用するコードをオンラインで見つけられませんでした。Three.jsがテクスチャを処理する方法が以前のバージョンから変更されたと思います。何かガイダンスはありますか?

以下は私のコードです:

var texloader = new THREE.TextureLoader();
var tex=texloader.load("second.jpg");
var mat = new THREE.MeshBasicMaterial({ map: tex });

loader = new THREE.JSONLoader();
loader.load( "js/JsonModels/toothz.js", function( geometry, mat ) {
    mat[0].shading = THREE.SmoothShading;
    var material = new THREE.MeshFaceMaterial( mat);
    mesh = new THREE.Mesh( geometry, material );
    mesh.scale.set( 3, 3, 3 );
    mesh.position.y = 0;
    mesh.position.x = 0;
    scene.add( mesh );
} );
4

3 に答える 3

8

他の答えが古いバージョンで機能した可能性があります。これが私がそれを機能させた方法です

var textureLoader = new THREE.TextureLoader();
textureLoader.load(url);

// Add the event listener
textureLoader.addEventListener('load', function(event){

    // The actual texture is returned in the event.content
    sphere.material.map = event.content;

});
于 2014-01-27T07:32:18.547 に答える
7

編集: この投稿は、私が回答した時点で 1 年前のものであり、API が変更される直前に私の回答が投稿されたようです。この答えは機能しません ( Kumar Sanket Sahuの言葉を信頼して、テストしていません)

これが1年以上前のものであっても、解決策を探しているときに今それを見つけたので:

textureloader は、テクスチャが読み込まれるとコールバックを提供します。

var texloader = new THREE.TextureLoader();
texloader.load("second.jpg", function(tex) {

  var mat = new THREE.MeshBasicMaterial({ map: tex });

  var loader = new THREE.JSONLoader();
  loader.load( "js/JsonModels/toothz.js", function( geometry, mat ) {
      mat[0].shading = THREE.SmoothShading;
      material = new THREE.MeshFaceMaterial( mat);
      mesh = new THREE.Mesh( geometry, material );
      mesh.scale.set( 3, 3, 3 );
      mesh.position.y = 0;
      mesh.position.x = 0;
      scene.add( mesh );
  } );
});

これは例で機能します。

于 2013-09-25T01:20:41.173 に答える