|
21 | 21 | import { GUI } from './jsm/libs/dat.gui.module.js'; |
22 | 22 |
|
23 | 23 | import { OrbitControls } from './jsm/controls/OrbitControls.js'; |
| 24 | + import { RectAreaLightHelper } from './jsm/helpers/RectAreaLightHelper.js'; |
24 | 25 | import { RectAreaLightUniformsLib } from './jsm/lights/RectAreaLightUniformsLib.js'; |
25 | 26 |
|
26 | 27 | var renderer, scene, camera; |
27 | 28 |
|
28 | 29 | var origin = new THREE.Vector3(); |
29 | 30 |
|
30 | | - var rectLight; |
| 31 | + var rectLight, rectLightHelper; |
31 | 32 |
|
32 | 33 | var param = {}; |
33 | 34 | var stats; |
|
76 | 77 | rectLight.position.set( 5, 5, 0 ); |
77 | 78 | scene.add( rectLight ); |
78 | 79 |
|
79 | | - var rectLightMesh = new THREE.Mesh( new THREE.PlaneBufferGeometry(), new THREE.MeshBasicMaterial( { side: THREE.BackSide } ) ); |
80 | | - rectLightMesh.scale.x = rectLight.width; |
81 | | - rectLightMesh.scale.y = rectLight.height; |
82 | | - rectLight.add( rectLightMesh ); |
83 | | - |
84 | | - var rectLightMeshBack = new THREE.Mesh( new THREE.PlaneBufferGeometry(), new THREE.MeshBasicMaterial( { color: 0x080808 } ) ); |
85 | | - rectLightMesh.add( rectLightMeshBack ); |
| 80 | + rectLightHelper = new RectAreaLightHelper( rectLight ); |
| 81 | + rectLight.add( rectLightHelper ); |
86 | 82 |
|
87 | 83 | var geoFloor = new THREE.BoxBufferGeometry( 2000, 0.1, 2000 ); |
88 | 84 | var matStdFloor = new THREE.MeshStandardMaterial( { color: 0x808080, roughness: 0, metalness: 0 } ); |
|
142 | 138 | lightFolder.add( param, 'width', 1, 20 ).step( 0.1 ).onChange( function ( val ) { |
143 | 139 |
|
144 | 140 | rectLight.width = val; |
145 | | - rectLightMesh.scale.x = val; |
146 | 141 |
|
147 | 142 | } ); |
148 | 143 |
|
149 | 144 | lightFolder.add( param, 'height', 1, 20 ).step( 0.1 ).onChange( function ( val ) { |
150 | 145 |
|
151 | 146 | rectLight.height = val; |
152 | | - rectLightMesh.scale.y = val; |
153 | 147 |
|
154 | 148 | } ); |
155 | 149 |
|
156 | 150 | lightFolder.addColor( param, 'color' ).onChange( function ( val ) { |
157 | 151 |
|
158 | 152 | rectLight.color.setHex( val ); |
159 | | - rectLightMesh.material.color.copy( rectLight.color ).multiplyScalar( rectLight.intensity ); |
160 | 153 |
|
161 | 154 | } ); |
162 | 155 |
|
163 | 156 | lightFolder.add( param, 'intensity', 0.0, 4.0 ).step( 0.01 ).onChange( function ( val ) { |
164 | 157 |
|
165 | 158 | rectLight.intensity = val; |
166 | | - rectLightMesh.material.color.copy( rectLight.color ).multiplyScalar( rectLight.intensity ); |
167 | 159 |
|
168 | 160 | } ); |
169 | 161 |
|
|
249 | 241 |
|
250 | 242 | } |
251 | 243 |
|
| 244 | + rectLightHelper.update(); |
| 245 | + |
252 | 246 | renderer.render( scene, camera ); |
253 | 247 |
|
254 | 248 | stats.update(); |
|
0 commit comments