从变量加载模型

时间:2013-06-11 19:47:06

标签: javascript three.js

有关将Three.js模型加载到场景中的所有建议都涉及JSONLoader

var loader = new THREE.JSONLoader();
var createMesh = function(geometry) { 
   var zmesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial() );
   zmesh.position.set( 0, 0, 0 );
   zmesh.scale.set( 3, 3, 3 );
   zmesh.overdraw = true;
   scene.add(zmesh);
};
loader.load("the_model.js", createMesh);

但是,如果我想使用已加载<script>标签的JavaScript文件,该怎么办?

var the_model = {
   "metadata" : {
      "formatVersion" : 3.1,
      .......................
   },
   "scale" : 1.000000,
   "materials" : [ {
   ........................
}

如何将此var the_model与Three.js一起使用?

用它代替几何图形没有帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用THREE.JSONLoader.parse代替THREE.JSONLoader.load来完成此操作:

var loader = new THREE.JSONLoader();
var geometry = loader.parse(the_model);
createMesh(geometry);

由于不必进行AJAX请求,因此呼叫是同步的。

答案 1 :(得分:1)

您需要使用如下模式:

var loader = new THREE.JSONLoader();
var model = loader.parse( the_model );

var mesh = new THREE.Mesh( model.geometry, new THREE.MeshBasicMaterial() );
scene.add( mesh );

如果您在模型中添加材料,则可以执行以下操作:

var mesh = new THREE.Mesh( model.geometry, materials[ 0 ] );

three.js r.58