MeshFaceMaterial/ JSON材质错误

MeshFaceMaterial/ JSON material error

本文关键字:错误 JSON MeshFaceMaterial      更新时间:2023-09-26

使用下面的代码我的模型加载得很好:

loader.load( "js/charWalk01.js", function( geometry, materials ) {
                mesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() );
                scene.add( mesh );
            } );

然而,当我尝试使用MeshFaceMaterial(以便在JSON文件中使用材料)时,我得到两个非常奇怪的three.min.js错误消息(如下)。

loader.load( "js/charWalk01.js", function( geometry, materials ) {
                materials[ 0 ].morphTargets = true;
                mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial() );
                scene.add( mesh );
            } );

错误如下:

    TypeError: 'undefined' is not an object (evaluating 'a.map') three.min.js:347
    TypeError: 'undefined' is not an object (evaluating 'ma.attributes') three.min.js:429

JSON文件是完全正常的(用OBJ转换器创建),这里是它的材料代码:

    "materials": [  {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "Mat.1",
"colorDiffuse" : [1.0, 1.0, 1.0],
"colorSpecular" : [0.4, 0.52, 0.53],
"illumination" : 4,
"mapDiffuse" : "Character_01.jpg"
}],

关于为什么会出现这些错误有什么帮助吗?

欢呼,伊恩。

需要将materials作为参数传递给MeshFaceMaterials,如下所示:

loader.load( "js/charWalk01.js", function( geometry, materials ) {
    materials[ 0 ].morphTargets = true;
    mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
    scene.add( mesh );
} );

three.js r.53