2017-07-21 7 views
1

THREE.MeshPhongMaterialでテクスチャを設定しようとしていますが、テクスチャが読み込まれません。 私のコードは:私はTHREE.MeshBasicMaterial()に材料を変更した場合MeshPhongMaterialでテクスチャを動的に設定する方法は?

let earth_geometry = new THREE.SphereGeometry(450, 10, 10) 
let earth_material = new THREE.MeshPhongMaterial({ 
    emissive: 0xffffff 
}) 
let earth = new THREE.Mesh(earth_geometry, earth_material) 
loadImage(earth_material, '/img/earth.jpg') 
scene.add(earth) 

function loadImage(material, url) { 
    let texture = new THREE.TextureLoader().load(url, (e) => { 
    texture.minFilter = THREE.LinearFilter 
    texture.anisotropy = 8 
    material.map = texture 
    material.needsUpdate = true 
    }) 

テクスチャがロードされます。 THREE.MeshPhongMaterialとはうまくいかないのはなぜですか?

答えて

2

テクスチャ変数と何か関係がありますか?
私はあなたがそれを使用しようとした後、彼はテクスチャ変数を設定していると思います。
ローダーコールバックのe引数は、実際にロードされたテクスチャです。
試してみてください。

function loadImage(material, url) { 
    let loader = new THREE.TextureLoader() 
    loader.load(url, (texture) => { 
    texture.minFilter = THREE.LinearFilter 
    texture.anisotropy = 8 
    material.map = texture 
    material.needsUpdate = true 
    // maybe need this too.. 
    material.map.needsUpdate = true; 
    }) 
関連する問題