1

重複の可能性:
Three.js でテクスチャを読み込めない

私は ThreeJs とブレンダーに関する限り初心者なので、これはばかげた質問に思えるかもしれません。JSONLoader を使用してモデルをロードしようとしています。threejs ブレンダー エクスポートを使用して、collada モデルを js にエクスポートしました。ただし、ファイルから直接資料を取得することはできません。

確認したところ、画像ファイルへの属性がjsファイルにないことがわかりました。つまり、「mapDiffuse」属性がありません。それはエラーですか。もしそうなら、何か提案はありますか?または、材料をロードする他の方法はありますか?

PSこれは私がダウンロードしたコラーダモデルだったので、テクスチャ画像が提供されていましたが、ブレンダーエクスポートはそれに気づきませんでした.

私のモデルjsファイルの一部

{

"metadata" :
{
    "formatVersion" : 3.1,
    "generatedBy"   : "Blender 2.64 Exporter",
    "vertices"      : 1172,
    "faces"         : 2209,
    "normals"       : 736,
    "colors"        : 0,
    "uvs"           : [1722],
    "materials"     : 1,
    "morphTargets"  : 0,
    "bones"         : 0
},

"scale" : 1.000000,

"materials" : [ {
    "DbgColor" : 15658734,
    "DbgIndex" : 0,
    "DbgName" : "material_2_81_0",
    "blending" : "NormalBlending",
    "colorAmbient" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
    "colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
    "colorSpecular" : [0.5, 0.5, 0.5],
    "depthTest" : true,
    "depthWrite" : true,
    "shading" : "Lambert",
    "specularCoef" : 50,
    "transparency" : 1.0,
    "transparent" : false,
    "vertexColors" : false
},
.
.
.
.
.

"vertices" : [1159.45,531.608,-1808.68,......]
"morphTargets" : [],
"normals" : [-0.101077,0,-0.994873,......]
"colors" : [],
"uvs" : [[0,0,1,0,0,1,....]
"faces" : [42,0,1,2,0,0,1,2,0,1,2,42,0...]

"bones" : [],

"skinIndices" : [],

"skinWeights" : [],

"animation" : {}
}

ありがとうございました

4

1 に答える 1

1

少し前に回答したこの質問は、ほぼ完全に重複しています。ファイルのみを使用してマテリアルをロードできるかどうかはわかりません。運が良かった唯一の方法は、テクスチャをコードから手動でロードしてから適用することです。エクスポーターを使用してジオメトリと UV マッピングをエクスポートするだけで、テクスチャのエクスポートについて心配する必要はありません。単純にそれらを集めて、これをローカルで実行している場合は、サーバーを使用していることを確認してくださいディスクから画像を読み込むことができます。この時点で、モデルをロードしてテクスチャを適用するコードは非常に単純です。今後の参考のために、モデルをロードするために使用するコードも投稿する必要があります。完全にロードされる前に何もレンダリングしようとしないように、指定された関数の引数を利用してコールバックを渡す必要があります。

var tex, mat, mesh;

$(window).load(function () {
    /** Load mesh from JSON, position, scale, add texture and add to scene */
    tex = THREE.ImageUtils.loadTexture('../img/texture.jpg', null, function () {
            mat = new THREE.MeshPhongMaterial({ map: tex });
            loader.load('model.js', function (geo) {
                mesh = new THREE.Mesh(geo, mat);
                mesh.position.set(0, 0, 0);
                mesh.scale.set(20, 20, 20);
                // etc, etc
                scene.add(mesh);
            });
        });
});
于 2012-10-25T14:55:45.887 に答える