Пример #1
0
            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;

            }
Пример #2
0
            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;
            }
Пример #3
0
            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;
            }
Пример #4
0
            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 ;
            }
Пример #5
0
			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();

				}

			}
Пример #6
0
            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;
            }
Пример #7
0
            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;
            }
Пример #8
0
            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;

            }
Пример #9
0
			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 );

			}
Пример #10
0
            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);
            }
Пример #11
0
 mars.animation = function (){
   mars.rotateOnAxis(new THREE.Vector3(0,1,0), speed * Math.PI / 180);
 };
Пример #12
0
 planetMesh.animation = function (){
     planetMesh.rotateOnAxis(new THREE.Vector3(0,1,0), count * Math.PI / 180);
 };