Advertisement
seacloud9

jiglibTriangleMesh

Dec 17th, 2011
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE HTML>
  2. <html lang="en">
  3.     <head>
  4.         <title>Pirate Island</title>
  5.         <meta charset="utf-8">
  6.          <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
  7.          <script type="text/javascript" src="js/Three.js"></script>
  8.          <script type="text/javascript" src="js/ThreeExtras.js"></script>
  9.          <!--<script type="text/javascript" src="js/glge-compiled-min.js"></script>-->
  10.          <script type="text/javascript" src="js/binaryReader.js"></script>
  11.          <script type="text/javascript" src="js/MD2.js"></script>
  12.          <script type="text/javascript" src="js/Detector.js"></script>
  13.          <script type="text/javascript" src="js/RequestAnimationFrame.js"></script>
  14.          <script type="text/javascript" src="js/Stats.js"></script>
  15.          <script type="text/javascript" src="js/jiglib/geom/glMatrix.js"></script>                         
  16.  
  17.         <script type="text/javascript" src="js/jiglib/jiglib.js"></script>
  18.  
  19.         <script type="text/javascript" src="js/jiglib/geom/Vector3D.js"></script>                          
  20.         <script type="text/javascript" src="js/jiglib/geom/Matrix3D.js"></script>                          
  21.  
  22.         <script type="text/javascript" src="js/jiglib/math/JMatrix3D.js"></script>
  23.         <script type="text/javascript" src="js/jiglib/math/JMath3D.js"></script>
  24.         <script type="text/javascript" src="js/jiglib/math/JNumber3D.js"></script>     
  25.        
  26.         <script type="text/javascript" src="js/jiglib/cof/JConfig.js"></script>
  27.         <script type="text/javascript" src="js/jiglib/data/CollOutData.js"></script>
  28.         <script type="text/javascript" src="js/jiglib/data/ContactData.js"></script>
  29.         <script type="text/javascript" src="js/jiglib/data/PlaneData.js"></script>
  30.         <script type="text/javascript" src="js/jiglib/data/EdgeData.js"></script>
  31.         <script type="text/javascript" src="js/jiglib/data/TerrainData.js"></script>
  32.         <script type="text/javascript" src="js/jiglib/data/OctreeCell.js"></script>
  33.         <script type="text/javascript" src="js/jiglib/data/CollOutBodyData.js"></script>
  34.         <script type="text/javascript" src="js/jiglib/data/TriangleVertexIndices.js"></script>
  35.         <script type="text/javascript" src="js/jiglib/data/SpanData.js"></script>
  36.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraint.js"></script>
  37.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintMaxDistance.js"></script>
  38.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintWorldPoint.js"></script>
  39.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintPoint.js"></script>
  40.         <script type="text/javascript" src="js/jiglib/physics/MaterialProperties.js"></script>
  41.         <script type="text/javascript" src="js/jiglib/collision/CollPointInfo.js"></script>
  42.         <script type="text/javascript" src="js/jiglib/collision/CollisionInfo.js"></script>
  43.         <script type="text/javascript" src="js/jiglib/collision/CollDetectInfo.js"></script>
  44.         <script type="text/javascript" src="js/jiglib/collision/CollDetectFunctor.js"></script>
  45.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxTerrain.js"></script>
  46.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereMesh.js"></script>
  47.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleBox.js"></script>
  48.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereCapsule.js"></script>
  49.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleTerrain.js"></script>
  50.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereBox.js"></script>
  51.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereTerrain.js"></script>
  52.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxBox.js"></script>
  53.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxMesh.js"></script>
  54.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxPlane.js"></script>
  55.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleCapsule.js"></script>
  56.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereSphere.js"></script>
  57.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSpherePlane.js"></script>
  58.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsulePlane.js"></script>
  59.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemAbstract.js"></script>
  60.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemGridEntry.js"></script>
  61.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemGrid.js"></script>
  62.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemBrute.js"></script>
  63.         <script type="text/javascript" src="js/jiglib/geometry/JIndexedTriangle.js"></script>
  64.         <script type="text/javascript" src="js/jiglib/geometry/JOctree.js"></script>
  65.         <script type="text/javascript" src="js/jiglib/geometry/JRay.js"></script>
  66.         <script type="text/javascript" src="js/jiglib/geometry/JAABox.js"></script>
  67.         <script type="text/javascript" src="js/jiglib/geometry/JTriangle.js"></script>
  68.         <script type="text/javascript" src="js/jiglib/geometry/JSegment.js"></script>
  69.         <script type="text/javascript" src="js/jiglib/events/JCollisionEvent.js"></script>
  70.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraint.js"></script>
  71.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintMaxDistance.js"></script>
  72.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintWorldPoint.js"></script>
  73.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintPoint.js"></script>
  74.         <script type="text/javascript" src="js/jiglib/physics/PhysicsController.js"></script>
  75.         <script type="text/javascript" src="js/jiglib/physics/CachedImpulse.js"></script>
  76.         <script type="text/javascript" src="js/jiglib/physics/HingeJoint.js"></script>
  77.         <script type="text/javascript" src="js/jiglib/physics/BodyPair.js"></script>
  78.         <script type="text/javascript" src="js/jiglib/physics/PhysicsState.js"></script>
  79.         <script type="text/javascript" src="js/jiglib/physics/PhysicsSystem.js"></script>
  80.         <script type="text/javascript" src="js/jiglib/physics/RigidBody.js"></script>
  81.         <script type="text/javascript" src="js/jiglib/geometry/JSphere.js"></script>
  82.         <script type="text/javascript" src="js/jiglib/geometry/JTriangleMesh.js"></script>
  83.         <script type="text/javascript" src="js/jiglib/geometry/JPlane.js"></script>
  84.         <script type="text/javascript" src="js/jiglib/geometry/JTerrain.js"></script>
  85.         <script type="text/javascript" src="js/jiglib/geometry/JBox.js"></script>
  86.         <script type="text/javascript" src="js/jiglib/geometry/JCapsule.js"></script>
  87.         <script type="text/javascript" src="js/jiglib/debug/Stats.js"></script>
  88.          <style type="text/css">
  89.             body{width:100%;height:100%; margin:0px}
  90.             /*canvas{width:100%;height:100%}*/
  91.             /*#container{width:100%;height:100%}*/
  92.          </style>
  93.     </head>
  94.     <body>
  95.         <div id="container"></div>
  96.         <script type="text/javascript">
  97.             if ( ! Detector.webgl ) {
  98.                 Detector.addGetWebGLMessage();
  99.                 document.getElementById( 'container' ).innerHTML = "";
  100.             }
  101.            
  102.             //global variables
  103.             var container;
  104.             var camera, controls, scene, renderer, loader, cameraCube, meshC, meshCl, island, projector, system;
  105.             var mesh, texture,geometry, material, water, textureW, materialW, meshW, meshC, cubeTarget, sphere;
  106.             var worldWidth = 128, worldDepth = 128, sceneCube;
  107.             worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;
  108.             var t0 = new Date().getTime();
  109.             var clock = new THREE.Clock();
  110.            
  111.             function startGame(){
  112.                 gameOn = true;
  113.                 init();
  114.                 animate();
  115.             }
  116.            
  117.             function init_jiglib(){
  118.                 system = jiglib.PhysicsSystem.getInstance();
  119.                 system.setGravity([0,-5200,0, 0]);//-120
  120.                 system.setCollisionSystem(); // CollisionSystemGrid
  121.                 system.setSolverType('FAST');//FAST, NORMAL, ACCUMULATED
  122.                 var ground = new jiglib.JPlane();
  123.                 ground.set_y(-100);
  124.                 ground.set_rotationX(90);
  125.                 ground.set_movable(false);             
  126.                 system.addBody( ground );
  127.  
  128.                
  129.                 startGame();   
  130.             }
  131.            
  132.             function init() {
  133.                
  134.                 projector = new THREE.Projector();
  135.                 loader = new THREE.JSONLoader( true );
  136.                 container = document.getElementById( 'container' );
  137.                 camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 20000 );
  138.                 camera.position.x = -130;
  139.                 camera.position.y = 189;
  140.                 camera.position.z = -12;
  141.                 cameraCube = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 100000 );
  142.                 cubeTarget = new THREE.Vector3( 0, 0, 0 );
  143.                 controls = new THREE.FirstPersonControls( camera );
  144.                 controls.movementSpeed = 100;
  145.                 controls.lookSpeed = 0.02;
  146.                 sceneCube = new THREE.Scene()
  147.                 scene = new THREE.Scene();
  148.                 scene.fog = new THREE.FogExp2( 0xaaccff, 0.0007 );
  149.                 //camera.target.position.z = - 0;
  150.                 //camera.position.y = 220;
  151.                 //camera.position.x = 240;
  152.                 //camera.position.z = 240;
  153.                 //camera.target.position.y = camera.position.y;
  154.                 //cameraCube = new THREE.Camera( 60, window.innerWidth / window.innerHeight, 1, 100000 );
  155.                 throwShit();
  156.                 var radius = Math.random() * 40 / 2;
  157.                 materialCl = new THREE.MeshNormalMaterial();
  158.                 var geometryCl = new THREE.SphereGeometry( radius, 20, 20 );
  159.                 meshCl = new THREE.Mesh( geometryCl, materialCl );
  160.                 meshCl.matrixAutoUpdate = false;
  161.                 meshCl.overdraw = true;                
  162.                 meshCl.position.x = -130;
  163.                 meshCl.position.y = 189;
  164.                 meshCl.position.z = -12;
  165.                 console.log(meshCl);
  166.                 scene.add( meshCl );
  167.        
  168.                 sphere = new jiglib.JSphere( null, radius );
  169.                 sphere.set_mass( 4 / 30 * Math.PI * Math.pow( radius, 3 ) );
  170.                 sphere.moveTo( new Vector3D( meshCl.position.x, meshCl.position.y, meshCl.position.z, 0 ) );
  171.                 system.addBody( sphere );
  172.                 meshCl.rigidBody = sphere;
  173.                 var path = "assets/skybox/";
  174.                 var format = '.jpg';
  175.                 var urls = [
  176.                     path + 'px' + format, path + 'nx' + format,
  177.                     path + 'py' + format, path + 'ny' + format,
  178.                     path + 'pz' + format, path + 'nz' + format
  179.                 ];
  180.  
  181.                 var textureCube = THREE.ImageUtils.loadTextureCube( urls );
  182.                
  183.                 var shader = THREE.ShaderUtils.lib[ "cube" ];
  184.                 shader.uniforms[ "tCube" ].texture = textureCube;
  185.  
  186.                 var material = new THREE.ShaderMaterial( {
  187.                     fragmentShader: shader.fragmentShader,
  188.                     vertexShader: shader.vertexShader,
  189.                     uniforms: shader.uniforms
  190.                 } ),
  191.                
  192.                 meshC = new THREE.Mesh( new THREE.CubeGeometry( 200000, 200000, 200000 ), material );
  193.                 meshC.flipSided = true;
  194.                
  195.                 //sceneCube.add( meshC );
  196.                 //var myModel=new GLGE.MD2;
  197.                 //myModel.setSrc("assets/test/tris.md2");
  198.                 //console.log(myModel);
  199.                 md = new MD2("assets/test/tris.md2");
  200.                 var textureW = THREE.ImageUtils.loadTexture( "assets/shipwreck/textures/water.jpg" );
  201.                 textureW.wrapS = textureW.wrapT = THREE.RepeatWrapping;
  202.                 textureW.repeat.set( 5, 5 );
  203.                 //md_mesh = new THREE.Mesh( md, new THREE.MeshBasicMaterial( { color: 0x0044ff, map: textureW } ) );
  204.                 //md.material = textureW;
  205.                 md_mesh = new THREE.Mesh( md, getMaterial("assets/test/Ratamahatta.jpg") );
  206.                
  207.                 md_mesh.rotation.y = -1.57;
  208.                 md_mesh.position.x = -145;
  209.                 md_mesh.position.z = -12;
  210.                 md_mesh.autoUpdateMatrix = false;
  211.                 scene.add( md_mesh );
  212.                 md_mesh.position.y = 189;
  213.                 md_mesh.scale.x = 0.2, md_mesh.scale.y = 0.2, md_mesh.scale.z = 0.2;
  214.                 changeAnim("stand");
  215.                 document.body.appendChild( loader.statusDomElement );
  216.                 scene.add( new THREE.AmbientLight( 0xeef103 ) );
  217.                 spotLight = new THREE.SpotLight( 0xffddbb, 8.15 );
  218.                 spotLight.position.set( 500, 2000, 0 );
  219.                 spotLight.castShadow = true;
  220.                 scene.add( spotLight );
  221.                 loader.load( "assets/shipwreck/shipwreck.js", createScene );
  222.                
  223.                
  224.                 function createScene( geometry ) {
  225.                     //console.log(geometry)
  226.                     island = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial() );
  227.                     island.overdraw = true;
  228.                     island.matrixAutoUpdate = false;
  229.                    
  230.                     island.autoUpdateMatrix = false;
  231.                     //island.rigidBody.set_mass(500);
  232.                     /*var ground = new jiglib.JTerrain(island);
  233.                     ground.set_friction(10);
  234.                     system.addBody(ground);
  235.                     ground.moveTo([0,-650,0,0]);*/
  236.                    
  237.                     scene.add( island );
  238.                     var triangleMesh = new jiglib.JTriangleMesh(island.geometry,new Vector3D(island.position.x,island.position.y,island.position.z,0 ),new jiglib.Matrix3D(),10,10);
  239.                     triangleMesh.set_movable(false);
  240.                     triangleMesh.mass = 500;
  241.                    
  242.                     triangleMesh.friction = 0.2;
  243.                     triangleMesh.restitution = 0.9;
  244.                     system.addBody(triangleMesh);
  245.                     island.rigidBody = triangleMesh;
  246.                     island.rigidBody.enableCollisions(triangleMesh);
  247.                    
  248.                 }
  249.  
  250.            
  251.                 water = new THREE.PlaneGeometry( 20000, 20000, worldWidth - 1, worldDepth - 1 );
  252.                 water.dynamic = true;
  253.  
  254.                 var i, j, il, jl;
  255.  
  256.                 for ( i = 0, il = water.vertices.length; i < il; i ++ ) {
  257.  
  258.                                     water.vertices[ i ].position.z = 35 * Math.sin( i/2 );
  259.  
  260.                 }
  261.  
  262.  
  263.  
  264.                 water.computeFaceNormals();
  265.                 water.computeVertexNormals();
  266.  
  267.                 var textureW = THREE.ImageUtils.loadTexture( "assets/shipwreck/textures/water.jpg" );
  268.                 textureW.wrapS = textureW.wrapT = THREE.RepeatWrapping;
  269.                 textureW.repeat.set( 5, 5 );
  270.  
  271.                 materialW = new THREE.MeshBasicMaterial( { color: 0x0044ff, map: textureW } );
  272.  
  273.                 meshW = new THREE.Mesh( water, materialW );
  274.                 meshW.rotation.x = - 90 * Math.PI / 180;
  275.                 meshW.position.y = 145;
  276.                 scene.add( meshW );
  277.                
  278.                 //render all the cool stuff
  279.                 renderer = new THREE.WebGLRenderer( { antialias: false,  clearColor: 0xaaccff, clearAlpha: 1} );
  280.                 renderer.setSize( window.innerWidth, window.innerHeight );
  281.                 renderer.autoClear = false;
  282.                 container.innerHTML = "";
  283.                 container.appendChild( renderer.domElement );
  284.                 stats = new Stats();
  285.                 stats.domElement.style.position = 'absolute';
  286.                 stats.domElement.style.top = '0px';
  287.                 container.appendChild( stats.domElement );
  288.                 document.addEventListener( 'mousedown', onDocumentMouseDown, false );
  289.             }
  290.        
  291.            
  292.             // this is the main game loop where most of the magic happens
  293.             function animate() {
  294.                 if(gameOn === true){
  295.                    
  296.                     requestAnimationFrame( animate );
  297.                     updateDynamicsWorld();
  298.                     render();
  299.                     stats.update();
  300.                 }
  301.             }
  302.            
  303.             function getMaterial (texture) {
  304.                 //var material = new THREE.MeshPhongMaterial( { map: new THREE.ImageUtils.loadTexture( texture ), ambient: 0xDEDEDE, specular: 0xAAAAAA, shading: THREE.SmoothShading } );     
  305.                
  306.                 var material = new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x030303, specular: 0x990000, shininess: 30 } )
  307.                 /*var img = new Image();
  308.                 material.map.image = img;
  309.                 img.onload = function () {
  310.                     material.map.image.loaded = 1;
  311.                 };
  312.                 img.src = texture;*/
  313.  
  314.                 return material;
  315.             }
  316.            
  317.             function render() {
  318.                 var time = new Date().getTime() * 0.01;
  319.                
  320.                
  321.                 var delta = clock.getDelta(),
  322.                 time = clock.getElapsedTime() * 10;
  323.  
  324.                 for ( var i = 0, l = water.vertices.length; i < l; i ++ ) {
  325.  
  326.                         water.vertices[ i ].position.z = 5 * Math.sin( i / 5 + ( time + i ) / 7 );
  327.  
  328.                 }
  329.  
  330.                
  331.                 meshW.geometry.__dirtyVertices = true;
  332.                 controls.update( delta );
  333.                 cubeTarget.x = - camera.position.x;
  334.                 cubeTarget.y = - camera.position.y;
  335.                 cubeTarget.z = - camera.position.z;
  336.                 md.update(60);
  337.                 // mark as dirty for update, thanks to alteredq :)
  338.                 md.__dirtyVertices = true; 
  339.                
  340.                 /*try{
  341.                     meshCl.position.x = camera.position.x;
  342.                     meshCl.position.y = camera.position.y;
  343.                     meshCl.position.z = camera.position.z;
  344.                 }catch(e){
  345.                
  346.                 }*/
  347.                
  348.                 renderer.clear();
  349.                 renderer.render( sceneCube, cameraCube );
  350.                 renderer.render(scene, camera);
  351.                
  352.             }
  353.            
  354.                 jQuery(document).ready(function() {
  355.                     init_jiglib();
  356.                 });
  357.                
  358.             function changeAnim(label) {
  359.                 if (label == "stop") {
  360.                     md.stop();
  361.                     //mdw.stop();
  362.                     return;
  363.                 }
  364.                 md.gotoAndPlay(label, true);
  365.                 //mdw.gotoAndPlay(label, true);
  366.             }  
  367.             function updateDynamicsWorld() {
  368.                 //sphere.moveTo( new Vector3D( meschCl.position.x, meschCl.position.y, meschCl.position.z, 0 ) );
  369.                 var t1 = new Date().getTime();
  370.                 var ms = t1 - t0;
  371.                 t0 = t1;
  372.                
  373.                
  374.                 system.integrate( ms / 500 );              
  375.                
  376.                 for ( var i = 0, l = scene.objects.length; i < l; i ++ ) {
  377.  
  378.                     var mesh = scene.objects[i];
  379.  
  380.                     if (mesh.rigidBody) {
  381.  
  382.                         var pos = mesh.rigidBody.get_currentState().position;
  383.                         var dir = mesh.rigidBody.get_currentState().orientation.get_rawData();
  384.  
  385.                         var matrix = new THREE.Matrix4();
  386.                         matrix.setTranslation( pos.x, pos.y, pos.z );
  387.                         var rotate = new THREE.Matrix4(dir[0], dir[1], dir[2], dir[3], dir[4], dir[5], dir[6], dir[7], dir[8], dir[9], dir[10], dir[11], dir[12], dir[13], dir[14], dir[15]);
  388.                         matrix.multiplySelf(rotate);
  389.  
  390.  
  391.                         mesh.matrix = matrix;
  392.                         mesh.matrixWorldNeedsUpdate = true;
  393.                         //mesh.update(false, true, camera);
  394.  
  395.                        
  396.                     }
  397.                    
  398.                    
  399.                 }
  400.            
  401.            
  402.            
  403.             }
  404.            
  405.             function throwShit(){
  406.             material_ = new THREE.MeshNormalMaterial();
  407.  
  408.                 //var ground = new THREE.Mesh( new Cube( 40, 0, 40 ), material );
  409.                 //ground.position.x = 0;
  410.                 //ground.position.y = -10;
  411.                 //ground.position.z = 0;
  412.                 //scene.addObject( ground );               
  413.                
  414.                 for ( var i = 0; i < 20; i ++ ) {
  415.  
  416.                     if (Math.random() > .5) {
  417.  
  418.                         var width = Math.random() * 4;
  419.                         var height = Math.random() * 4;
  420.                         var depth = Math.random() * 4;
  421.                    
  422.                         var geometryCC = new THREE.CubeGeometry( width, height, depth );
  423.                         var meshCC = new THREE.Mesh( geometryCC, material_ );
  424.                         //meshC = new THREE.Mesh( new THREE.CubeGeometry( 200000, 200000, 200000 ), material );
  425.                         meshCC.matrixAutoUpdate = false;
  426.                         meshCC.overdraw = true;                
  427.                        
  428.                         meshCC.position.x = -130;
  429.                         meshCC.position.y = 250;
  430.                         meshCC.position.z = -12;
  431.    
  432.                         scene.add( meshCC );
  433.        
  434.                         var cube = new jiglib.JBox( null, width, depth, height );
  435.                         cube.set_mass( width * height * depth );
  436.                         cube.moveTo( new Vector3D( meshCC.position.x, meshCC.position.y, meshCC.position.z, 0 ) );
  437.                         system.addBody( cube );                    
  438.                         meshCC.rigidBody = cube;
  439.                         console.log(meshCC.position);
  440.                     } else {
  441.                        
  442.                         var radius = Math.random() * 4 / 2;
  443.                    
  444.                         var geometryCC = new THREE.SphereGeometry( radius, 5, 5 );
  445.                         var meshCC = new THREE.Mesh( geometryCC, material_ );
  446.    
  447.                         meshCC.matrixAutoUpdate = false;
  448.                         meshCC.overdraw = true;                
  449.                        
  450.                         meshCC.position.x = -130;
  451.                         meshCC.position.y = 189;
  452.                         meshCC.position.z = -12;
  453.                         console.log(meshCC.position);
  454.                         scene.add( meshCC );
  455.        
  456.                         var spheres = new jiglib.JSphere( null, radius );
  457.                         spheres.set_mass( 4 / 3 * Math.PI * Math.pow( radius, 3 ) );
  458.                         spheres.moveTo( new Vector3D( meshCC.position.x, meshCC.position.y, meshCC.position.z, 0 ) );
  459.                         system.addBody( spheres );
  460.                        
  461.                         meshCC.rigidBody = spheres;
  462.                                                
  463.                     }
  464.  
  465.                 }
  466.                
  467.             }
  468.            
  469.             function onDocumentMouseDown( event ) {
  470.  
  471.                 event.preventDefault();
  472.  
  473.                 var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
  474.                 projector.unprojectVector( vector, camera );
  475.  
  476.                 var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
  477.  
  478.                 var intersects = ray.intersectScene( scene );
  479.  
  480.                 if ( intersects.length > 0 ) {
  481.  
  482.                     var object = intersects[ 0 ].object;
  483.                    
  484.                     if ( object.rigidBody ) {
  485.                        
  486.                         object.rigidBody.setLineVelocity( new Vector3D( 0, -20, 0 ), false );
  487.  
  488.                     }
  489.  
  490.                 }
  491.  
  492.             }
  493.            
  494.         </script>
  495.     </body>
  496. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement