使用Three.js加载对象失败(缺少形式参数)

时间:2014-01-22 17:44:00

标签: javascript three.js

我想使用Three.js(OGL + JavaScript)从文件加载对象。我有一个工作的例子,没有加载它(一些基本元素呈现)。但是当我尝试使用JSONLoader.load(...)加载对象时,Firefox控制台会显示错误:

SyntaxError: missing formal parameter

参考:http://threejs.org/docs/#Reference/Loaders/JSONLoader

我添加的片段(加载对象)的源代码,它会导致错误:

//loading an object
var loader = new THREE.JSONLoader(); //works so far
loader.load("./Project2/proj/grzyb.js", 
    function(geometry, 
        new THREE.MeshLambertMaterial( { map: texture, ambient: 0xbbbbbb } )
        //for the line above, in Firefox console i get 
        //"SyntaxError: missing formal parameter"
    ){
        var materials = new THREE.MeshFaceMaterial(
            new THREE.MeshLambertMaterial( { map: texture, ambient: 0xbbbbbb } )
        );
        grzyb = new THREE.Mesh(geometry, materials);
        grzyb.scale.set(5, 5, 5);
        grzyb.position.set(2,2,2);
        grzyb.receiveShadow = true;
        grzyb.castShadow = true;
        scene.add(grzyb);
    }
);

1 个答案:

答案 0 :(得分:0)

您正在尝试将MeshLambertMaterial创建插入到函数头定义中。函数头只能包含参数名 - 而不是任何创建它们的实际代码。

目前尚不清楚是否要使用来自模型文件的材料或您自己的材料以及在其他地方加载的纹理(在示例中没有可设置纹理变量的代码)。假设您要使用模型中的材质,您的代码应如下所示:

var loader = new THREE.JSONLoader(); //works so far
loader.load("./Project2/proj/grzyb.js", 
function(geometry, materials) {
    var material = new THREE.MeshFaceMaterial( materials );
    grzyb = new THREE.Mesh(geometry, material);
    grzyb.scale.set(5, 5, 5);
    grzyb.position.set(2,2,2);
    grzyb.receiveShadow = true;
    grzyb.castShadow = true;
    scene.add(grzyb);
    }

);

如果您想使用不同的材料,请将材质变量设置为您想要的任何内容。 〔实施例:

var texture = THREE.ImageUtils.LoadTexture( "../path/image.jpg" );
var material = new THREE.MeshBasicMaterial( { map:texture } );
var grzyb = new THREE.Mesh(geometry, material);