Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
fe2d302a
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fe2d302a
编写于
1月 23, 2013
作者:
O
OpenShift guest
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'origin/dev' into documentation
上级
68fe0d9d
0a9132d8
变更
34
展开全部
隐藏空白更改
内联
并排
Showing
34 changed file
with
1854 addition
and
1249 deletion
+1854
-1249
build/three.js
build/three.js
+583
-383
build/three.min.js
build/three.min.js
+470
-469
docs/api/core/BufferGeometry.html
docs/api/core/BufferGeometry.html
+0
-5
src/Three.js
src/Three.js
+23
-1
src/core/Projector.js
src/core/Projector.js
+1
-1
src/core/Raycaster.js
src/core/Raycaster.js
+1
-1
src/extras/core/Shape.js
src/extras/core/Shape.js
+1
-1
src/extras/objects/ImmediateRenderObject.js
src/extras/objects/ImmediateRenderObject.js
+1
-1
src/extras/renderers/plugins/DepthPassPlugin.js
src/extras/renderers/plugins/DepthPassPlugin.js
+1
-1
src/extras/renderers/plugins/LensFlarePlugin.js
src/extras/renderers/plugins/LensFlarePlugin.js
+1
-1
src/extras/renderers/plugins/ShadowMapPlugin.js
src/extras/renderers/plugins/ShadowMapPlugin.js
+1
-1
src/extras/renderers/plugins/SpritePlugin.js
src/extras/renderers/plugins/SpritePlugin.js
+1
-1
src/math/Box2.js
src/math/Box2.js
+24
-16
src/math/Box3.js
src/math/Box3.js
+66
-47
src/math/Color.js
src/math/Color.js
+2
-5
src/math/Frustum.js
src/math/Frustum.js
+2
-2
src/math/Math.js
src/math/Math.js
+18
-9
src/math/Matrix3.js
src/math/Matrix3.js
+28
-20
src/math/Matrix4.js
src/math/Matrix4.js
+164
-134
src/math/Plane.js
src/math/Plane.js
+57
-41
src/math/Quaternion.js
src/math/Quaternion.js
+2
-4
src/math/Ray.js
src/math/Ray.js
+24
-17
src/math/Sphere.js
src/math/Sphere.js
+2
-4
src/math/Triangle.js
src/math/Triangle.js
+72
-51
src/math/Vector2.js
src/math/Vector2.js
+2
-4
src/math/Vector3.js
src/math/Vector3.js
+41
-15
src/math/Vector4.js
src/math/Vector4.js
+2
-4
src/renderers/CanvasRenderer.js
src/renderers/CanvasRenderer.js
+46
-0
test/unit/unittests_sources.html
test/unit/unittests_sources.html
+7
-7
utils/build.py
utils/build.py
+9
-3
utils/editors/sublimetext2/README.md
utils/editors/sublimetext2/README.md
+9
-0
utils/editors/sublimetext2/threejs.sublime-completions
utils/editors/sublimetext2/threejs.sublime-completions
+126
-0
utils/sublime.py
utils/sublime.py
+64
-0
utils/sublime.sh
utils/sublime.sh
+3
-0
未找到文件。
build/three.js
浏览文件 @
fe2d302a
此差异已折叠。
点击以展开。
build/three.min.js
浏览文件 @
fe2d302a
此差异已折叠。
点击以展开。
docs/api/core/BufferGeometry.html
浏览文件 @
fe2d302a
...
...
@@ -41,11 +41,6 @@
When set, it holds certain buffers in memory to have faster updates for this object. When unset, it deletes those buffers and saves memory.
</div>
<h3>
.[page:Array offsets]
</h3>
<div>
This Array should contain every offset at which the buffers should be rendered. This is important for indexed buffers.
</div>
<h3>
.[page:Array offsets]
</h3>
<div>
This Array should contain every offset at which the buffers should be rendered. This is important for indexed buffers.
...
...
src/Three.js
浏览文件 @
fe2d302a
...
...
@@ -3,7 +3,7 @@
* @author Larry Battle / http://bateru.com/news
*/
var
THREE
=
THREE
||
{
REVISION
:
'
5
5
'
};
var
THREE
=
THREE
||
{
REVISION
:
'
5
6dev
'
};
self
.
console
=
self
.
console
||
{
...
...
@@ -45,6 +45,28 @@ String.prototype.trim = String.prototype.trim || function () {
};
// based on http://stackoverflow.com/a/12317051
THREE
.
extend
=
function
(
target
,
other
)
{
target
=
target
||
{};
for
(
var
prop
in
other
)
{
if
(
typeof
other
[
prop
]
===
'
object
'
)
{
target
[
prop
]
=
THREE
.
extend
(
target
[
prop
],
other
[
prop
]
);
}
else
{
target
[
prop
]
=
other
[
prop
];
}
}
return
target
;
};
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
...
...
src/core/Projector.js
浏览文件 @
fe2d302a
...
...
@@ -4,7 +4,7 @@
* @author julianwa / https://github.com/julianwa
*/
THREE
.
Projector
=
function
()
{
THREE
.
Projector
=
function
()
{
var
_object
,
_objectCount
,
_objectPool
=
[],
_objectPoolLength
=
0
,
_vertex
,
_vertexCount
,
_vertexPool
=
[],
_vertexPoolLength
=
0
,
...
...
src/core/Raycaster.js
浏览文件 @
fe2d302a
...
...
@@ -8,7 +8,7 @@
THREE
.
Raycaster
=
function
(
origin
,
direction
,
near
,
far
)
{
this
.
ray
=
new
THREE
.
Ray
(
origin
,
direction
);
// normalized ray.direction required for accurate distance calculations
if
(
this
.
ray
.
direction
.
length
()
>
0
)
{
...
...
src/extras/core/Shape.js
浏览文件 @
fe2d302a
...
...
@@ -9,7 +9,7 @@
// STEP 3a - Extract points from each shape, turn to vertices
// STEP 3b - Triangulate each shape, add faces.
THREE
.
Shape
=
function
(
)
{
THREE
.
Shape
=
function
()
{
THREE
.
Path
.
apply
(
this
,
arguments
);
this
.
holes
=
[];
...
...
src/extras/objects/ImmediateRenderObject.js
浏览文件 @
fe2d302a
...
...
@@ -2,7 +2,7 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
ImmediateRenderObject
=
function
(
)
{
THREE
.
ImmediateRenderObject
=
function
()
{
THREE
.
Object3D
.
call
(
this
);
...
...
src/extras/renderers/plugins/DepthPassPlugin.js
浏览文件 @
fe2d302a
...
...
@@ -2,7 +2,7 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
DepthPassPlugin
=
function
(
)
{
THREE
.
DepthPassPlugin
=
function
()
{
this
.
enabled
=
false
;
this
.
renderTarget
=
null
;
...
...
src/extras/renderers/plugins/LensFlarePlugin.js
浏览文件 @
fe2d302a
...
...
@@ -3,7 +3,7 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
LensFlarePlugin
=
function
(
)
{
THREE
.
LensFlarePlugin
=
function
()
{
var
_gl
,
_renderer
,
_precision
,
_lensFlare
=
{};
...
...
src/extras/renderers/plugins/ShadowMapPlugin.js
浏览文件 @
fe2d302a
...
...
@@ -2,7 +2,7 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
ShadowMapPlugin
=
function
(
)
{
THREE
.
ShadowMapPlugin
=
function
()
{
var
_gl
,
_renderer
,
...
...
src/extras/renderers/plugins/SpritePlugin.js
浏览文件 @
fe2d302a
...
...
@@ -3,7 +3,7 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
SpritePlugin
=
function
(
)
{
THREE
.
SpritePlugin
=
function
()
{
var
_gl
,
_renderer
,
_precision
,
_sprite
=
{};
...
...
src/math/Box2.js
浏览文件 @
fe2d302a
...
...
@@ -9,9 +9,7 @@ THREE.Box2 = function ( min, max ) {
};
THREE
.
Box2
.
prototype
=
{
constructor
:
THREE
.
Box2
,
THREE
.
extend
(
THREE
.
Box2
.
prototype
,
{
set
:
function
(
min
,
max
)
{
...
...
@@ -67,15 +65,21 @@ THREE.Box2.prototype = {
},
setFromCenterAndSize
:
function
(
center
,
size
)
{
setFromCenterAndSize
:
function
(
)
{
var
halfSize
=
THREE
.
Box2
.
__v1
.
copy
(
size
).
multiplyScalar
(
0.5
);
this
.
min
.
copy
(
center
).
sub
(
halfSize
);
this
.
max
.
copy
(
center
).
add
(
halfSize
);
var
v1
=
new
THREE
.
Vector2
();
return
this
;
return
function
(
center
,
size
)
{
},
var
halfSize
=
v1
.
copy
(
size
).
multiplyScalar
(
0.5
);
this
.
min
.
copy
(
center
).
sub
(
halfSize
);
this
.
max
.
copy
(
center
).
add
(
halfSize
);
return
this
;
};
}(),
copy
:
function
(
box
)
{
...
...
@@ -201,12 +205,18 @@ THREE.Box2.prototype = {
},
distanceToPoint
:
function
(
point
)
{
distanceToPoint
:
function
(
)
{
var
clampedPoint
=
THREE
.
Box2
.
__v1
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
return
clampedPoint
.
sub
(
point
).
length
();
var
v1
=
new
THREE
.
Vector2
();
},
return
function
(
point
)
{
var
clampedPoint
=
v1
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
return
clampedPoint
.
sub
(
point
).
length
();
};
}(),
intersect
:
function
(
box
)
{
...
...
@@ -247,6 +257,4 @@ THREE.Box2.prototype = {
}
};
THREE
.
Box2
.
__v1
=
new
THREE
.
Vector2
();
}
);
src/math/Box3.js
浏览文件 @
fe2d302a
...
...
@@ -9,9 +9,7 @@ THREE.Box3 = function ( min, max ) {
};
THREE
.
Box3
.
prototype
=
{
constructor
:
THREE
.
Box3
,
THREE
.
extend
(
THREE
.
Box3
.
prototype
,
{
set
:
function
(
min
,
max
)
{
...
...
@@ -77,16 +75,22 @@ THREE.Box3.prototype = {
},
setFromCenterAndSize
:
function
(
center
,
size
)
{
setFromCenterAndSize
:
function
(
)
{
var
halfSize
=
THREE
.
Box3
.
__v1
.
copy
(
size
).
multiplyScalar
(
0.5
);
var
v1
=
new
THREE
.
Vector3
(
);
this
.
min
.
copy
(
center
).
sub
(
halfSize
);
this
.
max
.
copy
(
center
).
add
(
halfSize
);
return
function
(
center
,
size
)
{
return
this
;
var
halfSize
=
v1
.
copy
(
size
).
multiplyScalar
(
0.5
)
;
},
this
.
min
.
copy
(
center
).
sub
(
halfSize
);
this
.
max
.
copy
(
center
).
add
(
halfSize
);
return
this
;
};
}(),
copy
:
function
(
box
)
{
...
...
@@ -215,27 +219,39 @@ THREE.Box3.prototype = {
clampPoint
:
function
(
point
,
optionalTarget
)
{
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
return
new
THREE
.
Vector3
()
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
return
result
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
},
distanceToPoint
:
function
(
point
)
{
distanceToPoint
:
function
(
)
{
var
clampedPoint
=
THREE
.
Box3
.
__v1
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
return
clampedPoint
.
sub
(
point
).
length
();
var
v1
=
new
THREE
.
Vector3
();
},
return
function
(
point
)
{
getBoundingSphere
:
function
(
optionalTarget
)
{
var
clampedPoint
=
v1
.
copy
(
point
).
clamp
(
this
.
min
,
this
.
max
);
return
clampedPoint
.
sub
(
point
).
length
();
var
result
=
optionalTarget
||
new
THREE
.
Sphere
()
;
}
;
result
.
center
=
this
.
center
();
result
.
radius
=
this
.
size
(
THREE
.
Box3
.
__v0
).
length
()
*
0.5
;
}(),
return
result
;
getBoundingSphere
:
function
()
{
},
var
v1
=
new
THREE
.
Vector3
();
return
function
(
optionalTarget
)
{
var
result
=
optionalTarget
||
new
THREE
.
Sphere
();
result
.
center
=
this
.
center
();
result
.
radius
=
this
.
size
(
v1
).
length
()
*
0.5
;
return
result
;
};
}(),
intersect
:
function
(
box
)
{
...
...
@@ -255,27 +271,39 @@ THREE.Box3.prototype = {
},
transform
:
function
(
matrix
)
{
transform
:
function
()
{
var
points
=
[
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
(),
new
THREE
.
Vector3
()
];
return
function
(
matrix
)
{
// NOTE: I am using a binary pattern to specify all 2^3 combinations below
points
[
0
].
set
(
this
.
min
.
x
,
this
.
min
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
);
// 000
points
[
1
].
set
(
this
.
min
.
x
,
this
.
min
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
);
// 001
points
[
2
].
set
(
this
.
min
.
x
,
this
.
max
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
);
// 010
points
[
3
].
set
(
this
.
min
.
x
,
this
.
max
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
);
// 011
points
[
4
].
set
(
this
.
max
.
x
,
this
.
min
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
);
// 100
points
[
5
].
set
(
this
.
max
.
x
,
this
.
min
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
);
// 101
points
[
6
].
set
(
this
.
max
.
x
,
this
.
max
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
);
// 110
points
[
7
].
set
(
this
.
max
.
x
,
this
.
max
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
);
// 111
// NOTE: I am using a binary pattern to specify all 2^3 combinations below
var
newPoints
=
[
THREE
.
Box3
.
__v0
.
set
(
this
.
min
.
x
,
this
.
min
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
),
THREE
.
Box3
.
__v0
.
set
(
this
.
min
.
x
,
this
.
min
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
),
// 000
THREE
.
Box3
.
__v1
.
set
(
this
.
min
.
x
,
this
.
min
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
),
// 001
THREE
.
Box3
.
__v2
.
set
(
this
.
min
.
x
,
this
.
max
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
),
// 010
THREE
.
Box3
.
__v3
.
set
(
this
.
min
.
x
,
this
.
max
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
),
// 011
THREE
.
Box3
.
__v4
.
set
(
this
.
max
.
x
,
this
.
min
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
),
// 100
THREE
.
Box3
.
__v5
.
set
(
this
.
max
.
x
,
this
.
min
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
),
// 101
THREE
.
Box3
.
__v6
.
set
(
this
.
max
.
x
,
this
.
max
.
y
,
this
.
min
.
z
).
applyMatrix4
(
matrix
),
// 110
THREE
.
Box3
.
__v7
.
set
(
this
.
max
.
x
,
this
.
max
.
y
,
this
.
max
.
z
).
applyMatrix4
(
matrix
)
// 111
];
this
.
makeEmpty
();
this
.
setFromPoints
(
points
);
this
.
makeEmpty
();
this
.
setFromPoints
(
newPoints
);
return
this
;
return
this
;
}
;
},
}
()
,
translate
:
function
(
offset
)
{
...
...
@@ -298,13 +326,4 @@ THREE.Box3.prototype = {
}
};
THREE
.
Box3
.
__v0
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v1
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v2
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v3
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v4
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v5
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v6
=
new
THREE
.
Vector3
();
THREE
.
Box3
.
__v7
=
new
THREE
.
Vector3
();
}
);
src/math/Color.js
浏览文件 @
fe2d302a
...
...
@@ -10,13 +10,10 @@ THREE.Color = function ( value ) {
};
THREE
.
Color
.
prototype
=
{
constructor
:
THREE
.
Color
,
THREE
.
extend
(
THREE
.
Color
.
prototype
,
{
r
:
1
,
g
:
1
,
b
:
1
,
set
:
function
(
value
)
{
switch
(
typeof
value
)
{
...
...
@@ -390,7 +387,7 @@ THREE.Color.prototype = {
}
};
}
)
;
THREE
.
ColorKeywords
=
{
"
aliceblue
"
:
0xF0F8FF
,
"
antiquewhite
"
:
0xFAEBD7
,
"
aqua
"
:
0x00FFFF
,
"
aquamarine
"
:
0x7FFFD4
,
"
azure
"
:
0xF0FFFF
,
"
beige
"
:
0xF5F5DC
,
"
bisque
"
:
0xFFE4C4
,
"
black
"
:
0x000000
,
"
blanchedalmond
"
:
0xFFEBCD
,
"
blue
"
:
0x0000FF
,
"
blueviolet
"
:
0x8A2BE2
,
...
...
src/math/Frustum.js
浏览文件 @
fe2d302a
...
...
@@ -19,7 +19,7 @@ THREE.Frustum = function ( p0, p1, p2, p3, p4, p5 ) {
};
THREE
.
Frustum
.
prototype
=
{
THREE
.
extend
(
THREE
.
Frustum
.
prototype
,
{
set
:
function
(
p0
,
p1
,
p2
,
p3
,
p4
,
p5
)
{
...
...
@@ -140,4 +140,4 @@ THREE.Frustum.prototype = {
}
};
}
)
;
\ No newline at end of file
src/math/Math.js
浏览文件 @
fe2d302a
...
...
@@ -67,19 +67,28 @@ THREE.Math = {
},
degToRad
:
function
(
degrees
)
{
degToRad
:
function
(
)
{
return
degrees
*
THREE
.
Math
.
__d2r
;
var
degreeToRadiansFactor
=
Math
.
PI
/
180
;
},
return
function
(
degrees
)
{
radToDeg
:
function
(
radians
)
{
return
degrees
*
degreeToRadiansFactor
;
return
radians
*
THREE
.
Math
.
__r2d
;
}
;
}
}
(),
};
radToDeg
:
function
()
{
var
radianToDegreesFactor
=
180
/
Math
.
PI
;
return
function
(
radians
)
{
THREE
.
Math
.
__d2r
=
Math
.
PI
/
180
;
THREE
.
Math
.
__r2d
=
180
/
Math
.
PI
;
return
radians
*
radianToDegreesFactor
;
};
}()
};
src/math/Matrix3.js
浏览文件 @
fe2d302a
...
...
@@ -17,9 +17,7 @@ THREE.Matrix3 = function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
);
};
THREE
.
Matrix3
.
prototype
=
{
constructor
:
THREE
.
Matrix3
,
THREE
.
extend
(
THREE
.
Matrix3
.
prototype
,
{
set
:
function
(
n11
,
n12
,
n13
,
n21
,
n22
,
n23
,
n31
,
n32
,
n33
)
{
...
...
@@ -70,27 +68,31 @@ THREE.Matrix3.prototype = {
},
multiplyVector3Array
:
function
(
a
)
{
multiplyVector3Array
:
function
(
)
{
var
tmp
=
THREE
.
Matrix3
.
__v1
;
var
v1
=
new
THREE
.
Vector3
()
;
for
(
var
i
=
0
,
il
=
a
.
length
;
i
<
il
;
i
+=
3
)
{
return
function
(
a
)
{
tmp
.
x
=
a
[
i
];
tmp
.
y
=
a
[
i
+
1
];
tmp
.
z
=
a
[
i
+
2
];
for
(
var
i
=
0
,
il
=
a
.
length
;
i
<
il
;
i
+=
3
)
{
tmp
.
applyMatrix3
(
this
);
v1
.
x
=
a
[
i
];
v1
.
y
=
a
[
i
+
1
];
v1
.
z
=
a
[
i
+
2
];
a
[
i
]
=
tmp
.
x
;
a
[
i
+
1
]
=
tmp
.
y
;
a
[
i
+
2
]
=
tmp
.
z
;
v1
.
applyMatrix3
(
this
);
}
a
[
i
]
=
v1
.
x
;
a
[
i
+
1
]
=
v1
.
y
;
a
[
i
+
2
]
=
v1
.
z
;
return
a
;
}
},
return
a
;
};
}(),
multiplyScalar
:
function
(
s
)
{
...
...
@@ -164,7 +166,6 @@ THREE.Matrix3.prototype = {
},
transpose
:
function
()
{
var
tmp
,
m
=
this
.
elements
;
...
...
@@ -177,6 +178,15 @@ THREE.Matrix3.prototype = {
},
getNormalMatrix
:
function
(
m
)
{
// input: THREE.Matrix4
this
.
getInverse
(
m
).
transpose
();
return
this
;
},
transposeIntoArray
:
function
(
r
)
{
...
...
@@ -210,6 +220,4 @@ THREE.Matrix3.prototype = {
}
};
THREE
.
Matrix3
.
__v1
=
new
THREE
.
Vector3
();
}
);
src/math/Matrix4.js
浏览文件 @
fe2d302a
...
...
@@ -13,22 +13,19 @@
THREE
.
Matrix4
=
function
(
n11
,
n12
,
n13
,
n14
,
n21
,
n22
,
n23
,
n24
,
n31
,
n32
,
n33
,
n34
,
n41
,
n42
,
n43
,
n44
)
{
this
.
elements
=
new
Float32Array
(
16
);
var
te
=
this
.
elements
=
new
Float32Array
(
16
);
this
.
set
(
// TODO: if n11 is undefined, then just set to identity, otherwise copy all other values into matrix
// we should not support semi specification of Matrix4, it is just weird.
(
n11
!==
undefined
)
?
n11
:
1
,
n12
||
0
,
n13
||
0
,
n14
||
0
,
n21
||
0
,
(
n22
!==
undefined
)
?
n22
:
1
,
n23
||
0
,
n24
||
0
,
n31
||
0
,
n32
||
0
,
(
n33
!==
undefined
)
?
n33
:
1
,
n34
||
0
,
n41
||
0
,
n42
||
0
,
n43
||
0
,
(
n44
!==
undefined
)
?
n44
:
1
);
te
[
0
]
=
(
n11
!==
undefined
)
?
n11
:
1
;
te
[
4
]
=
n12
||
0
;
te
[
8
]
=
n13
||
0
;
te
[
12
]
=
n14
||
0
;
te
[
1
]
=
n21
||
0
;
te
[
5
]
=
(
n22
!==
undefined
)
?
n22
:
1
;
te
[
9
]
=
n23
||
0
;
te
[
13
]
=
n24
||
0
;
te
[
2
]
=
n31
||
0
;
te
[
6
]
=
n32
||
0
;
te
[
10
]
=
(
n33
!==
undefined
)
?
n33
:
1
;
te
[
14
]
=
n34
||
0
;
te
[
3
]
=
n41
||
0
;
te
[
7
]
=
n42
||
0
;
te
[
11
]
=
n43
||
0
;
te
[
15
]
=
(
n44
!==
undefined
)
?
n44
:
1
;
};
THREE
.
Matrix4
.
prototype
=
{
constructor
:
THREE
.
Matrix4
,
THREE
.
extend
(
THREE
.
Matrix4
.
prototype
,
{
set
:
function
(
n11
,
n12
,
n13
,
n14
,
n21
,
n22
,
n23
,
n24
,
n31
,
n32
,
n33
,
n34
,
n41
,
n42
,
n43
,
n44
)
{
...
...
@@ -212,41 +209,45 @@ THREE.Matrix4.prototype = {
},
lookAt
:
function
(
eye
,
target
,
up
)
{
var
te
=
this
.
elements
;
lookAt
:
function
()
{
var
x
=
THREE
.
Matrix4
.
__v1
;
var
y
=
THREE
.
Matrix4
.
__v2
;
var
z
=
THREE
.
Matrix4
.
__v3
;
var
x
=
new
THREE
.
Vector3
()
;
var
y
=
new
THREE
.
Vector3
()
;
var
z
=
new
THREE
.
Vector3
()
;
z
.
subVectors
(
eye
,
target
).
normalize
();
return
function
(
eye
,
target
,
up
)
{
if
(
z
.
length
()
===
0
)
{
var
te
=
this
.
elements
;
z
.
z
=
1
;
z
.
subVectors
(
eye
,
target
).
normalize
()
;
}
if
(
z
.
length
()
===
0
)
{
x
.
crossVectors
(
up
,
z
).
normalize
()
;
z
.
z
=
1
;
if
(
x
.
length
()
===
0
)
{
}
z
.
x
+=
0.0001
;
x
.
crossVectors
(
up
,
z
).
normalize
();
}
if
(
x
.
length
()
===
0
)
{
y
.
crossVectors
(
z
,
x
);
z
.
x
+=
0.0001
;
x
.
crossVectors
(
up
,
z
).
normalize
();
}
te
[
0
]
=
x
.
x
;
te
[
4
]
=
y
.
x
;
te
[
8
]
=
z
.
x
;
te
[
1
]
=
x
.
y
;
te
[
5
]
=
y
.
y
;
te
[
9
]
=
z
.
y
;
te
[
2
]
=
x
.
z
;
te
[
6
]
=
y
.
z
;
te
[
10
]
=
z
.
z
;
y
.
crossVectors
(
z
,
x
);
return
this
;
},
te
[
0
]
=
x
.
x
;
te
[
4
]
=
y
.
x
;
te
[
8
]
=
z
.
x
;
te
[
1
]
=
x
.
y
;
te
[
5
]
=
y
.
y
;
te
[
9
]
=
z
.
y
;
te
[
2
]
=
x
.
z
;
te
[
6
]
=
y
.
z
;
te
[
10
]
=
z
.
z
;
return
this
;
};
}(),
multiply
:
function
(
m
,
n
)
{
...
...
@@ -343,27 +344,31 @@ THREE.Matrix4.prototype = {
},
multiplyVector3Array
:
function
(
a
)
{
multiplyVector3Array
:
function
(
)
{
var
tmp
=
THREE
.
Matrix4
.
__v1
;
var
v1
=
new
THREE
.
Vector3
()
;
for
(
var
i
=
0
,
il
=
a
.
length
;
i
<
il
;
i
+=
3
)
{
return
function
(
a
)
{
tmp
.
x
=
a
[
i
];
tmp
.
y
=
a
[
i
+
1
];
tmp
.
z
=
a
[
i
+
2
];
for
(
var
i
=
0
,
il
=
a
.
length
;
i
<
il
;
i
+=
3
)
{
tmp
.
applyProjection
(
this
);
v1
.
x
=
a
[
i
];
v1
.
y
=
a
[
i
+
1
];
v1
.
z
=
a
[
i
+
2
];
a
[
i
]
=
tmp
.
x
;
a
[
i
+
1
]
=
tmp
.
y
;
a
[
i
+
2
]
=
tmp
.
z
;
v1
.
applyProjection
(
this
);
}
a
[
i
]
=
v1
.
x
;
a
[
i
+
1
]
=
v1
.
y
;
a
[
i
+
2
]
=
v1
.
z
;
return
a
;
}
},
return
a
;
};
}(),
rotateAxis
:
function
(
v
)
{
...
...
@@ -501,12 +506,18 @@ THREE.Matrix4.prototype = {
},
getPosition
:
function
()
{
getPosition
:
function
()
{
var
te
=
this
.
elements
;
return
THREE
.
Matrix4
.
__v1
.
set
(
te
[
12
],
te
[
13
],
te
[
14
]
);
var
v1
=
new
THREE
.
Vector3
();
},
return
function
()
{
var
te
=
this
.
elements
;
return
v1
.
set
(
te
[
12
],
te
[
13
],
te
[
14
]
);
};
}(),
setPosition
:
function
(
v
)
{
...
...
@@ -520,26 +531,44 @@ THREE.Matrix4.prototype = {
},
getColumnX
:
function
()
{
getColumnX
:
function
()
{
var
te
=
this
.
elements
;
return
THREE
.
Matrix4
.
__v1
.
set
(
te
[
0
],
te
[
1
],
te
[
2
]
);
var
v1
=
new
THREE
.
Vector3
();
},
return
function
()
{
getColumnY
:
function
()
{
var
te
=
this
.
elements
;
return
v1
.
set
(
te
[
0
],
te
[
1
],
te
[
2
]
);
var
te
=
this
.
elements
;
return
THREE
.
Matrix4
.
__v1
.
set
(
te
[
4
],
te
[
5
],
te
[
6
]
);
};
},
}(),
getColumnY
:
function
()
{
var
v1
=
new
THREE
.
Vector3
();
return
function
()
{
var
te
=
this
.
elements
;
return
v1
.
set
(
te
[
4
],
te
[
5
],
te
[
6
]
);
};
}(),
getColumnZ
:
function
()
{
var
te
=
this
.
elements
;
return
THREE
.
Matrix4
.
__v1
.
set
(
te
[
8
],
te
[
9
],
te
[
10
]
);
var
v1
=
new
THREE
.
Vector3
();
},
return
function
()
{
var
te
=
this
.
elements
;
return
v1
.
set
(
te
[
8
],
te
[
9
],
te
[
10
]
);
};
}(),
getInverse
:
function
(
m
,
throwOnInvertible
)
{
...
...
@@ -596,75 +625,83 @@ THREE.Matrix4.prototype = {
},
compose
:
function
(
translation
,
rotation
,
scale
)
{
compose
:
function
(
)
{
var
te
=
this
.
elements
;
var
mRotation
=
THREE
.
Matrix4
.
__m1
;
var
mScale
=
THREE
.
Matrix4
.
__m2
;
var
mRotation
=
new
THREE
.
Matrix4
(),
mScale
=
new
THREE
.
Matrix4
();
return
function
(
translation
,
rotation
,
scale
)
{
mRotation
.
identity
();
mRotation
.
setRotationFromQuaternion
(
rotation
);
var
te
=
this
.
elements
;
mScale
.
makeScale
(
scale
.
x
,
scale
.
y
,
scale
.
z
);
mRotation
.
identity
();
mRotation
.
setRotationFromQuaternion
(
rotation
);
this
.
multiplyMatrices
(
mRotation
,
mScale
);
mScale
.
makeScale
(
scale
.
x
,
scale
.
y
,
scale
.
z
);
te
[
12
]
=
translation
.
x
;
te
[
13
]
=
translation
.
y
;
te
[
14
]
=
translation
.
z
;
this
.
multiplyMatrices
(
mRotation
,
mScale
);
return
this
;
te
[
12
]
=
translation
.
x
;
te
[
13
]
=
translation
.
y
;
te
[
14
]
=
translation
.
z
;
},
return
this
;
decompose
:
function
(
translation
,
rotation
,
scale
)
{
};
var
te
=
this
.
elements
;
}(),
// grab the axis vectors
var
x
=
THREE
.
Matrix4
.
__v1
;
var
y
=
THREE
.
Matrix4
.
__v2
;
var
z
=
THREE
.
Matrix4
.
__v3
;
decompose
:
function
()
{
x
.
set
(
te
[
0
],
te
[
1
],
te
[
2
]
);
y
.
set
(
te
[
4
],
te
[
5
],
te
[
6
]
);
z
.
set
(
te
[
8
],
te
[
9
],
te
[
10
]
);
var
x
=
new
THREE
.
Vector3
(),
y
=
new
THREE
.
Vector3
(),
z
=
new
THREE
.
Vector3
(),
matrix
=
new
THREE
.
Matrix4
();
translation
=
(
translation
instanceof
THREE
.
Vector3
)
?
translation
:
new
THREE
.
Vector3
();
rotation
=
(
rotation
instanceof
THREE
.
Quaternion
)
?
rotation
:
new
THREE
.
Quaternion
();
scale
=
(
scale
instanceof
THREE
.
Vector3
)
?
scale
:
new
THREE
.
Vector3
();
return
function
(
translation
,
rotation
,
scale
)
{
scale
.
x
=
x
.
length
();
scale
.
y
=
y
.
length
();
scale
.
z
=
z
.
length
();
var
te
=
this
.
elements
;
translation
.
x
=
te
[
12
];
translation
.
y
=
te
[
13
];
translation
.
z
=
te
[
14
];
// grab the axis vectors
x
.
set
(
te
[
0
],
te
[
1
],
te
[
2
]
);
y
.
set
(
te
[
4
],
te
[
5
],
te
[
6
]
);
z
.
set
(
te
[
8
],
te
[
9
],
te
[
10
]
);
// scale the rotation part
translation
=
(
translation
instanceof
THREE
.
Vector3
)
?
translation
:
new
THREE
.
Vector3
();
rotation
=
(
rotation
instanceof
THREE
.
Quaternion
)
?
rotation
:
new
THREE
.
Quaternion
();
scale
=
(
scale
instanceof
THREE
.
Vector3
)
?
scale
:
new
THREE
.
Vector3
();
var
matrix
=
THREE
.
Matrix4
.
__m1
;
scale
.
x
=
x
.
length
();
scale
.
y
=
y
.
length
();
scale
.
z
=
z
.
length
();
matrix
.
copy
(
this
);
translation
.
x
=
te
[
12
];
translation
.
y
=
te
[
13
];
translation
.
z
=
te
[
14
];
matrix
.
elements
[
0
]
/=
scale
.
x
;
matrix
.
elements
[
1
]
/=
scale
.
x
;
matrix
.
elements
[
2
]
/=
scale
.
x
;
// scale the rotation part
matrix
.
elements
[
4
]
/=
scale
.
y
;
matrix
.
elements
[
5
]
/=
scale
.
y
;
matrix
.
elements
[
6
]
/=
scale
.
y
;
matrix
.
copy
(
this
);
matrix
.
elements
[
8
]
/=
scale
.
z
;
matrix
.
elements
[
9
]
/=
scale
.
z
;
matrix
.
elements
[
10
]
/=
scale
.
z
;
matrix
.
elements
[
0
]
/=
scale
.
x
;
matrix
.
elements
[
1
]
/=
scale
.
x
;
matrix
.
elements
[
2
]
/=
scale
.
x
;
rotation
.
setFromRotationMatrix
(
matrix
);
matrix
.
elements
[
4
]
/=
scale
.
y
;
matrix
.
elements
[
5
]
/=
scale
.
y
;
matrix
.
elements
[
6
]
/=
scale
.
y
;
return
[
translation
,
rotation
,
scale
];
matrix
.
elements
[
8
]
/=
scale
.
z
;
matrix
.
elements
[
9
]
/=
scale
.
z
;
matrix
.
elements
[
10
]
/=
scale
.
z
;
},
rotation
.
setFromRotationMatrix
(
matrix
);
return
[
translation
,
rotation
,
scale
];
};
}(),
extractPosition
:
function
(
m
)
{
...
...
@@ -679,34 +716,36 @@ THREE.Matrix4.prototype = {
},
extractRotation
:
function
(
m
)
{
extractRotation
:
function
(
)
{
var
te
=
this
.
elements
;
var
me
=
m
.
elements
;
var
v1
=
new
THREE
.
Vector3
();
var
vector
=
THREE
.
Matrix4
.
__v1
;
return
function
(
m
)
{
var
scaleX
=
1
/
vector
.
set
(
me
[
0
],
me
[
1
],
me
[
2
]
).
length
();
var
scaleY
=
1
/
vector
.
set
(
me
[
4
],
me
[
5
],
me
[
6
]
).
length
();
var
scaleZ
=
1
/
vector
.
set
(
me
[
8
],
me
[
9
],
me
[
10
]
).
length
();
var
te
=
this
.
elements
;
var
me
=
m
.
elements
;
te
[
0
]
=
me
[
0
]
*
scaleX
;
te
[
1
]
=
me
[
1
]
*
scaleX
;
te
[
2
]
=
me
[
2
]
*
scaleX
;
var
scaleX
=
1
/
v1
.
set
(
me
[
0
],
me
[
1
],
me
[
2
]
).
length
()
;
var
scaleY
=
1
/
v1
.
set
(
me
[
4
],
me
[
5
],
me
[
6
]
).
length
()
;
var
scaleZ
=
1
/
v1
.
set
(
me
[
8
],
me
[
9
],
me
[
10
]
).
length
()
;
te
[
4
]
=
me
[
4
]
*
scaleY
;
te
[
5
]
=
me
[
5
]
*
scaleY
;
te
[
6
]
=
me
[
6
]
*
scaleY
;
te
[
0
]
=
me
[
0
]
*
scaleX
;
te
[
1
]
=
me
[
1
]
*
scaleX
;
te
[
2
]
=
me
[
2
]
*
scaleX
;
te
[
8
]
=
me
[
8
]
*
scaleZ
;
te
[
9
]
=
me
[
9
]
*
scaleZ
;
te
[
10
]
=
me
[
10
]
*
scaleZ
;
te
[
4
]
=
me
[
4
]
*
scaleY
;
te
[
5
]
=
me
[
5
]
*
scaleY
;
te
[
6
]
=
me
[
6
]
*
scaleY
;
return
this
;
te
[
8
]
=
me
[
8
]
*
scaleZ
;
te
[
9
]
=
me
[
9
]
*
scaleZ
;
te
[
10
]
=
me
[
10
]
*
scaleZ
;
},
return
this
;
//
};
}(),
translate
:
function
(
v
)
{
...
...
@@ -904,8 +943,6 @@ THREE.Matrix4.prototype = {
},
//
makeTranslation
:
function
(
x
,
y
,
z
)
{
this
.
set
(
...
...
@@ -1076,11 +1113,4 @@ THREE.Matrix4.prototype = {
}
};
THREE
.
Matrix4
.
__v1
=
new
THREE
.
Vector3
();
THREE
.
Matrix4
.
__v2
=
new
THREE
.
Vector3
();
THREE
.
Matrix4
.
__v3
=
new
THREE
.
Vector3
();
THREE
.
Matrix4
.
__m1
=
new
THREE
.
Matrix4
();
THREE
.
Matrix4
.
__m2
=
new
THREE
.
Matrix4
();
}
);
src/math/Plane.js
浏览文件 @
fe2d302a
...
...
@@ -9,9 +9,7 @@ THREE.Plane = function ( normal, constant ) {
};
THREE
.
Plane
.
prototype
=
{
constructor
:
THREE
.
Plane
,
THREE
.
extend
(
THREE
.
Plane
.
prototype
,
{
set
:
function
(
normal
,
constant
)
{
...
...
@@ -40,17 +38,25 @@ THREE.Plane.prototype = {
},
setFromCoplanarPoints
:
function
(
a
,
b
,
c
)
{
setFromCoplanarPoints
:
function
(
)
{
var
normal
=
THREE
.
Plane
.
__v1
.
subVectors
(
c
,
b
).
cross
(
THREE
.
Plane
.
__v2
.
subVectors
(
a
,
b
)
).
normalize
();
var
v1
=
new
THREE
.
Vector3
();
var
v2
=
new
THREE
.
Vector3
();
// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?
return
function
(
a
,
b
,
c
)
{
this
.
setFromNormalAndCoplanarPoint
(
normal
,
a
);
var
normal
=
v1
.
subVectors
(
c
,
b
).
cross
(
v2
.
subVectors
(
a
,
b
)
).
normalize
(
);
return
this
;
// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?
this
.
setFromNormalAndCoplanarPoint
(
normal
,
a
);
return
this
;
};
}(),
},
copy
:
function
(
plane
)
{
...
...
@@ -120,39 +126,46 @@ THREE.Plane.prototype = {
},
intersectLine
:
function
(
startPoint
,
endPoint
,
optionalTarget
)
{
intersectLine
:
function
(
)
{
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
var
v1
=
new
THREE
.
Vector3
();
return
function
(
startPoint
,
endPoint
,
optionalTarget
)
{
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
var
direction
=
v1
.
subVectors
(
endPoint
,
startPoint
);
var
direction
=
THREE
.
Plane
.
__v1
.
subVectors
(
endPoint
,
startPoint
);
var
denominator
=
this
.
normal
.
dot
(
direction
);
var
denominator
=
this
.
normal
.
dot
(
direction
);
if
(
denominator
==
0
)
{
if
(
denominator
==
0
)
{
// line is coplanar, return origin
if
(
this
.
distanceToPoint
(
startPoint
)
==
0
)
{
// line is coplanar, return origin
if
(
this
.
distanceToPoint
(
startPoint
)
==
0
)
{
return
result
.
copy
(
startPoint
);
return
result
.
copy
(
startPoint
);
}
// Unsure if this is the correct method to handle this case.
return
undefined
;
}
// Unsure if this is the correct method to handle this case.
return
undefined
;
var
t
=
-
(
startPoint
.
dot
(
this
.
normal
)
+
this
.
constant
)
/
denominator
;
}
if
(
t
<
0
||
t
>
1
)
{
var
t
=
-
(
startPoint
.
dot
(
this
.
normal
)
+
this
.
constant
)
/
denominator
;
return
undefined
;
if
(
t
<
0
||
t
>
1
)
{
}
return
undefined
;
return
result
.
copy
(
direction
).
multiplyScalar
(
t
).
add
(
startPoint
)
;
}
}
;
return
result
.
copy
(
direction
).
multiplyScalar
(
t
).
add
(
startPoint
);
}(),
},
coplanarPoint
:
function
(
optionalTarget
)
{
...
...
@@ -161,21 +174,28 @@ THREE.Plane.prototype = {
},
transform
:
function
(
matrix
,
optionalNormalMatrix
)
{
transform
:
function
(
)
{
// compute new normal based on theory here:
// http://www.songho.ca/opengl/gl_normaltransform.html
optionalNormalMatrix
=
optionalNormalMatrix
||
new
THREE
.
Matrix3
().
getInverse
(
matrix
).
transpose
();
var
newNormal
=
THREE
.
Plane
.
__v1
.
copy
(
this
.
normal
).
applyMatrix3
(
optionalNormalMatrix
);
var
v1
=
new
THREE
.
Vector3
();
var
v2
=
new
THREE
.
Vector3
();
var
newCoplanarPoint
=
this
.
coplanarPoint
(
THREE
.
Plane
.
__v2
);
newCoplanarPoint
.
applyMatrix4
(
matrix
);
return
function
(
matrix
,
optionalNormalMatrix
)
{
this
.
setFromNormalAndCoplanarPoint
(
newNormal
,
newCoplanarPoint
);
// compute new normal based on theory here:
// http://www.songho.ca/opengl/gl_normaltransform.html
optionalNormalMatrix
=
optionalNormalMatrix
||
new
THREE
.
Matrix3
().
getInverse
(
matrix
).
transpose
();
var
newNormal
=
v1
.
copy
(
this
.
normal
).
applyMatrix3
(
optionalNormalMatrix
);
return
this
;
var
newCoplanarPoint
=
this
.
coplanarPoint
(
v2
);
newCoplanarPoint
.
applyMatrix4
(
matrix
);
},
this
.
setFromNormalAndCoplanarPoint
(
newNormal
,
newCoplanarPoint
);
return
this
;
};
}(),
translate
:
function
(
offset
)
{
...
...
@@ -197,8 +217,4 @@ THREE.Plane.prototype = {
}
};
THREE
.
Plane
.
__vZero
=
new
THREE
.
Vector3
(
0
,
0
,
0
);
THREE
.
Plane
.
__v1
=
new
THREE
.
Vector3
();
THREE
.
Plane
.
__v2
=
new
THREE
.
Vector3
();
}
);
src/math/Quaternion.js
浏览文件 @
fe2d302a
...
...
@@ -14,9 +14,7 @@ THREE.Quaternion = function( x, y, z, w ) {
};
THREE
.
Quaternion
.
prototype
=
{
constructor
:
THREE
.
Quaternion
,
THREE
.
extend
(
THREE
.
Quaternion
.
prototype
,
{
set
:
function
(
x
,
y
,
z
,
w
)
{
...
...
@@ -339,7 +337,7 @@ THREE.Quaternion.prototype = {
}
}
}
);
THREE
.
Quaternion
.
slerp
=
function
(
qa
,
qb
,
qm
,
t
)
{
...
...
src/math/Ray.js
浏览文件 @
fe2d302a
...
...
@@ -9,9 +9,7 @@ THREE.Ray = function ( origin, direction ) {
};
THREE
.
Ray
.
prototype
=
{
constructor
:
THREE
.
Ray
,
THREE
.
extend
(
THREE
.
Ray
.
prototype
,
{
set
:
function
(
origin
,
direction
)
{
...
...
@@ -39,13 +37,19 @@ THREE.Ray.prototype = {
},
recast
:
function
(
t
)
{
recast
:
function
(
)
{
this
.
origin
.
copy
(
this
.
at
(
t
,
THREE
.
Ray
.
__v1
)
);
var
v1
=
new
THREE
.
Vector3
(
);
return
this
;
return
function
(
t
)
{
},
this
.
origin
.
copy
(
this
.
at
(
t
,
v1
)
);
return
this
;
};
}(),
closestPointToPoint
:
function
(
point
,
optionalTarget
)
{
...
...
@@ -57,14 +61,20 @@ THREE.Ray.prototype = {
},
distanceToPoint
:
function
(
point
)
{
distanceToPoint
:
function
(
)
{
var
directionDistance
=
THREE
.
Ray
.
__v1
.
subVectors
(
point
,
this
.
origin
).
dot
(
this
.
direction
);
THREE
.
Ray
.
__v1
.
copy
(
this
.
direction
).
multiplyScalar
(
directionDistance
).
add
(
this
.
origin
);
var
v1
=
new
THREE
.
Vector3
();
return
THREE
.
Ray
.
__v1
.
distanceTo
(
point
);
return
function
(
point
)
{
},
var
directionDistance
=
v1
.
subVectors
(
point
,
this
.
origin
).
dot
(
this
.
direction
);
v1
.
copy
(
this
.
direction
).
multiplyScalar
(
directionDistance
).
add
(
this
.
origin
);
return
v1
.
distanceTo
(
point
);
};
}(),
isIntersectionSphere
:
function
(
sphere
)
{
...
...
@@ -121,7 +131,7 @@ THREE.Ray.prototype = {
var
t
=
this
.
distanceToPlane
(
plane
);
if
(
t
===
undefined
)
{
if
(
t
===
undefined
)
{
return
undefined
;
}
...
...
@@ -151,7 +161,4 @@ THREE.Ray.prototype = {
}
};
THREE
.
Ray
.
__v1
=
new
THREE
.
Vector3
();
THREE
.
Ray
.
__v2
=
new
THREE
.
Vector3
();
}
);
src/math/Sphere.js
浏览文件 @
fe2d302a
...
...
@@ -10,9 +10,7 @@ THREE.Sphere = function ( center, radius ) {
};
THREE
.
Sphere
.
prototype
=
{
constructor
:
THREE
.
Sphere
,
THREE
.
extend
(
THREE
.
Sphere
.
prototype
,
{
set
:
function
(
center
,
radius
)
{
...
...
@@ -133,4 +131,4 @@ THREE.Sphere.prototype = {
}
};
}
)
;
src/math/Triangle.js
浏览文件 @
fe2d302a
...
...
@@ -11,69 +11,88 @@ THREE.Triangle = function ( a, b, c ) {
};
THREE
.
Triangle
.
normal
=
function
(
a
,
b
,
c
,
optionalTarget
)
{
THREE
.
Triangle
.
normal
=
function
()
{
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
var
v0
=
new
THREE
.
Vector3
();
result
.
subVectors
(
c
,
b
);
THREE
.
Triangle
.
__v0
.
subVectors
(
a
,
b
);
result
.
cross
(
THREE
.
Triangle
.
__v0
);
return
function
(
a
,
b
,
c
,
optionalTarget
)
{
var
resultLengthSq
=
result
.
lengthSq
();
if
(
resultLengthSq
>
0
)
{
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
return
result
.
multiplyScalar
(
1
/
Math
.
sqrt
(
resultLengthSq
)
);
result
.
subVectors
(
c
,
b
);
v0
.
subVectors
(
a
,
b
);
result
.
cross
(
v0
);
}
var
resultLengthSq
=
result
.
lengthSq
();
if
(
resultLengthSq
>
0
)
{
return
result
.
set
(
0
,
0
,
0
);
return
result
.
multiplyScalar
(
1
/
Math
.
sqrt
(
resultLengthSq
)
);
};
}
return
result
.
set
(
0
,
0
,
0
);
};
}();
// static/instance method to calculate barycoordinates
// based on: http://www.blackpawn.com/texts/pointinpoly/default.html
THREE
.
Triangle
.
barycoordFromPoint
=
function
(
point
,
a
,
b
,
c
,
optionalTarget
)
{
THREE
.
Triangle
.
barycoordFromPoint
=
function
(
)
{
THREE
.
Triangle
.
__v0
.
subVectors
(
c
,
a
);
THREE
.
Triangle
.
__v1
.
subVectors
(
b
,
a
);
THREE
.
Triangle
.
__v2
.
subVectors
(
point
,
a
);
var
v0
=
new
THREE
.
Vector3
(),
v1
=
new
THREE
.
Vector3
(),
v2
=
new
THREE
.
Vector3
(
);
var
dot00
=
THREE
.
Triangle
.
__v0
.
dot
(
THREE
.
Triangle
.
__v0
);
var
dot01
=
THREE
.
Triangle
.
__v0
.
dot
(
THREE
.
Triangle
.
__v1
);
var
dot02
=
THREE
.
Triangle
.
__v0
.
dot
(
THREE
.
Triangle
.
__v2
);
var
dot11
=
THREE
.
Triangle
.
__v1
.
dot
(
THREE
.
Triangle
.
__v1
);
var
dot12
=
THREE
.
Triangle
.
__v1
.
dot
(
THREE
.
Triangle
.
__v2
);
return
function
(
point
,
a
,
b
,
c
,
optionalTarget
)
{
var
denom
=
(
dot00
*
dot11
-
dot01
*
dot01
);
v0
.
subVectors
(
c
,
a
);
v1
.
subVectors
(
b
,
a
);
v2
.
subVectors
(
point
,
a
);
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
var
dot00
=
v0
.
dot
(
v0
);
var
dot01
=
v0
.
dot
(
v1
);
var
dot02
=
v0
.
dot
(
v2
);
var
dot11
=
v1
.
dot
(
v1
);
var
dot12
=
v1
.
dot
(
v2
);
// colinear or singular triangle
if
(
denom
==
0
)
{
// arbitrary location outside of triangle?
// not sure if this is the best idea, maybe should be returning undefined
return
result
.
set
(
-
2
,
-
1
,
-
1
);
}
var
denom
=
(
dot00
*
dot11
-
dot01
*
dot01
);
var
invDenom
=
1
/
denom
;
var
u
=
(
dot11
*
dot02
-
dot01
*
dot12
)
*
invDenom
;
var
v
=
(
dot00
*
dot12
-
dot01
*
dot02
)
*
invDenom
;
var
result
=
optionalTarget
||
new
THREE
.
Vector3
();
// barycoordinates must always sum to 1
return
result
.
set
(
1
-
u
-
v
,
v
,
u
);
// colinear or singular triangle
if
(
denom
==
0
)
{
// arbitrary location outside of triangle?
// not sure if this is the best idea, maybe should be returning undefined
return
result
.
set
(
-
2
,
-
1
,
-
1
);
}
};
var
invDenom
=
1
/
denom
;
var
u
=
(
dot11
*
dot02
-
dot01
*
dot12
)
*
invDenom
;
var
v
=
(
dot00
*
dot12
-
dot01
*
dot02
)
*
invDenom
;
THREE
.
Triangle
.
containsPoint
=
function
(
point
,
a
,
b
,
c
)
{
// barycoordinates must always sum to 1
return
result
.
set
(
1
-
u
-
v
,
v
,
u
);
// NOTE: need to use __v3 here because __v0, __v1 and __v2 are used in barycoordFromPoint.
var
result
=
THREE
.
Triangle
.
barycoordFromPoint
(
point
,
a
,
b
,
c
,
THREE
.
Triangle
.
__v3
);
};
return
(
result
.
x
>=
0
)
&&
(
result
.
y
>=
0
)
&&
(
(
result
.
x
+
result
.
y
)
<=
1
);
}(
);
};
THREE
.
Triangle
.
containsPoint
=
function
()
{
var
v1
=
new
THREE
.
Vector3
();
THREE
.
Triangle
.
prototype
=
{
return
function
(
point
,
a
,
b
,
c
)
{
var
result
=
THREE
.
Triangle
.
barycoordFromPoint
(
point
,
a
,
b
,
c
,
v1
);
return
(
result
.
x
>=
0
)
&&
(
result
.
y
>=
0
)
&&
(
(
result
.
x
+
result
.
y
)
<=
1
);
};
}();
THREE
.
extend
(
THREE
.
Triangle
.
prototype
,
{
constructor
:
THREE
.
Triangle
,
...
...
@@ -107,14 +126,21 @@ THREE.Triangle.prototype = {
},
area
:
function
()
{
area
:
function
()
{
THREE
.
Triangle
.
__v0
.
subVectors
(
this
.
c
,
this
.
b
);
THREE
.
Triangle
.
__v1
.
subVectors
(
this
.
a
,
this
.
b
);
var
v0
=
new
THREE
.
Vector3
(
);
var
v1
=
new
THREE
.
Vector3
(
);
return
THREE
.
Triangle
.
__v0
.
cross
(
THREE
.
Triangle
.
__v1
).
length
()
*
0.5
;
return
function
()
{
},
v0
.
subVectors
(
this
.
c
,
this
.
b
);
v1
.
subVectors
(
this
.
a
,
this
.
b
);
return
v0
.
cross
(
v1
).
length
()
*
0.5
;
};
}(),
midpoint
:
function
(
optionalTarget
)
{
...
...
@@ -161,9 +187,4 @@ THREE.Triangle.prototype = {
}
};
THREE
.
Triangle
.
__v0
=
new
THREE
.
Vector3
();
THREE
.
Triangle
.
__v1
=
new
THREE
.
Vector3
();
THREE
.
Triangle
.
__v2
=
new
THREE
.
Vector3
();
THREE
.
Triangle
.
__v3
=
new
THREE
.
Vector3
();
}
);
src/math/Vector2.js
浏览文件 @
fe2d302a
...
...
@@ -12,9 +12,7 @@ THREE.Vector2 = function ( x, y ) {
};
THREE
.
Vector2
.
prototype
=
{
constructor
:
THREE
.
Vector2
,
THREE
.
extend
(
THREE
.
Vector2
.
prototype
,
{
set
:
function
(
x
,
y
)
{
...
...
@@ -301,4 +299,4 @@ THREE.Vector2.prototype = {
}
};
}
)
;
src/math/Vector3.js
浏览文件 @
fe2d302a
...
...
@@ -15,10 +15,7 @@ THREE.Vector3 = function ( x, y, z ) {
};
THREE
.
Vector3
.
prototype
=
{
constructor
:
THREE
.
Vector3
,
THREE
.
extend
(
THREE
.
Vector3
.
prototype
,
{
set
:
function
(
x
,
y
,
z
)
{
...
...
@@ -268,21 +265,52 @@ THREE.Vector3.prototype = {
},
applyEuler
:
function
(
v
,
eulerOrder
)
{
applyEuler
:
function
(
)
{
var
q
uaternion
=
THREE
.
Vector3
.
__q1
.
setFromEuler
(
v
,
eulerOrder
);
var
q
1
=
new
THREE
.
Quaternion
(
);
this
.
applyQuaternion
(
quaternion
);
return
function
(
v
,
eulerOrder
)
{
return
this
;
var
quaternion
=
q1
.
setFromEuler
(
v
,
eulerOrder
)
;
},
this
.
applyQuaternion
(
quaternion
);
return
this
;
};
}(),
applyAxisAngle
:
function
()
{
var
q1
=
new
THREE
.
Quaternion
();
return
function
(
axis
,
angle
)
{
var
quaternion
=
q1
.
setFromAxisAngle
(
axis
,
angle
);
this
.
applyQuaternion
(
quaternion
);
applyAxisAngle
:
function
(
axis
,
angle
)
{
return
this
;
var
quaternion
=
THREE
.
Vector3
.
__q1
.
setFromAxisAngle
(
axis
,
angle
)
;
}
;
this
.
applyQuaternion
(
quaternion
);
}(),
transformDirection
:
function
(
m
)
{
// input: THREE.Matrix4 affine matrix
// vector interpreted as a direction
var
x
=
this
.
x
,
y
=
this
.
y
,
z
=
this
.
z
;
var
e
=
m
.
elements
;
this
.
x
=
e
[
0
]
*
x
+
e
[
4
]
*
y
+
e
[
8
]
*
z
;
this
.
y
=
e
[
1
]
*
x
+
e
[
5
]
*
y
+
e
[
9
]
*
z
;
this
.
z
=
e
[
2
]
*
x
+
e
[
6
]
*
y
+
e
[
10
]
*
z
;
this
.
normalize
();
return
this
;
...
...
@@ -729,6 +757,4 @@ THREE.Vector3.prototype = {
}
};
THREE
.
Vector3
.
__q1
=
new
THREE
.
Quaternion
();
}
);
src/math/Vector4.js
浏览文件 @
fe2d302a
...
...
@@ -15,9 +15,7 @@ THREE.Vector4 = function ( x, y, z, w ) {
};
THREE
.
Vector4
.
prototype
=
{
constructor
:
THREE
.
Vector4
,
THREE
.
extend
(
THREE
.
Vector4
.
prototype
,
{
set
:
function
(
x
,
y
,
z
,
w
)
{
...
...
@@ -553,4 +551,4 @@ THREE.Vector4.prototype = {
}
};
}
)
;
src/renderers/CanvasRenderer.js
浏览文件 @
fe2d302a
...
...
@@ -29,6 +29,8 @@ THREE.CanvasRenderer = function ( parameters ) {
_contextLineWidth
=
null
,
_contextLineCap
=
null
,
_contextLineJoin
=
null
,
_contextDashSize
=
null
,
_contextGapSize
=
0
,
_v1
,
_v2
,
_v3
,
_v4
,
_v5
=
new
THREE
.
RenderableVertex
(),
...
...
@@ -89,6 +91,26 @@ THREE.CanvasRenderer = function ( parameters ) {
_gradientMapQuality
--
;
// Fix UVs
// dash+gap fallbacks for Firefox and everything else
if
(
_context
.
setLineDash
===
undefined
)
{
if
(
_context
.
mozDash
!==
undefined
)
{
_context
.
setLineDash
=
function
(
values
)
{
_context
.
mozDash
=
values
[
0
]
!==
null
?
values
:
null
;
}
}
else
{
_context
.
setLineDash
=
function
(
values
)
{}
}
}
this
.
domElement
=
_canvas
;
this
.
devicePixelRatio
=
parameters
.
devicePixelRatio
!==
undefined
...
...
@@ -573,6 +595,18 @@ THREE.CanvasRenderer = function ( parameters ) {
setLineCap
(
material
.
linecap
);
setLineJoin
(
material
.
linejoin
);
setStrokeStyle
(
material
.
color
.
getStyle
()
);
setDashAndGap
(
null
,
null
);
_context
.
stroke
();
_elemBox
.
expandByScalar
(
material
.
linewidth
*
2
);
}
else
if
(
material
instanceof
THREE
.
LineDashedMaterial
)
{
setLineWidth
(
material
.
linewidth
);
setLineCap
(
material
.
linecap
);
setLineJoin
(
material
.
linejoin
);
setStrokeStyle
(
material
.
color
.
getStyle
()
);
setDashAndGap
(
material
.
dashSize
,
material
.
gapSize
);
_context
.
stroke
();
_elemBox
.
expandByScalar
(
material
.
linewidth
*
2
);
...
...
@@ -1260,4 +1294,16 @@ THREE.CanvasRenderer = function ( parameters ) {
}
function
setDashAndGap
(
dashSizeValue
,
gapSizeValue
)
{
if
(
_contextDashSize
!==
dashSizeValue
||
_contextGapSize
!==
gapSizeValue
)
{
_context
.
setLineDash
(
[
dashSizeValue
,
gapSizeValue
]
);
_contextDashSize
=
dashSizeValue
;
_contextGapSize
=
gapSizeValue
;
}
}
};
test/unit/unittests_sources.html
浏览文件 @
fe2d302a
...
...
@@ -12,21 +12,21 @@
<!-- add ThreeJS sources to test below -->
<script
src=
"../../src/Three.js"
></script>
<script
src=
"../../src/math/Math.js"
></script>
<script
src=
"../../src/math/Color.js"
></script>
<script
src=
"../../src/math/Quaternion.js"
></script>
<script
src=
"../../src/math/Vector2.js"
></script>
<script
src=
"../../src/math/Vector3.js"
></script>
<script
src=
"../../src/math/Vector4.js"
></script>
<script
src=
"../../src/math/Box2.js"
></script>
<script
src=
"../../src/math/Box3.js"
></script>
<script
src=
"../../src/math/Plane.js"
></script>
<script
src=
"../../src/math/Ray.js"
></script>
<script
src=
"../../src/math/Sphere.js"
></script>
<script
src=
"../../src/math/Triangle.js"
></script>
<script
src=
"../../src/math/Matrix3.js"
></script>
<script
src=
"../../src/math/Matrix4.js"
></script>
<script
src=
"../../src/math/Color.js"
></script>
<script
src=
"../../src/math/Quaternion.js"
></script>
<script
src=
"../../src/math/Ray.js"
></script>
<script
src=
"../../src/math/Frustum.js"
></script>
<script
src=
"../../src/math/Plane.js"
></script>
<script
src=
"../../src/math/Sphere.js"
></script>
<script
src=
"../../src/math/Math.js"
></script>
<script
src=
"../../src/math/Triangle.js"
></script>
<!-- add class-based unit tests below -->
...
...
utils/build.py
浏览文件 @
fe2d302a
#!/usr/bin/env python
import
sys
if
sys
.
version_info
<
(
2
,
7
):
print
(
"This script requires at least Python 2.7."
)
print
(
"Please, update to a newer version: http://www.python.org/download/releases/"
)
exit
()
import
argparse
import
json
import
os
import
shutil
import
sys
import
tempfile
...
...
@@ -49,8 +55,8 @@ def main(argv=None):
# save
if
args
.
minify
is
False
:
shutil
.
copy
(
path
,
output
)
os
.
chmod
(
output
,
0o664
);
# temp files would usually get 0600
shutil
.
copy
(
path
,
output
)
os
.
chmod
(
output
,
0o664
);
# temp files would usually get 0600
else
:
...
...
utils/editors/sublimetext2/README.md
0 → 100644
浏览文件 @
fe2d302a
### How to install
1.
Compress
`threejs.sublime-completions`
into
`threejs.sublime-package`
.
```
shell
zip threejs.sublime-package threejs.sublime-completions
```
2.
Copy the compressed file into
`Sublime Text 2/Pristine Packages`
.
utils/editors/sublimetext2/threejs.sublime-completions
0 → 100644
浏览文件 @
fe2d302a
{
"scope": "source.js,source.js.embedded.html,source.coffee",
"version": "r55",
"completions":
[
{ "trigger": "THREE.extend", "contents": "THREE.extend( ${1:target}, ${2:other} )$0" },
{ "trigger": "THREE.Color", "contents": "THREE.Color( ${1:value} )$0" },
{ "trigger": "THREE.Vector2", "contents": "THREE.Vector2( ${1:x}, ${2:y} )$0" },
{ "trigger": "THREE.Vector3", "contents": "THREE.Vector3( ${1:x}, ${2:y}, ${3:z} )$0" },
{ "trigger": "THREE.Vector4", "contents": "THREE.Vector4( ${1:x}, ${2:y}, ${3:z}, ${4:w} )$0" },
{ "trigger": "THREE.Box2", "contents": "THREE.Box2( ${1:min}, ${2:max} )$0" },
{ "trigger": "THREE.Box3", "contents": "THREE.Box3( ${1:min}, ${2:max} )$0" },
{ "trigger": "THREE.Matrix3", "contents": "THREE.Matrix3( ${1:n11}, ${2:n12}, ${3:n13}, ${4:n21}, ${5:n22}, ${6:n23}, ${7:n31}, ${8:n32}, ${9:n33} )$0" },
{ "trigger": "THREE.Matrix4", "contents": "THREE.Matrix4( ${1:n11}, ${2:n12}, ${3:n13}, ${4:n14}, ${5:n21}, ${6:n22}, ${7:n23}, ${8:n24}, ${9:n31}, ${10:n32}, ${11:n33}, ${12:n34}, ${13:n41}, ${14:n42}, ${15:n43}, ${16:n44} )$0" },
{ "trigger": "THREE.Ray", "contents": "THREE.Ray( ${1:origin}, ${2:direction} )$0" },
{ "trigger": "THREE.Sphere", "contents": "THREE.Sphere( ${1:center}, ${2:radius} )$0" },
{ "trigger": "THREE.Frustum", "contents": "THREE.Frustum( ${1:p0}, ${2:p1}, ${3:p2}, ${4:p3}, ${5:p4}, ${6:p5} )$0" },
{ "trigger": "THREE.Plane", "contents": "THREE.Plane( ${1:normal}, ${2:constant} )$0" },
{ "trigger": "THREE.Spline", "contents": "THREE.Spline( ${1:points} )$0" },
{ "trigger": "THREE.Triangle", "contents": "THREE.Triangle( ${1:a}, ${2:b}, ${3:c} )$0" },
{ "trigger": "THREE.Vertex", "contents": "THREE.Vertex( ${1:v} )$0" },
{ "trigger": "THREE.UV", "contents": "THREE.UV( ${1:u}, ${2:v} )$0" },
{ "trigger": "THREE.Clock", "contents": "THREE.Clock( ${1:autoStart} )$0" },
{ "trigger": "THREE.EventDispatcher", "contents": "THREE.EventDispatcher()$0" },
{ "trigger": "THREE.Raycaster", "contents": "THREE.Raycaster( ${1:origin}, ${2:direction}, ${3:near}, ${4:far} )$0" },
{ "trigger": "THREE.Object3D", "contents": "THREE.Object3D()$0" },
{ "trigger": "THREE.Projector", "contents": "THREE.Projector()$0" },
{ "trigger": "THREE.Face3", "contents": "THREE.Face3( ${1:a}, ${2:b}, ${3:c}, ${4:normal}, ${5:color}, ${6:materialIndex} )$0" },
{ "trigger": "THREE.Face4", "contents": "THREE.Face4( ${1:a}, ${2:b}, ${3:c}, ${4:d}, ${5:normal}, ${6:color}, ${7:materialIndex} )$0" },
{ "trigger": "THREE.Geometry", "contents": "THREE.Geometry()$0" },
{ "trigger": "THREE.BufferGeometry", "contents": "THREE.BufferGeometry()$0" },
{ "trigger": "THREE.Camera", "contents": "THREE.Camera()$0" },
{ "trigger": "THREE.OrthographicCamera", "contents": "THREE.OrthographicCamera( ${1:left}, ${2:right}, ${3:top}, ${4:bottom}, ${5:near}, ${6:far} )$0" },
{ "trigger": "THREE.PerspectiveCamera", "contents": "THREE.PerspectiveCamera( ${1:fov}, ${2:aspect}, ${3:near}, ${4:far} )$0" },
{ "trigger": "THREE.Light", "contents": "THREE.Light( ${1:hex} )$0" },
{ "trigger": "THREE.AmbientLight", "contents": "THREE.AmbientLight( ${1:hex} )$0" },
{ "trigger": "THREE.AreaLight", "contents": "THREE.AreaLight( ${1:hex}, ${2:intensity} )$0" },
{ "trigger": "THREE.DirectionalLight", "contents": "THREE.DirectionalLight( ${1:hex}, ${2:intensity} )$0" },
{ "trigger": "THREE.HemisphereLight", "contents": "THREE.HemisphereLight( ${1:skyColorHex}, ${2:groundColorHex}, ${3:intensity} )$0" },
{ "trigger": "THREE.PointLight", "contents": "THREE.PointLight( ${1:hex}, ${2:intensity}, ${3:distance} )$0" },
{ "trigger": "THREE.SpotLight", "contents": "THREE.SpotLight( ${1:hex}, ${2:intensity}, ${3:distance}, ${4:angle}, ${5:exponent} )$0" },
{ "trigger": "THREE.Loader", "contents": "THREE.Loader( ${1:showStatus} )$0" },
{ "trigger": "THREE.ImageLoader", "contents": "THREE.ImageLoader()$0" },
{ "trigger": "THREE.JSONLoader", "contents": "THREE.JSONLoader( ${1:showStatus} )$0" },
{ "trigger": "THREE.LoadingMonitor", "contents": "THREE.LoadingMonitor()$0" },
{ "trigger": "THREE.SceneLoader", "contents": "THREE.SceneLoader()$0" },
{ "trigger": "THREE.TextureLoader", "contents": "THREE.TextureLoader()$0" },
{ "trigger": "THREE.Material", "contents": "THREE.Material()$0" },
{ "trigger": "THREE.LineBasicMaterial", "contents": "THREE.LineBasicMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.LineDashedMaterial", "contents": "THREE.LineDashedMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshBasicMaterial", "contents": "THREE.MeshBasicMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshLambertMaterial", "contents": "THREE.MeshLambertMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshPhongMaterial", "contents": "THREE.MeshPhongMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshDepthMaterial", "contents": "THREE.MeshDepthMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshNormalMaterial", "contents": "THREE.MeshNormalMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.MeshFaceMaterial", "contents": "THREE.MeshFaceMaterial( ${1:materials} )$0" },
{ "trigger": "THREE.ParticleBasicMaterial", "contents": "THREE.ParticleBasicMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.ParticleCanvasMaterial", "contents": "THREE.ParticleCanvasMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.ShaderMaterial", "contents": "THREE.ShaderMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.SpriteMaterial", "contents": "THREE.SpriteMaterial( ${1:parameters} )$0" },
{ "trigger": "THREE.Texture", "contents": "THREE.Texture( ${1:image}, ${2:mapping}, ${3:wrapS}, ${4:wrapT}, ${5:magFilter}, ${6:minFilter}, ${7:format}, ${8:type}, ${9:anisotropy} )$0" },
{ "trigger": "THREE.CompressedTexture", "contents": "THREE.CompressedTexture( ${1:mipmaps}, ${2:width}, ${3:height}, ${4:format}, ${5:type}, ${6:mapping}, ${7:wrapS}, ${8:wrapT}, ${9:magFilter}, ${10:minFilter}, ${11:anisotropy} )$0" },
{ "trigger": "THREE.DataTexture", "contents": "THREE.DataTexture( ${1:data}, ${2:width}, ${3:height}, ${4:format}, ${5:type}, ${6:mapping}, ${7:wrapS}, ${8:wrapT}, ${9:magFilter}, ${10:minFilter}, ${11:anisotropy} )$0" },
{ "trigger": "THREE.Particle", "contents": "THREE.Particle( ${1:material} )$0" },
{ "trigger": "THREE.ParticleSystem", "contents": "THREE.ParticleSystem( ${1:geometry}, ${2:material} )$0" },
{ "trigger": "THREE.Line", "contents": "THREE.Line( ${1:geometry}, ${2:material}, ${3:type} )$0" },
{ "trigger": "THREE.Mesh", "contents": "THREE.Mesh( ${1:geometry}, ${2:material} )$0" },
{ "trigger": "THREE.SkinnedMesh", "contents": "THREE.SkinnedMesh( ${1:geometry}, ${2:material}, ${3:useVertexTexture} )$0" },
{ "trigger": "THREE.MorphAnimMesh", "contents": "THREE.MorphAnimMesh( ${1:geometry}, ${2:material} )$0" },
{ "trigger": "THREE.Ribbon", "contents": "THREE.Ribbon( ${1:geometry}, ${2:material} )$0" },
{ "trigger": "THREE.LOD", "contents": "THREE.LOD()$0" },
{ "trigger": "THREE.Sprite", "contents": "THREE.Sprite( ${1:material} )$0" },
{ "trigger": "THREE.Scene", "contents": "THREE.Scene()$0" },
{ "trigger": "THREE.Fog", "contents": "THREE.Fog( ${1:hex}, ${2:near}, ${3:far} )$0" },
{ "trigger": "THREE.FogExp2", "contents": "THREE.FogExp2( ${1:hex}, ${2:density} )$0" },
{ "trigger": "THREE.CanvasRenderer", "contents": "THREE.CanvasRenderer( ${1:parameters} )$0" },
{ "trigger": "THREE.WebGLRenderer", "contents": "THREE.WebGLRenderer( ${1:parameters} )$0" },
{ "trigger": "THREE.WebGLRenderTarget", "contents": "THREE.WebGLRenderTarget( ${1:width}, ${2:height}, ${3:options} )$0" },
{ "trigger": "THREE.WebGLRenderTargetCube", "contents": "THREE.WebGLRenderTargetCube( ${1:width}, ${2:height}, ${3:options} )$0" },
{ "trigger": "THREE.RenderableVertex", "contents": "THREE.RenderableVertex()$0" },
{ "trigger": "THREE.RenderableFace3", "contents": "THREE.RenderableFace3()$0" },
{ "trigger": "THREE.RenderableFace4", "contents": "THREE.RenderableFace4()$0" },
{ "trigger": "THREE.RenderableObject", "contents": "THREE.RenderableObject()$0" },
{ "trigger": "THREE.RenderableParticle", "contents": "THREE.RenderableParticle()$0" },
{ "trigger": "THREE.RenderableLine", "contents": "THREE.RenderableLine()$0" },
{ "trigger": "THREE.Curve", "contents": "THREE.Curve()$0" },
{ "trigger": "THREE.CurvePath", "contents": "THREE.CurvePath()$0" },
{ "trigger": "THREE.Gyroscope", "contents": "THREE.Gyroscope()$0" },
{ "trigger": "THREE.Path", "contents": "THREE.Path( ${1:points} )$0" },
{ "trigger": "THREE.Shape", "contents": "THREE.Shape()$0" },
{ "trigger": "THREE.Animation", "contents": "THREE.Animation( ${1:root}, ${2:name}, ${3:interpolationType} )$0" },
{ "trigger": "THREE.CubeCamera", "contents": "THREE.CubeCamera( ${1:near}, ${2:far}, ${3:cubeResolution} )$0" },
{ "trigger": "THREE.CombinedCamera", "contents": "THREE.CombinedCamera( ${1:width}, ${2:height}, ${3:fov}, ${4:near}, ${5:far}, ${6:orthoNear}, ${7:orthoFar} )$0" },
{ "trigger": "THREE.AsteriskGeometry", "contents": "THREE.AsteriskGeometry( ${1:innerRadius}, ${2:outerRadius} )$0" },
{ "trigger": "THREE.CircleGeometry", "contents": "THREE.CircleGeometry( ${1:radius}, ${2:segments}, ${3:thetaStart}, ${4:thetaLength} )$0" },
{ "trigger": "THREE.CubeGeometry", "contents": "THREE.CubeGeometry( ${1:width}, ${2:height}, ${3:depth}, ${4:widthSegments}, ${5:heightSegments}, ${6:depthSegments} )$0" },
{ "trigger": "THREE.CylinderGeometry", "contents": "THREE.CylinderGeometry( ${1:radiusTop}, ${2:radiusBottom}, ${3:height}, ${4:radiusSegments}, ${5:heightSegments}, ${6:openEnded} )$0" },
{ "trigger": "THREE.ExtrudeGeometry", "contents": "THREE.ExtrudeGeometry( ${1:shapes}, ${2:options} )$0" },
{ "trigger": "THREE.ShapeGeometry", "contents": "THREE.ShapeGeometry( ${1:shapes}, ${2:options} )$0" },
{ "trigger": "THREE.LatheGeometry", "contents": "THREE.LatheGeometry( ${1:points}, ${2:segments}, ${3:phiStart}, ${4:phiLength} )$0" },
{ "trigger": "THREE.PlaneGeometry", "contents": "THREE.PlaneGeometry( ${1:width}, ${2:height}, ${3:widthSegments}, ${4:heightSegments} )$0" },
{ "trigger": "THREE.SphereGeometry", "contents": "THREE.SphereGeometry( ${1:radius}, ${2:widthSegments}, ${3:heightSegments}, ${4:phiStart}, ${5:phiLength}, ${6:thetaStart}, ${7:thetaLength} )$0" },
{ "trigger": "THREE.TextGeometry", "contents": "THREE.TextGeometry( ${1:text}, ${2:parameters} )$0" },
{ "trigger": "THREE.TorusGeometry", "contents": "THREE.TorusGeometry( ${1:radius}, ${2:tube}, ${3:radialSegments}, ${4:tubularSegments}, ${5:arc} )$0" },
{ "trigger": "THREE.TorusKnotGeometry", "contents": "THREE.TorusKnotGeometry( ${1:radius}, ${2:tube}, ${3:radialSegments}, ${4:tubularSegments}, ${5:p}, ${6:q}, ${7:heightScale} )$0" },
{ "trigger": "THREE.PolyhedronGeometry", "contents": "THREE.PolyhedronGeometry( ${1:vertices}, ${2:faces}, ${3:radius}, ${4:detail} )$0" },
{ "trigger": "THREE.IcosahedronGeometry", "contents": "THREE.IcosahedronGeometry( ${1:radius}, ${2:detail} )$0" },
{ "trigger": "THREE.OctahedronGeometry", "contents": "THREE.OctahedronGeometry( ${1:radius}, ${2:detail} )$0" },
{ "trigger": "THREE.TetrahedronGeometry", "contents": "THREE.TetrahedronGeometry( ${1:radius}, ${2:detail} )$0" },
{ "trigger": "THREE.ParametricGeometry", "contents": "THREE.ParametricGeometry( ${1:func}, ${2:slices}, ${3:stacks}, ${4:useTris} )$0" },
{ "trigger": "THREE.AxisHelper", "contents": "THREE.AxisHelper( ${1:size} )$0" },
{ "trigger": "THREE.ArrowHelper", "contents": "THREE.ArrowHelper( ${1:dir}, ${2:origin}, ${3:length}, ${4:hex} )$0" },
{ "trigger": "THREE.CameraHelper", "contents": "THREE.CameraHelper( ${1:camera} )$0" },
{ "trigger": "THREE.DirectionalLightHelper", "contents": "THREE.DirectionalLightHelper( ${1:light}, ${2:sphereSize} )$0" },
{ "trigger": "THREE.HemisphereLightHelper", "contents": "THREE.HemisphereLightHelper( ${1:light}, ${2:sphereSize}, ${3:arrowLength}, ${4:domeSize} )$0" },
{ "trigger": "THREE.PointLightHelper", "contents": "THREE.PointLightHelper( ${1:light}, ${2:sphereSize} )$0" },
{ "trigger": "THREE.SpotLightHelper", "contents": "THREE.SpotLightHelper( ${1:light}, ${2:sphereSize} )$0" },
{ "trigger": "THREE.ImmediateRenderObject", "contents": "THREE.ImmediateRenderObject()$0" },
{ "trigger": "THREE.LensFlare", "contents": "THREE.LensFlare( ${1:texture}, ${2:size}, ${3:distance}, ${4:blending}, ${5:color} )$0" },
{ "trigger": "THREE.LensFlarePlugin", "contents": "THREE.LensFlarePlugin()$0" },
{ "trigger": "THREE.ShadowMapPlugin", "contents": "THREE.ShadowMapPlugin()$0" },
{ "trigger": "THREE.SpritePlugin", "contents": "THREE.SpritePlugin()$0" },
{ "trigger": "THREE.DepthPassPlugin", "contents": "THREE.DepthPassPlugin()$0" },
"THREE"
]
}
\ No newline at end of file
utils/sublime.py
0 → 100644
浏览文件 @
fe2d302a
#!/usr/bin/env python
import
sys
if
sys
.
version_info
<
(
2
,
7
):
print
(
"This script requires at least Python 2.7."
)
print
(
"Please, update to a newer version: http://www.python.org/download/releases/"
)
exit
()
import
argparse
import
json
import
os
import
re
import
shutil
import
tempfile
def
main
(
argv
=
None
):
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--include'
,
action
=
'append'
,
required
=
True
)
parser
.
add_argument
(
'--output'
,
default
=
'editors/sublimetext2/threejs.sublime-completions'
)
args
=
parser
.
parse_args
()
output
=
args
.
output
# parsing
print
(
' * Generating '
+
output
)
fd
,
path
=
tempfile
.
mkstemp
()
tmp
=
open
(
path
,
'w'
)
tmp
.
write
(
'{
\n\t
"scope": "source.js,source.js.embedded.html,source.coffee",
\n\t
"version": "r55",
\n\t
"completions":
\n\t
[
\n
'
)
for
include
in
args
.
include
:
with
open
(
'includes/'
+
include
+
'.json'
,
'r'
)
as
f
:
files
=
json
.
load
(
f
)
for
filename
in
files
:
with
open
(
filename
,
'r'
)
as
f
:
string
=
f
.
read
()
match
=
re
.
search
(
'THREE.(\w+)[\ ]+?=[\ ]+?function[\ ]+\(([\w\,\ ]+)?\)'
,
string
)
if
match
:
name
=
match
.
group
(
1
)
parameters
=
match
.
group
(
2
)
if
parameters
is
None
:
parameters
=
''
else
:
array
=
parameters
.
split
(
','
)
for
i
in
range
(
len
(
array
)):
array
[
i
]
=
'${'
+
str
(
i
+
1
)
+
':'
+
array
[
i
].
strip
()
+
'}'
# ${1:param}
parameters
=
' '
+
', '
.
join
(
array
)
+
' '
tmp
.
write
(
'
\t\t
{ "trigger": "THREE.'
+
name
+
'", "contents": "THREE.'
+
name
+
'('
+
parameters
+
')$0" },
\n
'
)
tmp
.
write
(
"
\t\t\"
THREE
\"\n\t
]
\n
}"
)
tmp
.
close
()
# save
shutil
.
copy
(
path
,
output
)
os
.
chmod
(
output
,
0o664
);
# temp files would usually get 0600
if
__name__
==
"__main__"
:
main
()
utils/sublime.sh
0 → 100755
浏览文件 @
fe2d302a
#!/bin/sh
python sublime.py
--include
common
--include
extras
--output
editors/sublimetext2/threejs.sublime-completions
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录