Skip to content

Commit 47a76b1

Browse files
authored
Merge pull request #14719 from WestLangley/dev-example_cleanup
Terrain raycast example: cleanup
2 parents 57e4701 + c3174e9 commit 47a76b1

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

examples/webgl_geometry_terrain_raycast.html

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,7 @@
4444

4545
<script>
4646

47-
if ( ! Detector.webgl ) {
48-
49-
Detector.addGetWebGLMessage();
50-
document.getElementById( 'container' ).innerHTML = "";
51-
52-
}
47+
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
5348

5449
var container, stats;
5550

@@ -58,7 +53,7 @@
5853
var mesh, texture;
5954

6055
var worldWidth = 256, worldDepth = 256,
61-
worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;
56+
worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;
6257

6358
var clock = new THREE.Clock();
6459

@@ -73,21 +68,31 @@
7368
function init() {
7469

7570
container = document.getElementById( 'container' );
71+
container.innerHTML = "";
7672

77-
camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 20000 );
73+
renderer = new THREE.WebGLRenderer( { antialias: true } );
74+
renderer.setPixelRatio( window.devicePixelRatio );
75+
renderer.setSize( window.innerWidth, window.innerHeight );
76+
container.appendChild( renderer.domElement );
7877

7978
scene = new THREE.Scene();
8079
scene.background = new THREE.Color( 0xbfd1e5 );
8180

82-
controls = new THREE.OrbitControls(camera);
83-
controls.target.set( 0.0, 100.0, 0.0 );
84-
controls.userPanSpeed = 100;
81+
camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 10, 20000 );
82+
83+
controls = new THREE.OrbitControls( camera, renderer.domElement );
84+
controls.minDistance = 1000;
85+
controls.maxDistance = 10000;
86+
controls.maxPolarAngle = Math.PI / 2;
87+
88+
//
8589

8690
var data = generateHeight( worldWidth, worldDepth );
8791

8892
controls.target.y = data[ worldHalfWidth + worldHalfDepth * worldWidth ] + 500;
89-
camera.position.y = controls.target.y + 2000;
93+
camera.position.y = controls.target.y + 2000;
9094
camera.position.x = 2000;
95+
controls.update();
9196

9297
var geometry = new THREE.PlaneBufferGeometry( 7500, 7500, worldWidth - 1, worldDepth - 1 );
9398
geometry.rotateX( - Math.PI / 2 );
@@ -100,7 +105,9 @@
100105

101106
}
102107

103-
geometry.computeFaceNormals();
108+
geometry.computeFaceNormals(); // needed for helper
109+
110+
//
104111

105112
texture = new THREE.CanvasTexture( generateTexture( data, worldWidth, worldDepth ) );
106113
texture.wrapS = THREE.ClampToEdgeWrapping;
@@ -115,13 +122,6 @@
115122
helper = new THREE.Mesh( geometry, new THREE.MeshNormalMaterial() );
116123
scene.add( helper );
117124

118-
renderer = new THREE.WebGLRenderer( { antialias: true } );
119-
renderer.setPixelRatio( window.devicePixelRatio );
120-
renderer.setSize( window.innerWidth, window.innerHeight );
121-
122-
container.innerHTML = "";
123-
124-
container.appendChild( renderer.domElement );
125125
container.addEventListener( 'mousemove', onMouseMove, false );
126126

127127
stats = new Stats();
@@ -145,13 +145,13 @@
145145
function generateHeight( width, height ) {
146146

147147
var size = width * height, data = new Uint8Array( size ),
148-
perlin = new ImprovedNoise(), quality = 1, z = Math.random() * 100;
148+
perlin = new ImprovedNoise(), quality = 1, z = Math.random() * 100;
149149

150150
for ( var j = 0; j < 4; j ++ ) {
151151

152152
for ( var i = 0; i < size; i ++ ) {
153153

154-
var x = i % width, y = ~~ ( i / width );
154+
var x = i % width, y = ~ ~ ( i / width );
155155
data[ i ] += Math.abs( perlin.noise( x / quality, y / quality, z ) * quality * 1.75 );
156156

157157
}
@@ -166,8 +166,10 @@
166166

167167
function generateTexture( data, width, height ) {
168168

169+
// bake lighting into texture
170+
169171
var canvas, canvasScaled, context, image, imageData,
170-
level, diff, vector3, sun, shade;
172+
level, diff, vector3, sun, shade;
171173

172174
vector3 = new THREE.Vector3( 0, 0, 0 );
173175

@@ -197,6 +199,7 @@
197199
imageData[ i ] = ( 96 + shade * 128 ) * ( 0.5 + data[ j ] * 0.007 );
198200
imageData[ i + 1 ] = ( 32 + shade * 96 ) * ( 0.5 + data[ j ] * 0.007 );
199201
imageData[ i + 2 ] = ( shade * 96 ) * ( 0.5 + data[ j ] * 0.007 );
202+
200203
}
201204

202205
context.putImageData( image, 0, 0 );
@@ -216,7 +219,7 @@
216219

217220
for ( var i = 0, l = imageData.length; i < l; i += 4 ) {
218221

219-
var v = ~~ ( Math.random() * 5 );
222+
var v = ~ ~ ( Math.random() * 5 );
220223

221224
imageData[ i ] += v;
222225
imageData[ i + 1 ] += v;
@@ -243,7 +246,6 @@
243246

244247
function render() {
245248

246-
controls.update();
247249
renderer.render( scene, camera );
248250

249251
}

0 commit comments

Comments
 (0)