This repository has been archived on 2022-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
qplanets.js/demo.html

57 lines
2.2 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>qplanets demo</title>
<script type="text/javascript" src="./node_modules/three/build/three.js"></script>
<script type="text/javascript" src="./node_modules/three/examples/js/controls/OrbitControls.js"></script>
<script type="text/javascript" src="./lib/qplanets.js"></script>
<style type="text/css">body{margin:0;}</style>
</head>
<body>
<script type="text/javascript">
/* global THREE, requestAnimationFrame */
(function () {
var scene = new THREE.Scene()
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 10000)
var renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
var controls = new THREE.OrbitControls(camera, renderer.domElement)
document.body.appendChild(renderer.domElement)
var atmosphereSize = 25
var light = { position: new THREE.Vector3(0, 100, 10) }
var planetgen = new THREE.Extras.Planet.PlanetGenerator(1000)
var planet = new THREE.Extras.Planet.CubePlanet(new THREE.Vector3(0, 0, 0), planetgen)
var attnShader = THREE.Extras.Planet.ScatterShader.newAttenuate(planet.radius, planet.radius + atmosphereSize)
attnShader.uniforms.color = { value: new THREE.Color(0x001100), type: 'v3' }
attnShader.uniforms.planetPosition = { value: planet.position, type: 'v3' }
attnShader.uniforms.lightDirection = { value: light.position.sub(planet.position).normalize(), type: 'v3' }
attnShader.wireframe = true
planet.setMaterial(attnShader)
scene.add(planet)
var atmosGeom = new THREE.SphereGeometry(planet.radius + atmosphereSize, 100, 100)
var atmosShader = THREE.Extras.Planet.ScatterShader.newAtmosphere(planet.radius, planet.radius + atmosphereSize)
var atmos = new THREE.Mesh(atmosGeom, atmosShader)
atmosShader.uniforms.planetPosition = { value: planet.position, type: 'v3' }
atmosShader.uniforms.lightDirection = { value: light.position.sub(planet.position).normalize(), type: 'v3' }
scene.add(atmos)
camera.position.x = -100
camera.position.z = 1800
function animate () {
requestAnimationFrame(animate)
planet.update(camera)
controls.update()
renderer.render(scene, camera)
}
animate()
})()
</script>
</body>
</html>