1

我正在尝试使用 json 文件渲染一个非常复杂的模型。json 文件的大小是 40MB,这是一个巨大的数据,我可以在画布上渲染模型。

现在的问题是渲染非常非常缓慢。如果我尝试旋转模型或放大,整个浏览器就会挂起,这太慢了。

作为 webgl 的新手,我不知道是什么导致了这个问题。环顾四周没有发现任何东西。

是影响渲染的json文件的大小吗?我怎样才能使性能更好?应该提一下,这不是显卡的问题。身体浏览器之类的东西非常快。

我正在为此方法使用three.js jason loader

loader = new THREE.JSONLoader();
loader.load( 'file.js', function ( geometry ) {
    geometry.computeVertexNormals();
    mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( ) );
    scene.add( mesh );
} );

对于渲染,我在 init 中执行此操作

renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );

在 animate() 中调用渲染函数

function animate() {
    requestAnimationFrame( animate );
    render();
    stats.update();
}

并在渲染函数中像这样旋转网格

function render() {
    mesh.rotation.x += ( targetXRotation - mesh.rotation.x ) * 0.05;
    mesh.rotation.y += ( targetYRotation - mesh.rotation.y ) * 0.05;
    renderer.render( scene, camera );
}
4

2 回答 2

2

您将此问题标记为“webgl”,所以我认为您想使用WebGL渲染器:

renderer = new THREE.WebGLRenderer();

而不是画布

renderer = new THREE.CanvasRenderer();
于 2012-05-11T13:14:13.213 回答
2

这可能取决于 40meg 文件的结构。有多少个单独的模型?模型越多,速度就越慢。

我所说的模型是什么意思?

好吧,如果你进入你最喜欢的建模包并制作 2 个球体,你就有 2 个模型。如果您制作 1000 个球体,假设每个球体 1000 个多边形并导出它可能会运行缓慢。但是,如果您知道如何将这 1000 个球体模型折叠成一个包含 1000 个球体的模型并再次导出,它可能会运行得很快。

画一件大事往往比画一千件小事要快。

于 2012-05-12T01:53:54.523 回答