提交 26412389 编写于 作者: M Mr.doob

- Improved Terrain Generator demo.

上级 2cd12340
assets/examples/06_terrain.png

13.0 KB | W: | H:

assets/examples/06_terrain.png

12.9 KB | W: | H:

assets/examples/06_terrain.png
assets/examples/06_terrain.png
assets/examples/06_terrain.png
assets/examples/06_terrain.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -31,7 +31,7 @@
<body>
<div id="container"><br /><br /><br /><br /><br />Generating...</div>
<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - terrain demo.</div>
<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - terrain demo. <a href="geometry_terrain.html">generate another</a></div>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/stats.js"></script>
<script type="text/javascript" src="../build/three.js"></script>
......@@ -152,13 +152,13 @@
var plane = new Plane( 2000, 2000, quality, quality );
var data = heightMap.getContext( '2d' ).getImageData( 0, 0, heightMap.width, heightMap.height ).data;
var pixelsPerTriangle = Math.floor(heightMap.width / quality1);
var pixelsPerTriangle = Math.floor(heightMap.width / quality);
for ( var y = 0; y < quality1; y++ ) {
for (var x = 0; x < quality1; x++ ) {
plane.vertices[x + y * quality1].position.z = data[((x * pixelsPerTriangle) + (y * pixelsPerTriangle) * heightMap.width) * 4];
plane.vertices[x + y * quality1].position.z = data[((x * pixelsPerTriangle) + (y * pixelsPerTriangle) * heightMap.width) * 4] * 2;
}
......@@ -230,7 +230,7 @@
for ( var i = 0; i < size; i ++ ) {
data[ i * 4 ] += Math.floor( perlin.noise( x / quality, yy, zz ) * quality + 10 );
data[ i * 4 ] += Math.floor( Math.abs( perlin.noise( x / quality, yy, zz ) * 0.5 ) * quality + 10 );
x++;
......@@ -253,7 +253,13 @@
function shadow( texture ) {
var canvas, context, image, data, src_data,
index, level, diff, width = texture.width, height = texture.height;
index, level, diff, width = texture.width, height = texture.height,
vector3, sun;
vector3 = new THREE.Vector3( 0, 0, 0 );
sun = new THREE.Vector3( 1, 1, 1 );
sun.normalize();
canvas = document.createElement( 'canvas' );
canvas.width = width;
......@@ -274,21 +280,16 @@
index = ( x + y * width ) * 4;
diff = 0;
level = width / 4;
while ( level > 4 ) {
vector3.x = src_data[ index - 4 ] - src_data[ index + 4 ];
vector3.y = 2;
vector3.z = src_data[ index - ( width * 4 ) ] - src_data[ index + ( width * 4 ) ];;
vector3.normalize();
diff += ( ( src_data[ index - level ] >>> 0 ) - ( src_data[ index + level ] >>> 0 ) ) +
( ( src_data[ index - ( width * level ) ] >>> 0 ) - ( src_data[ index + ( width * level ) ] >>> 0 ) ) + 32;
level /= 2;
}
var color = Math.max(0, vector3.dot(sun) );
data[ index ] = diff * 0.45;
data[ index + 1 ] = diff * 0.29;
data[ index + 2 ] = diff * 0.19;
data[ index ] = 96 + color * 128;
data[ index + 1 ] = 32 + color * 96 + src_data[ index ] * 0.1;
data[ index + 2 ] = color * 96 + src_data[ index ] * 0.1;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册