@@ -46,133 +46,6 @@ THREE.ImageUtils = {
46
46
47
47
console . error ( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' )
48
48
49
- } ,
50
-
51
- getNormalMap : function ( image , depth ) {
52
-
53
- // Adapted from http://www.paulbrunt.co.uk/lab/heightnormal/
54
-
55
- function cross ( a , b ) {
56
-
57
- return [ a [ 1 ] * b [ 2 ] - a [ 2 ] * b [ 1 ] , a [ 2 ] * b [ 0 ] - a [ 0 ] * b [ 2 ] , a [ 0 ] * b [ 1 ] - a [ 1 ] * b [ 0 ] ] ;
58
-
59
- }
60
-
61
- function subtract ( a , b ) {
62
-
63
- return [ a [ 0 ] - b [ 0 ] , a [ 1 ] - b [ 1 ] , a [ 2 ] - b [ 2 ] ] ;
64
-
65
- }
66
-
67
- function normalize ( a ) {
68
-
69
- var l = Math . sqrt ( a [ 0 ] * a [ 0 ] + a [ 1 ] * a [ 1 ] + a [ 2 ] * a [ 2 ] ) ;
70
- return [ a [ 0 ] / l , a [ 1 ] / l , a [ 2 ] / l ] ;
71
-
72
- }
73
-
74
- depth = depth | 1 ;
75
-
76
- var width = image . width ;
77
- var height = image . height ;
78
-
79
- var canvas = document . createElement ( 'canvas' ) ;
80
- canvas . width = width ;
81
- canvas . height = height ;
82
-
83
- var context = canvas . getContext ( '2d' ) ;
84
- context . drawImage ( image , 0 , 0 ) ;
85
-
86
- var data = context . getImageData ( 0 , 0 , width , height ) . data ;
87
- var imageData = context . createImageData ( width , height ) ;
88
- var output = imageData . data ;
89
-
90
- for ( var x = 0 ; x < width ; x ++ ) {
91
-
92
- for ( var y = 0 ; y < height ; y ++ ) {
93
-
94
- var ly = y - 1 < 0 ? 0 : y - 1 ;
95
- var uy = y + 1 > height - 1 ? height - 1 : y + 1 ;
96
- var lx = x - 1 < 0 ? 0 : x - 1 ;
97
- var ux = x + 1 > width - 1 ? width - 1 : x + 1 ;
98
-
99
- var points = [ ] ;
100
- var origin = [ 0 , 0 , data [ ( y * width + x ) * 4 ] / 255 * depth ] ;
101
- points . push ( [ - 1 , 0 , data [ ( y * width + lx ) * 4 ] / 255 * depth ] ) ;
102
- points . push ( [ - 1 , - 1 , data [ ( ly * width + lx ) * 4 ] / 255 * depth ] ) ;
103
- points . push ( [ 0 , - 1 , data [ ( ly * width + x ) * 4 ] / 255 * depth ] ) ;
104
- points . push ( [ 1 , - 1 , data [ ( ly * width + ux ) * 4 ] / 255 * depth ] ) ;
105
- points . push ( [ 1 , 0 , data [ ( y * width + ux ) * 4 ] / 255 * depth ] ) ;
106
- points . push ( [ 1 , 1 , data [ ( uy * width + ux ) * 4 ] / 255 * depth ] ) ;
107
- points . push ( [ 0 , 1 , data [ ( uy * width + x ) * 4 ] / 255 * depth ] ) ;
108
- points . push ( [ - 1 , 1 , data [ ( uy * width + lx ) * 4 ] / 255 * depth ] ) ;
109
-
110
- var normals = [ ] ;
111
- var num_points = points . length ;
112
-
113
- for ( var i = 0 ; i < num_points ; i ++ ) {
114
-
115
- var v1 = points [ i ] ;
116
- var v2 = points [ ( i + 1 ) % num_points ] ;
117
- v1 = subtract ( v1 , origin ) ;
118
- v2 = subtract ( v2 , origin ) ;
119
- normals . push ( normalize ( cross ( v1 , v2 ) ) ) ;
120
-
121
- }
122
-
123
- var normal = [ 0 , 0 , 0 ] ;
124
-
125
- for ( var i = 0 ; i < normals . length ; i ++ ) {
126
-
127
- normal [ 0 ] += normals [ i ] [ 0 ] ;
128
- normal [ 1 ] += normals [ i ] [ 1 ] ;
129
- normal [ 2 ] += normals [ i ] [ 2 ] ;
130
-
131
- }
132
-
133
- normal [ 0 ] /= normals . length ;
134
- normal [ 1 ] /= normals . length ;
135
- normal [ 2 ] /= normals . length ;
136
-
137
- var idx = ( y * width + x ) * 4 ;
138
-
139
- output [ idx ] = ( ( normal [ 0 ] + 1.0 ) / 2.0 * 255 ) | 0 ;
140
- output [ idx + 1 ] = ( ( normal [ 1 ] + 1.0 ) / 2.0 * 255 ) | 0 ;
141
- output [ idx + 2 ] = ( normal [ 2 ] * 255 ) | 0 ;
142
- output [ idx + 3 ] = 255 ;
143
-
144
- }
145
-
146
- }
147
-
148
- context . putImageData ( imageData , 0 , 0 ) ;
149
-
150
- return canvas ;
151
-
152
- } ,
153
-
154
- generateDataTexture : function ( width , height , color ) {
155
-
156
- var size = width * height ;
157
- var data = new Uint8Array ( 3 * size ) ;
158
-
159
- var r = Math . floor ( color . r * 255 ) ;
160
- var g = Math . floor ( color . g * 255 ) ;
161
- var b = Math . floor ( color . b * 255 ) ;
162
-
163
- for ( var i = 0 ; i < size ; i ++ ) {
164
-
165
- data [ i * 3 ] = r ;
166
- data [ i * 3 + 1 ] = g ;
167
- data [ i * 3 + 2 ] = b ;
168
-
169
- }
170
-
171
- var texture = new THREE . DataTexture ( data , width , height , THREE . RGBFormat ) ;
172
- texture . needsUpdate = true ;
173
-
174
- return texture ;
175
-
176
49
}
177
50
178
51
} ;
0 commit comments