Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
43c90c73
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
43c90c73
编写于
12月 12, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
e42cddec
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
37 deletion
+40
-37
build/three.js
build/three.js
+35
-33
build/three.min.js
build/three.min.js
+5
-4
未找到文件。
build/three.js
浏览文件 @
43c90c73
...
...
@@ -469,54 +469,50 @@ THREE.Color.prototype = {
},
getHSL: function () {
getHSL: function (
optionalTarget
) {
var hsl = { h: 0, s: 0, l: 0 };
return function () {
// h,s,l ranges are in 0.0 - 1.0
var r = this.r, g = this.g, b = this.b;
// h,s,l ranges are in 0.0 - 1.0
var max = Math.max( r, g, b );
var min = Math.min( r, g, b );
var hsl = optionalTarget || { h: 0, s: 0, l: 0 };
var hue, saturation;
var lightness = ( min + max ) / 2.0;
var r = this.r, g = this.g, b = this.b;
if ( min === max ) {
var max = Math.max( r, g, b );
var min = Math.min( r, g, b );
hue = 0
;
saturation =
0;
var hue, saturation
;
var lightness = ( min + max ) / 2.
0;
} else
{
if ( min === max )
{
var delta = max - min;
hue = 0;
saturation = 0;
saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );
} else {
switch ( max ) {
var delta = max - min;
case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;
case g: hue = ( b - r ) / delta + 2; break;
case b: hue = ( r - g ) / delta + 4; break;
saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );
}
switch ( max ) {
hue /= 6;
case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;
case g: hue = ( b - r ) / delta + 2; break;
case b: hue = ( r - g ) / delta + 4; break;
}
hsl.h = hue;
hsl.s = saturation;
hsl.l = lightness;
hue /= 6;
return hsl;
}
};
hsl.h = hue;
hsl.s = saturation;
hsl.l = lightness;
}(),
return hsl;
},
getStyle: function () {
...
...
@@ -6747,11 +6743,17 @@ THREE.EventDispatcher.prototype = {
if ( this._listeners === undefined ) return;
var listeners = this._listeners;
var
index = listeners[ type ].indexOf( listener )
;
var
listenerArray = listeners[ type ]
;
if (
index !== - 1
) {
if (
listenerArray !== undefined
) {
listeners[ type ].splice( index, 1 );
var index = listenerArray.indexOf( listener );
if ( index !== - 1 ) {
listenerArray.splice( index, 1 );
}
}
...
...
build/three.min.js
浏览文件 @
43c90c73
...
...
@@ -10,9 +10,9 @@ THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,set:function(a){a ins
c
:
0.5
>
c
?
b
:
c
<
2
/
3
?
a
+
6
*
(
b
-
a
)
*
(
2
/
3
-
c
):
a
},
b
=
0.5
>=
c
?
c
*
(
1
+
b
):
c
+
b
-
c
*
b
,
c
=
2
*
c
-
b
;
this
.
r
=
d
(
c
,
b
,
a
+
1
/
3
);
this
.
g
=
d
(
c
,
b
,
a
);
this
.
b
=
d
(
c
,
b
,
a
-
1
/
3
)}
return
this
},
setStyle
:
function
(
a
){
if
(
/^rgb
\((\d
+
)
,
?(\d
+
)
,
?(\d
+
)\)
$/i
.
test
(
a
))
return
a
=
/^rgb
\((\d
+
)
,
?(\d
+
)
,
?(\d
+
)\)
$/i
.
exec
(
a
),
this
.
r
=
Math
.
min
(
255
,
parseInt
(
a
[
1
],
10
))
/
255
,
this
.
g
=
Math
.
min
(
255
,
parseInt
(
a
[
2
],
10
))
/
255
,
this
.
b
=
Math
.
min
(
255
,
parseInt
(
a
[
3
],
10
))
/
255
,
this
;
if
(
/^rgb
\((\d
+
)\%
,
?(\d
+
)\%
,
?(\d
+
)\%\)
$/i
.
test
(
a
))
return
a
=
/^rgb
\((\d
+
)\%
,
?(\d
+
)\%
,
?(\d
+
)\%\)
$/i
.
exec
(
a
),
this
.
r
=
Math
.
min
(
100
,
parseInt
(
a
[
1
],
10
))
/
100
,
this
.
g
=
Math
.
min
(
100
,
parseInt
(
a
[
2
],
10
))
/
100
,
this
.
b
=
Math
.
min
(
100
,
parseInt
(
a
[
3
],
10
))
/
100
,
this
;
if
(
/^
\#([
0-9a-f
]{6})
$/i
.
test
(
a
))
return
a
=
/^
\#([
0-9a-f
]{6})
$/i
.
exec
(
a
),
this
.
setHex
(
parseInt
(
a
[
1
],
16
)),
this
;
if
(
/^
\#([
0-9a-f
])([
0-9a-f
])([
0-9a-f
])
$/i
.
test
(
a
))
return
a
=
/^
\#([
0-9a-f
])([
0-9a-f
])([
0-9a-f
])
$/i
.
exec
(
a
),
this
.
setHex
(
parseInt
(
a
[
1
]
+
a
[
1
]
+
a
[
2
]
+
a
[
2
]
+
a
[
3
]
+
a
[
3
],
16
)),
this
;
if
(
/^
(\w
+
)
$/i
.
test
(
a
))
return
this
.
setHex
(
THREE
.
ColorKeywords
[
a
]),
this
},
copy
:
function
(
a
){
this
.
r
=
a
.
r
;
this
.
g
=
a
.
g
;
this
.
b
=
a
.
b
;
return
this
},
copyGammaToLinear
:
function
(
a
){
this
.
r
=
a
.
r
*
a
.
r
;
this
.
g
=
a
.
g
*
a
.
g
;
this
.
b
=
a
.
b
*
a
.
b
;
return
this
},
copyLinearToGamma
:
function
(
a
){
this
.
r
=
Math
.
sqrt
(
a
.
r
);
this
.
g
=
Math
.
sqrt
(
a
.
g
);
this
.
b
=
Math
.
sqrt
(
a
.
b
);
return
this
},
convertGammaToLinear
:
function
(){
var
a
=
this
.
r
,
b
=
this
.
g
,
c
=
this
.
b
;
this
.
r
=
a
*
a
;
this
.
g
=
b
*
b
;
this
.
b
=
c
*
c
;
return
this
},
convertLinearToGamma
:
function
(){
this
.
r
=
Math
.
sqrt
(
this
.
r
);
this
.
g
=
Math
.
sqrt
(
this
.
g
);
this
.
b
=
Math
.
sqrt
(
this
.
b
);
return
this
},
getHex
:
function
(){
return
255
*
this
.
r
<<
16
^
255
*
this
.
g
<<
8
^
255
*
this
.
b
<<
0
},
getHexString
:
function
(){
return
(
"
000000
"
+
this
.
getHex
().
toString
(
16
)).
slice
(
-
6
)},
getHSL
:
function
(
){
var
a
=
{
h
:
0
,
s
:
0
,
l
:
0
};
return
function
(){
var
b
=
this
.
r
,
c
=
this
.
g
,
d
=
this
.
b
,
e
=
Math
.
max
(
b
,
c
,
d
),
f
=
Math
.
min
(
b
,
c
,
d
),
h
,
g
=
(
f
+
e
)
/
2
;
if
(
f
===
e
)
f
=
h
=
0
;
else
{
var
i
=
e
-
f
,
f
=
0.5
>=
g
?
i
/
(
e
+
f
):
i
/
(
2
-
e
-
f
);
switch
(
e
){
case
b
:
h
=
(
c
-
d
)
/
i
+
(
c
<
d
?
6
:
0
);
break
;
case
c
:
h
=
(
d
-
b
)
/
i
+
2
;
break
;
case
d
:
h
=
(
b
-
c
)
/
i
+
4
}
h
/=
6
}
a
.
h
=
h
;
a
.
s
=
f
;
a
.
l
=
g
;
return
a
}}(),
getStyle
:
function
(){
return
"
rgb(
"
+
(
255
*
this
.
r
|
0
)
+
"
,
"
+
(
255
*
this
.
g
|
0
)
+
"
,
"
+
(
255
*
this
.
b
|
0
)
+
"
)
"
}
,
offsetHSL
:
function
(
a
,
b
,
c
){
var
d
=
this
.
getHSL
();
d
.
h
+=
a
;
d
.
s
+=
b
;
d
.
l
+=
c
;
this
.
setHSL
(
d
.
h
,
d
.
s
,
d
.
l
);
return
this
},
add
:
function
(
a
){
this
.
r
+=
a
.
r
;
this
.
g
+=
a
.
g
;
this
.
b
+=
a
.
b
;
return
this
},
addColors
:
function
(
a
,
b
){
this
.
r
=
a
.
r
+
b
.
r
;
this
.
g
=
a
.
g
+
b
.
g
;
this
.
b
=
a
.
b
+
b
.
b
;
return
this
},
addScalar
:
function
(
a
){
this
.
r
+=
a
;
this
.
g
+=
a
;
this
.
b
+=
a
;
return
this
},
multiply
:
function
(
a
){
this
.
r
*=
a
.
r
;
this
.
g
*=
a
.
g
;
this
.
b
*=
a
.
b
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
r
*=
a
;
this
.
g
*=
a
;
this
.
b
*=
a
;
return
this
},
lerp
:
function
(
a
,
b
){
this
.
r
+=
(
a
.
r
-
this
.
r
)
*
b
;
this
.
g
+=
(
a
.
g
-
this
.
g
)
*
b
;
this
.
b
+=
(
a
.
b
-
this
.
b
)
*
b
;
return
this
},
equals
:
function
(
a
){
return
a
.
r
===
this
.
r
&&
a
.
g
===
this
.
g
&&
a
.
b
===
this
.
b
},
fromArray
:
function
(
a
){
this
.
r
=
a
[
0
];
this
.
g
=
a
[
1
];
this
.
b
=
a
[
2
];
return
this
},
toArray
:
function
(){
return
[
this
.
r
,
this
.
g
,
this
.
b
]},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
8
^
255
*
this
.
b
<<
0
},
getHexString
:
function
(){
return
(
"
000000
"
+
this
.
getHex
().
toString
(
16
)).
slice
(
-
6
)},
getHSL
:
function
(
a
){
var
a
=
a
||
{
h
:
0
,
s
:
0
,
l
:
0
},
b
=
this
.
r
,
c
=
this
.
g
,
d
=
this
.
b
,
e
=
Math
.
max
(
b
,
c
,
d
),
f
=
Math
.
min
(
b
,
c
,
d
),
h
,
g
=
(
f
+
e
)
/
2
;
if
(
f
===
e
)
f
=
h
=
0
;
else
{
var
i
=
e
-
f
,
f
=
0.5
>=
g
?
i
/
(
e
+
f
):
i
/
(
2
-
e
-
f
);
switch
(
e
){
case
b
:
h
=
(
c
-
d
)
/
i
+
(
c
<
d
?
6
:
0
);
break
;
case
c
:
h
=
(
d
-
b
)
/
i
+
2
;
break
;
case
d
:
h
=
(
b
-
c
)
/
i
+
4
}
h
/=
6
}
a
.
h
=
h
;
a
.
s
=
f
;
a
.
l
=
g
;
return
a
},
getStyle
:
function
(){
return
"
rgb(
"
+
(
255
*
this
.
r
|
0
)
+
"
,
"
+
(
255
*
this
.
g
|
0
)
+
"
,
"
+
(
255
*
this
.
b
|
0
)
+
"
)
"
},
offsetHSL
:
function
(
a
,
b
,
c
){
var
d
=
this
.
getHSL
();
d
.
h
+=
a
;
d
.
s
+=
b
;
d
.
l
+=
c
;
this
.
setHSL
(
d
.
h
,
d
.
s
,
d
.
l
);
return
this
},
add
:
function
(
a
){
this
.
r
+=
a
.
r
;
this
.
g
+=
a
.
g
;
this
.
b
+=
a
.
b
;
return
this
},
addColors
:
function
(
a
,
b
){
this
.
r
=
a
.
r
+
b
.
r
;
this
.
g
=
a
.
g
+
b
.
g
;
this
.
b
=
a
.
b
+
b
.
b
;
return
this
},
addScalar
:
function
(
a
){
this
.
r
+=
a
;
this
.
g
+=
a
;
this
.
b
+=
a
;
return
this
},
multiply
:
function
(
a
){
this
.
r
*=
a
.
r
;
this
.
g
*=
a
.
g
;
this
.
b
*=
a
.
b
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
r
*=
a
;
this
.
g
*=
a
;
this
.
b
*=
a
;
return
this
},
lerp
:
function
(
a
,
b
){
this
.
r
+=
(
a
.
r
-
this
.
r
)
*
b
;
this
.
g
+=
(
a
.
g
-
this
.
g
)
*
b
;
this
.
b
+=
(
a
.
b
-
this
.
b
)
*
b
;
return
this
},
equals
:
function
(
a
){
return
a
.
r
===
this
.
r
&&
a
.
g
===
this
.
g
&&
a
.
b
===
this
.
b
},
fromArray
:
function
(
a
){
this
.
r
=
a
[
0
];
this
.
g
=
a
[
1
];
this
.
b
=
a
[
2
];
return
this
},
toArray
:
function
(){
return
[
this
.
r
,
this
.
g
,
this
.
b
]},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
THREE
.
ColorKeywords
=
{
aliceblue
:
15792383
,
antiquewhite
:
16444375
,
aqua
:
65535
,
aquamarine
:
8388564
,
azure
:
15794175
,
beige
:
16119260
,
bisque
:
16770244
,
black
:
0
,
blanchedalmond
:
16772045
,
blue
:
255
,
blueviolet
:
9055202
,
brown
:
10824234
,
burlywood
:
14596231
,
cadetblue
:
6266528
,
chartreuse
:
8388352
,
chocolate
:
13789470
,
coral
:
16744272
,
cornflowerblue
:
6591981
,
cornsilk
:
16775388
,
crimson
:
14423100
,
cyan
:
65535
,
darkblue
:
139
,
darkcyan
:
35723
,
darkgoldenrod
:
12092939
,
darkgray
:
11119017
,
darkgreen
:
25600
,
darkgrey
:
11119017
,
darkkhaki
:
12433259
,
darkmagenta
:
9109643
,
darkolivegreen
:
5597999
,
darkorange
:
16747520
,
darkorchid
:
10040012
,
darkred
:
9109504
,
darksalmon
:
15308410
,
darkseagreen
:
9419919
,
darkslateblue
:
4734347
,
darkslategray
:
3100495
,
darkslategrey
:
3100495
,
darkturquoise
:
52945
,
darkviolet
:
9699539
,
deeppink
:
16716947
,
deepskyblue
:
49151
,
dimgray
:
6908265
,
dimgrey
:
6908265
,
dodgerblue
:
2003199
,
firebrick
:
11674146
,
floralwhite
:
16775920
,
forestgreen
:
2263842
,
fuchsia
:
16711935
,
gainsboro
:
14474460
,
ghostwhite
:
16316671
,
gold
:
16766720
,
goldenrod
:
14329120
,
gray
:
8421504
,
green
:
32768
,
greenyellow
:
11403055
,
grey
:
8421504
,
honeydew
:
15794160
,
hotpink
:
16738740
,
indianred
:
13458524
,
indigo
:
4915330
,
ivory
:
16777200
,
khaki
:
15787660
,
lavender
:
15132410
,
lavenderblush
:
16773365
,
lawngreen
:
8190976
,
lemonchiffon
:
16775885
,
lightblue
:
11393254
,
lightcoral
:
15761536
,
lightcyan
:
14745599
,
lightgoldenrodyellow
:
16448210
,
lightgray
:
13882323
,
lightgreen
:
9498256
,
lightgrey
:
13882323
,
lightpink
:
16758465
,
lightsalmon
:
16752762
,
lightseagreen
:
2142890
,
lightskyblue
:
8900346
,
lightslategray
:
7833753
,
lightslategrey
:
7833753
,
lightsteelblue
:
11584734
,
lightyellow
:
16777184
,
...
...
@@ -139,7 +139,8 @@ clone:function(){return(new THREE.Triangle).copy(this)}};THREE.Vertex=function(a
THREE
.
Clock
.
prototype
=
{
constructor
:
THREE
.
Clock
,
start
:
function
(){
this
.
oldTime
=
this
.
startTime
=
void
0
!==
self
.
performance
&&
void
0
!==
self
.
performance
.
now
?
self
.
performance
.
now
():
Date
.
now
();
this
.
running
=!
0
},
stop
:
function
(){
this
.
getElapsedTime
();
this
.
running
=!
1
},
getElapsedTime
:
function
(){
this
.
getDelta
();
return
this
.
elapsedTime
},
getDelta
:
function
(){
var
a
=
0
;
this
.
autoStart
&&!
this
.
running
&&
this
.
start
();
if
(
this
.
running
){
var
b
=
void
0
!==
self
.
performance
&&
void
0
!==
self
.
performance
.
now
?
self
.
performance
.
now
():
Date
.
now
(),
a
=
0.001
*
(
b
-
this
.
oldTime
);
this
.
oldTime
=
b
;
this
.
elapsedTime
+=
a
}
return
a
}};
THREE
.
EventDispatcher
=
function
(){};
THREE
.
EventDispatcher
.
prototype
=
{
constructor
:
THREE
.
EventDispatcher
,
apply
:
function
(
a
){
a
.
addEventListener
=
THREE
.
EventDispatcher
.
prototype
.
addEventListener
;
a
.
hasEventListener
=
THREE
.
EventDispatcher
.
prototype
.
hasEventListener
;
a
.
removeEventListener
=
THREE
.
EventDispatcher
.
prototype
.
removeEventListener
;
a
.
dispatchEvent
=
THREE
.
EventDispatcher
.
prototype
.
dispatchEvent
},
addEventListener
:
function
(
a
,
b
){
void
0
===
this
.
_listeners
&&
(
this
.
_listeners
=
{});
var
c
=
this
.
_listeners
;
void
0
===
c
[
a
]
&&
(
c
[
a
]
=
[]);
-
1
===
c
[
a
].
indexOf
(
b
)
&&
c
[
a
].
push
(
b
)},
hasEventListener
:
function
(
a
,
b
){
if
(
void
0
===
this
.
_listeners
)
return
!
1
;
var
c
=
this
.
_listeners
;
return
void
0
!==
c
[
a
]
&&-
1
!==
c
[
a
].
indexOf
(
b
)?
!
0
:
!
1
},
removeEventListener
:
function
(
a
,
b
){
if
(
void
0
!==
this
.
_listeners
){
var
c
=
this
.
_listeners
,
d
=
c
[
a
].
indexOf
(
b
);
-
1
!==
d
&&
c
[
a
].
splice
(
d
,
1
)}},
dispatchEvent
:
function
(){
var
a
=
[];
return
function
(
b
){
if
(
void
0
!==
this
.
_listeners
){
var
c
=
this
.
_listeners
[
b
.
type
];
if
(
void
0
!==
c
){
b
.
target
=
this
;
for
(
var
d
=
c
.
length
,
e
=
0
;
e
<
d
;
e
++
)
a
[
e
]
=
c
[
e
];
for
(
e
=
0
;
e
<
d
;
e
++
)
a
[
e
].
call
(
this
,
b
)}}}}()};(
function
(
a
){
a
.
Raycaster
=
function
(
b
,
c
,
d
,
e
){
this
.
ray
=
new
a
.
Ray
(
b
,
c
);
this
.
near
=
d
||
0
;
this
.
far
=
e
||
Infinity
};
var
b
=
new
a
.
Sphere
,
c
=
new
a
.
Ray
;
new
a
.
Plane
;
new
a
.
Vector3
;
var
d
=
new
a
.
Vector3
,
e
=
new
a
.
Matrix4
,
f
=
function
(
a
,
b
){
return
a
.
distance
-
b
.
distance
},
h
=
new
a
.
Vector3
,
g
=
new
a
.
Vector3
,
i
=
new
a
.
Vector3
,
k
=
function
(
f
,
m
,
t
){
if
(
f
instanceof
a
.
Sprite
){
d
.
setFromMatrixPosition
(
f
.
matrixWorld
);
var
s
=
m
.
ray
.
distanceToPoint
(
d
);
if
(
s
>
f
.
scale
.
x
)
return
t
;
t
.
push
({
distance
:
s
,
point
:
f
.
position
,
face
:
null
,
object
:
f
})}
else
if
(
f
instanceof
c
[
a
].
push
(
b
)},
hasEventListener
:
function
(
a
,
b
){
if
(
void
0
===
this
.
_listeners
)
return
!
1
;
var
c
=
this
.
_listeners
;
return
void
0
!==
c
[
a
]
&&-
1
!==
c
[
a
].
indexOf
(
b
)?
!
0
:
!
1
},
removeEventListener
:
function
(
a
,
b
){
if
(
void
0
!==
this
.
_listeners
){
var
c
=
this
.
_listeners
[
a
];
if
(
void
0
!==
c
){
var
d
=
c
.
indexOf
(
b
);
-
1
!==
d
&&
c
.
splice
(
d
,
1
)}}},
dispatchEvent
:
function
(){
var
a
=
[];
return
function
(
b
){
if
(
void
0
!==
this
.
_listeners
){
var
c
=
this
.
_listeners
[
b
.
type
];
if
(
void
0
!==
c
){
b
.
target
=
this
;
for
(
var
d
=
c
.
length
,
e
=
0
;
e
<
d
;
e
++
)
a
[
e
]
=
c
[
e
];
for
(
e
=
0
;
e
<
d
;
e
++
)
a
[
e
].
call
(
this
,
b
)}}}}()};(
function
(
a
){
a
.
Raycaster
=
function
(
b
,
c
,
d
,
e
){
this
.
ray
=
new
a
.
Ray
(
b
,
c
);
this
.
near
=
d
||
0
;
this
.
far
=
e
||
Infinity
};
var
b
=
new
a
.
Sphere
,
c
=
new
a
.
Ray
;
new
a
.
Plane
;
new
a
.
Vector3
;
var
d
=
new
a
.
Vector3
,
e
=
new
a
.
Matrix4
,
f
=
function
(
a
,
b
){
return
a
.
distance
-
b
.
distance
},
h
=
new
a
.
Vector3
,
g
=
new
a
.
Vector3
,
i
=
new
a
.
Vector3
,
k
=
function
(
f
,
m
,
t
){
if
(
f
instanceof
a
.
Sprite
){
d
.
setFromMatrixPosition
(
f
.
matrixWorld
);
var
s
=
m
.
ray
.
distanceToPoint
(
d
);
if
(
s
>
f
.
scale
.
x
)
return
t
;
t
.
push
({
distance
:
s
,
point
:
f
.
position
,
face
:
null
,
object
:
f
})}
else
if
(
f
instanceof
a
.
LOD
)
d
.
setFromMatrixPosition
(
f
.
matrixWorld
),
s
=
m
.
ray
.
origin
.
distanceTo
(
d
),
k
(
f
.
getObjectForDistance
(
s
),
m
,
t
);
else
if
(
f
instanceof
a
.
Mesh
){
var
q
=
f
.
geometry
;
null
===
q
.
boundingSphere
&&
q
.
computeBoundingSphere
();
b
.
copy
(
q
.
boundingSphere
);
b
.
applyMatrix4
(
f
.
matrixWorld
);
if
(
!
1
===
m
.
ray
.
isIntersectionSphere
(
b
))
return
t
;
e
.
getInverse
(
f
.
matrixWorld
);
c
.
copy
(
m
.
ray
).
applyMatrix4
(
e
);
if
(
null
!==
q
.
boundingBox
&&!
1
===
c
.
isIntersectionBox
(
q
.
boundingBox
))
return
t
;
if
(
q
instanceof
a
.
BufferGeometry
){
var
n
=
f
.
material
;
if
(
void
0
===
n
||!
1
===
q
.
dynamic
)
return
t
;
var
u
,
r
,
v
=
m
.
precision
;
if
(
void
0
!==
q
.
attributes
.
index
)
for
(
var
z
=
q
.
offsets
,
G
=
q
.
attributes
.
index
.
array
,
w
=
q
.
attributes
.
position
.
array
,
y
=
q
.
offsets
.
length
,
E
=
q
.
attributes
.
index
.
array
.
length
/
3
,
E
=
0
;
E
<
y
;
++
E
)
for
(
var
s
=
z
[
E
].
start
,
A
=
z
[
E
].
index
,
q
=
s
,
K
=
s
+
z
[
E
].
count
;
q
<
K
;
q
+=
3
)
s
=
A
+
G
[
q
],
u
=
A
+
G
[
q
+
1
],
r
=
A
+
G
[
q
+
2
],
h
.
set
(
w
[
3
*
s
],
w
[
3
*
s
+
1
],
w
[
3
*
s
+
2
]),
g
.
set
(
w
[
3
*
u
],
w
[
3
*
u
+
1
],
w
[
3
*
u
+
2
]),
i
.
set
(
w
[
3
*
r
],
w
[
3
*
r
+
1
],
w
[
3
*
r
+
2
]),
u
=
n
.
side
===
a
.
BackSide
?
c
.
intersectTriangle
(
i
,
g
,
h
,
!
0
):
c
.
intersectTriangle
(
h
,
g
,
i
,
n
.
side
!==
a
.
DoubleSide
),
null
!==
u
&&
(
u
.
applyMatrix4
(
f
.
matrixWorld
),
s
=
m
.
ray
.
origin
.
distanceTo
(
u
),
s
<
v
||
(
s
<
m
.
near
||
s
>
m
.
far
)
||
t
.
push
({
distance
:
s
,
point
:
u
,
face
:
null
,
faceIndex
:
null
,
object
:
f
}));
else
{
w
=
q
.
attributes
.
position
.
array
;
E
=
q
.
attributes
.
position
.
array
.
length
;
for
(
q
=
0
;
q
<
E
;
q
+=
3
)
s
=
q
,
u
=
q
+
1
,
r
=
q
+
2
,
h
.
set
(
w
[
3
*
s
],
w
[
3
*
s
+
1
],
w
[
3
*
s
+
2
]),
g
.
set
(
w
[
3
*
u
],
w
[
3
*
u
+
1
],
w
[
3
*
u
+
2
]),
i
.
set
(
w
[
3
*
r
],
w
[
3
*
r
+
1
],
w
[
3
*
r
+
2
]),
u
=
n
.
side
===
a
.
BackSide
?
c
.
intersectTriangle
(
i
,
g
,
h
,
!
0
):
c
.
intersectTriangle
(
h
,
g
,
i
,
n
.
side
!==
a
.
DoubleSide
),
null
!==
u
&&
(
u
.
applyMatrix4
(
f
.
matrixWorld
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录