Skip to content

Commit 1204287

Browse files
committed
Added pingponging to webgl_materials_cubemap_dynamic2 example.
1 parent 0f9b587 commit 1204287

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

examples/webgl_materials_cubemap_dynamic2.html

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@
3535

3636
<script>
3737

38-
var camera, cubeCamera, scene, renderer;
39-
var cube, sphere, torus;
38+
var camera, scene, renderer;
39+
var cube, sphere, torus, material;
4040

41-
var fov = 70,
41+
var count = 0, cubeCamera1, cubeCamera2;
42+
43+
var fov = 60,
4244
isUserInteracting = false,
4345
onMouseDownMouseX = 0, onMouseDownMouseY = 0,
4446
lon = 0, onMouseDownLon = 0,
@@ -62,31 +64,37 @@
6264

6365
scene = new THREE.Scene();
6466

65-
var mesh = new THREE.Mesh( new THREE.SphereGeometry( 500, 60, 40 ), new THREE.MeshBasicMaterial( { map: texture } ) );
67+
var mesh = new THREE.Mesh( new THREE.SphereGeometry( 500, 32, 16 ), new THREE.MeshBasicMaterial( { map: texture } ) );
6668
mesh.scale.x = -1;
6769
scene.add( mesh );
6870

6971
renderer = new THREE.WebGLRenderer( { antialias: true } );
7072
renderer.setPixelRatio( window.devicePixelRatio );
7173
renderer.setSize( window.innerWidth, window.innerHeight );
7274

73-
cubeCamera = new THREE.CubeCamera( 1, 1000, 256 );
74-
cubeCamera.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
75-
scene.add( cubeCamera );
75+
cubeCamera1 = new THREE.CubeCamera( 1, 1000, 256 );
76+
cubeCamera1.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
77+
scene.add( cubeCamera1 );
78+
79+
cubeCamera2 = new THREE.CubeCamera( 1, 1000, 256 );
80+
cubeCamera2.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
81+
scene.add( cubeCamera2 );
7682

7783
document.body.appendChild( renderer.domElement );
7884

7985
//
8086

81-
var material = new THREE.MeshBasicMaterial( { envMap: cubeCamera.renderTarget.texture } );
87+
material = new THREE.MeshBasicMaterial( {
88+
envMap: cubeCamera2.renderTarget.texture
89+
} );
8290

83-
sphere = new THREE.Mesh( new THREE.SphereGeometry( 20, 30, 15 ), material );
91+
sphere = new THREE.Mesh( new THREE.IcosahedronGeometry( 20, 3 ), material );
8492
scene.add( sphere );
8593

8694
cube = new THREE.Mesh( new THREE.BoxGeometry( 20, 20, 20 ), material );
8795
scene.add( cube );
8896

89-
torus = new THREE.Mesh( new THREE.TorusKnotGeometry( 20, 5, 100, 25 ), material );
97+
torus = new THREE.Mesh( new THREE.TorusKnotGeometry( 10, 5, 100, 25 ), material );
9098
scene.add( torus );
9199

92100
//
@@ -178,23 +186,16 @@
178186
phi = THREE.Math.degToRad( 90 - lat );
179187
theta = THREE.Math.degToRad( lon );
180188

181-
sphere.position.x = Math.sin( time * 0.001 ) * 30;
182-
sphere.position.y = Math.sin( time * 0.0011 ) * 30;
183-
sphere.position.z = Math.sin( time * 0.0012 ) * 30;
184-
185-
sphere.rotation.x += 0.02;
186-
sphere.rotation.y += 0.03;
187-
188-
cube.position.x = Math.sin( time * 0.001 + 2 ) * 30;
189-
cube.position.y = Math.sin( time * 0.0011 + 2 ) * 30;
190-
cube.position.z = Math.sin( time * 0.0012 + 2 ) * 30;
189+
cube.position.x = Math.cos( time * 0.001 ) * 30;
190+
cube.position.y = Math.sin( time * 0.001 ) * 30;
191+
cube.position.z = Math.sin( time * 0.001 ) * 30;
191192

192193
cube.rotation.x += 0.02;
193194
cube.rotation.y += 0.03;
194195

195-
torus.position.x = Math.sin( time * 0.001 + 4 ) * 30;
196-
torus.position.y = Math.sin( time * 0.0011 + 4 ) * 30;
197-
torus.position.z = Math.sin( time * 0.0012 + 4 ) * 30;
196+
torus.position.x = Math.cos( time * 0.001 + 10 ) * 30;
197+
torus.position.y = Math.sin( time * 0.001 + 10 ) * 30;
198+
torus.position.z = Math.sin( time * 0.001 + 10 ) * 30;
198199

199200
torus.rotation.x += 0.02;
200201
torus.rotation.y += 0.03;
@@ -207,7 +208,21 @@
207208

208209
sphere.visible = false; // *cough*
209210

210-
cubeCamera.updateCubeMap( renderer, scene );
211+
// pingpong
212+
213+
if ( count % 2 === 0 ) {
214+
215+
material.envMap = cubeCamera1.renderTarget.texture;
216+
cubeCamera2.updateCubeMap( renderer, scene );
217+
218+
} else {
219+
220+
material.envMap = cubeCamera2.renderTarget.texture;
221+
cubeCamera1.updateCubeMap( renderer, scene );
222+
223+
}
224+
225+
count ++;
211226

212227
sphere.visible = true; // *cough*
213228

0 commit comments

Comments
 (0)