手册
- 起步
- 进阶
- 构建工具
参考
- 动画
- 动画 / 轨道
- 音频
- 摄像机
- 常量
- 核心
- 核心 / BufferAttributes
- 附件
- 附件 / 核心
- 附件 / 曲线
- 附件 / 物体
- 几何体
- 立方缓冲几何体(BoxGeometry)
- 圆形缓冲几何体(CircleGeometry)
- 圆锥缓冲几何体(ConeGeometry)
- 圆柱缓冲几何体(CylinderGeometry)
- 十二面缓冲几何体(DodecahedronGeometry)
- 边缘几何体(EdgesGeometry)
- 挤压缓冲几何体(ExtrudeGeometry)
- 二十面缓冲几何体(IcosahedronGeometry)
- 车削缓冲几何体(LatheGeometry)
- 八面缓冲几何体(OctahedronGeometry)
- 参数化缓冲几何体(ParametricGeometry)
- 平面缓冲几何体(PlaneGeometry)
- 多面缓冲几何体(PolyhedronGeometry)
- 圆环缓冲几何体(RingGeometry)
- 形状缓冲几何体(ShapeGeometry)
- 球缓冲几何体(SphereGeometry)
- 四面缓冲几何体(TetrahedronGeometry)
- 文本缓冲几何体(TextGeometry)
- 圆环缓冲几何体(TorusGeometry)
- 圆环缓冲扭结几何体(TorusKnotGeometry)
- 管道缓冲几何体(TubeGeometry)
- 网格几何体(WireframeGeometry)
- 辅助对象
- 灯光
- 灯光 / 阴影
- 加载器
- 加载器 / 管理器
- 材质
- 基础线条材质(LineBasicMaterial)
- 虚线材质(LineDashedMaterial)
- 材质(Material)
- 基础网格材质(MeshBasicMaterial)
- 深度网格材质(MeshDepthMaterial)
- MeshDistanceMaterial
- Lambert网格材质(MeshLambertMaterial)
- MeshMatcapMaterial
- 法线网格材质(MeshNormalMaterial)
- Phong网格材质(MeshPhongMaterial)
- 物理网格材质(MeshPhysicalMaterial)
- 标准网格材质(MeshStandardMaterial)
- MeshToonMaterial
- 点材质(PointsMaterial)
- 原始着色器材质(RawShaderMaterial)
- 着色器材质(ShaderMaterial)
- 阴影材质(ShadowMaterial)
- 点精灵材质(SpriteMaterial)
- 数学库
- 数学库 / 插值
- 物体
- 渲染器
- 渲染器 / 着色器
- 渲染器 / WebXR
- 场景
- 纹理贴图
示例
- 动画
- 控制
- 几何体
- 辅助对象
- 灯光
- 加载器
- 物体
- 后期处理
- 导出器
- 数学库
- QuickHull
- 渲染器
- 实用工具
开发者参考
- 差异化支持
- WebGL 渲染器
多细节层次(LOD,Levels of Detail)
多细节层次 —— 在显示网格时,根据摄像机距离物体的距离,来使用更多或者更少的几何体来对其进行显示。
每一个级别都和一个几何体相关联,且在渲染时,可以根据给定的距离,来在这些级别对应的几何体之间进行切换。 通常情况下,你会创建多个几何体,比如说三个,一个距离很远(低细节),一个距离适中(中等细节),还有一个距离非常近(高质量)。
代码示例
const lod = new THREE.LOD(); //Create spheres with 3 levels of detail and create new LOD levels for them for( let i = 0; i < 3; i++ ) { const geometry = new THREE.IcosahedronGeometry( 10, 3 - i ) const mesh = new THREE.Mesh( geometry, material ); lod.addLevel( mesh, i * 75 ); } scene.add( lod );
例子
Constructor
LOD( )
创建一个新的 LOD.
属性
共有属性请参见其基类Object3D。
.autoUpdate : Boolean
Whether the LOD object is updated automatically by the renderer per frame or not. If set to false, you have to call LOD.update() in the render loop by yourself. Default is true.
.levels : Array
一个包含有level objects(各层次物体)的数组。
每一个层级都是一个对象,具有以下两个属性: object —— 在这个层次中将要显示的Object3D。
distance —— 将显示这一细节层次的距离。
方法
共有方法请参见其基类Object3D。
.addLevel ( object : Object3D, distance : Float ) : this
object —— 在这个层次中将要显示的Object3D。
distance —— 将显示这一细节层次的距离。
添加在一定距离和更大范围内显示的网格。通常来说,距离越远,网格中的细节就越少。
.clone () : LOD
返回一个LOD对象及其所关联的在特定距离中的物体。
.getCurrentLevel () : Integer
Get the currently active LOD level. As index of the levels array.
.getObjectForDistance ( distance : Float ) : Object3D
获得第一个比distance大的Object3D(网格)的引用。
.raycast ( raycaster : Raycaster, intersects : Array ) : Array
在一条投射出去的Ray(射线)和这个LOD之间获得交互。 Raycaster.intersectObject将会调用这个方法。
.toJSON ( meta ) : Object
使用这个方法,为LOD对象中的每个细节层次创建一个JSON结构。
.update ( camera : Camera ) : null
基于每个level中的object和camera(摄像机)之间的距离,来设置其可见性。
源代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论