@@ -25,25 +25,26 @@ const iesProfileURLs = [
2525const params = {
2626
2727 floorMaterial : {
28- color : '#3465a4 ' ,
28+ color : '#dddddd ' ,
2929 roughness : 0.4 ,
3030 metalness : 0.4 ,
3131 } ,
3232 wallMaterial : {
33- color : '#FFFFFF ' ,
33+ color : '#a06464 ' ,
3434 roughness : 0.4 ,
3535 metalness : 0.1 ,
3636 } ,
3737
3838 multipleImportanceSampling : true ,
39- environmentIntensity : 2.5 ,
39+ environmentIntensity : 0.1 ,
4040 bounces : 3 ,
4141 samplesPerFrame : 1 ,
4242 resolutionScale : 1 / window . devicePixelRatio , // TODO: remove before commit
4343 filterGlossyFactor : 0.5 ,
44- tiles : 1 ,
45- showTransformControls : true ,
44+ tiles : 2 ,
4645 iesProfile : - 1 ,
46+ showTransformControls : false ,
47+ showLightHelper : false ,
4748} ;
4849
4950// adjust performance parameters for mobile
@@ -67,10 +68,11 @@ async function init() {
6768
6869 const aspect = window . innerWidth / window . innerHeight ;
6970 perspectiveCamera = new PhysicalCamera ( 75 , aspect , 0.025 , 500 ) ;
70- perspectiveCamera . position . set ( 0 , 2 , 15 ) ;
71+ perspectiveCamera . position . set ( - 2 , 4 , 8 ) . multiplyScalar ( 0.8 ) ;
7172
7273 ptRenderer = new PathTracingRenderer ( renderer ) ;
7374 ptRenderer . material = new PhysicalPathTracingMaterial ( ) ;
75+ ptRenderer . material . backgroundBlur = 0.2 ;
7476 ptRenderer . material . setDefine ( 'FEATURE_MIS' , Number ( params . multipleImportanceSampling ) ) ;
7577 ptRenderer . tiles . set ( params . tiles , params . tiles ) ;
7678 ptRenderer . camera = perspectiveCamera ;
@@ -81,6 +83,8 @@ async function init() {
8183 } ) ) ;
8284
8385 controls = new OrbitControls ( perspectiveCamera , renderer . domElement ) ;
86+ controls . target . y = 1.5 ;
87+ controls . update ( ) ;
8488 controls . addEventListener ( 'change' , ( ) => {
8589
8690 ptRenderer . reset ( ) ;
@@ -97,6 +101,7 @@ async function init() {
97101 . load ( 'https://raw.githubusercontent.com/mrdoob/three.js/dev/examples/textures/equirectangular/royal_esplanade_1k.hdr' , texture => {
98102
99103 scene . environment = texture ;
104+ scene . background = texture ;
100105
101106 resolve ( ) ;
102107
@@ -115,10 +120,18 @@ async function init() {
115120
116121 // objects
117122 gltf . scene . scale . setScalar ( 1 ) ;
118- gltf . scene . position . x = 0 ;
119123 gltf . scene . updateMatrixWorld ( ) ;
120- gltf . castShadow = true ;
121- gltf . receiveShadow = true ;
124+ gltf . scene . traverse ( c => {
125+
126+ c . castShadow = true ;
127+ c . receiveShadow = true ;
128+ if ( c . material ) {
129+
130+ c . material . roughness = 0.2 ;
131+
132+ }
133+
134+ } ) ;
122135 group . add ( gltf . scene ) ;
123136
124137 const box = new THREE . Box3 ( ) ;
@@ -135,7 +148,7 @@ async function init() {
135148 group . add ( floor ) ;
136149
137150 const wall = new THREE . Mesh (
138- new THREE . BoxGeometry ( 12 , 6 , 0.5 ) ,
151+ new THREE . BoxGeometry ( 14 , 6 , 0.5 ) ,
139152 new THREE . MeshStandardMaterial ( { color : 0xffffff , roughness : 0 , metalness : 1.0 } ) ,
140153 ) ;
141154 wall . castShadow = true ;
@@ -210,7 +223,7 @@ async function init() {
210223
211224 const targetObject = new THREE . Object3D ( ) ;
212225 targetObject . position . x = i * 8.0 ;
213- targetObject . position . y = floor . position . y + 0.05 ;
226+ targetObject . position . y = floor . position . y + 2 ;
214227 targetObject . position . z = 0.05 ;
215228 targetObject . updateMatrixWorld ( ) ;
216229 spotLight . updateMatrixWorld ( ) ;
@@ -229,6 +242,7 @@ async function init() {
229242 spotLightHelpers . push ( spotLightHelper ) ;
230243
231244 spotLight1 = spotLight ;
245+ spotLight1 . position . z = 4 ;
232246
233247 makeTransformControls ( spotLight ) ;
234248 makeTransformControls ( targetObject ) ;
@@ -279,6 +293,7 @@ async function init() {
279293 window . addEventListener ( 'resize' , onResize ) ;
280294 const gui = new GUI ( ) ;
281295 gui . add ( params , 'showTransformControls' ) ;
296+ gui . add ( params , 'showLightHelper' ) ;
282297
283298 const ptFolder = gui . addFolder ( 'Path Tracing' ) ;
284299 ptFolder . add ( params , 'multipleImportanceSampling' ) . onChange ( value => {
@@ -308,6 +323,7 @@ async function init() {
308323 onResize ( ) ;
309324
310325 } ) ;
326+ ptFolder . close ( ) ;
311327
312328 const envFolder = gui . addFolder ( 'Environment' ) ;
313329 envFolder . add ( params , 'environmentIntensity' , 0 , 10 ) . onChange ( ( ) => {
@@ -423,8 +439,14 @@ function animate() {
423439 fsQuad . material . depthWrite = false ;
424440 fsQuad . render ( renderer ) ;
425441
426- if ( params . showTransformControls )
427- renderer . render ( transformControlsScene , perspectiveCamera ) ;
442+ transformControlsScene . children . forEach ( c => {
443+
444+ c . visible = c instanceof THREE . SpotLightHelper ? params . showLightHelper : params . showTransformControls ;
445+ if ( c . enabled ) c . enabled = params . showTransformControls ;
446+
447+ } ) ;
448+
449+ renderer . render ( transformControlsScene , perspectiveCamera ) ;
428450
429451 renderer . autoClear = true ;
430452
0 commit comments