实例几何体 Frustum 剔除 [英] Instance geometry Frustum culling

查看:35
本文介绍了实例几何体 Frustum 剔除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在截锥体剔除方面遇到了问题.我们知道在 Three.js 中视锥剔除是默认的,如果需要我们可以设置

I am facing a issue in frustum culling. We know in Three.js frustum culling is default, if needed we can set

mesh.frustumCulled =false;

mesh.frustumCulled =false;

我的问题是如何在实例几何中实现截锥体剔除,如果我启用

my issue is how to implement frustum culling in instance geometry, If i enable

mesh.frustumCulled = true

mesh.frustumCulled = true

所有实例数据都是从场景中剔除的,而原始实例是从视锥体中剔除的,因为我的原始几何体在一个位置,所以实例将被矩阵(位置、旋转、缩放)放置.我使用了 InstanceBufferGeometry 和 InterleavedBufferAttribute,如three.js 示例中所述webgl_interactive_instances_gpu

all the instance data culled from scene while the original instance culled from frustum, because my original geometry is in one position, instance will be place by the matrix(position,rotation,scale). I used InstanceBufferGeometry and InterleavedBufferAttribute as described in three.js example webgl_interactive_instances_gpu

提前致谢..

推荐答案

Instancing 发生在 gpu 上;cpu 上的视锥体剔除.

Instancing occurs on the gpu; frustum culling on the cpu.

如果您正在使用实例化,您可以禁用网格的视锥剔除

If you are using instancing, you can either disable frustum culling for your mesh

mesh.frustumCulled = false;

或者您可以手动指定边界球

or you can manually specify the bounding sphere

mesh.geometry.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );

如果需要更新绑定球体,

If you need to update the bound sphere,

mesh.geometry.boundingSphere.center.set( x, y, z );
mesh.geometry.boundingSphere.radius = radius;

three.js r.93

three.js r.93

这篇关于实例几何体 Frustum 剔除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆