本文是“初见物理引擎库Cannon.js”系列的第三篇文章,在本文中主要讲解CannonDebugRenderer
的基本使用方法。
CannonDebugRenderer
简介CannonDebugRenderer
能够在Cannon.js的物体表面生成线框,用于对物理场景中的物体进行调试,如下图所示:
在Three.js中可以为材质添加wireframe
属性,为Mesh
提供线框材质:
new THREE.MeshPhongMaterial({
color: 0x00ff00,
wireframe: true, // 材质线框
}),
不同于Three.js中的材质线框,CannonDebugRenderer
所绘制的线框是基于Cannon.js物体的。
[ Live Demo ]:Cannon.js - debug (syzdev.cn)
CannonDebugRenderer
<script src="https://cdn.jsdelivr.net/npm/cannon@0.6.2/tools/threejs/CannonDebugRenderer.js">script>
由于原作者并未提供NPM的引入方式,因此暂时只能使用基于cannon-es的cannon-es-debugger。
npm i cannon-es-debugger
使用方式与CDN引入略有不同,具体可查阅cannon-es-debugger的API文档。
以CDN引入为例,首先需要初始化一个cannonDebugger
对象,需要传入两个参数:
scene
;world
。const cannonDebugger = new THREE.CannonDebugRenderer(three.scene, cannon.world)
在render
方法中添加cannonDebugger.update()
:
const render = () => {
// ...
requestAnimationFrame(render)
cannonDebugger.update()
three.renderer.render(three.scene, three.camera)
// ...
}