three.js中怎么让多个物体相互关联html代码
时间: 2024-05-15 09:15:32 浏览: 80
在three.js中,可以通过将多个物体添加到同一个场景中来实现相互关联。同时,可以使用HTML和JavaScript来创建交互式控制面板,以便用户可以控制物体的行为。
以下是一个示例代码,其中创建了两个立方体,它们可以通过HTML的按钮控制旋转和缩放:
HTML代码:
```
<button onclick="rotateCube1()">Rotate Cube 1</button>
<button onclick="scaleCube2()">Scale Cube 2</button>
```
JavaScript代码:
```
// 创建场景和相机
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
// 创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 创建立方体1
var geometry1 = new THREE.BoxGeometry(1, 1, 1);
var material1 = new THREE.MeshBasicMaterial({color: 0x00ff00});
var cube1 = new THREE.Mesh(geometry1, material1);
scene.add(cube1);
// 创建立方体2
var geometry2 = new THREE.BoxGeometry(1, 1, 1);
var material2 = new THREE.MeshBasicMaterial({color: 0xff0000});
var cube2 = new THREE.Mesh(geometry2, material2);
scene.add(cube2);
// 设置相机位置
camera.position.z = 5;
// 渲染场景
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
render();
// 旋转立方体1
function rotateCube1() {
cube1.rotation.x += 0.1;
cube1.rotation.y += 0.1;
}
// 缩放立方体2
function scaleCube2() {
cube2.scale.x += 0.1;
cube2.scale.y += 0.1;
cube2.scale.z += 0.1;
}
```
在这个示例中,我们创建了一个场景,添加了两个立方体,并设置了相机的位置。然后,我们创建了两个JavaScript函数来控制每个立方体的行为。这些函数可以通过HTML的按钮调用。
最后,我们使用渲染循环(render loop)来在每个帧中更新场景,并在屏幕上呈现它。
阅读全文