source: other-projects/playing-in-the-street/summer-2013/trunk/Playing-in-the-Street-WPF/Content/Web/mrdoob-three.js-4862f5f/src/extras/helpers/VertexTangentsHelper.js@ 28897

Last change on this file since 28897 was 28897, checked in by davidb, 10 years ago

GUI front-end to server base plus web page content

File size: 2.0 KB
Line 
1/**
2 * @author mrdoob / http://mrdoob.com/
3 * @author WestLangley / http://github.com/WestLangley
4*/
5
6THREE.VertexTangentsHelper = function ( object, size, hex, linewidth ) {
7
8 this.object = object;
9
10 this.size = ( size !== undefined ) ? size : 1;
11
12 var color = ( hex !== undefined ) ? hex : 0x0000ff;
13
14 var width = ( linewidth !== undefined ) ? linewidth : 1;
15
16 var geometry = new THREE.Geometry();
17
18 var vertices = object.geometry.vertices;
19
20 var faces = object.geometry.faces;
21
22 for ( var i = 0, l = faces.length; i < l; i ++ ) {
23
24 var face = faces[ i ];
25
26 for ( var j = 0, jl = face.vertexTangents.length; j < jl; j ++ ) {
27
28 geometry.vertices.push( new THREE.Vector3() );
29 geometry.vertices.push( new THREE.Vector3() );
30
31 }
32
33 }
34
35 THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ), THREE.LinePieces );
36
37 this.matrixAutoUpdate = false;
38
39 this.update();
40
41};
42
43THREE.VertexTangentsHelper.prototype = Object.create( THREE.Line.prototype );
44
45THREE.VertexTangentsHelper.prototype.update = ( function ( object ) {
46
47 var v1 = new THREE.Vector3();
48
49 return function( object ) {
50
51 var keys = [ 'a', 'b', 'c', 'd' ];
52
53 this.object.updateMatrixWorld( true );
54
55 var vertices = this.geometry.vertices;
56
57 var verts = this.object.geometry.vertices;
58
59 var faces = this.object.geometry.faces;
60
61 var worldMatrix = this.object.matrixWorld;
62
63 var idx = 0;
64
65 for ( var i = 0, l = faces.length; i < l; i ++ ) {
66
67 var face = faces[ i ];
68
69 for ( var j = 0, jl = face.vertexTangents.length; j < jl; j ++ ) {
70
71 var vertexId = face[ keys[ j ] ];
72 var vertex = verts[ vertexId ];
73
74 var tangent = face.vertexTangents[ j ];
75
76 vertices[ idx ].copy( vertex ).applyMatrix4( worldMatrix );
77
78 v1.copy( tangent ).transformDirection( worldMatrix ).multiplyScalar( this.size );
79
80 v1.add( vertices[ idx ] );
81 idx = idx + 1;
82
83 vertices[ idx ].copy( v1 );
84 idx = idx + 1;
85
86 }
87
88 }
89
90 this.geometry.verticesNeedUpdate = true;
91
92 return this;
93
94 }
95
96}());
Note: See TracBrowser for help on using the repository browser.