当前位置: 首页 > news >正文

从零开始学习three.js(19):一文详解three.js中的辅助类Helper

1. AxesHelper(坐标轴辅助)

  • 用途:显示物体的三维坐标轴(X:红, Y:绿, Z:蓝)。

  • 构造函数

    new THREE.AxesHelper(size: Number);
    
  • 示例

    const axes = new THREE.AxesHelper(5);
    scene.add(axes);
    

2. GridHelper(网格辅助)

  • 用途:创建笛卡尔网格平面,用于场景布局参考。

  • 构造函数

    new THREE.GridHelper(size: Number, divisions: Number, colorCenterLine: Color, colorGrid: Color
    );
    
  • 示例

    const grid = new THREE.GridHelper(100, 20, 0x444444, 0x888888);
    scene.add(grid);
    

3. PolarGridHelper(极坐标网格辅助)

  • 用途:生成极坐标系下的同心圆和径向线。

  • 构造函数

    new THREE.PolarGridHelper(radius: Number, radials: Number, circles: Number, divisions: Number, color1: Color, color2: Color
    );
    

二、几何与空间辅助类

4. BoxHelper(包围盒辅助)

  • 用途:根据物体几何体自动生成包围盒线框。

  • 构造函数

    new THREE.BoxHelper(object: Object3D, color: Color);
    
  • 动态更新

    boxHelper.update(); // 当物体变换后调用
    

5. Box3Helper(自定义包围盒辅助)

  • 用途:直接基于Box3对象显示包围盒。

  • 构造函数

    new THREE.Box3Helper(box: Box3, color: Color);
    

6. PlaneHelper(平面辅助)

  • 用途:可视化无限延伸的平面(如反射平面)。

  • 构造函数

    new THREE.PlaneHelper(plane: Plane, size: Number, color: Color);
    

7. EdgesHelper(边缘高亮辅助)

  • 用途:显示几何体的硬边(非平滑边缘)。

  • 构造函数

    new THREE.EdgesHelper(object: Mesh, color: Color);
    

三、光源辅助类

8. DirectionalLightHelper(平行光辅助)

  • 用途:显示平行光的方向和位置。

  • 构造函数

    new THREE.DirectionalLightHelper(light: DirectionalLight, size: Number, color: Color
    );
    

9. PointLightHelper(点光源辅助)

  • 用途:可视化点光源的位置和衰减范围。

  • 构造函数

    new THREE.PointLightHelper(light: PointLight, sphereSize: Number, color: Color
    );
    

10. SpotLightHelper(聚光灯辅助)

  • 用途:显示聚光灯的锥形范围和方向。

  • 构造函数

    new THREE.SpotLightHelper(light: SpotLight, color: Color);
    
  • 动态更新

    lightHelper.update(); // 光源参数变化后调用
    

11. HemisphereLightHelper(半球光辅助)

  • 用途:显示半球光源的颜色渐变。

  • 构造函数

    new THREE.HemisphereLightHelper(light: HemisphereLight, size: Number, color: Color
    );
    

12. RectAreaLightHelper(区域光辅助)

  • 用途:可视化矩形区域光的形状和方向(需导入RectAreaLightHelper)。

  • 使用

    import { RectAreaLightHelper } from 'three/addons/helpers/RectAreaLightHelper.js';
    const helper = new RectAreaLightHelper(light);
    scene.add(helper);
    

四、相机与视图辅助类

13. CameraHelper(相机视锥体辅助)

  • 用途:显示相机的视锥体(可视范围)。

  • 构造函数

    new THREE.CameraHelper(camera: Camera);
    

14. FrustumHelper(视锥体辅助)

  • 用途:独立显示任意视锥体(需手动定义)。

  • 构造函数

    new THREE.FrustumHelper(frustum: Frustum, color: Color);
    

五、动画与骨骼辅助类

15. SkeletonHelper(骨骼辅助)

  • 用途:显示蒙皮模型的骨骼结构。

  • 构造函数

    new THREE.SkeletonHelper(object: SkinnedMesh);
    

16. VertexNormalsHelper(顶点法线辅助)

  • 用途:显示几何体每个顶点的法线方向。

  • 构造函数

    new THREE.VertexNormalsHelper(object: Object3D, size: Number, color: Color, lineWidth: Number
    );
    

17. FaceNormalsHelper(面法线辅助)

  • 用途:显示几何体每个面的法线方向。

  • 构造函数

    new THREE.FaceNormalsHelper(object: Object3D, size: Number, color: Color, lineWidth: Number
    );
    

六、物理与路径辅助类

18. ArrowHelper(箭头辅助)

  • 用途:表示向量方向(如速度、力)。

  • 构造函数

    new THREE.ArrowHelper(dir: Vector3, origin: Vector3, length: Number, color: Color, headLength: Number, headWidth: Number
    );
    

19. PathHelper(路径辅助)

  • 用途:可视化3D路径(需手动定义点数组)。

  • 构造函数

    new THREE.PathHelper(path: Array<Vector3>, color: Color, lineWidth: Number
    );
    

七、其他辅助类

20. LightProbeHelper(光照探针辅助)

  • 用途:显示光照探针的球谐光照数据(用于环境光照)。

  • 构造函数

    new THREE.LightProbeHelper(lightProbe: LightProbe, size: Number);
    

21. PositionalAudioHelper(空间音频辅助)

  • 用途:显示PositionalAudio的影响范围。

  • 构造函数

    new THREE.PositionalAudioHelper(audio: PositionalAudio);
    

八、注意事项与最佳实践

  1. 性能优化

    • Helper本质是线框模型,大量使用可能影响性能,建议调试完成后移除。
    • 使用helper.visible = false临时隐藏,而非直接删除。
  2. 动态更新

    • 部分Helper需手动更新(如BoxHelper.update()SpotLightHelper.update())。
  3. 版本兼容性

    • BoundingBoxHelper在r125+后废弃,改用BoxHelper
    • 部分Helper需导入扩展库(如RectAreaLightHelper)。
  4. 自定义样式

    • 通过helper.material.color.set(0xff0000)修改颜色。
    • 调整线宽需启用WebGLRendererlinewidth支持。

相关文章:

  • PCL PolygonMesh 与 TextureMesh 源码阅读与简单测试
  • 从前序与中序遍历序列构造二叉树(中等)
  • ubuntu 更新华为源
  • 网络世界的“百变身份“:动态IP让连接更自由
  • DevExpressWinForms-RichEditControl-基础应用
  • FreeSWITCH Jitter Buffer 技术解析与应用指南
  • 【CanMV K230】AI_CUBE1.4
  • 利用边缘计算和工业计算机实现智能视频分析
  • AI日报 · 2025年05月16日|Google DeepMind推出AlphaEvolve,能自主设计高级算法的编码代理
  • 云存储最佳实践
  • 2025认证杯数学建模第二阶段A题完整论文(代码齐全):小行星轨迹预测思路
  • ThinkPad X250电池换电池芯(理论技术储备)
  • Tomcat发布websocket
  • Suna: 开源多面手 AI 代理
  • ESP32-C3/ESP32-C3FH4/低功耗SOC的WIFI芯片集成2.4G和BLE5.0二合一
  • 游戏站的几种形式
  • android studio clone子分支
  • 数据标注的黄金标准:如何为机器学习构建可靠标签?
  • 【python基础知识】Day 27 函数专题2:装饰器
  • 实现书签-第一部分
  • 特朗普再提“接管”加沙,要将其变为“自由区”
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 人民网三评“网络烂梗”:莫让低级趣味围猎青少年
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 杭勇已任常州市政协党组成员,此前任常州市委常委、秘书长
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?