CCapture 录制 ThreeJs的例子

使用 ThreeJs 制作一个旋转的立方体,然后录制它沿着Z轴旋转一圈。代码如下:

	<html>
		<head>
			<meta charset="UTF-8">
			<!-- <script src="http://threejs.org/build/three.js"></script>-->
			<!-- <script src="http://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>-->
			<script src="ThreeJS/three.js"></script>
			<script src="ThreeJS/jquery.js"></script>
			<script src="CCapture//CCapture.all.min.js"></script>
		</head>
		<body>
			<script>
				// 初始化场景
				const scene = new THREE.Scene();
				const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
				const renderer = new THREE.WebGLRenderer({
					antialias: true,
					preserveDrawingBuffer: true
				});

				// 设置渲染器
				renderer.setSize(window.innerWidth, window.innerHeight);
				document.body.appendChild(renderer.domElement);

				// 创建红色立方体
				const geometry = new THREE.BoxGeometry(2, 2, 2);
				const material = new THREE.MeshBasicMaterial({
					color: 0xff0000,
					transparent: true,
					opacity: 0.8
				});
				const cube = new THREE.Mesh(geometry, material);

				// 添加绿色边框
				const edges = new THREE.EdgesGeometry(geometry);
				const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({
					color: 0x00ff00
				}));

				// 组合对象
				const cubeWithEdges = new THREE.Group();
				cubeWithEdges.add(cube);
				cubeWithEdges.add(line);
				scene.add(cubeWithEdges);

				// 设置相机角度
				camera.position.set(5, 5, 5); // 45°倾斜视角[^1]
				camera.lookAt(0, 0, 0);

				// 初始化捕获器(以 WebM 格式为例)
				const capturer = new CCapture({
				  format: 'webm',
				  framerate: 30,
				  verbose: true
				});
			
				// 开始捕获
				capturer.start();
				let cap=true;

				console.log("start");
				animate();

				// 动画循环
				function animate() {
					if (cubeWithEdges.rotation.z<Math.PI * 2) {
						requestAnimationFrame(animate);
						// Z轴旋转
						cubeWithEdges.rotation.z += 0.01;
						renderer.render(scene, camera);
						// 捕获当前帧
						capturer.capture(renderer.domElement);
					} else {
						if (cap==true) {
							capturer.stop();
							capturer.save();
							cap=false;
						}
					}

				}
	
			</script>
		</body>
	
	</html>

上述代码生成的视频:

完整的代码和JS文件下载:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注