几何渲染器(Geometry-Renderer)

几何渲染器是引擎提供的一种批量渲染各种几何体的功能接口,主要用于调试(比如显示物体的包围盒)及 Cocos Creator 的 gizmo 批量显示。

几何渲染器的效果展示如图:

geometry-renderer-demo

几何渲染器的功能特性如图:

geometry-renderer-features

其中:

  • solid:是否支持实心模式,如果不支持则显示线框模式
  • depth test:是否支持深度测试,如果支持则被遮挡部分半透明显示,未被遮挡部分不透明显示,如果不支持则全部不透明显示
  • lighting:是否支持简单光照,如果不支持就使用无光模式
  • transform:是否支持变换,如果支持,开发者可传入一个变换矩阵,变换矩阵会作用到几何体的顶点上,方便显示任意坐标空间的几何体

接口描述

几何渲染器位于 geometry-render.ts 和原生 GeometryRenderer.h 内,开发者可根据需求查看。其支持的几何体描述如下:

支持的几何体类型

类型接口
虚线addDashedLine
线段addLine
三角形addTriangle
四边形addQuad
轴对齐包围盒addBoundingBox
交叉点addCross
视锥addFrustum
胶囊体addCapsule
圆柱addCylinder
圆锥addCone
圆形addCircle
弧形addArc
任意多边形addPolygon
圆盘addDisc
扇形addSector
球体addSphere
环面addTorus
八面体addOctahedron
贝塞尔曲线addBezier
样条曲线,包含三种模式:折线段,多段贝塞尔曲线,Catmull-Rom 曲线addSpline
网格线框addMesh
基于索引的网格线框addIndexedMesh

使用方式

由于每帧渲染完这些几何体后会清空顶点缓存,所以需要在 update 等函数中,每帧往 geometry renderer 对象(位于 camera 中)添加几何体,除此之外不需要额外的操作。

在使用此功能时需要在 项目设置 -> 功能剪裁 内启用 几何渲染器

enable geometry renderer

注意:请确保您的工程是基于 3D 的。

代码示例如下:

  1. import { _decorator, Component, Camera, Color } from 'cc';
  2. const { ccclass, property, executeInEditMode} = _decorator;
  3. @ccclass('Geometry')
  4. @executeInEditMode(true)
  5. export class Geometry extends Component {
  6. @property(Camera)
  7. mainCamera:Camera = null;
  8. start() {
  9. this.mainCamera?.camera.initGeometryRenderer();
  10. }
  11. update(deltaTime: number) {
  12. this.mainCamera?.camera?.geometryRenderer?.addCircle(this.node.worldPosition, 1, Color.GREEN, 20);
  13. }
  14. }

运行结果如下:

result