PhysiJS and ThreeJS - Terrain
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/three.js/r69/three.min.js"></script>
<script src="https://rawgit.com/chandlerprall/Physijs/master/physi.js"></script>
<body>
</body>
JavaScript
Physijs.scripts.worker = 'physijs_worker.js';
Physijs.scripts.ammo = 'ammo.js';
// Scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
// Renderer
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement );
// Light (copy from http://chandlerprall.github.io/Physijs/examples/heightfield.html )
light = new THREE.DirectionalLight( 0xFFFFFF );
light.position.set( 20, 40, -15 );
light.target.position.copy( scene.position );
light.castShadow = true;
light.shadowCameraLeft = -60;
light.shadowCameraTop = -60;
light.shadowCameraRight = 60;
light.shadowCameraBottom = 60;
light.shadowCameraNear = 20;
light.shadowCameraFar = 200;
light.shadowBias = -.0001
light.shadowMapWidth = light.shadowMapHeight = 2048;
light.shadowDarkness = .7;
scene.add( light );
var terrainGeometry = new THREE.PlaneGeometry(100,100,99,99);
var terrainMaterial = new THREE.MeshBasicMaterial( { color: 0x0066ff } );
for ( var i = 0; i < terrainGeometry.vertices.length; i++ ) {
terrainGeometry.vertices[i].z = Math.floor(Math.random()*10);
}
terrainGeometry.computeFaceNormals();
terrainGeometry.computeVertexNormals();
var terrain = new Physijs.HeightfieldMesh(
terrainGeometry,
terrainMaterial,
0
);
terrain.rotation.x -= 90 * Math.PI / 180;
scene.add(terrain);
var objectMaterial = Physijs.createMaterial(
new THREE.MeshBasicMaterial(
{ color: 0xffffff, wireframe: true, transparent: true, opacity: 1 }
)
);
var objectMaterial2 = Physijs.createMaterial(
new THREE.MeshBasicMaterial(
{ color: 0xffffff, wireframe: true, transparent: true, opacity: 1 }
)
);
var sphereGeometry = new THREE.SphereGeometry(4, 4, 4);
var sphereMesh = new Physijs.SphereMesh(
sphereGeometry,
objectMaterial,
0.8,
0.3
);
scene.add( sphereMesh );
sphereMesh.position.y =...