ColladaLoader可以't装载两种不同的型号
ColladaLoader can't load two different models
如果我运行下面的示例,会出现以下错误:
Uncaught TypeError: Cannot read property 'x' of undefinedt @ three.min.js:462renderBuffer @ three.min.js:549k @ three.min.js:450render @ three.min.js:561render @ loaderTest.html:46
这是它调用render()的最后一行
如果我用loader.load(..)两次加载同一个模型,则不会发生错误,只有当我选择不同的模型时才会发生错误。
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var light = new THREE.AmbientLight( 0xFFFFFF );
scene.add( light );
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load("models/model1.dae", function(colladaModel){
var model = colladaModel.scene;
model.position.set(0,0,0);
scene.add(model);
});
loader.load("models/model2.dae", function(colladaModel){
var model = colladaModel.scene;
model.position.set(20,0,0);
scene.add(model);
});
camera.position.z = 100;
var render = function () {
requestAnimationFrame( render );
renderer.render(scene, camera);
};
render();
您正在践踏model
变量。在加载模型之前,您提供的回调不会运行,但它也已经开始加载另一个。
model = colladaModel.scene;
您没有声明您的变量model
,这使它成为一个全局变量,因此在浏览器范围内以及这两个回调之间共享)。实际上,你在那里使用的是window.model
。
将其更改为:
var model = colladaModel.scene;
相关文章:
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 把两种不同的形式合为一
- 这两种不同的创建对象文字的方法有什么区别
- angularjs两种功能的替代品(欧芹和重置)
- 我想要相同的函数以两种方式反应
- HTML中两种JS实现之间的差异
- 比较两种不同格式的时间戳-GAS
- 这两种方法有什么不同
- 正则表达式,两种方式,不同的结果
- 如何将两种不同类型的事件附加到同一元素
- 我可以使用Javascript的.serializeArray()函数添加两种形式的元素吗
- javascript现在可以创建两种货币格式
- 是否可以在一个jquery字符串中使用两种颜色的字体
- ColladaLoader可以't装载两种不同的型号
- 使用web音频API(耳机和扬声器)可以区分两种不同的声音
- Javascript可以在一个元素的两种不同的CSS样式之间切换
- 可以通过两种方式调用的单个函数
- 当ng-show可以在两种情况下工作时,为什么要使用ng-hide呢?
- 是否可以在画布的同一路径上使用两种不同的笔触样式?
- 有没有一种方法可以实现两种不同的功能