3

关于将 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 一起使用?

把它代替几何没有帮助。

4

2 回答 2

3

您可以通过使用THREE.JSONLoader.parse代替来做到这一点THREE.JSONLoader.load

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

由于不必发出 AJAX 请求,因此调用是同步的。

于 2013-06-11T19:52:36.670 回答
2

您需要使用如下模式:

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 ] );

三.js r.58

于 2013-06-15T14:09:40.590 回答