createObject: function(){ var radius = .5; var geometry = new THREE.SphereGeometry(radius, 32, 32); var material = new THREE.MeshPhongMaterial({ map:THREE.ImageUtils.loadTexture('images/planets/jupiter2_2k.jpg') }); var ringTexture = createTransparentImage('images/planets/saturnringcolor.jpg', 'images/planets/saturnringpattern.gif', function(){ if (ringMaterial && ringMaterial.map){ ringMaterial.map.needsUpdate = true; } }); var innerRadius = radius +.25, outerRadius = radius + .42, ringThetaSegments = 64, ringPhiSegments = 8; var ringGeometry = createRingGeometry(innerRadius, outerRadius, ringThetaSegments, ringPhiSegments); //new THREE.RingGeometry(innerRadius, outerRadius, ringThetaSegments, ringPhiSegments); var ringMaterial = new THREE.MeshPhongMaterial({ map: new THREE.Texture(ringTexture), side: THREE.DoubleSide, transparent:true, opacity: .4 }); ringGeometry.faceVertexUvs[0].push( new THREE.Vector2( innerRadius/(ringThetaSegments-1), outerRadius/ (ringPhiSegments-1) ) ); var ringMesh = new THREE.Mesh(ringGeometry, ringMaterial); var planetMesh = new THREE.Mesh(geometry, material); ringMesh.lookAt(new THREE.Vector3(0,1,0)); ringMesh.receiveShadow = true; ringMesh.castShadow = true; planetMesh.receiveShadow = true; planetMesh.castShadow= true; planetMesh.add(ringMesh); var speed = .2; planetMesh.rotateOnAxis(new THREE.Vector3(0,0,1), -3 * Math.PI / 180); planetMesh.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180); }; return planetMesh; }
createObject: function(){ var material = new THREE.MeshBasicMaterial({map: THREE.ImageUtils.loadTexture('images/planets/sunmap.jpg') }); var geometry = new THREE.SphereGeometry(0.5, 32, 32); var sun = new THREE.Mesh(geometry, material); sun.rotateOnAxis(new THREE.Vector3(0,0,1), -5.25 * Math.PI / 180); var speed = .2; sun.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180); }; return sun; }
createObject: function(){ var geometry = new THREE.SphereGeometry(0.5, 32, 32); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture('images/planets/moonmap2k.jpg'), bumpMap: THREE.ImageUtils.loadTexture('images/planets/moonbump2k.jpg'), bumpScale: .005 }); var moon = new THREE.Mesh(geometry, material); moon.rotateOnAxis(new THREE.Vector3(0,0,1), -6.68 * Math.PI / 180); var speed = .2; moon.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180); }; return moon; }
createObject: function(options){ var radius = .5, widthSegments = 32, heightSegments = 32; var geometry = new THREE.SphereGeometry(radius, widthSegments, heightSegments); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture('images/planets/earthmap1k.jpg'), bumpMap: THREE.ImageUtils.loadTexture('images/planets/earthbump1k.jpg'), bumpScale: .05, specularMap: THREE.ImageUtils.loadTexture("images/planets/earthspec1k.jpg"), specular: new THREE.Color('grey'), shininess: 10 }); var textureResult = createTransparentImage('images/planets/earthcloudmap.jpg','images/planets/earthcloudmaptrans.jpg', function(){ if (cloudMaterial && cloudMaterial.map){ cloudMaterial.map.needsUpdate = true; } }); var cloudGeometry = new THREE.SphereGeometry(radius + .005, widthSegments, heightSegments) var cloudMaterial = new THREE.MeshPhongMaterial({ map : new THREE.Texture(textureResult), side : THREE.DoubleSide, transparent : true, opacity : 0.8, }); var cloudMesh = new THREE.Mesh(cloudGeometry, cloudMaterial); var planetMesh = new THREE.Mesh(geometry, material); planetMesh.add(cloudMesh); // planetMesh.rotation.z = -23 * Math.PI / 180; planetMesh.rotateOnAxis(new THREE.Vector3(0,0,1), -23 * Math.PI / 180); var count = .2; planetMesh.animation = function (){ planetMesh.rotateOnAxis(new THREE.Vector3(0,1,0), count * Math.PI / 180); }; return planetMesh ; }
function onDocumentMouseDown( event ) { event.preventDefault(); mouse.set( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1 ); raycaster.setFromCamera( mouse, camera ); var intersects = raycaster.intersectObjects( objects ); if ( intersects.length > 0 ) { var intersect = intersects[ 0 ]; // delete cone if ( isShiftDown ) { if ( intersect.object != sphere ) { scene.remove( intersect.object ); objects.splice( objects.indexOf( intersect.object ), 1 ); } // create cone } else { var placedCone = new THREE.Mesh( interactiveConeGeo, interactiveConeMaterial ); placedCone.lookAt(intersect.point); scene.add( placedCone ); objects.push( placedCone ); } render(); } }
createObject: function(){ var geometry = new THREE.SphereGeometry(0.5, 32, 32); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture("images/planets/neptunemap.jpg") }); var neptune = new THREE.Mesh(geometry, material); neptune.rotateOnAxis(new THREE.Vector3(0,0,1), -28 * Math.PI / 180); var speed = .2; neptune.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180); }; return neptune; }
createObject: function(){ var geometry = new THREE.SphereGeometry(0.5, 32, 32); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture('images/planets/plutomap1k.jpg'), bumpMap: THREE.ImageUtils.loadTexture('images/planets/plutobump1k.jpg'), bumpScale: .005 }); var pluto = new THREE.Mesh(geometry, material); pluto.rotateOnAxis(new THREE.Vector3(0,0,1), -122 * Math.PI / 180); var speed = .2; pluto.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), -speed * Math.PI / 180); }; return pluto; }
createObject: function(){ var geometry = new THREE.SphereGeometry(0.5, 32, 32); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture('images/planets/venusmap.jpg'), bumpMap: THREE.ImageUtils.loadTexture('images/planets/venusbump.jpg'), bumpScale: .005 }); var venus = new THREE.Mesh(geometry, material); venus.rotateOnAxis(new THREE.Vector3(0,0,1), -177 * Math.PI / 180); var count = .2; venus.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,-1,0), -count * Math.PI / 180); }; return venus; }
function init() { camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 ); camera.position.set( 500, 800, 1300 ); camera.lookAt( new THREE.Vector3() ); scene = new THREE.Scene(); var geometry = new THREE.SphereBufferGeometry( 300, 100, 100 ); sphere = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( {color: 0xFFFFFF, opacity: 0.6 } ) ); sphere.material.transparent = true; sphere.name = 'sphere'; scene.add( sphere ); interactiveConeGeo = new THREE.CylinderGeometry(100, 0, 600, 100, 1, true); interactiveConeGeo.translate(0, 300, 0); interactiveConeGeo.rotateX(Math.PI/2.); interactiveConeMaterial = new THREE.MeshBasicMaterial({color: 0x80FFE5, opacity: 0.5}); interactiveCone = new THREE.Mesh( interactiveConeGeo, interactiveConeMaterial ); interactiveCone.material.side = THREE.DoubleSide; interactiveCone.material.transparent = true; interactiveCone.name = 'interactive'; sphere.add( interactiveCone ); raycaster = new THREE.Raycaster(); var ambientLight = new THREE.AmbientLight( 0x606060 ); scene.add( ambientLight ); var directionalLight = new THREE.DirectionalLight( 0xffffff ); directionalLight.position.set( 1, 0.75, 0.5 ).normalize(); scene.add( directionalLight ); window.addEventListener( 'resize', onWindowResize, false ); }
createObject: function(){ var radius = .5; var geometry = new THREE.SphereGeometry(radius, 32, 32); var material = new THREE.MeshPhongMaterial({ map: THREE.ImageUtils.loadTexture("images/planets/uranusmap.jpg"), bumpMap:THREE.ImageUtils.loadTexture("images/planets/uranusmap.jpg"), bumpScale:.005, castShadow:true, createShadow:true }); var ringGeometry = new THREE.RingGeometry(radius + .01, radius + .5, 10); var ringTexture = createTransparentImage('images/planets/uranusringcolour.jpg', 'images/planets/uranusringtrans.gif', function(){ if (ringMaterial && ringMaterial.map){ ringMaterial.map.needsUpdate = true; } }); var innerRadius = radius +.1, outerRadius = radius + .4, ringThetaSegments = 64, ringPhiSegments = 8; var ringGeometry = createRingGeometry(innerRadius, outerRadius, ringThetaSegments, ringPhiSegments); //new THREE.RingGeometry(innerRadius, outerRadius, ringThetaSegments, ringPhiSegments); var ringMaterial = new THREE.MeshPhongMaterial({ map: new THREE.Texture(ringTexture), side: THREE.DoubleSide, transparent:true, opacity: .9 }); ringGeometry.faceVertexUvs[0].push( new THREE.Vector2( innerRadius/(ringThetaSegments-1), outerRadius/ (ringPhiSegments-1) ) ); var ringMesh = new THREE.Mesh(ringGeometry, ringMaterial); var planetMesh = new THREE.Mesh(geometry, material); ringMesh.lookAt(new THREE.Vector3(0,1,0)); ringMesh.receiveShadow = true; ringMesh.castShadow = true; planetMesh.receiveShadow = true; planetMesh.castShadow= true; planetMesh.add(ringMesh); // var uranus = new THREE.Object3D(); // uranus.add(planetMesh); // planetMesh.rotation.x = 90 * Math.PI /180; // planetMesh.rotation.y = 45 * Math.PI /180; planetMesh.rotateOnAxis(new THREE.Vector3(0,0,1), -97 * Math.PI / 180); var speed = .2; planetMesh.animation = function (){ this.rotateOnAxis(new THREE.Vector3(0,1,0), -speed * Math.PI / 180); }; return planetMesh; //var ring = new THREE.TorusGeometry(1); }
mars.animation = function (){ mars.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180); };
planetMesh.animation = function (){ planetMesh.rotateOnAxis(new THREE.Vector3(0,1,0), count * Math.PI / 180); };