Skip to content

Commit db4f94b

Browse files
authored
ViewHelper: Simplified and prettified. (#28312)
1 parent 97fcd3c commit db4f94b

File tree

1 file changed

+32
-67
lines changed

1 file changed

+32
-67
lines changed

examples/jsm/helpers/ViewHelper.js

Lines changed: 32 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
BoxGeometry,
2+
CylinderGeometry,
33
CanvasTexture,
44
Color,
55
Euler,
@@ -11,6 +11,7 @@ import {
1111
Raycaster,
1212
Sprite,
1313
SpriteMaterial,
14+
SRGBColorSpace,
1415
Vector2,
1516
Vector3,
1617
Vector4
@@ -27,9 +28,10 @@ class ViewHelper extends Object3D {
2728
this.animating = false;
2829
this.center = new Vector3();
2930

30-
const color1 = new Color( '#ff3653' );
31-
const color2 = new Color( '#8adb00' );
32-
const color3 = new Color( '#2c8fff' );
31+
const color1 = new Color( '#ff4466' );
32+
const color2 = new Color( '#88ff44' );
33+
const color3 = new Color( '#4488ff' );
34+
const color4 = new Color( '#000000' );
3335

3436
const interactiveObjects = [];
3537
const raycaster = new Raycaster();
@@ -39,7 +41,7 @@ class ViewHelper extends Object3D {
3941
const orthoCamera = new OrthographicCamera( - 2, 2, 2, - 2, 0, 4 );
4042
orthoCamera.position.set( 0, 0, 2 );
4143

42-
const geometry = new BoxGeometry( 0.8, 0.05, 0.05 ).translate( 0.4, 0, 0 );
44+
const geometry = new CylinderGeometry( 0.04, 0.04, 0.8, 5 ).rotateZ( - Math.PI / 2 ).translate( 0.4, 0, 0 );
4345

4446
const xAxis = new Mesh( geometry, getAxisMaterial( color1 ) );
4547
const yAxis = new Mesh( geometry, getAxisMaterial( color2 ) );
@@ -52,28 +54,35 @@ class ViewHelper extends Object3D {
5254
this.add( zAxis );
5355
this.add( yAxis );
5456

55-
const posXAxisHelper = new Sprite( getSpriteMaterial( color1, 'X' ) );
56-
posXAxisHelper.userData.type = 'posX';
57-
const posYAxisHelper = new Sprite( getSpriteMaterial( color2, 'Y' ) );
58-
posYAxisHelper.userData.type = 'posY';
59-
const posZAxisHelper = new Sprite( getSpriteMaterial( color3, 'Z' ) );
60-
posZAxisHelper.userData.type = 'posZ';
61-
const negXAxisHelper = new Sprite( getSpriteMaterial( color1 ) );
62-
negXAxisHelper.userData.type = 'negX';
63-
const negYAxisHelper = new Sprite( getSpriteMaterial( color2 ) );
64-
negYAxisHelper.userData.type = 'negY';
65-
const negZAxisHelper = new Sprite( getSpriteMaterial( color3 ) );
66-
negZAxisHelper.userData.type = 'negZ';
57+
const spriteMaterial1 = getSpriteMaterial( color1 );
58+
const spriteMaterial2 = getSpriteMaterial( color2 );
59+
const spriteMaterial3 = getSpriteMaterial( color3 );
60+
const spriteMaterial4 = getSpriteMaterial( color4 );
61+
62+
const posXAxisHelper = new Sprite( spriteMaterial1 );
63+
const posYAxisHelper = new Sprite( spriteMaterial2 );
64+
const posZAxisHelper = new Sprite( spriteMaterial3 );
65+
const negXAxisHelper = new Sprite( spriteMaterial4 );
66+
const negYAxisHelper = new Sprite( spriteMaterial4 );
67+
const negZAxisHelper = new Sprite( spriteMaterial4 );
6768

6869
posXAxisHelper.position.x = 1;
6970
posYAxisHelper.position.y = 1;
7071
posZAxisHelper.position.z = 1;
7172
negXAxisHelper.position.x = - 1;
72-
negXAxisHelper.scale.setScalar( 0.8 );
7373
negYAxisHelper.position.y = - 1;
74-
negYAxisHelper.scale.setScalar( 0.8 );
7574
negZAxisHelper.position.z = - 1;
76-
negZAxisHelper.scale.setScalar( 0.8 );
75+
76+
negXAxisHelper.material.opacity = 0.2;
77+
negYAxisHelper.material.opacity = 0.2;
78+
negZAxisHelper.material.opacity = 0.2;
79+
80+
posXAxisHelper.userData.type = 'posX';
81+
posYAxisHelper.userData.type = 'posY';
82+
posZAxisHelper.userData.type = 'posZ';
83+
negXAxisHelper.userData.type = 'negX';
84+
negYAxisHelper.userData.type = 'negY';
85+
negZAxisHelper.userData.type = 'negZ';
7786

7887
this.add( posXAxisHelper );
7988
this.add( posYAxisHelper );
@@ -101,42 +110,6 @@ class ViewHelper extends Object3D {
101110
point.set( 0, 0, 1 );
102111
point.applyQuaternion( camera.quaternion );
103112

104-
if ( point.x >= 0 ) {
105-
106-
posXAxisHelper.material.opacity = 1;
107-
negXAxisHelper.material.opacity = 0.5;
108-
109-
} else {
110-
111-
posXAxisHelper.material.opacity = 0.5;
112-
negXAxisHelper.material.opacity = 1;
113-
114-
}
115-
116-
if ( point.y >= 0 ) {
117-
118-
posYAxisHelper.material.opacity = 1;
119-
negYAxisHelper.material.opacity = 0.5;
120-
121-
} else {
122-
123-
posYAxisHelper.material.opacity = 0.5;
124-
negYAxisHelper.material.opacity = 1;
125-
126-
}
127-
128-
if ( point.z >= 0 ) {
129-
130-
posZAxisHelper.material.opacity = 1;
131-
negZAxisHelper.material.opacity = 0.5;
132-
133-
} else {
134-
135-
posZAxisHelper.material.opacity = 0.5;
136-
negZAxisHelper.material.opacity = 1;
137-
138-
}
139-
140113
//
141114

142115
const x = domElement.offsetWidth - dim;
@@ -298,29 +271,21 @@ class ViewHelper extends Object3D {
298271

299272
}
300273

301-
function getSpriteMaterial( color, text = null ) {
274+
function getSpriteMaterial( color ) {
302275

303276
const canvas = document.createElement( 'canvas' );
304277
canvas.width = 64;
305278
canvas.height = 64;
306279

307280
const context = canvas.getContext( '2d' );
308281
context.beginPath();
309-
context.arc( 32, 32, 16, 0, 2 * Math.PI );
282+
context.arc( 32, 32, 14, 0, 2 * Math.PI );
310283
context.closePath();
311284
context.fillStyle = color.getStyle();
312285
context.fill();
313286

314-
if ( text !== null ) {
315-
316-
context.font = '24px Arial';
317-
context.textAlign = 'center';
318-
context.fillStyle = '#000000';
319-
context.fillText( text, 32, 41 );
320-
321-
}
322-
323287
const texture = new CanvasTexture( canvas );
288+
texture.colorSpace = SRGBColorSpace;
324289

325290
return new SpriteMaterial( { map: texture, toneMapped: false } );
326291

0 commit comments

Comments
 (0)