0

ブレンダーからエクスポートしたメッシュでマテリアルを取得しようとしています。JSONLoader を使用するとメッシュは問題なく表示されますが、エクスポートしたマテリアルを取得できません。私はどこでも答えを探しましたが、運がありませんでした。これが私のコードです:

function init() {
            renderer = new THREE.WebGLRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild( renderer.domElement );

            camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
            camera.position.z = 10;
            camera.position.y = 3;

            scene = new THREE.Scene();

            loader = new THREE.JSONLoader(true);
            var texture = THREE.ImageUtils.loadTexture( 'bear_diffuse1.png' );
            var material = new THREE.MeshBasicMaterial({map: texture});

            loader.load( "bear_MODEL.js", createMesh, '' );
}

function createMesh(geometry, materials){
            mesh = new THREE.Mesh(geometry, THREE.MeshFaceMaterial(materials));
            mesh.scale.set( 5, 5, 5 );
            scene.add( mesh );
            camera.lookAt(mesh.position);
}

これにより、モデルがランダムな色になります。私も試しました:

メッシュ = 新しい THREE.Mesh(ジオメトリ、新しい THREE.MeshFaceMaterial(マテリアル));

メッシュを作成するためですが、これにより webgl エラーが発生します。

.WebGLRenderingContext: GL エラー:GL_INVALID_OPERATION: glDrawElements: 属性 1 の範囲外の頂点にアクセスしようとしています

答えを探していましたが、誰もがこれらのオプションを提案しているようで、どれも機能していません。ブレンダーからエクスポートされたマテリアルは次のとおりです。

"materials" : [ {
    "DbgColor" : 15658734,
    "DbgIndex" : 0,
    "DbgName" : "Material.001",
    "blending" : "NormalBlending",
    "colorAmbient" : [0.3838607966899872, 0.3780101239681244, 0.4000000059604645],
    "colorDiffuse" : [0.3838607966899872, 0.3780101239681244, 0.4000000059604645],
    "colorSpecular" : [0.0, 0.0, 0.0],
    "depthTest" : true,
    "depthWrite" : true,
    "mapDiffuse" : "bear_diffuse1.png",
    "mapDiffuseWrap" : ["repeat", "repeat"],
    "shading" : "Basic",
    "specularCoef" : 50,
    "transparency" : 1.0,
    "transparent" : false,
    "vertexColors" : false
},

{
    "DbgColor" : 15597568,
    "DbgIndex" : 1,
    "DbgName" : "Material.001",
    "blending" : "NormalBlending",
    "colorAmbient" : [0.3838607966899872, 0.3780101239681244, 0.4000000059604645],
    "colorDiffuse" : [0.3838607966899872, 0.3780101239681244, 0.4000000059604645],
    "colorSpecular" : [0.0, 0.0, 0.0],
    "depthTest" : true,
    "depthWrite" : true,
    "mapDiffuse" : "bear_diffuse1.png",
    "mapDiffuseWrap" : ["repeat", "repeat"],
    "shading" : "Basic",
    "specularCoef" : 50,
    "transparency" : 1.0,
    "transparent" : false,
    "vertexColors" : false
},

ここからどこへ行くべきか、私が何を間違っているのかわかりません。 EDIT Iマテリアルからテクスチャを削除しましたが、うまくいきました。テクスチャが webGL エラーをスローしないようにする方法を知っている人はいますか?

4

1 に答える 1

0

私はそれを考え出した。私のモデルには UV がなかったため、テクスチャにマッピングするものがなく、webGL エラーが発生しました。無意味な質問ですみません。

于 2013-06-20T18:25:20.063 に答える