Skip to content

Commit 7a91b67

Browse files
authored
Editor: Added shading mode selector. (#25554)
1 parent fe31bbc commit 7a91b67

File tree

4 files changed

+62
-7
lines changed

4 files changed

+62
-7
lines changed

editor/js/Editor.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ function Editor() {
8888
historyChanged: new Signal(),
8989

9090
viewportCameraChanged: new Signal(),
91+
viewportShadingChanged: new Signal(),
9192

9293
intersectionsDetected: new Signal(),
9394

@@ -122,7 +123,9 @@ function Editor() {
122123
this.helpers = {};
123124

124125
this.cameras = {};
126+
125127
this.viewportCamera = this.camera;
128+
this.viewportShading = 'default';
126129

127130
this.addCamera( this.camera );
128131

@@ -539,6 +542,13 @@ Editor.prototype = {
539542

540543
},
541544

545+
setViewportShading: function( value ) {
546+
547+
this.viewportShading = value;
548+
this.signals.viewportShadingChanged.dispatch();
549+
550+
},
551+
542552
//
543553

544554
select: function ( object ) {

editor/js/Viewport.Camera.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function ViewportCamera( editor ) {
88

99
const select = new UISelect();
1010
select.setPosition( 'absolute' );
11-
select.setRight( '10px' );
11+
select.setRight( '120px' );
1212
select.setTop( '10px' );
1313
select.onChange( function () {
1414

editor/js/Viewport.Shading.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { UISelect } from './libs/ui.js';
2+
3+
function ViewportShading( editor ) {
4+
5+
const select = new UISelect();
6+
select.setPosition( 'absolute' );
7+
select.setRight( '10px' );
8+
select.setTop( '10px' );
9+
select.setOptions( { 'default': 'default', 'normals': 'normals', 'wireframe': 'wireframe' } );
10+
select.setValue( 'default' );
11+
select.onChange( function () {
12+
13+
editor.setViewportShading( this.getValue() );
14+
15+
} );
16+
17+
return select;
18+
19+
}
20+
21+
export { ViewportShading };

editor/js/Viewport.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import { UIPanel } from './libs/ui.js';
77
import { EditorControls } from './EditorControls.js';
88

99
import { ViewportCamera } from './Viewport.Camera.js';
10+
import { ViewportShading } from './Viewport.Shading.js';
1011
import { ViewportInfo } from './Viewport.Info.js';
12+
1113
import { ViewHelper } from './Viewport.ViewHelper.js';
1214
import { VR } from './Viewport.VR.js';
1315

@@ -26,6 +28,7 @@ function Viewport( editor ) {
2628
container.setPosition( 'absolute' );
2729

2830
container.add( new ViewportCamera( editor ) );
31+
container.add( new ViewportShading( editor ) );
2932
container.add( new ViewportInfo( editor ) );
3033

3134
//
@@ -41,6 +44,7 @@ function Viewport( editor ) {
4144
// helpers
4245

4346
const grid = new THREE.Group();
47+
sceneHelpers.add( grid );
4448

4549
const grid1 = new THREE.GridHelper( 30, 30, 0x888888 );
4650
grid1.material.color.setHex( 0x888888 );
@@ -49,7 +53,6 @@ function Viewport( editor ) {
4953

5054
const grid2 = new THREE.GridHelper( 30, 6, 0x222222 );
5155
grid2.material.color.setHex( 0x222222 );
52-
grid2.material.depthFunc = THREE.AlwaysDepth;
5356
grid2.material.vertexColors = false;
5457
grid.add( grid2 );
5558

@@ -219,6 +222,8 @@ function Viewport( editor ) {
219222

220223
// event.preventDefault();
221224

225+
if ( event.target !== renderer.domElement ) return;
226+
222227
const array = getMousePosition( container.dom, event.clientX, event.clientY );
223228
onDownPosition.fromArray( array );
224229

@@ -628,6 +633,30 @@ function Viewport( editor ) {
628633

629634
} );
630635

636+
signals.viewportShadingChanged.add( function () {
637+
638+
const viewportShading = editor.viewportShading;
639+
640+
switch ( viewportShading ) {
641+
642+
case 'default':
643+
scene.overrideMaterial = null;
644+
break;
645+
646+
case 'normals':
647+
scene.overrideMaterial = new THREE.MeshNormalMaterial();
648+
break;
649+
650+
case 'wireframe':
651+
scene.overrideMaterial = new THREE.MeshBasicMaterial( { color: 0x000000, wireframe: true } );
652+
break;
653+
654+
}
655+
656+
render();
657+
658+
} );
659+
631660
signals.exitedVR.add( render );
632661

633662
//
@@ -714,13 +743,8 @@ function Viewport( editor ) {
714743

715744
startTime = performance.now();
716745

717-
// Adding/removing grid to scene so materials with depthWrite false
718-
// don't render under the grid.
719-
720-
scene.add( grid );
721746
renderer.setViewport( 0, 0, container.dom.offsetWidth, container.dom.offsetHeight );
722747
renderer.render( scene, editor.viewportCamera );
723-
scene.remove( grid );
724748

725749
if ( camera === editor.viewportCamera ) {
726750

0 commit comments

Comments
 (0)