当前示例源码github地址:
https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/WireframeEntityTest.ts
当前示例运行效果:

此示例基于此渲染系统实现,当前示例TypeScript源码如下:
- export class WireframeEntityTest {
- private mRscene = new RendererScene();
- initialize(): void {
-
- this.initEvent();
- this.initScene();
- }
- private initEvent(): void {
- const rc = this.mRscene;
- rc.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDown);
- new MouseInteraction().initialize(rc, 0, false).setAutoRunning(true);
- }
- private mouseDown = (evt: MouseEvent): void => {};
- private initScene(): void {
- const rc = this.mRscene;
-
- let axis = new AxisEntity();
- rc.addEntity(axis);
-
- let entities = [
- new SphereEntity(),
- new BoxEntity(),
- new CylinderEntity({ alignYRatio: 0.0 }),
- new CubeEntity({ cubeSize: 130 }),
- new TorusEntity({ radius: 110, axisType: 1 }),
- new PlaneEntity({ axisType: 1, extent: [-80, -80, 160, 160], doubleFace: true }),
- new ConeEntity({ alignYRatio: 0.0 })
- ];
-
- let ls = entities;
- entities = [];
-
- // random sorting
- for (let i = 0, ln = ls.length; i < ln; ++i) {
- const k = Math.round(Math.random() * 888) % ls.length;
- entities.push(ls[k]);
- ls.splice(k, 1);
- }
-
- let radius = 300.0;
-
- for (let i = 0; i < entities.length; ++i) {
- let rad = (2.0 * Math.PI * i) / entities.length;
-
- let entity = entities[i].setAlbedo(new Color4().randomRGB(1.5, 0.1));
- entity.arm = [1.1, Math.random() * 0.95 + 0.05, Math.random() * 0.9 + 0.1];
- entity.transform.setPosition([radius * Math.cos(rad), 0, radius * Math.sin(rad)]);
- rc.addEntity(entity);
- }
-
- radius += 230;
- for (let i = 0; i < entities.length; ++i) {
- let rad = (2.0 * Math.PI * i) / entities.length + 0.5;
-
- let entity = entities[i].clone({ geometry: entities[i].geometry, doubleFace: true, wireframe: true });
- entity.transform.setPosition([radius * Math.cos(rad), 0, radius * Math.sin(rad)]);
- rc.addEntity(entity);
- }
- }
-
- run(): void {
- this.mRscene.run();
- }
- }