有关将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一起使用?
用它代替几何图形没有帮助。
答案 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