Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
a1a41e7f
T
three.js
项目概览
车家大少爷
/
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,发现更多精彩内容 >>
提交
a1a41e7f
编写于
3月 16, 2011
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Recompiled builds.
上级
52783932
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
13 addition
and
13 deletion
+13
-13
build/Three.js
build/Three.js
+5
-5
build/custom/ThreeCanvas.js
build/custom/ThreeCanvas.js
+1
-1
build/custom/ThreeDOM.js
build/custom/ThreeDOM.js
+1
-1
build/custom/ThreeExtras.js
build/custom/ThreeExtras.js
+4
-4
build/custom/ThreeSVG.js
build/custom/ThreeSVG.js
+1
-1
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+1
-1
未找到文件。
build/Three.js
浏览文件 @
a1a41e7f
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,c,b)}}};THREE.Quaternion=function
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,c,b)}}};THREE.Quaternion=function
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
c
,
b
,
d
){
this
.
x
=
a
;
this
.
y
=
c
;
this
.
z
=
b
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
c
=
0.5
*
Math
.
PI
/
360
,
b
=
a
.
x
*
c
,
d
=
a
.
y
*
c
,
e
=
a
.
z
*
c
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
c
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
g
=
Math
.
cos
(
b
);
b
=
Math
.
sin
(
b
);
var
h
=
a
*
c
,
j
=
d
*
e
;
this
.
w
=
h
*
g
-
j
*
b
;
this
.
x
=
h
*
b
+
j
*
g
;
this
.
y
=
d
*
c
*
g
+
a
*
e
*
b
;
this
.
z
=
a
*
e
*
g
-
d
*
c
*
b
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
c
,
b
,
d
){
this
.
x
=
a
;
this
.
y
=
c
;
this
.
z
=
b
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
c
=
0.5
*
Math
.
PI
/
360
,
b
=
a
.
x
*
c
,
d
=
a
.
y
*
c
,
e
=
a
.
z
*
c
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
c
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
g
=
Math
.
cos
(
b
);
b
=
Math
.
sin
(
b
);
var
h
=
a
*
c
,
j
=
d
*
e
;
this
.
w
=
h
*
g
-
j
*
b
;
this
.
x
=
h
*
b
+
j
*
g
;
this
.
y
=
d
*
c
*
g
+
a
*
e
*
b
;
this
.
z
=
a
*
e
*
g
-
d
*
c
*
b
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
c
=
this
.
x
,
b
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
g
=
a
.
x
,
h
=
a
.
y
,
j
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
c
*
a
+
e
*
g
+
b
*
j
-
d
*
h
;
this
.
y
=
b
*
a
+
e
*
h
+
d
*
g
-
c
*
j
;
this
.
z
=
d
*
a
+
e
*
j
+
c
*
h
-
b
*
g
;
this
.
w
=
e
*
a
-
c
*
g
-
b
*
h
-
d
*
j
;
return
this
},
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
c
=
this
.
x
,
b
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
g
=
a
.
x
,
h
=
a
.
y
,
j
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
c
*
a
+
e
*
g
+
b
*
j
-
d
*
h
;
this
.
y
=
b
*
a
+
e
*
h
+
d
*
g
-
c
*
j
;
this
.
z
=
d
*
a
+
e
*
j
+
c
*
h
-
b
*
g
;
this
.
w
=
e
*
a
-
c
*
g
-
b
*
h
-
d
*
j
;
return
this
},
multiplyVector3
:
function
(
a
,
c
){
c
||
(
c
=
a
);
var
b
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
g
=
this
.
x
,
h
=
this
.
y
,
j
=
this
.
z
,
k
=
this
.
w
,
m
=
k
*
b
+
h
*
e
-
j
*
d
,
q
=
k
*
d
+
j
*
b
-
g
*
e
,
y
=
k
*
e
+
g
*
d
-
h
*
b
;
b
=-
g
*
b
-
h
*
d
-
j
*
e
;
c
.
x
=
m
*
k
+
b
*-
g
+
q
*-
j
-
y
*-
h
;
c
.
y
=
q
*
k
+
b
*-
h
+
y
*-
g
-
m
*-
j
;
c
.
z
=
y
*
k
+
b
*-
j
+
m
*-
h
-
q
*-
g
;
return
c
}};
multiplyVector3
:
function
(
a
,
c
){
c
||
(
c
=
a
);
var
b
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
g
=
this
.
x
,
h
=
this
.
y
,
j
=
this
.
z
,
k
=
this
.
w
,
m
=
k
*
b
+
h
*
e
-
j
*
d
,
q
=
k
*
d
+
j
*
b
-
g
*
e
,
y
=
k
*
e
+
g
*
d
-
h
*
b
;
b
=-
g
*
b
-
h
*
d
-
j
*
e
;
c
.
x
=
m
*
k
+
b
*-
g
+
q
*-
j
-
y
*-
h
;
c
.
y
=
q
*
k
+
b
*-
h
+
y
*-
g
-
m
*-
j
;
c
.
z
=
y
*
k
+
b
*-
j
+
m
*-
h
-
q
*-
g
;
return
c
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
c
,
b
,
d
){
var
e
=
a
.
w
*
c
.
w
+
a
.
x
*
c
.
x
+
a
.
y
*
c
.
y
+
a
.
z
*
c
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
b
.
w
=
a
.
w
;
b
.
x
=
a
.
x
;
b
.
y
=
a
.
y
;
b
.
z
=
a
.
z
;
return
b
}
var
g
=
Math
.
acos
(
e
),
h
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
h
)
<
0.001
0
){
b
.
w
=
0.5
*
(
a
.
w
+
c
.
w
);
b
.
x
=
0.5
*
(
a
.
x
+
c
.
x
);
b
.
y
=
0.5
*
(
a
.
y
+
c
.
y
);
b
.
z
=
0.5
*
(
a
.
z
+
c
.
z
);
return
b
}
e
=
Math
.
sin
((
1
-
d
)
*
g
)
/
h
;
d
=
Math
.
sin
(
d
*
g
)
/
h
;
b
.
w
=
a
.
w
*
e
+
c
.
w
*
d
;
b
.
x
=
a
.
x
*
e
+
c
.
x
*
d
;
b
.
y
=
a
.
y
*
e
+
c
.
y
*
d
;
b
.
z
=
a
.
z
*
e
+
c
.
z
*
d
;
return
b
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
c
,
b
,
d
){
var
e
=
a
.
w
*
c
.
w
+
a
.
x
*
c
.
x
+
a
.
y
*
c
.
y
+
a
.
z
*
c
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
b
.
w
=
a
.
w
;
b
.
x
=
a
.
x
;
b
.
y
=
a
.
y
;
b
.
z
=
a
.
z
;
return
b
}
var
g
=
Math
.
acos
(
e
),
h
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
h
)
<
0.001
){
b
.
w
=
0.5
*
(
a
.
w
+
c
.
w
);
b
.
x
=
0.5
*
(
a
.
x
+
c
.
x
);
b
.
y
=
0.5
*
(
a
.
y
+
c
.
y
);
b
.
z
=
0.5
*
(
a
.
z
+
c
.
z
);
return
b
}
e
=
Math
.
sin
((
1
-
d
)
*
g
)
/
h
;
d
=
Math
.
sin
(
d
*
g
)
/
h
;
b
.
w
=
a
.
w
*
e
+
c
.
w
*
d
;
b
.
x
=
a
.
x
*
e
+
c
.
x
*
d
;
b
.
y
=
a
.
y
*
e
+
c
.
y
*
d
;
b
.
z
=
a
.
z
*
e
+
c
.
z
*
d
;
return
b
};
THREE
.
Vertex
=
function
(
a
,
c
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
c
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Vertex
=
function
(
a
,
c
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
c
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Face3
=
function
(
a
,
c
,
b
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
b
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
c
,
b
,
d
,
e
,
g
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
b
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
]};
THREE
.
Face3
=
function
(
a
,
c
,
b
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
b
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
c
,
b
,
d
,
e
,
g
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
b
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
]};
THREE
.
UV
=
function
(
a
,
c
){
this
.
set
(
a
||
0
,
c
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
c
){
this
.
u
=
a
;
this
.
v
=
c
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
THREE
.
UV
=
function
(
a
,
c
){
this
.
set
(
a
||
0
,
c
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
c
){
this
.
u
=
a
;
this
.
v
=
c
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
@@ -313,7 +313,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195
...
@@ -313,7 +313,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195
film
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
time
:{
type
:
"
f
"
,
value
:
0
},
nIntensity
:{
type
:
"
f
"
,
value
:
0.5
},
sIntensity
:{
type
:
"
f
"
,
value
:
0.05
},
sCount
:{
type
:
"
f
"
,
value
:
4096
},
grayscale
:{
type
:
"
i
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float time;
\n
uniform bool grayscale;
\n
uniform float nIntensity;
\n
uniform float sIntensity;
\n
uniform float sCount;
\n
void main() {
\n
vec4 cTextureScreen = texture2D( tDiffuse, vUv );
\n
float x = vUv.x * vUv.y * time * 1000.0;
\n
x = mod( x, 13.0 ) * mod( x, 123.0 );
\n
float dx = mod( x, 0.01 );
\n
vec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );
\n
vec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );
\n
cResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;
\n
cResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );
\n
if( grayscale ) {
\n
cResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );
\n
}
\n
gl_FragColor = vec4( cResult, cTextureScreen.a );
\n
}
"
},
film
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
time
:{
type
:
"
f
"
,
value
:
0
},
nIntensity
:{
type
:
"
f
"
,
value
:
0.5
},
sIntensity
:{
type
:
"
f
"
,
value
:
0.05
},
sCount
:{
type
:
"
f
"
,
value
:
4096
},
grayscale
:{
type
:
"
i
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float time;
\n
uniform bool grayscale;
\n
uniform float nIntensity;
\n
uniform float sIntensity;
\n
uniform float sCount;
\n
void main() {
\n
vec4 cTextureScreen = texture2D( tDiffuse, vUv );
\n
float x = vUv.x * vUv.y * time * 1000.0;
\n
x = mod( x, 13.0 ) * mod( x, 123.0 );
\n
float dx = mod( x, 0.01 );
\n
vec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );
\n
vec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );
\n
cResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;
\n
cResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );
\n
if( grayscale ) {
\n
cResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );
\n
}
\n
gl_FragColor = vec4( cResult, cTextureScreen.a );
\n
}
"
},
screen
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float opacity;
\n
void main() {
\n
vec4 texel = texture2D( tDiffuse, vUv );
\n
gl_FragColor = opacity * texel;
\n
}
"
},
basic
:{
uniforms
:{},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
screen
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float opacity;
\n
void main() {
\n
vec4 texel = texture2D( tDiffuse, vUv );
\n
gl_FragColor = opacity * texel;
\n
}
"
},
basic
:{
uniforms
:{},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
void main() {
\n
gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );
\n
}
"
}},
buildKernel
:
function
(
a
){
var
c
,
b
,
d
,
e
,
g
=
2
*
Math
.
ceil
(
a
*
3
)
+
1
;
g
>
25
&&
(
g
=
25
);
e
=
(
g
-
1
)
*
0.5
;
b
=
Array
(
g
);
for
(
c
=
d
=
0
;
c
<
g
;
++
c
){
b
[
c
]
=
Math
.
exp
(
-
((
c
-
e
)
*
(
c
-
e
))
/
(
2
*
a
*
a
));
d
+=
b
[
c
]}
for
(
c
=
0
;
c
<
g
;
++
c
)
b
[
c
]
/=
d
;
return
b
}};
fragmentShader
:
"
void main() {
\n
gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );
\n
}
"
}},
buildKernel
:
function
(
a
){
var
c
,
b
,
d
,
e
,
g
=
2
*
Math
.
ceil
(
a
*
3
)
+
1
;
g
>
25
&&
(
g
=
25
);
e
=
(
g
-
1
)
*
0.5
;
b
=
Array
(
g
);
for
(
c
=
d
=
0
;
c
<
g
;
++
c
){
b
[
c
]
=
Math
.
exp
(
-
((
c
-
e
)
*
(
c
-
e
))
/
(
2
*
a
*
a
));
d
+=
b
[
c
]}
for
(
c
=
0
;
c
<
g
;
++
c
)
b
[
c
]
/=
d
;
return
b
}};
THREE
.
QuakeCamera
=
function
(
a
){
function
c
(
b
,
d
){
return
function
(){
d
.
apply
(
b
,
arguments
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
movementSpeed
=
1
;
this
.
lookSpeed
=
0.005
0
;
this
.
noFly
=!
1
;
this
.
lookVertical
=!
0
;
this
.
autoForward
=!
1
;
this
.
dragToLook
=!
1
;
this
.
heightSpeed
=!
1
;
this
.
heightCoef
=
1
;
this
.
heightMin
=
0
;
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
movementSpeed
!==
undefined
)
this
.
movementSpeed
=
a
.
movementSpeed
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
noFly
!==
undefined
)
this
.
noFly
=
THREE
.
QuakeCamera
=
function
(
a
){
function
c
(
b
,
d
){
return
function
(){
d
.
apply
(
b
,
arguments
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
movementSpeed
=
1
;
this
.
lookSpeed
=
0.005
;
this
.
noFly
=!
1
;
this
.
lookVertical
=!
0
;
this
.
autoForward
=!
1
;
this
.
dragToLook
=!
1
;
this
.
heightSpeed
=!
1
;
this
.
heightCoef
=
1
;
this
.
heightMin
=
0
;
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
movementSpeed
!==
undefined
)
this
.
movementSpeed
=
a
.
movementSpeed
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
noFly
!==
undefined
)
this
.
noFly
=
a
.
noFly
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
autoForward
!==
undefined
)
this
.
autoForward
=
a
.
autoForward
;
if
(
a
.
dragToLook
!==
undefined
)
this
.
dragToLook
=
a
.
dragToLook
;
if
(
a
.
heightSpeed
!==
undefined
)
this
.
heightSpeed
=
a
.
heightSpeed
;
if
(
a
.
heightCoef
!==
undefined
)
this
.
heightCoef
=
a
.
heightCoef
;
if
(
a
.
heightMin
!==
undefined
)
this
.
heightMin
=
a
.
heightMin
;
if
(
a
.
heightMax
!==
undefined
)
this
.
heightMax
=
a
.
heightMax
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
a
.
noFly
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
autoForward
!==
undefined
)
this
.
autoForward
=
a
.
autoForward
;
if
(
a
.
dragToLook
!==
undefined
)
this
.
dragToLook
=
a
.
dragToLook
;
if
(
a
.
heightSpeed
!==
undefined
)
this
.
heightSpeed
=
a
.
heightSpeed
;
if
(
a
.
heightCoef
!==
undefined
)
this
.
heightCoef
=
a
.
heightCoef
;
if
(
a
.
heightMin
!==
undefined
)
this
.
heightMin
=
a
.
heightMin
;
if
(
a
.
heightMax
!==
undefined
)
this
.
heightMax
=
a
.
heightMax
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
this
.
autoSpeedFactor
=
0
;
this
.
moveForward
=!
1
;
this
.
moveBackward
=!
1
;
this
.
moveLeft
=!
1
;
this
.
moveRight
=!
1
;
this
.
mouseDragOn
=!
1
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
this
.
onMouseDown
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=!
0
;
break
;
case
2
:
this
.
moveBackward
=!
0
}
this
.
mouseDragOn
=!
0
};
this
.
onMouseUp
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=
this
.
mouseY
=
this
.
mouseX
=
this
.
autoSpeedFactor
=
0
;
this
.
moveForward
=!
1
;
this
.
moveBackward
=!
1
;
this
.
moveLeft
=!
1
;
this
.
moveRight
=!
1
;
this
.
mouseDragOn
=!
1
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
this
.
onMouseDown
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=!
0
;
break
;
case
2
:
this
.
moveBackward
=!
0
}
this
.
mouseDragOn
=!
0
};
this
.
onMouseUp
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=
!
1
;
break
;
case
2
:
this
.
moveBackward
=!
1
}
this
.
mouseDragOn
=!
1
};
this
.
onMouseMove
=
function
(
b
){
this
.
mouseX
=
b
.
clientX
-
this
.
windowHalfX
;
this
.
mouseY
=
b
.
clientY
-
this
.
windowHalfY
};
this
.
onKeyDown
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
0
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
0
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=!
0
;
break
;
case
39
:
case
68
:
this
.
moveRight
=!
0
}};
this
.
onKeyUp
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
1
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
1
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=
!
1
;
break
;
case
2
:
this
.
moveBackward
=!
1
}
this
.
mouseDragOn
=!
1
};
this
.
onMouseMove
=
function
(
b
){
this
.
mouseX
=
b
.
clientX
-
this
.
windowHalfX
;
this
.
mouseY
=
b
.
clientY
-
this
.
windowHalfY
};
this
.
onKeyDown
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
0
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
0
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=!
0
;
break
;
case
39
:
case
68
:
this
.
moveRight
=!
0
}};
this
.
onKeyUp
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
1
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
1
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=
...
@@ -323,7 +323,7 @@ var b=this.lookSpeed;this.dragToLook&&!this.mouseDragOn&&(b=0);this.lon+=this.mo
...
@@ -323,7 +323,7 @@ var b=this.lookSpeed;this.dragToLook&&!this.mouseDragOn&&(b=0);this.lon+=this.mo
THREE
.
QuakeCamera
.
prototype
.
translate
=
function
(
a
,
c
){
this
.
matrix
.
rotateAxis
(
c
);
if
(
this
.
noFly
)
c
.
y
=
0
;
this
.
position
.
addSelf
(
c
.
multiplyScalar
(
a
));
this
.
target
.
position
.
addSelf
(
c
.
multiplyScalar
(
a
))};
THREE
.
QuakeCamera
.
prototype
.
translate
=
function
(
a
,
c
){
this
.
matrix
.
rotateAxis
(
c
);
if
(
this
.
noFly
)
c
.
y
=
0
;
this
.
position
.
addSelf
(
c
.
multiplyScalar
(
a
));
this
.
target
.
position
.
addSelf
(
c
.
multiplyScalar
(
a
))};
THREE
.
PathCamera
=
function
(
a
){
function
c
(
m
,
q
,
y
,
u
){
var
o
=
{
name
:
y
,
fps
:
0.6
,
length
:
u
,
hierarchy
:[]},
v
,
A
=
q
.
getControlPointsArray
(),
E
=
q
.
getLength
(),
w
=
A
.
length
,
G
=
0
;
v
=
w
-
1
;
q
=
{
parent
:
-
1
,
keys
:[]};
q
.
keys
[
0
]
=
{
time
:
0
,
pos
:
A
[
0
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
q
.
keys
[
v
]
=
{
time
:
u
,
pos
:
A
[
v
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
for
(
v
=
1
;
v
<
w
-
1
;
v
++
){
G
=
u
*
E
.
chunks
[
v
]
/
E
.
total
;
q
.
keys
[
v
]
=
{
time
:
G
,
pos
:
A
[
v
]}}
o
.
hierarchy
[
0
]
=
q
;
THREE
.
AnimationHandler
.
add
(
o
);
return
new
THREE
.
Animation
(
m
,
y
,
THREE
.
AnimationHandler
.
CATMULLROM_FORWARD
,
!
1
)}
function
b
(
m
,
q
){
var
y
,
THREE
.
PathCamera
=
function
(
a
){
function
c
(
m
,
q
,
y
,
u
){
var
o
=
{
name
:
y
,
fps
:
0.6
,
length
:
u
,
hierarchy
:[]},
v
,
A
=
q
.
getControlPointsArray
(),
E
=
q
.
getLength
(),
w
=
A
.
length
,
G
=
0
;
v
=
w
-
1
;
q
=
{
parent
:
-
1
,
keys
:[]};
q
.
keys
[
0
]
=
{
time
:
0
,
pos
:
A
[
0
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
q
.
keys
[
v
]
=
{
time
:
u
,
pos
:
A
[
v
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
for
(
v
=
1
;
v
<
w
-
1
;
v
++
){
G
=
u
*
E
.
chunks
[
v
]
/
E
.
total
;
q
.
keys
[
v
]
=
{
time
:
G
,
pos
:
A
[
v
]}}
o
.
hierarchy
[
0
]
=
q
;
THREE
.
AnimationHandler
.
add
(
o
);
return
new
THREE
.
Animation
(
m
,
y
,
THREE
.
AnimationHandler
.
CATMULLROM_FORWARD
,
!
1
)}
function
b
(
m
,
q
){
var
y
,
u
,
o
=
new
THREE
.
Geometry
;
for
(
y
=
0
;
y
<
m
.
points
.
length
*
q
;
y
++
){
u
=
y
/
(
m
.
points
.
length
*
q
);
u
=
m
.
getPoint
(
u
);
o
.
vertices
[
y
]
=
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
u
.
x
,
u
.
y
,
u
.
z
))}
return
o
}
function
d
(
m
,
q
){
var
y
=
b
(
q
,
10
),
u
=
b
(
q
,
10
),
o
=
new
THREE
.
LineBasicMaterial
({
color
:
16711680
,
linewidth
:
3
});
lineObj
=
new
THREE
.
Line
(
y
,
o
);
particleObj
=
new
THREE
.
ParticleSystem
(
u
,
new
THREE
.
ParticleBasicMaterial
({
color
:
16755200
,
size
:
3
}));
lineObj
.
scale
.
set
(
1
,
1
,
1
);
m
.
addChild
(
lineObj
);
particleObj
.
scale
.
set
(
1
,
1
,
1
);
m
.
addChild
(
particleObj
);
u
=
new
Sphere
(
1
,
u
,
o
=
new
THREE
.
Geometry
;
for
(
y
=
0
;
y
<
m
.
points
.
length
*
q
;
y
++
){
u
=
y
/
(
m
.
points
.
length
*
q
);
u
=
m
.
getPoint
(
u
);
o
.
vertices
[
y
]
=
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
u
.
x
,
u
.
y
,
u
.
z
))}
return
o
}
function
d
(
m
,
q
){
var
y
=
b
(
q
,
10
),
u
=
b
(
q
,
10
),
o
=
new
THREE
.
LineBasicMaterial
({
color
:
16711680
,
linewidth
:
3
});
lineObj
=
new
THREE
.
Line
(
y
,
o
);
particleObj
=
new
THREE
.
ParticleSystem
(
u
,
new
THREE
.
ParticleBasicMaterial
({
color
:
16755200
,
size
:
3
}));
lineObj
.
scale
.
set
(
1
,
1
,
1
);
m
.
addChild
(
lineObj
);
particleObj
.
scale
.
set
(
1
,
1
,
1
);
m
.
addChild
(
particleObj
);
u
=
new
Sphere
(
1
,
16
,
8
);
o
=
new
THREE
.
MeshBasicMaterial
({
color
:
65280
});
for
(
i
=
0
;
i
<
q
.
points
.
length
;
i
++
){
y
=
new
THREE
.
Mesh
(
u
,
o
);
y
.
position
.
copy
(
q
.
points
[
i
]);
y
.
updateMatrix
();
m
.
addChild
(
y
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
id
=
"
PathCamera
"
+
THREE
.
PathCameraIdCounter
++
;
this
.
duration
=
1
E4
;
this
.
waypoints
=
[];
this
.
useConstantSpeed
=!
0
;
this
.
resamplingCoef
=
50
;
this
.
debugPath
=
new
THREE
.
Object3D
;
this
.
debugDummy
=
new
THREE
.
Object3D
;
this
.
animationParent
=
new
THREE
.
Object3D
;
this
.
lookSpeed
=
0.005
0
;
this
.
lookVertical
=
16
,
8
);
o
=
new
THREE
.
MeshBasicMaterial
({
color
:
65280
});
for
(
i
=
0
;
i
<
q
.
points
.
length
;
i
++
){
y
=
new
THREE
.
Mesh
(
u
,
o
);
y
.
position
.
copy
(
q
.
points
[
i
]);
y
.
updateMatrix
();
m
.
addChild
(
y
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
id
=
"
PathCamera
"
+
THREE
.
PathCameraIdCounter
++
;
this
.
duration
=
1
E4
;
this
.
waypoints
=
[];
this
.
useConstantSpeed
=!
0
;
this
.
resamplingCoef
=
50
;
this
.
debugPath
=
new
THREE
.
Object3D
;
this
.
debugDummy
=
new
THREE
.
Object3D
;
this
.
animationParent
=
new
THREE
.
Object3D
;
this
.
lookSpeed
=
0.005
;
this
.
lookVertical
=
!
0
;
this
.
lookHorizontal
=!
0
;
this
.
verticalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
horizontalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
duration
!==
undefined
)
this
.
duration
=
a
.
duration
*
1
E3
;
if
(
a
.
waypoints
!==
undefined
)
this
.
waypoints
=
a
.
waypoints
;
if
(
a
.
useConstantSpeed
!==
undefined
)
this
.
useConstantSpeed
=
a
.
useConstantSpeed
;
if
(
a
.
resamplingCoef
!==
undefined
)
this
.
resamplingCoef
=
a
.
resamplingCoef
;
if
(
a
.
createDebugPath
!==
undefined
)
this
.
createDebugPath
=
a
.
createDebugPath
;
!
0
;
this
.
lookHorizontal
=!
0
;
this
.
verticalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
horizontalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
duration
!==
undefined
)
this
.
duration
=
a
.
duration
*
1
E3
;
if
(
a
.
waypoints
!==
undefined
)
this
.
waypoints
=
a
.
waypoints
;
if
(
a
.
useConstantSpeed
!==
undefined
)
this
.
useConstantSpeed
=
a
.
useConstantSpeed
;
if
(
a
.
resamplingCoef
!==
undefined
)
this
.
resamplingCoef
=
a
.
resamplingCoef
;
if
(
a
.
createDebugPath
!==
undefined
)
this
.
createDebugPath
=
a
.
createDebugPath
;
if
(
a
.
createDebugDummy
!==
undefined
)
this
.
createDebugDummy
=
a
.
createDebugDummy
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
lookHorizontal
!==
undefined
)
this
.
lookHorizontal
=
a
.
lookHorizontal
;
if
(
a
.
verticalAngleMap
!==
undefined
)
this
.
verticalAngleMap
=
a
.
verticalAngleMap
;
if
(
a
.
horizontalAngleMap
!==
undefined
)
this
.
horizontalAngleMap
=
a
.
horizontalAngleMap
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
if
(
a
.
createDebugDummy
!==
undefined
)
this
.
createDebugDummy
=
a
.
createDebugDummy
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
lookHorizontal
!==
undefined
)
this
.
lookHorizontal
=
a
.
lookHorizontal
;
if
(
a
.
verticalAngleMap
!==
undefined
)
this
.
verticalAngleMap
=
a
.
verticalAngleMap
;
if
(
a
.
horizontalAngleMap
!==
undefined
)
this
.
horizontalAngleMap
=
a
.
horizontalAngleMap
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
0
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
var
e
=
Math
.
PI
*
2
,
g
=
Math
.
PI
/
180
;
this
.
update
=
function
(
m
,
q
,
y
){
var
u
,
o
;
this
.
lookHorizontal
&&
(
this
.
lon
+=
this
.
mouseX
*
this
.
lookSpeed
);
this
.
lookVertical
&&
(
this
.
lat
-=
this
.
mouseY
*
this
.
lookSpeed
);
this
.
lon
=
Math
.
max
(
0
,
Math
.
min
(
360
,
this
.
lon
));
this
.
lat
=
Math
.
max
(
-
85
,
Math
.
min
(
85
,
this
.
lat
));
this
.
phi
=
(
90
-
this
.
lat
)
*
g
;
this
.
theta
=
this
.
lon
*
g
;
u
=
this
.
phi
%
e
;
this
.
phi
=
u
>=
0
?
u
:
u
+
e
;
u
=
this
.
verticalAngleMap
.
srcRange
;
o
=
this
.
verticalAngleMap
.
dstRange
;
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
0
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
var
e
=
Math
.
PI
*
2
,
g
=
Math
.
PI
/
180
;
this
.
update
=
function
(
m
,
q
,
y
){
var
u
,
o
;
this
.
lookHorizontal
&&
(
this
.
lon
+=
this
.
mouseX
*
this
.
lookSpeed
);
this
.
lookVertical
&&
(
this
.
lat
-=
this
.
mouseY
*
this
.
lookSpeed
);
this
.
lon
=
Math
.
max
(
0
,
Math
.
min
(
360
,
this
.
lon
));
this
.
lat
=
Math
.
max
(
-
85
,
Math
.
min
(
85
,
this
.
lat
));
this
.
phi
=
(
90
-
this
.
lat
)
*
g
;
this
.
theta
=
this
.
lon
*
g
;
u
=
this
.
phi
%
e
;
this
.
phi
=
u
>=
0
?
u
:
u
+
e
;
u
=
this
.
verticalAngleMap
.
srcRange
;
o
=
this
.
verticalAngleMap
.
dstRange
;
...
@@ -339,8 +339,8 @@ d-2*a+2)%a+a,(2*d-2*a+1)%a+a,(2*d-2*a)%a+a,2*a+1));this.computeCentroids();this.
...
@@ -339,8 +339,8 @@ d-2*a+2)%a+a,(2*d-2*a+1)%a+a,(2*d-2*a)%a+a,2*a+1));this.computeCentroids();this.
var
Icosahedron
=
function
(
a
){
function
c
(
y
,
u
,
o
){
var
v
=
Math
.
sqrt
(
y
*
y
+
u
*
u
+
o
*
o
);
return
e
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
y
/
v
,
u
/
v
,
o
/
v
)))
-
1
}
function
b
(
y
,
u
,
o
,
v
){
v
.
faces
.
push
(
new
THREE
.
Face3
(
y
,
u
,
o
))}
function
d
(
y
,
u
){
var
o
=
e
.
vertices
[
y
].
position
,
v
=
e
.
vertices
[
u
].
position
;
return
c
((
o
.
x
+
v
.
x
)
/
2
,(
o
.
y
+
v
.
y
)
/
2
,(
o
.
z
+
v
.
z
)
/
2
)}
var
e
=
this
,
g
=
new
THREE
.
Geometry
,
h
;
this
.
subdivisions
=
a
||
0
;
THREE
.
Geometry
.
call
(
this
);
a
=
(
1
+
Math
.
sqrt
(
5
))
/
2
;
c
(
-
1
,
a
,
0
);
c
(
1
,
a
,
0
);
c
(
-
1
,
-
a
,
0
);
c
(
1
,
-
a
,
0
);
c
(
0
,
-
1
,
a
);
c
(
0
,
1
,
a
);
c
(
0
,
-
1
,
-
a
);
c
(
0
,
var
Icosahedron
=
function
(
a
){
function
c
(
y
,
u
,
o
){
var
v
=
Math
.
sqrt
(
y
*
y
+
u
*
u
+
o
*
o
);
return
e
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
y
/
v
,
u
/
v
,
o
/
v
)))
-
1
}
function
b
(
y
,
u
,
o
,
v
){
v
.
faces
.
push
(
new
THREE
.
Face3
(
y
,
u
,
o
))}
function
d
(
y
,
u
){
var
o
=
e
.
vertices
[
y
].
position
,
v
=
e
.
vertices
[
u
].
position
;
return
c
((
o
.
x
+
v
.
x
)
/
2
,(
o
.
y
+
v
.
y
)
/
2
,(
o
.
z
+
v
.
z
)
/
2
)}
var
e
=
this
,
g
=
new
THREE
.
Geometry
,
h
;
this
.
subdivisions
=
a
||
0
;
THREE
.
Geometry
.
call
(
this
);
a
=
(
1
+
Math
.
sqrt
(
5
))
/
2
;
c
(
-
1
,
a
,
0
);
c
(
1
,
a
,
0
);
c
(
-
1
,
-
a
,
0
);
c
(
1
,
-
a
,
0
);
c
(
0
,
-
1
,
a
);
c
(
0
,
1
,
a
);
c
(
0
,
-
1
,
-
a
);
c
(
0
,
1
,
-
a
);
c
(
a
,
0
,
-
1
);
c
(
a
,
0
,
1
);
c
(
-
a
,
0
,
-
1
);
c
(
-
a
,
0
,
1
);
b
(
0
,
11
,
5
,
g
);
b
(
0
,
5
,
1
,
g
);
b
(
0
,
1
,
7
,
g
);
b
(
0
,
7
,
10
,
g
);
b
(
0
,
10
,
11
,
g
);
b
(
1
,
5
,
9
,
g
);
b
(
5
,
11
,
4
,
g
);
b
(
11
,
10
,
2
,
g
);
b
(
10
,
7
,
6
,
g
);
b
(
7
,
1
,
8
,
g
);
b
(
3
,
9
,
4
,
g
);
b
(
3
,
4
,
2
,
g
);
b
(
3
,
2
,
6
,
g
);
b
(
3
,
6
,
8
,
g
);
b
(
3
,
8
,
9
,
g
);
b
(
4
,
9
,
5
,
g
);
b
(
2
,
4
,
11
,
g
);
b
(
6
,
2
,
10
,
g
);
b
(
8
,
6
,
7
,
g
);
b
(
9
,
8
,
1
,
g
);
for
(
a
=
0
;
a
<
this
.
subdivisions
;
a
++
){
h
=
new
THREE
.
Geometry
;
for
(
var
j
in
g
.
faces
){
var
k
=
d
(
g
.
faces
[
j
].
a
,
g
.
faces
[
j
].
b
),
m
=
d
(
g
.
faces
[
j
].
b
,
g
.
faces
[
j
].
c
),
q
=
d
(
g
.
faces
[
j
].
c
,
g
.
faces
[
j
].
a
);
b
(
g
.
faces
[
j
].
a
,
k
,
q
,
h
);
b
(
g
.
faces
[
j
].
b
,
m
,
k
,
h
);
b
(
g
.
faces
[
j
].
c
,
1
,
-
a
);
c
(
a
,
0
,
-
1
);
c
(
a
,
0
,
1
);
c
(
-
a
,
0
,
-
1
);
c
(
-
a
,
0
,
1
);
b
(
0
,
11
,
5
,
g
);
b
(
0
,
5
,
1
,
g
);
b
(
0
,
1
,
7
,
g
);
b
(
0
,
7
,
10
,
g
);
b
(
0
,
10
,
11
,
g
);
b
(
1
,
5
,
9
,
g
);
b
(
5
,
11
,
4
,
g
);
b
(
11
,
10
,
2
,
g
);
b
(
10
,
7
,
6
,
g
);
b
(
7
,
1
,
8
,
g
);
b
(
3
,
9
,
4
,
g
);
b
(
3
,
4
,
2
,
g
);
b
(
3
,
2
,
6
,
g
);
b
(
3
,
6
,
8
,
g
);
b
(
3
,
8
,
9
,
g
);
b
(
4
,
9
,
5
,
g
);
b
(
2
,
4
,
11
,
g
);
b
(
6
,
2
,
10
,
g
);
b
(
8
,
6
,
7
,
g
);
b
(
9
,
8
,
1
,
g
);
for
(
a
=
0
;
a
<
this
.
subdivisions
;
a
++
){
h
=
new
THREE
.
Geometry
;
for
(
var
j
in
g
.
faces
){
var
k
=
d
(
g
.
faces
[
j
].
a
,
g
.
faces
[
j
].
b
),
m
=
d
(
g
.
faces
[
j
].
b
,
g
.
faces
[
j
].
c
),
q
=
d
(
g
.
faces
[
j
].
c
,
g
.
faces
[
j
].
a
);
b
(
g
.
faces
[
j
].
a
,
k
,
q
,
h
);
b
(
g
.
faces
[
j
].
b
,
m
,
k
,
h
);
b
(
g
.
faces
[
j
].
c
,
q
,
m
,
h
);
b
(
k
,
m
,
q
,
h
)}
g
.
faces
=
h
.
faces
}
e
.
faces
=
g
.
faces
;
delete
g
;
delete
h
;
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
Icosahedron
.
prototype
=
new
THREE
.
Geometry
;
Icosahedron
.
prototype
.
constructor
=
Icosahedron
;
q
,
m
,
h
);
b
(
k
,
m
,
q
,
h
)}
g
.
faces
=
h
.
faces
}
e
.
faces
=
g
.
faces
;
delete
g
;
delete
h
;
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
Icosahedron
.
prototype
=
new
THREE
.
Geometry
;
Icosahedron
.
prototype
.
constructor
=
Icosahedron
;
function
Lathe
(
a
,
c
,
b
){
THREE
.
Geometry
.
call
(
this
);
this
.
steps
=
c
||
12
;
this
.
angle
=
b
||
2
*
Math
.
PI
;
c
=
this
.
angle
/
this
.
steps
;
for
(
var
d
=
[],
e
=
[],
g
=
[],
h
=
[],
j
=
0
;
j
<
a
.
length
;
j
++
){
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
a
[
j
]));
e
[
j
]
=
this
.
vertices
.
length
-
1
;
d
[
j
]
=
new
THREE
.
Vector3
(
a
[
j
].
x
,
a
[
j
].
y
,
a
[
j
].
z
)}
for
(
var
k
=
(
new
THREE
.
Matrix4
).
setRotationZ
(
this
.
stepSize
),
m
=
0
;
m
<=
this
.
angle
+
0.0010
;
m
+=
this
.
stepSize
){
for
(
j
=
0
;
j
<
d
.
length
;
j
++
)
if
(
m
<
b
){
d
[
j
]
=
k
.
multiplyVector3
(
d
[
j
].
clone
());
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
d
[
j
]));
g
[
j
]
=
this
.
vertices
.
length
-
function
Lathe
(
a
,
c
,
b
){
THREE
.
Geometry
.
call
(
this
);
this
.
steps
=
c
||
12
;
this
.
angle
=
b
||
2
*
Math
.
PI
;
c
=
this
.
angle
/
this
.
steps
;
for
(
var
d
=
[],
e
=
[],
g
=
[],
h
=
[],
j
=
0
;
j
<
a
.
length
;
j
++
){
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
a
[
j
]));
d
[
j
]
=
a
[
j
].
clone
();
e
[
j
]
=
this
.
vertices
.
length
-
1
}
for
(
var
k
=
(
new
THREE
.
Matrix4
).
setRotationZ
(
c
),
m
=
0
;
m
<=
this
.
angle
+
0.001
;
m
+=
c
){
for
(
j
=
0
;
j
<
d
.
length
;
j
++
)
if
(
m
<
this
.
angle
){
d
[
j
]
=
k
.
multiplyVector3
(
d
[
j
].
clone
());
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
d
[
j
]));
g
[
j
]
=
this
.
vertices
.
length
-
1
}
else
g
=
h
;
m
==
0
&&
(
h
=
e
);
for
(
j
=
1
}
else
g
=
h
;
m
==
0
&&
(
h
=
e
);
for
(
j
=
0
;
j
<
e
.
length
-
1
;
j
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
g
[
j
],
g
[
j
+
1
],
e
[
j
+
1
],
e
[
j
]));
this
.
uvs
.
push
([
new
THREE
.
UV
(
m
/
b
,
j
/
a
.
length
),
new
THREE
.
UV
(
m
/
b
,(
j
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
m
-
c
)
/
b
,(
j
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
m
-
c
)
/
b
,
j
/
a
.
length
)])}
e
=
g
;
g
=
[]}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()}
Lathe
.
prototype
=
new
THREE
.
Geometry
;
Lathe
.
prototype
.
constructor
=
Lathe
;
0
;
j
<
e
.
length
-
1
;
j
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
g
[
j
],
g
[
j
+
1
],
e
[
j
+
1
],
e
[
j
]));
this
.
uvs
.
push
([
new
THREE
.
UV
(
m
/
b
,
j
/
a
.
length
),
new
THREE
.
UV
(
m
/
b
,(
j
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
m
-
c
)
/
b
,(
j
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
m
-
c
)
/
b
,
j
/
a
.
length
)])}
e
=
g
;
g
=
[]}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()}
Lathe
.
prototype
=
new
THREE
.
Geometry
;
Lathe
.
prototype
.
constructor
=
Lathe
;
var
Plane
=
function
(
a
,
c
,
b
,
d
){
THREE
.
Geometry
.
call
(
this
);
var
e
,
g
=
a
/
2
,
h
=
c
/
2
;
b
=
b
||
1
;
d
=
d
||
1
;
var
j
=
b
+
1
,
k
=
d
+
1
;
a
/=
b
;
var
m
=
c
/
d
;
for
(
e
=
0
;
e
<
k
;
e
++
)
for
(
c
=
0
;
c
<
j
;
c
++
)
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
c
*
a
-
g
,
-
(
e
*
m
-
h
),
0
)));
for
(
e
=
0
;
e
<
d
;
e
++
)
for
(
c
=
0
;
c
<
b
;
c
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
c
+
j
*
e
,
c
+
j
*
(
e
+
1
),
c
+
1
+
j
*
(
e
+
1
),
c
+
1
+
j
*
e
));
this
.
uvs
.
push
([
new
THREE
.
UV
(
c
/
b
,
e
/
d
),
new
THREE
.
UV
(
c
/
b
,(
e
+
1
)
/
d
),
new
THREE
.
UV
((
c
+
1
)
/
b
,(
e
+
1
)
/
d
),
new
THREE
.
UV
((
c
+
1
)
/
b
,
e
/
d
)])}
this
.
computeCentroids
();
this
.
computeFaceNormals
()};
var
Plane
=
function
(
a
,
c
,
b
,
d
){
THREE
.
Geometry
.
call
(
this
);
var
e
,
g
=
a
/
2
,
h
=
c
/
2
;
b
=
b
||
1
;
d
=
d
||
1
;
var
j
=
b
+
1
,
k
=
d
+
1
;
a
/=
b
;
var
m
=
c
/
d
;
for
(
e
=
0
;
e
<
k
;
e
++
)
for
(
c
=
0
;
c
<
j
;
c
++
)
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
c
*
a
-
g
,
-
(
e
*
m
-
h
),
0
)));
for
(
e
=
0
;
e
<
d
;
e
++
)
for
(
c
=
0
;
c
<
b
;
c
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
c
+
j
*
e
,
c
+
j
*
(
e
+
1
),
c
+
1
+
j
*
(
e
+
1
),
c
+
1
+
j
*
e
));
this
.
uvs
.
push
([
new
THREE
.
UV
(
c
/
b
,
e
/
d
),
new
THREE
.
UV
(
c
/
b
,(
e
+
1
)
/
d
),
new
THREE
.
UV
((
c
+
1
)
/
b
,(
e
+
1
)
/
d
),
new
THREE
.
UV
((
c
+
1
)
/
b
,
e
/
d
)])}
this
.
computeCentroids
();
this
.
computeFaceNormals
()};
Plane
.
prototype
=
new
THREE
.
Geometry
;
Plane
.
prototype
.
constructor
=
Plane
;
Plane
.
prototype
=
new
THREE
.
Geometry
;
Plane
.
prototype
.
constructor
=
Plane
;
var
Sphere
=
function
(
a
,
c
,
b
){
THREE
.
Geometry
.
call
(
this
);
var
d
,
e
=
Math
.
PI
,
g
=
Math
.
max
(
3
,
c
||
8
),
h
=
Math
.
max
(
2
,
b
||
6
);
c
=
[];
for
(
b
=
0
;
b
<
h
+
1
;
b
++
){
d
=
b
/
h
;
var
j
=
a
*
Math
.
cos
(
d
*
e
),
k
=
a
*
Math
.
sin
(
d
*
e
),
m
=
[],
q
=
0
;
for
(
d
=
0
;
d
<
g
;
d
++
){
var
y
=
2
*
d
/
g
,
u
=
k
*
Math
.
sin
(
y
*
e
);
y
=
k
*
Math
.
cos
(
y
*
e
);(
b
==
0
||
b
==
h
)
&&
d
>
0
||
(
q
=
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
y
,
j
,
u
)))
-
1
);
m
.
push
(
q
)}
c
.
push
(
m
)}
var
o
,
v
,
A
;
e
=
c
.
length
;
for
(
b
=
0
;
b
<
e
;
b
++
){
g
=
c
[
b
].
length
;
if
(
b
>
0
)
for
(
d
=
0
;
d
<
g
;
d
++
){
m
=
d
==
g
-
1
;
h
=
c
[
b
][
m
?
0
:
d
+
1
];
j
=
c
[
b
][
m
?
g
-
1
:
d
];
k
=
c
[
b
-
1
][
m
?
g
-
1
:
d
];
m
=
c
[
b
-
1
][
m
?
var
Sphere
=
function
(
a
,
c
,
b
){
THREE
.
Geometry
.
call
(
this
);
var
d
,
e
=
Math
.
PI
,
g
=
Math
.
max
(
3
,
c
||
8
),
h
=
Math
.
max
(
2
,
b
||
6
);
c
=
[];
for
(
b
=
0
;
b
<
h
+
1
;
b
++
){
d
=
b
/
h
;
var
j
=
a
*
Math
.
cos
(
d
*
e
),
k
=
a
*
Math
.
sin
(
d
*
e
),
m
=
[],
q
=
0
;
for
(
d
=
0
;
d
<
g
;
d
++
){
var
y
=
2
*
d
/
g
,
u
=
k
*
Math
.
sin
(
y
*
e
);
y
=
k
*
Math
.
cos
(
y
*
e
);(
b
==
0
||
b
==
h
)
&&
d
>
0
||
(
q
=
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
y
,
j
,
u
)))
-
1
);
m
.
push
(
q
)}
c
.
push
(
m
)}
var
o
,
v
,
A
;
e
=
c
.
length
;
for
(
b
=
0
;
b
<
e
;
b
++
){
g
=
c
[
b
].
length
;
if
(
b
>
0
)
for
(
d
=
0
;
d
<
g
;
d
++
){
m
=
d
==
g
-
1
;
h
=
c
[
b
][
m
?
0
:
d
+
1
];
j
=
c
[
b
][
m
?
g
-
1
:
d
];
k
=
c
[
b
-
1
][
m
?
g
-
1
:
d
];
m
=
c
[
b
-
1
][
m
?
...
...
build/custom/ThreeCanvas.js
浏览文件 @
a1a41e7f
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
j
=
d
*
e
;
this
.
w
=
g
*
f
-
j
*
c
;
this
.
x
=
g
*
c
+
j
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
j
=
d
*
e
;
this
.
w
=
g
*
f
-
j
*
c
;
this
.
x
=
g
*
c
+
j
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
j
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
j
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
j
;
this
.
z
=
d
*
a
+
e
*
j
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
j
;
return
this
},
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
j
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
j
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
j
;
this
.
z
=
d
*
a
+
e
*
j
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
j
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
j
=
this
.
z
,
h
=
this
.
w
,
i
=
h
*
c
+
g
*
e
-
j
*
d
,
p
=
h
*
d
+
j
*
c
-
f
*
e
,
n
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
j
*
e
;
b
.
x
=
i
*
h
+
c
*-
f
+
p
*-
j
-
n
*-
g
;
b
.
y
=
p
*
h
+
c
*-
g
+
n
*-
f
-
i
*-
j
;
b
.
z
=
n
*
h
+
c
*-
j
+
i
*-
g
-
p
*-
f
;
return
b
}};
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
j
=
this
.
z
,
h
=
this
.
w
,
i
=
h
*
c
+
g
*
e
-
j
*
d
,
p
=
h
*
d
+
j
*
c
-
f
*
e
,
n
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
j
*
e
;
b
.
x
=
i
*
h
+
c
*-
f
+
p
*-
j
-
n
*-
g
;
b
.
y
=
p
*
h
+
c
*-
g
+
n
*-
f
-
i
*-
j
;
b
.
z
=
n
*
h
+
c
*-
j
+
i
*-
g
-
p
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
build/custom/ThreeDOM.js
浏览文件 @
a1a41e7f
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
i
=
d
*
e
;
this
.
w
=
g
*
f
-
i
*
c
;
this
.
x
=
g
*
c
+
i
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
i
=
d
*
e
;
this
.
w
=
g
*
f
-
i
*
c
;
this
.
x
=
g
*
c
+
i
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
i
;
return
this
},
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
i
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
j
=
h
*
c
+
g
*
e
-
i
*
d
,
n
=
h
*
d
+
i
*
c
-
f
*
e
,
m
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
i
*
e
;
b
.
x
=
j
*
h
+
c
*-
f
+
n
*-
i
-
m
*-
g
;
b
.
y
=
n
*
h
+
c
*-
g
+
m
*-
f
-
j
*-
i
;
b
.
z
=
m
*
h
+
c
*-
i
+
j
*-
g
-
n
*-
f
;
return
b
}};
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
j
=
h
*
c
+
g
*
e
-
i
*
d
,
n
=
h
*
d
+
i
*
c
-
f
*
e
,
m
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
i
*
e
;
b
.
x
=
j
*
h
+
c
*-
f
+
n
*-
i
-
m
*-
g
;
b
.
y
=
n
*
h
+
c
*-
g
+
m
*-
f
-
j
*-
i
;
b
.
z
=
m
*
h
+
c
*-
i
+
j
*-
g
-
n
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Camera
=
function
(
a
,
b
,
c
,
d
,
e
){
THREE
.
Object3D
.
call
(
this
);
this
.
fov
=
a
||
50
;
this
.
aspect
=
b
||
1
;
this
.
near
=
c
||
0.1
;
this
.
far
=
d
||
2
E3
;
this
.
target
=
e
||
new
THREE
.
Object3D
;
this
.
useTarget
=!
0
;
this
.
matrixWorldInverse
=
new
THREE
.
Matrix4
;
this
.
projectionMatrix
=
null
;
this
.
updateProjectionMatrix
()};
THREE
.
Camera
.
prototype
=
new
THREE
.
Object3D
;
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Camera
=
function
(
a
,
b
,
c
,
d
,
e
){
THREE
.
Object3D
.
call
(
this
);
this
.
fov
=
a
||
50
;
this
.
aspect
=
b
||
1
;
this
.
near
=
c
||
0.1
;
this
.
far
=
d
||
2
E3
;
this
.
target
=
e
||
new
THREE
.
Object3D
;
this
.
useTarget
=!
0
;
this
.
matrixWorldInverse
=
new
THREE
.
Matrix4
;
this
.
projectionMatrix
=
null
;
this
.
updateProjectionMatrix
()};
THREE
.
Camera
.
prototype
=
new
THREE
.
Object3D
;
...
...
build/custom/ThreeExtras.js
浏览文件 @
a1a41e7f
...
@@ -22,7 +22,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195
...
@@ -22,7 +22,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195
film
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
time
:{
type
:
"
f
"
,
value
:
0
},
nIntensity
:{
type
:
"
f
"
,
value
:
0.5
},
sIntensity
:{
type
:
"
f
"
,
value
:
0.05
},
sCount
:{
type
:
"
f
"
,
value
:
4096
},
grayscale
:{
type
:
"
i
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float time;
\n
uniform bool grayscale;
\n
uniform float nIntensity;
\n
uniform float sIntensity;
\n
uniform float sCount;
\n
void main() {
\n
vec4 cTextureScreen = texture2D( tDiffuse, vUv );
\n
float x = vUv.x * vUv.y * time * 1000.0;
\n
x = mod( x, 13.0 ) * mod( x, 123.0 );
\n
float dx = mod( x, 0.01 );
\n
vec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );
\n
vec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );
\n
cResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;
\n
cResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );
\n
if( grayscale ) {
\n
cResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );
\n
}
\n
gl_FragColor = vec4( cResult, cTextureScreen.a );
\n
}
"
},
film
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
time
:{
type
:
"
f
"
,
value
:
0
},
nIntensity
:{
type
:
"
f
"
,
value
:
0.5
},
sIntensity
:{
type
:
"
f
"
,
value
:
0.05
},
sCount
:{
type
:
"
f
"
,
value
:
4096
},
grayscale
:{
type
:
"
i
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float time;
\n
uniform bool grayscale;
\n
uniform float nIntensity;
\n
uniform float sIntensity;
\n
uniform float sCount;
\n
void main() {
\n
vec4 cTextureScreen = texture2D( tDiffuse, vUv );
\n
float x = vUv.x * vUv.y * time * 1000.0;
\n
x = mod( x, 13.0 ) * mod( x, 123.0 );
\n
float dx = mod( x, 0.01 );
\n
vec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );
\n
vec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );
\n
cResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;
\n
cResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );
\n
if( grayscale ) {
\n
cResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );
\n
}
\n
gl_FragColor = vec4( cResult, cTextureScreen.a );
\n
}
"
},
screen
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float opacity;
\n
void main() {
\n
vec4 texel = texture2D( tDiffuse, vUv );
\n
gl_FragColor = opacity * texel;
\n
}
"
},
basic
:{
uniforms
:{},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
screen
:{
uniforms
:{
tDiffuse
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec2 vUv;
\n
void main() {
\n
vUv = vec2( uv.x, 1.0 - uv.y );
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
varying vec2 vUv;
\n
uniform sampler2D tDiffuse;
\n
uniform float opacity;
\n
void main() {
\n
vec4 texel = texture2D( tDiffuse, vUv );
\n
gl_FragColor = opacity * texel;
\n
}
"
},
basic
:{
uniforms
:{},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
void main() {
\n
gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );
\n
}
"
}},
buildKernel
:
function
(
a
){
var
d
,
b
,
c
,
g
,
e
=
2
*
Math
.
ceil
(
a
*
3
)
+
1
;
e
>
25
&&
(
e
=
25
);
g
=
(
e
-
1
)
*
0.5
;
b
=
Array
(
e
);
for
(
d
=
c
=
0
;
d
<
e
;
++
d
){
b
[
d
]
=
Math
.
exp
(
-
((
d
-
g
)
*
(
d
-
g
))
/
(
2
*
a
*
a
));
c
+=
b
[
d
]}
for
(
d
=
0
;
d
<
e
;
++
d
)
b
[
d
]
/=
c
;
return
b
}};
fragmentShader
:
"
void main() {
\n
gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );
\n
}
"
}},
buildKernel
:
function
(
a
){
var
d
,
b
,
c
,
g
,
e
=
2
*
Math
.
ceil
(
a
*
3
)
+
1
;
e
>
25
&&
(
e
=
25
);
g
=
(
e
-
1
)
*
0.5
;
b
=
Array
(
e
);
for
(
d
=
c
=
0
;
d
<
e
;
++
d
){
b
[
d
]
=
Math
.
exp
(
-
((
d
-
g
)
*
(
d
-
g
))
/
(
2
*
a
*
a
));
c
+=
b
[
d
]}
for
(
d
=
0
;
d
<
e
;
++
d
)
b
[
d
]
/=
c
;
return
b
}};
THREE
.
QuakeCamera
=
function
(
a
){
function
d
(
b
,
c
){
return
function
(){
c
.
apply
(
b
,
arguments
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
movementSpeed
=
1
;
this
.
lookSpeed
=
0.005
0
;
this
.
noFly
=!
1
;
this
.
lookVertical
=!
0
;
this
.
autoForward
=!
1
;
this
.
dragToLook
=!
1
;
this
.
heightSpeed
=!
1
;
this
.
heightCoef
=
1
;
this
.
heightMin
=
0
;
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
movementSpeed
!==
undefined
)
this
.
movementSpeed
=
a
.
movementSpeed
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
noFly
!==
undefined
)
this
.
noFly
=
THREE
.
QuakeCamera
=
function
(
a
){
function
d
(
b
,
c
){
return
function
(){
c
.
apply
(
b
,
arguments
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
movementSpeed
=
1
;
this
.
lookSpeed
=
0.005
;
this
.
noFly
=!
1
;
this
.
lookVertical
=!
0
;
this
.
autoForward
=!
1
;
this
.
dragToLook
=!
1
;
this
.
heightSpeed
=!
1
;
this
.
heightCoef
=
1
;
this
.
heightMin
=
0
;
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
movementSpeed
!==
undefined
)
this
.
movementSpeed
=
a
.
movementSpeed
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
noFly
!==
undefined
)
this
.
noFly
=
a
.
noFly
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
autoForward
!==
undefined
)
this
.
autoForward
=
a
.
autoForward
;
if
(
a
.
dragToLook
!==
undefined
)
this
.
dragToLook
=
a
.
dragToLook
;
if
(
a
.
heightSpeed
!==
undefined
)
this
.
heightSpeed
=
a
.
heightSpeed
;
if
(
a
.
heightCoef
!==
undefined
)
this
.
heightCoef
=
a
.
heightCoef
;
if
(
a
.
heightMin
!==
undefined
)
this
.
heightMin
=
a
.
heightMin
;
if
(
a
.
heightMax
!==
undefined
)
this
.
heightMax
=
a
.
heightMax
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
a
.
noFly
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
autoForward
!==
undefined
)
this
.
autoForward
=
a
.
autoForward
;
if
(
a
.
dragToLook
!==
undefined
)
this
.
dragToLook
=
a
.
dragToLook
;
if
(
a
.
heightSpeed
!==
undefined
)
this
.
heightSpeed
=
a
.
heightSpeed
;
if
(
a
.
heightCoef
!==
undefined
)
this
.
heightCoef
=
a
.
heightCoef
;
if
(
a
.
heightMin
!==
undefined
)
this
.
heightMin
=
a
.
heightMin
;
if
(
a
.
heightMax
!==
undefined
)
this
.
heightMax
=
a
.
heightMax
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
this
.
autoSpeedFactor
=
0
;
this
.
moveForward
=!
1
;
this
.
moveBackward
=!
1
;
this
.
moveLeft
=!
1
;
this
.
moveRight
=!
1
;
this
.
mouseDragOn
=!
1
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
this
.
onMouseDown
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=!
0
;
break
;
case
2
:
this
.
moveBackward
=!
0
}
this
.
mouseDragOn
=!
0
};
this
.
onMouseUp
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=
this
.
mouseY
=
this
.
mouseX
=
this
.
autoSpeedFactor
=
0
;
this
.
moveForward
=!
1
;
this
.
moveBackward
=!
1
;
this
.
moveLeft
=!
1
;
this
.
moveRight
=!
1
;
this
.
mouseDragOn
=!
1
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
this
.
onMouseDown
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=!
0
;
break
;
case
2
:
this
.
moveBackward
=!
0
}
this
.
mouseDragOn
=!
0
};
this
.
onMouseUp
=
function
(
b
){
b
.
preventDefault
();
b
.
stopPropagation
();
if
(
!
this
.
dragToLook
)
switch
(
b
.
button
){
case
0
:
this
.
moveForward
=
!
1
;
break
;
case
2
:
this
.
moveBackward
=!
1
}
this
.
mouseDragOn
=!
1
};
this
.
onMouseMove
=
function
(
b
){
this
.
mouseX
=
b
.
clientX
-
this
.
windowHalfX
;
this
.
mouseY
=
b
.
clientY
-
this
.
windowHalfY
};
this
.
onKeyDown
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
0
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
0
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=!
0
;
break
;
case
39
:
case
68
:
this
.
moveRight
=!
0
}};
this
.
onKeyUp
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
1
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
1
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=
!
1
;
break
;
case
2
:
this
.
moveBackward
=!
1
}
this
.
mouseDragOn
=!
1
};
this
.
onMouseMove
=
function
(
b
){
this
.
mouseX
=
b
.
clientX
-
this
.
windowHalfX
;
this
.
mouseY
=
b
.
clientY
-
this
.
windowHalfY
};
this
.
onKeyDown
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
0
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
0
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=!
0
;
break
;
case
39
:
case
68
:
this
.
moveRight
=!
0
}};
this
.
onKeyUp
=
function
(
b
){
switch
(
b
.
keyCode
){
case
38
:
case
87
:
this
.
moveForward
=!
1
;
break
;
case
37
:
case
65
:
this
.
moveLeft
=!
1
;
break
;
case
40
:
case
83
:
this
.
moveBackward
=
...
@@ -32,7 +32,7 @@ var b=this.lookSpeed;this.dragToLook&&!this.mouseDragOn&&(b=0);this.lon+=this.mo
...
@@ -32,7 +32,7 @@ var b=this.lookSpeed;this.dragToLook&&!this.mouseDragOn&&(b=0);this.lon+=this.mo
THREE
.
QuakeCamera
.
prototype
.
translate
=
function
(
a
,
d
){
this
.
matrix
.
rotateAxis
(
d
);
if
(
this
.
noFly
)
d
.
y
=
0
;
this
.
position
.
addSelf
(
d
.
multiplyScalar
(
a
));
this
.
target
.
position
.
addSelf
(
d
.
multiplyScalar
(
a
))};
THREE
.
QuakeCamera
.
prototype
.
translate
=
function
(
a
,
d
){
this
.
matrix
.
rotateAxis
(
d
);
if
(
this
.
noFly
)
d
.
y
=
0
;
this
.
position
.
addSelf
(
d
.
multiplyScalar
(
a
));
this
.
target
.
position
.
addSelf
(
d
.
multiplyScalar
(
a
))};
THREE
.
PathCamera
=
function
(
a
){
function
d
(
l
,
k
,
t
,
n
){
var
m
=
{
name
:
t
,
fps
:
0.6
,
length
:
n
,
hierarchy
:[]},
p
,
u
=
k
.
getControlPointsArray
(),
z
=
k
.
getLength
(),
w
=
u
.
length
,
x
=
0
;
p
=
w
-
1
;
k
=
{
parent
:
-
1
,
keys
:[]};
k
.
keys
[
0
]
=
{
time
:
0
,
pos
:
u
[
0
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
k
.
keys
[
p
]
=
{
time
:
n
,
pos
:
u
[
p
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
for
(
p
=
1
;
p
<
w
-
1
;
p
++
){
x
=
n
*
z
.
chunks
[
p
]
/
z
.
total
;
k
.
keys
[
p
]
=
{
time
:
x
,
pos
:
u
[
p
]}}
m
.
hierarchy
[
0
]
=
k
;
THREE
.
AnimationHandler
.
add
(
m
);
return
new
THREE
.
Animation
(
l
,
t
,
THREE
.
AnimationHandler
.
CATMULLROM_FORWARD
,
!
1
)}
function
b
(
l
,
k
){
var
t
,
THREE
.
PathCamera
=
function
(
a
){
function
d
(
l
,
k
,
t
,
n
){
var
m
=
{
name
:
t
,
fps
:
0.6
,
length
:
n
,
hierarchy
:[]},
p
,
u
=
k
.
getControlPointsArray
(),
z
=
k
.
getLength
(),
w
=
u
.
length
,
x
=
0
;
p
=
w
-
1
;
k
=
{
parent
:
-
1
,
keys
:[]};
k
.
keys
[
0
]
=
{
time
:
0
,
pos
:
u
[
0
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
k
.
keys
[
p
]
=
{
time
:
n
,
pos
:
u
[
p
],
rot
:[
0
,
0
,
0
,
1
],
scl
:[
1
,
1
,
1
]};
for
(
p
=
1
;
p
<
w
-
1
;
p
++
){
x
=
n
*
z
.
chunks
[
p
]
/
z
.
total
;
k
.
keys
[
p
]
=
{
time
:
x
,
pos
:
u
[
p
]}}
m
.
hierarchy
[
0
]
=
k
;
THREE
.
AnimationHandler
.
add
(
m
);
return
new
THREE
.
Animation
(
l
,
t
,
THREE
.
AnimationHandler
.
CATMULLROM_FORWARD
,
!
1
)}
function
b
(
l
,
k
){
var
t
,
n
,
m
=
new
THREE
.
Geometry
;
for
(
t
=
0
;
t
<
l
.
points
.
length
*
k
;
t
++
){
n
=
t
/
(
l
.
points
.
length
*
k
);
n
=
l
.
getPoint
(
n
);
m
.
vertices
[
t
]
=
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
n
.
x
,
n
.
y
,
n
.
z
))}
return
m
}
function
c
(
l
,
k
){
var
t
=
b
(
k
,
10
),
n
=
b
(
k
,
10
),
m
=
new
THREE
.
LineBasicMaterial
({
color
:
16711680
,
linewidth
:
3
});
lineObj
=
new
THREE
.
Line
(
t
,
m
);
particleObj
=
new
THREE
.
ParticleSystem
(
n
,
new
THREE
.
ParticleBasicMaterial
({
color
:
16755200
,
size
:
3
}));
lineObj
.
scale
.
set
(
1
,
1
,
1
);
l
.
addChild
(
lineObj
);
particleObj
.
scale
.
set
(
1
,
1
,
1
);
l
.
addChild
(
particleObj
);
n
=
new
Sphere
(
1
,
n
,
m
=
new
THREE
.
Geometry
;
for
(
t
=
0
;
t
<
l
.
points
.
length
*
k
;
t
++
){
n
=
t
/
(
l
.
points
.
length
*
k
);
n
=
l
.
getPoint
(
n
);
m
.
vertices
[
t
]
=
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
n
.
x
,
n
.
y
,
n
.
z
))}
return
m
}
function
c
(
l
,
k
){
var
t
=
b
(
k
,
10
),
n
=
b
(
k
,
10
),
m
=
new
THREE
.
LineBasicMaterial
({
color
:
16711680
,
linewidth
:
3
});
lineObj
=
new
THREE
.
Line
(
t
,
m
);
particleObj
=
new
THREE
.
ParticleSystem
(
n
,
new
THREE
.
ParticleBasicMaterial
({
color
:
16755200
,
size
:
3
}));
lineObj
.
scale
.
set
(
1
,
1
,
1
);
l
.
addChild
(
lineObj
);
particleObj
.
scale
.
set
(
1
,
1
,
1
);
l
.
addChild
(
particleObj
);
n
=
new
Sphere
(
1
,
16
,
8
);
m
=
new
THREE
.
MeshBasicMaterial
({
color
:
65280
});
for
(
i
=
0
;
i
<
k
.
points
.
length
;
i
++
){
t
=
new
THREE
.
Mesh
(
n
,
m
);
t
.
position
.
copy
(
k
.
points
[
i
]);
t
.
updateMatrix
();
l
.
addChild
(
t
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
id
=
"
PathCamera
"
+
THREE
.
PathCameraIdCounter
++
;
this
.
duration
=
1
E4
;
this
.
waypoints
=
[];
this
.
useConstantSpeed
=!
0
;
this
.
resamplingCoef
=
50
;
this
.
debugPath
=
new
THREE
.
Object3D
;
this
.
debugDummy
=
new
THREE
.
Object3D
;
this
.
animationParent
=
new
THREE
.
Object3D
;
this
.
lookSpeed
=
0.005
0
;
this
.
lookVertical
=
16
,
8
);
m
=
new
THREE
.
MeshBasicMaterial
({
color
:
65280
});
for
(
i
=
0
;
i
<
k
.
points
.
length
;
i
++
){
t
=
new
THREE
.
Mesh
(
n
,
m
);
t
.
position
.
copy
(
k
.
points
[
i
]);
t
.
updateMatrix
();
l
.
addChild
(
t
)}}
THREE
.
Camera
.
call
(
this
,
a
.
fov
,
a
.
aspect
,
a
.
near
,
a
.
far
,
a
.
target
);
this
.
id
=
"
PathCamera
"
+
THREE
.
PathCameraIdCounter
++
;
this
.
duration
=
1
E4
;
this
.
waypoints
=
[];
this
.
useConstantSpeed
=!
0
;
this
.
resamplingCoef
=
50
;
this
.
debugPath
=
new
THREE
.
Object3D
;
this
.
debugDummy
=
new
THREE
.
Object3D
;
this
.
animationParent
=
new
THREE
.
Object3D
;
this
.
lookSpeed
=
0.005
;
this
.
lookVertical
=
!
0
;
this
.
lookHorizontal
=!
0
;
this
.
verticalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
horizontalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
duration
!==
undefined
)
this
.
duration
=
a
.
duration
*
1
E3
;
if
(
a
.
waypoints
!==
undefined
)
this
.
waypoints
=
a
.
waypoints
;
if
(
a
.
useConstantSpeed
!==
undefined
)
this
.
useConstantSpeed
=
a
.
useConstantSpeed
;
if
(
a
.
resamplingCoef
!==
undefined
)
this
.
resamplingCoef
=
a
.
resamplingCoef
;
if
(
a
.
createDebugPath
!==
undefined
)
this
.
createDebugPath
=
a
.
createDebugPath
;
!
0
;
this
.
lookHorizontal
=!
0
;
this
.
verticalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
horizontalAngleMap
=
{
srcRange
:[
0
,
6.28
],
dstRange
:[
0
,
6.28
]};
this
.
domElement
=
document
;
if
(
a
){
if
(
a
.
duration
!==
undefined
)
this
.
duration
=
a
.
duration
*
1
E3
;
if
(
a
.
waypoints
!==
undefined
)
this
.
waypoints
=
a
.
waypoints
;
if
(
a
.
useConstantSpeed
!==
undefined
)
this
.
useConstantSpeed
=
a
.
useConstantSpeed
;
if
(
a
.
resamplingCoef
!==
undefined
)
this
.
resamplingCoef
=
a
.
resamplingCoef
;
if
(
a
.
createDebugPath
!==
undefined
)
this
.
createDebugPath
=
a
.
createDebugPath
;
if
(
a
.
createDebugDummy
!==
undefined
)
this
.
createDebugDummy
=
a
.
createDebugDummy
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
lookHorizontal
!==
undefined
)
this
.
lookHorizontal
=
a
.
lookHorizontal
;
if
(
a
.
verticalAngleMap
!==
undefined
)
this
.
verticalAngleMap
=
a
.
verticalAngleMap
;
if
(
a
.
horizontalAngleMap
!==
undefined
)
this
.
horizontalAngleMap
=
a
.
horizontalAngleMap
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
if
(
a
.
createDebugDummy
!==
undefined
)
this
.
createDebugDummy
=
a
.
createDebugDummy
;
if
(
a
.
lookSpeed
!==
undefined
)
this
.
lookSpeed
=
a
.
lookSpeed
;
if
(
a
.
lookVertical
!==
undefined
)
this
.
lookVertical
=
a
.
lookVertical
;
if
(
a
.
lookHorizontal
!==
undefined
)
this
.
lookHorizontal
=
a
.
lookHorizontal
;
if
(
a
.
verticalAngleMap
!==
undefined
)
this
.
verticalAngleMap
=
a
.
verticalAngleMap
;
if
(
a
.
horizontalAngleMap
!==
undefined
)
this
.
horizontalAngleMap
=
a
.
horizontalAngleMap
;
if
(
a
.
domElement
!==
undefined
)
this
.
domElement
=
a
.
domElement
}
this
.
theta
=
this
.
phi
=
this
.
lon
=
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
0
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
var
g
=
Math
.
PI
*
2
,
e
=
Math
.
PI
/
180
;
this
.
update
=
function
(
l
,
k
,
t
){
var
n
,
m
;
this
.
lookHorizontal
&&
(
this
.
lon
+=
this
.
mouseX
*
this
.
lookSpeed
);
this
.
lookVertical
&&
(
this
.
lat
-=
this
.
mouseY
*
this
.
lookSpeed
);
this
.
lon
=
Math
.
max
(
0
,
Math
.
min
(
360
,
this
.
lon
));
this
.
lat
=
Math
.
max
(
-
85
,
Math
.
min
(
85
,
this
.
lat
));
this
.
phi
=
(
90
-
this
.
lat
)
*
e
;
this
.
theta
=
this
.
lon
*
e
;
n
=
this
.
phi
%
g
;
this
.
phi
=
n
>=
0
?
n
:
n
+
g
;
n
=
this
.
verticalAngleMap
.
srcRange
;
m
=
this
.
verticalAngleMap
.
dstRange
;
this
.
lat
=
this
.
mouseY
=
this
.
mouseX
=
0
;
this
.
windowHalfX
=
window
.
innerWidth
/
2
;
this
.
windowHalfY
=
window
.
innerHeight
/
2
;
var
g
=
Math
.
PI
*
2
,
e
=
Math
.
PI
/
180
;
this
.
update
=
function
(
l
,
k
,
t
){
var
n
,
m
;
this
.
lookHorizontal
&&
(
this
.
lon
+=
this
.
mouseX
*
this
.
lookSpeed
);
this
.
lookVertical
&&
(
this
.
lat
-=
this
.
mouseY
*
this
.
lookSpeed
);
this
.
lon
=
Math
.
max
(
0
,
Math
.
min
(
360
,
this
.
lon
));
this
.
lat
=
Math
.
max
(
-
85
,
Math
.
min
(
85
,
this
.
lat
));
this
.
phi
=
(
90
-
this
.
lat
)
*
e
;
this
.
theta
=
this
.
lon
*
e
;
n
=
this
.
phi
%
g
;
this
.
phi
=
n
>=
0
?
n
:
n
+
g
;
n
=
this
.
verticalAngleMap
.
srcRange
;
m
=
this
.
verticalAngleMap
.
dstRange
;
...
@@ -48,8 +48,8 @@ c-2*a+2)%a+a,(2*c-2*a+1)%a+a,(2*c-2*a)%a+a,2*a+1));this.computeCentroids();this.
...
@@ -48,8 +48,8 @@ c-2*a+2)%a+a,(2*c-2*a+1)%a+a,(2*c-2*a)%a+a,2*a+1));this.computeCentroids();this.
var
Icosahedron
=
function
(
a
){
function
d
(
t
,
n
,
m
){
var
p
=
Math
.
sqrt
(
t
*
t
+
n
*
n
+
m
*
m
);
return
g
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
t
/
p
,
n
/
p
,
m
/
p
)))
-
1
}
function
b
(
t
,
n
,
m
,
p
){
p
.
faces
.
push
(
new
THREE
.
Face3
(
t
,
n
,
m
))}
function
c
(
t
,
n
){
var
m
=
g
.
vertices
[
t
].
position
,
p
=
g
.
vertices
[
n
].
position
;
return
d
((
m
.
x
+
p
.
x
)
/
2
,(
m
.
y
+
p
.
y
)
/
2
,(
m
.
z
+
p
.
z
)
/
2
)}
var
g
=
this
,
e
=
new
THREE
.
Geometry
,
f
;
this
.
subdivisions
=
a
||
0
;
THREE
.
Geometry
.
call
(
this
);
a
=
(
1
+
Math
.
sqrt
(
5
))
/
2
;
d
(
-
1
,
a
,
0
);
d
(
1
,
a
,
0
);
d
(
-
1
,
-
a
,
0
);
d
(
1
,
-
a
,
0
);
d
(
0
,
-
1
,
a
);
d
(
0
,
1
,
a
);
d
(
0
,
-
1
,
-
a
);
d
(
0
,
var
Icosahedron
=
function
(
a
){
function
d
(
t
,
n
,
m
){
var
p
=
Math
.
sqrt
(
t
*
t
+
n
*
n
+
m
*
m
);
return
g
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
t
/
p
,
n
/
p
,
m
/
p
)))
-
1
}
function
b
(
t
,
n
,
m
,
p
){
p
.
faces
.
push
(
new
THREE
.
Face3
(
t
,
n
,
m
))}
function
c
(
t
,
n
){
var
m
=
g
.
vertices
[
t
].
position
,
p
=
g
.
vertices
[
n
].
position
;
return
d
((
m
.
x
+
p
.
x
)
/
2
,(
m
.
y
+
p
.
y
)
/
2
,(
m
.
z
+
p
.
z
)
/
2
)}
var
g
=
this
,
e
=
new
THREE
.
Geometry
,
f
;
this
.
subdivisions
=
a
||
0
;
THREE
.
Geometry
.
call
(
this
);
a
=
(
1
+
Math
.
sqrt
(
5
))
/
2
;
d
(
-
1
,
a
,
0
);
d
(
1
,
a
,
0
);
d
(
-
1
,
-
a
,
0
);
d
(
1
,
-
a
,
0
);
d
(
0
,
-
1
,
a
);
d
(
0
,
1
,
a
);
d
(
0
,
-
1
,
-
a
);
d
(
0
,
1
,
-
a
);
d
(
a
,
0
,
-
1
);
d
(
a
,
0
,
1
);
d
(
-
a
,
0
,
-
1
);
d
(
-
a
,
0
,
1
);
b
(
0
,
11
,
5
,
e
);
b
(
0
,
5
,
1
,
e
);
b
(
0
,
1
,
7
,
e
);
b
(
0
,
7
,
10
,
e
);
b
(
0
,
10
,
11
,
e
);
b
(
1
,
5
,
9
,
e
);
b
(
5
,
11
,
4
,
e
);
b
(
11
,
10
,
2
,
e
);
b
(
10
,
7
,
6
,
e
);
b
(
7
,
1
,
8
,
e
);
b
(
3
,
9
,
4
,
e
);
b
(
3
,
4
,
2
,
e
);
b
(
3
,
2
,
6
,
e
);
b
(
3
,
6
,
8
,
e
);
b
(
3
,
8
,
9
,
e
);
b
(
4
,
9
,
5
,
e
);
b
(
2
,
4
,
11
,
e
);
b
(
6
,
2
,
10
,
e
);
b
(
8
,
6
,
7
,
e
);
b
(
9
,
8
,
1
,
e
);
for
(
a
=
0
;
a
<
this
.
subdivisions
;
a
++
){
f
=
new
THREE
.
Geometry
;
for
(
var
h
in
e
.
faces
){
var
j
=
c
(
e
.
faces
[
h
].
a
,
e
.
faces
[
h
].
b
),
l
=
c
(
e
.
faces
[
h
].
b
,
e
.
faces
[
h
].
c
),
k
=
c
(
e
.
faces
[
h
].
c
,
e
.
faces
[
h
].
a
);
b
(
e
.
faces
[
h
].
a
,
j
,
k
,
f
);
b
(
e
.
faces
[
h
].
b
,
l
,
j
,
f
);
b
(
e
.
faces
[
h
].
c
,
1
,
-
a
);
d
(
a
,
0
,
-
1
);
d
(
a
,
0
,
1
);
d
(
-
a
,
0
,
-
1
);
d
(
-
a
,
0
,
1
);
b
(
0
,
11
,
5
,
e
);
b
(
0
,
5
,
1
,
e
);
b
(
0
,
1
,
7
,
e
);
b
(
0
,
7
,
10
,
e
);
b
(
0
,
10
,
11
,
e
);
b
(
1
,
5
,
9
,
e
);
b
(
5
,
11
,
4
,
e
);
b
(
11
,
10
,
2
,
e
);
b
(
10
,
7
,
6
,
e
);
b
(
7
,
1
,
8
,
e
);
b
(
3
,
9
,
4
,
e
);
b
(
3
,
4
,
2
,
e
);
b
(
3
,
2
,
6
,
e
);
b
(
3
,
6
,
8
,
e
);
b
(
3
,
8
,
9
,
e
);
b
(
4
,
9
,
5
,
e
);
b
(
2
,
4
,
11
,
e
);
b
(
6
,
2
,
10
,
e
);
b
(
8
,
6
,
7
,
e
);
b
(
9
,
8
,
1
,
e
);
for
(
a
=
0
;
a
<
this
.
subdivisions
;
a
++
){
f
=
new
THREE
.
Geometry
;
for
(
var
h
in
e
.
faces
){
var
j
=
c
(
e
.
faces
[
h
].
a
,
e
.
faces
[
h
].
b
),
l
=
c
(
e
.
faces
[
h
].
b
,
e
.
faces
[
h
].
c
),
k
=
c
(
e
.
faces
[
h
].
c
,
e
.
faces
[
h
].
a
);
b
(
e
.
faces
[
h
].
a
,
j
,
k
,
f
);
b
(
e
.
faces
[
h
].
b
,
l
,
j
,
f
);
b
(
e
.
faces
[
h
].
c
,
k
,
l
,
f
);
b
(
j
,
l
,
k
,
f
)}
e
.
faces
=
f
.
faces
}
g
.
faces
=
e
.
faces
;
delete
e
;
delete
f
;
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
Icosahedron
.
prototype
=
new
THREE
.
Geometry
;
Icosahedron
.
prototype
.
constructor
=
Icosahedron
;
k
,
l
,
f
);
b
(
j
,
l
,
k
,
f
)}
e
.
faces
=
f
.
faces
}
g
.
faces
=
e
.
faces
;
delete
e
;
delete
f
;
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
Icosahedron
.
prototype
=
new
THREE
.
Geometry
;
Icosahedron
.
prototype
.
constructor
=
Icosahedron
;
function
Lathe
(
a
,
d
,
b
){
THREE
.
Geometry
.
call
(
this
);
this
.
steps
=
d
||
12
;
this
.
angle
=
b
||
2
*
Math
.
PI
;
d
=
this
.
angle
/
this
.
steps
;
for
(
var
c
=
[],
g
=
[],
e
=
[],
f
=
[],
h
=
0
;
h
<
a
.
length
;
h
++
){
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
a
[
h
]));
g
[
h
]
=
this
.
vertices
.
length
-
1
;
c
[
h
]
=
new
THREE
.
Vector3
(
a
[
h
].
x
,
a
[
h
].
y
,
a
[
h
].
z
)}
for
(
var
j
=
(
new
THREE
.
Matrix4
).
setRotationZ
(
this
.
stepSize
),
l
=
0
;
l
<=
this
.
angle
+
0.0010
;
l
+=
this
.
stepSize
){
for
(
h
=
0
;
h
<
c
.
length
;
h
++
)
if
(
l
<
b
){
c
[
h
]
=
j
.
multiplyVector3
(
c
[
h
].
clone
());
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
c
[
h
]));
e
[
h
]
=
this
.
vertices
.
length
-
function
Lathe
(
a
,
d
,
b
){
THREE
.
Geometry
.
call
(
this
);
this
.
steps
=
d
||
12
;
this
.
angle
=
b
||
2
*
Math
.
PI
;
d
=
this
.
angle
/
this
.
steps
;
for
(
var
c
=
[],
g
=
[],
e
=
[],
f
=
[],
h
=
0
;
h
<
a
.
length
;
h
++
){
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
a
[
h
]));
c
[
h
]
=
a
[
h
].
clone
();
g
[
h
]
=
this
.
vertices
.
length
-
1
}
for
(
var
j
=
(
new
THREE
.
Matrix4
).
setRotationZ
(
d
),
l
=
0
;
l
<=
this
.
angle
+
0.001
;
l
+=
d
){
for
(
h
=
0
;
h
<
c
.
length
;
h
++
)
if
(
l
<
this
.
angle
){
c
[
h
]
=
j
.
multiplyVector3
(
c
[
h
].
clone
());
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
c
[
h
]));
e
[
h
]
=
this
.
vertices
.
length
-
1
}
else
e
=
f
;
l
==
0
&&
(
f
=
g
);
for
(
h
=
1
}
else
e
=
f
;
l
==
0
&&
(
f
=
g
);
for
(
h
=
0
;
h
<
g
.
length
-
1
;
h
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
e
[
h
],
e
[
h
+
1
],
g
[
h
+
1
],
g
[
h
]));
this
.
uvs
.
push
([
new
THREE
.
UV
(
l
/
b
,
h
/
a
.
length
),
new
THREE
.
UV
(
l
/
b
,(
h
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
l
-
d
)
/
b
,(
h
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
l
-
d
)
/
b
,
h
/
a
.
length
)])}
g
=
e
;
e
=
[]}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()}
Lathe
.
prototype
=
new
THREE
.
Geometry
;
Lathe
.
prototype
.
constructor
=
Lathe
;
0
;
h
<
g
.
length
-
1
;
h
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
e
[
h
],
e
[
h
+
1
],
g
[
h
+
1
],
g
[
h
]));
this
.
uvs
.
push
([
new
THREE
.
UV
(
l
/
b
,
h
/
a
.
length
),
new
THREE
.
UV
(
l
/
b
,(
h
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
l
-
d
)
/
b
,(
h
+
1
)
/
a
.
length
),
new
THREE
.
UV
((
l
-
d
)
/
b
,
h
/
a
.
length
)])}
g
=
e
;
e
=
[]}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()}
Lathe
.
prototype
=
new
THREE
.
Geometry
;
Lathe
.
prototype
.
constructor
=
Lathe
;
var
Plane
=
function
(
a
,
d
,
b
,
c
){
THREE
.
Geometry
.
call
(
this
);
var
g
,
e
=
a
/
2
,
f
=
d
/
2
;
b
=
b
||
1
;
c
=
c
||
1
;
var
h
=
b
+
1
,
j
=
c
+
1
;
a
/=
b
;
var
l
=
d
/
c
;
for
(
g
=
0
;
g
<
j
;
g
++
)
for
(
d
=
0
;
d
<
h
;
d
++
)
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
d
*
a
-
e
,
-
(
g
*
l
-
f
),
0
)));
for
(
g
=
0
;
g
<
c
;
g
++
)
for
(
d
=
0
;
d
<
b
;
d
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
d
+
h
*
g
,
d
+
h
*
(
g
+
1
),
d
+
1
+
h
*
(
g
+
1
),
d
+
1
+
h
*
g
));
this
.
uvs
.
push
([
new
THREE
.
UV
(
d
/
b
,
g
/
c
),
new
THREE
.
UV
(
d
/
b
,(
g
+
1
)
/
c
),
new
THREE
.
UV
((
d
+
1
)
/
b
,(
g
+
1
)
/
c
),
new
THREE
.
UV
((
d
+
1
)
/
b
,
g
/
c
)])}
this
.
computeCentroids
();
this
.
computeFaceNormals
()};
var
Plane
=
function
(
a
,
d
,
b
,
c
){
THREE
.
Geometry
.
call
(
this
);
var
g
,
e
=
a
/
2
,
f
=
d
/
2
;
b
=
b
||
1
;
c
=
c
||
1
;
var
h
=
b
+
1
,
j
=
c
+
1
;
a
/=
b
;
var
l
=
d
/
c
;
for
(
g
=
0
;
g
<
j
;
g
++
)
for
(
d
=
0
;
d
<
h
;
d
++
)
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
d
*
a
-
e
,
-
(
g
*
l
-
f
),
0
)));
for
(
g
=
0
;
g
<
c
;
g
++
)
for
(
d
=
0
;
d
<
b
;
d
++
){
this
.
faces
.
push
(
new
THREE
.
Face4
(
d
+
h
*
g
,
d
+
h
*
(
g
+
1
),
d
+
1
+
h
*
(
g
+
1
),
d
+
1
+
h
*
g
));
this
.
uvs
.
push
([
new
THREE
.
UV
(
d
/
b
,
g
/
c
),
new
THREE
.
UV
(
d
/
b
,(
g
+
1
)
/
c
),
new
THREE
.
UV
((
d
+
1
)
/
b
,(
g
+
1
)
/
c
),
new
THREE
.
UV
((
d
+
1
)
/
b
,
g
/
c
)])}
this
.
computeCentroids
();
this
.
computeFaceNormals
()};
Plane
.
prototype
=
new
THREE
.
Geometry
;
Plane
.
prototype
.
constructor
=
Plane
;
Plane
.
prototype
=
new
THREE
.
Geometry
;
Plane
.
prototype
.
constructor
=
Plane
;
var
Sphere
=
function
(
a
,
d
,
b
){
THREE
.
Geometry
.
call
(
this
);
var
c
,
g
=
Math
.
PI
,
e
=
Math
.
max
(
3
,
d
||
8
),
f
=
Math
.
max
(
2
,
b
||
6
);
d
=
[];
for
(
b
=
0
;
b
<
f
+
1
;
b
++
){
c
=
b
/
f
;
var
h
=
a
*
Math
.
cos
(
c
*
g
),
j
=
a
*
Math
.
sin
(
c
*
g
),
l
=
[],
k
=
0
;
for
(
c
=
0
;
c
<
e
;
c
++
){
var
t
=
2
*
c
/
e
,
n
=
j
*
Math
.
sin
(
t
*
g
);
t
=
j
*
Math
.
cos
(
t
*
g
);(
b
==
0
||
b
==
f
)
&&
c
>
0
||
(
k
=
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
t
,
h
,
n
)))
-
1
);
l
.
push
(
k
)}
d
.
push
(
l
)}
var
m
,
p
,
u
;
g
=
d
.
length
;
for
(
b
=
0
;
b
<
g
;
b
++
){
e
=
d
[
b
].
length
;
if
(
b
>
0
)
for
(
c
=
0
;
c
<
e
;
c
++
){
l
=
c
==
e
-
1
;
f
=
d
[
b
][
l
?
0
:
c
+
1
];
h
=
d
[
b
][
l
?
e
-
1
:
c
];
j
=
d
[
b
-
1
][
l
?
e
-
1
:
c
];
l
=
d
[
b
-
1
][
l
?
var
Sphere
=
function
(
a
,
d
,
b
){
THREE
.
Geometry
.
call
(
this
);
var
c
,
g
=
Math
.
PI
,
e
=
Math
.
max
(
3
,
d
||
8
),
f
=
Math
.
max
(
2
,
b
||
6
);
d
=
[];
for
(
b
=
0
;
b
<
f
+
1
;
b
++
){
c
=
b
/
f
;
var
h
=
a
*
Math
.
cos
(
c
*
g
),
j
=
a
*
Math
.
sin
(
c
*
g
),
l
=
[],
k
=
0
;
for
(
c
=
0
;
c
<
e
;
c
++
){
var
t
=
2
*
c
/
e
,
n
=
j
*
Math
.
sin
(
t
*
g
);
t
=
j
*
Math
.
cos
(
t
*
g
);(
b
==
0
||
b
==
f
)
&&
c
>
0
||
(
k
=
this
.
vertices
.
push
(
new
THREE
.
Vertex
(
new
THREE
.
Vector3
(
t
,
h
,
n
)))
-
1
);
l
.
push
(
k
)}
d
.
push
(
l
)}
var
m
,
p
,
u
;
g
=
d
.
length
;
for
(
b
=
0
;
b
<
g
;
b
++
){
e
=
d
[
b
].
length
;
if
(
b
>
0
)
for
(
c
=
0
;
c
<
e
;
c
++
){
l
=
c
==
e
-
1
;
f
=
d
[
b
][
l
?
0
:
c
+
1
];
h
=
d
[
b
][
l
?
e
-
1
:
c
];
j
=
d
[
b
-
1
][
l
?
e
-
1
:
c
];
l
=
d
[
b
-
1
][
l
?
...
...
build/custom/ThreeSVG.js
浏览文件 @
a1a41e7f
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
...
@@ -48,7 +48,7 @@ d;a++)this.children[a].update(this.matrixWorld,b,c)}}};THREE.Quaternion=function
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
i
=
d
*
e
;
this
.
w
=
g
*
f
-
i
*
c
;
this
.
x
=
g
*
c
+
i
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
d
=
a
.
y
*
b
,
e
=
a
.
z
*
b
;
a
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
b
=
Math
.
cos
(
-
e
);
e
=
Math
.
sin
(
-
e
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
i
=
d
*
e
;
this
.
w
=
g
*
f
-
i
*
c
;
this
.
x
=
g
*
c
+
i
*
f
;
this
.
y
=
d
*
b
*
f
+
a
*
e
*
c
;
this
.
z
=
a
*
e
*
f
-
d
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
i
;
return
this
},
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
i
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
l
=
h
*
c
+
g
*
e
-
i
*
d
,
n
=
h
*
d
+
i
*
c
-
f
*
e
,
m
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
i
*
e
;
b
.
x
=
l
*
h
+
c
*-
f
+
n
*-
i
-
m
*-
g
;
b
.
y
=
n
*
h
+
c
*-
g
+
m
*-
f
-
l
*-
i
;
b
.
z
=
m
*
h
+
c
*-
i
+
l
*-
g
-
n
*-
f
;
return
b
}};
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
l
=
h
*
c
+
g
*
e
-
i
*
d
,
n
=
h
*
d
+
i
*
c
-
f
*
e
,
m
=
h
*
e
+
f
*
d
-
g
*
c
;
c
=-
f
*
c
-
g
*
d
-
i
*
e
;
b
.
x
=
l
*
h
+
c
*-
f
+
n
*-
i
-
m
*-
g
;
b
.
y
=
n
*
h
+
c
*-
g
+
m
*-
f
-
l
*-
i
;
b
.
z
=
m
*
h
+
c
*-
i
+
l
*-
g
-
n
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
e
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
e
),
g
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
Math
.
abs
(
g
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
e
=
Math
.
sin
((
1
-
d
)
*
f
)
/
g
;
d
=
Math
.
sin
(
d
*
f
)
/
g
;
c
.
w
=
a
.
w
*
e
+
b
.
w
*
d
;
c
.
x
=
a
.
x
*
e
+
b
.
x
*
d
;
c
.
y
=
a
.
y
*
e
+
b
.
y
*
d
;
c
.
z
=
a
.
z
*
e
+
b
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
materials
=
e
instanceof
Array
?
e
:[
e
]};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
]};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
build/custom/ThreeWebGL.js
浏览文件 @
a1a41e7f
...
@@ -48,7 +48,7 @@ f;a++)this.children[a].update(this.matrixWorld,b,d)}}};THREE.Quaternion=function
...
@@ -48,7 +48,7 @@ f;a++)this.children[a].update(this.matrixWorld,b,d)}}};THREE.Quaternion=function
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
d
,
f
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
d
;
this
.
w
=
f
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
d
=
a
.
x
*
b
,
f
=
a
.
y
*
b
,
g
=
a
.
z
*
b
;
a
=
Math
.
cos
(
f
);
f
=
Math
.
sin
(
f
);
b
=
Math
.
cos
(
-
g
);
g
=
Math
.
sin
(
-
g
);
var
l
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
var
m
=
a
*
b
,
s
=
f
*
g
;
this
.
w
=
m
*
l
-
s
*
d
;
this
.
x
=
m
*
d
+
s
*
l
;
this
.
y
=
f
*
b
*
l
+
a
*
g
*
d
;
this
.
z
=
a
*
g
*
l
-
f
*
b
*
d
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
d
,
f
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
d
;
this
.
w
=
f
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
d
=
a
.
x
*
b
,
f
=
a
.
y
*
b
,
g
=
a
.
z
*
b
;
a
=
Math
.
cos
(
f
);
f
=
Math
.
sin
(
f
);
b
=
Math
.
cos
(
-
g
);
g
=
Math
.
sin
(
-
g
);
var
l
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
var
m
=
a
*
b
,
s
=
f
*
g
;
this
.
w
=
m
*
l
-
s
*
d
;
this
.
x
=
m
*
d
+
s
*
l
;
this
.
y
=
f
*
b
*
l
+
a
*
g
*
d
;
this
.
z
=
a
*
g
*
l
-
f
*
b
*
d
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
d
=
this
.
y
,
f
=
this
.
z
,
g
=
this
.
w
,
l
=
a
.
x
,
m
=
a
.
y
,
s
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
g
*
l
+
d
*
s
-
f
*
m
;
this
.
y
=
d
*
a
+
g
*
m
+
f
*
l
-
b
*
s
;
this
.
z
=
f
*
a
+
g
*
s
+
b
*
m
-
d
*
l
;
this
.
w
=
g
*
a
-
b
*
l
-
d
*
m
-
f
*
s
;
return
this
},
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
d
=
this
.
y
,
f
=
this
.
z
,
g
=
this
.
w
,
l
=
a
.
x
,
m
=
a
.
y
,
s
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
g
*
l
+
d
*
s
-
f
*
m
;
this
.
y
=
d
*
a
+
g
*
m
+
f
*
l
-
b
*
s
;
this
.
z
=
f
*
a
+
g
*
s
+
b
*
m
-
d
*
l
;
this
.
w
=
g
*
a
-
b
*
l
-
d
*
m
-
f
*
s
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
d
=
a
.
x
,
f
=
a
.
y
,
g
=
a
.
z
,
l
=
this
.
x
,
m
=
this
.
y
,
s
=
this
.
z
,
o
=
this
.
w
,
v
=
o
*
d
+
m
*
g
-
s
*
f
,
B
=
o
*
f
+
s
*
d
-
l
*
g
,
A
=
o
*
g
+
l
*
f
-
m
*
d
;
d
=-
l
*
d
-
m
*
f
-
s
*
g
;
b
.
x
=
v
*
o
+
d
*-
l
+
B
*-
s
-
A
*-
m
;
b
.
y
=
B
*
o
+
d
*-
m
+
A
*-
l
-
v
*-
s
;
b
.
z
=
A
*
o
+
d
*-
s
+
v
*-
m
-
B
*-
l
;
return
b
}};
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
d
=
a
.
x
,
f
=
a
.
y
,
g
=
a
.
z
,
l
=
this
.
x
,
m
=
this
.
y
,
s
=
this
.
z
,
o
=
this
.
w
,
v
=
o
*
d
+
m
*
g
-
s
*
f
,
B
=
o
*
f
+
s
*
d
-
l
*
g
,
A
=
o
*
g
+
l
*
f
-
m
*
d
;
d
=-
l
*
d
-
m
*
f
-
s
*
g
;
b
.
x
=
v
*
o
+
d
*-
l
+
B
*-
s
-
A
*-
m
;
b
.
y
=
B
*
o
+
d
*-
m
+
A
*-
l
-
v
*-
s
;
b
.
z
=
A
*
o
+
d
*-
s
+
v
*-
m
-
B
*-
l
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
d
,
f
){
var
g
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
g
)
>=
1
){
d
.
w
=
a
.
w
;
d
.
x
=
a
.
x
;
d
.
y
=
a
.
y
;
d
.
z
=
a
.
z
;
return
d
}
var
l
=
Math
.
acos
(
g
),
m
=
Math
.
sqrt
(
1
-
g
*
g
);
if
(
Math
.
abs
(
m
)
<
0.001
0
){
d
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
d
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
d
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
d
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
d
}
g
=
Math
.
sin
((
1
-
f
)
*
l
)
/
m
;
f
=
Math
.
sin
(
f
*
l
)
/
m
;
d
.
w
=
a
.
w
*
g
+
b
.
w
*
f
;
d
.
x
=
a
.
x
*
g
+
b
.
x
*
f
;
d
.
y
=
a
.
y
*
g
+
b
.
y
*
f
;
d
.
z
=
a
.
z
*
g
+
b
.
z
*
f
;
return
d
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
d
,
f
){
var
g
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
g
)
>=
1
){
d
.
w
=
a
.
w
;
d
.
x
=
a
.
x
;
d
.
y
=
a
.
y
;
d
.
z
=
a
.
z
;
return
d
}
var
l
=
Math
.
acos
(
g
),
m
=
Math
.
sqrt
(
1
-
g
*
g
);
if
(
Math
.
abs
(
m
)
<
0.001
){
d
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
d
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
d
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
d
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
d
}
g
=
Math
.
sin
((
1
-
f
)
*
l
)
/
m
;
f
=
Math
.
sin
(
f
*
l
)
/
m
;
d
.
w
=
a
.
w
*
g
+
b
.
w
*
f
;
d
.
x
=
a
.
x
*
g
+
b
.
x
*
f
;
d
.
y
=
a
.
y
*
g
+
b
.
y
*
f
;
d
.
z
=
a
.
z
*
g
+
b
.
z
*
f
;
return
d
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Vertex
=
function
(
a
,
b
){
this
.
position
=
a
||
new
THREE
.
Vector3
;
this
.
positionWorld
=
new
THREE
.
Vector3
;
this
.
positionScreen
=
new
THREE
.
Vector4
;
this
.
normal
=
b
||
new
THREE
.
Vector3
;
this
.
normalWorld
=
new
THREE
.
Vector3
;
this
.
normalScreen
=
new
THREE
.
Vector3
;
this
.
tangent
=
new
THREE
.
Vector4
;
this
.
__visible
=!
0
};
THREE
.
Face3
=
function
(
a
,
b
,
d
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
f
instanceof
THREE
.
Vector3
?
f
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
f
instanceof
Array
?
f
:[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
]};
THREE
.
Face4
=
function
(
a
,
b
,
d
,
f
,
g
,
l
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
d
;
this
.
d
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
g
instanceof
THREE
.
Vector3
?
g
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
g
instanceof
Array
?
g
:[];
this
.
materials
=
l
instanceof
Array
?
l
:[
l
]};
THREE
.
Face3
=
function
(
a
,
b
,
d
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
d
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
f
instanceof
THREE
.
Vector3
?
f
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
f
instanceof
Array
?
f
:[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
]};
THREE
.
Face4
=
function
(
a
,
b
,
d
,
f
,
g
,
l
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
d
;
this
.
d
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
;
this
.
normal
=
g
instanceof
THREE
.
Vector3
?
g
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
g
instanceof
Array
?
g
:[];
this
.
materials
=
l
instanceof
Array
?
l
:[
l
]};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
faces
=
[];
this
.
uvs
=
[];
this
.
uvs2
=
[];
this
.
colors
=
[];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录