threejs 太阳系
时间: 2023-11-27 15:05:53 浏览: 27
以下是使用Three.js创建太阳系的示例代码:
```javascript
// 创建场景
var scene = new THREE.Scene();
// 创建相机
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 50;
// 创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 创建太阳
var sunGeometry = new THREE.SphereGeometry(10, 32, 32);
var sunMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
var sun = new THREE.Mesh(sunGeometry, sunMaterial);
scene.add(sun);
// 创建地球
var earthGeometry = new THREE.SphereGeometry(5, 32, 32);
var earthMaterial = new THREE.MeshBasicMaterial({ color: 0x0000ff });
var earth = new THREE.Mesh(earthGeometry, earthMaterial);
earth.position.x = 20;
scene.add(earth);
// 创建月球
var moonGeometry = new THREE.SphereGeometry(2, 32, 32);
var moonMaterial = new THREE.MeshBasicMaterial({ color: 0xaaaaaa });
var moon = new THREE.Mesh(moonGeometry, moonMaterial);
moon.position.x = 25;
earth.add(moon);
// 创建光源
var light = new THREE.PointLight(0xffffff, 1, 100);
light.position.set(0, 0, 0);
scene.add(light);
// 动画循环
function animate() {
requestAnimationFrame(animate);
// 太阳自转
sun.rotation.y += 0.01;
// 地球公转
earth.rotation.y += 0.01;
earth.position.x = 20 * Math.cos(Date.now() * 0.001);
earth.position.z = 20 * Math.sin(Date.now() * 0.001);
// 月球公转
moon.rotation.y += 0.01;
moon.position.x = 5 * Math.cos(Date.now() * 0.003);
moon.position.z = 5 * Math.sin(Date.now() * 0.003);
renderer.render(scene, camera);
}
animate();
```
这段代码创建了一个太阳、地球和月球的三维模型,并通过动画实现了它们的公转和自转。你可以在浏览器中运行这段代码,查看太阳系的效果。