动画gltf three.js中的3d对象
我有一个工作的GLTF对象,并试图在没有AnimationMixer的情况下应用动画,但最后我出现了一个错误:标识符“cube”已经声明。此外,如果我使用网格对象,一切都很好。发生了什么事?谢谢动画gltf three.js中的3d对象,three.js,gltf,Three.js,Gltf,我有一个工作的GLTF对象,并试图在没有AnimationMixer的情况下应用动画,但最后我出现了一个错误:标识符“cube”已经声明。此外,如果我使用网格对象,一切都很好。发生了什么事?谢谢 let cubes, cube; let loader = new THREE.GLTFLoader(); loader.load( 'model/cubes.glb', function ( gltf ) { cubes = gltf.scene; }); cube = new
let cubes, cube;
let loader = new THREE.GLTFLoader();
loader.load(
'model/cubes.glb',
function ( gltf ) {
cubes = gltf.scene;
});
cube = new three.Mesh(cubes);
scene.add(cube);
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
var lastFrameTime = new Date().getTime() / 1000;
var totalGameTime = 0;
function update(dt, t) {
setTimeout(function() {
var currTime = new Date().getTime() / 1000;
var dt = currTime - (lastFrameTime || currTime);
totalGameTime += dt;
update(dt, totalGameTime);
lastFrameTime = currTime;
}, 0);
}
function render() {
renderer.render(scene, camera);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
requestAnimFrame(render);
}
render();
update(0, totalGameTime);
错误表明,您已经声明了变量
cube
两次(在同一范围内)。这里(首先):让立方体,立方体代码>这里(第二个):让立方体=新的三个网格(立方体)代码>移除让
在这里:cube=new three.Mesh(立方体)谢谢,但这并没有解决我的问题。我没有任何错误,但动画也不工作。我有一个黑屏。我怀疑(cube.rotation.y+=0.01;requestAnimFrame(render);)无法同时使用GLTFobjects出现错误“无法读取未定义的属性‘rotation’”。我猜测将同步加载程序。加载到零件,这取决于加载的模型。因为,gltf
的加载是异步的,您将在一段时间后得到一个模型,但这部分:render()代码>立即执行。或者作为一个选项,您可以检查cube
是否未定义undefined
,然后旋转它:if(cube)cube.rotation.x+=0.01
。这部分:新的三点网格(立方体)代码>看起来很奇怪。通常,它是大写的new THREE
,就像您在这里使用的:let loader=new THREE.GLTFLoader()代码>我尝试将验证应用于旋转(如果(cube)cube.rotation.x+=0,1),但没有帮助。我找不到任何带有旋转(不带AnimationMixer)的动画GLTF对象的作业示例。如果我更改网格上的gltf对象,那么一切都正常。错误表明,您已声明变量cube
两次(在同一范围内)。这里(首先):让立方体,立方体代码>这里(第二个):让立方体=新的三个网格(立方体)代码>移除让
在这里:cube=new three.Mesh(立方体)谢谢,但这并没有解决我的问题。我没有任何错误,但动画也不工作。我有一个黑屏。我怀疑(cube.rotation.y+=0.01;requestAnimFrame(render);)无法同时使用GLTFobjects出现错误“无法读取未定义的属性‘rotation’”。我猜测将同步加载程序。加载到零件,这取决于加载的模型。因为,gltf
的加载是异步的,您将在一段时间后得到一个模型,但这部分:render()代码>立即执行。或者作为一个选项,您可以检查cube
是否未定义undefined
,然后旋转它:if(cube)cube.rotation.x+=0.01
。这部分:新的三点网格(立方体)代码>看起来很奇怪。通常,它是大写的new THREE
,就像您在这里使用的:let loader=new THREE.GLTFLoader()代码>我尝试将验证应用于旋转(如果(cube)cube.rotation.x+=0,1),但没有帮助。我找不到任何带有旋转(不带AnimationMixer)的动画GLTF对象的作业示例。如果我更改网格上的gltf对象,则一切都正常。