Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
e7f97fa5
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,发现更多精彩内容 >>
提交
e7f97fa5
编写于
3月 20, 2014
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
53161648
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
179 addition
and
89 deletion
+179
-89
build/three.js
build/three.js
+168
-83
build/three.min.js
build/three.min.js
+11
-6
未找到文件。
build/three.js
浏览文件 @
e7f97fa5
...
...
@@ -10664,35 +10664,44 @@ THREE.Geometry99 = function ( ) {
THREE.Geometry99.prototype = Object.create( THREE.BufferGeometry.prototype );
Object.defineProperties( THREE.Geometry99.prototype, {
vertices: {
enumerable: true,
get: function() { return this.createVertexProxies(); }
get: function () { return this.createVertexProxies(); }
},
faces: {
enumerable: true,
get: function() { return this.createFaceProxies() }
enumerable: true,
get: function () { return this.createFaceProxies() }
},
faceVertexUvs: {
enumerable: true,
get: function() { return this.createUvProxies() }
}
enumerable: true,
get: function () { return this.createUvProxies() }
},
// TODO - fill in additional proxies:
// - colors
// - morphColors
// - morphNormals
// - morphTargets
// - skinIndex
// - skinWeights
} );
THREE.Geometry99.prototype.createVertexProxies = function() {
verticesNeedUpdate: {
enumerable: true,
get: function () { return this.attributes[ 'position' ].needsUpdate; } ,
set: function ( v ) { this.attributes[ 'position' ].needsUpdate = v; }
},
colorsNeedUpdate: {
enumerable: true,
get: function () { if ( this.attributes[ 'color' ] ) return this.attributes[ 'color' ].needsUpdate; } ,
set: function ( v ) { if ( this.attributes[ 'color' ] ) this.attributes[ 'color' ].needsUpdate = v; }
},
normalsNeedUpdate: {
enumerable: true,
get: function () { if ( this.attributes[ 'normal' ] ) return this.attributes[ 'normal' ].needsUpdate; } ,
set: function ( v ) { if ( this.attributes[ 'normal' ] ) this.attributes[ 'normal' ].needsUpdate = v; }
},
});
THREE.Geometry99.prototype.createVertexProxies = function () {
// Replace the prototype getter with a local array property
...
...
@@ -10700,13 +10709,13 @@ THREE.Geometry99.prototype.createVertexProxies = function() {
// If the attribute buffer has already been populated, set up proxy objects
this.populateProxyFromBuffer( this.vertices, "position", THREE.
Proxy
Vector3, 3 );
this.populateProxyFromBuffer( this.vertices, "position", THREE.
Typed
Vector3, 3 );
// Return a reference to the newly-created array
return this.vertices;
}
;
}
THREE.Geometry99.prototype.createFaceProxies = function () {
...
...
@@ -10716,47 +10725,101 @@ THREE.Geometry99.prototype.createFaceProxies = function () {
// If the attribute buffer has already been populated, set up proxy objects
var faces = this.faces,
indexarray = false,
positionarray = false,
normalarray = false,
colorarray = false;
if ( this.attributes.position ) {
positionarray = this.attributes[ 'position' ].array;
}
if ( this.attributes.index ) {
indexarray = this.attributes[ 'index' ].array;
}
if (this.attributes[ 'normal' ]) {
normalarray = this.attributes[ 'normal' ].array;
}
if (this.attributes[ 'color' ]) {
colorarray = this.attributes[ 'color' ].array;
}
if (indexarray) {
for ( var i = 0, l = indexarray.length / 3; i < l; i ++ ) {
var o = i * 3;
// Generate face.vertexNormals and face.vertexFaceColors
var vertexNormals = false,
vertexColors = false;
if (normalarray) {
vertexNormals = [
new THREE.TypedVector3(normalarray, indexarray[o] * 3),
new THREE.TypedVector3(normalarray, indexarray[o+1] * 3),
new THREE.TypedVector3(normalarray, indexarray[o+2] * 3),
]
var indexarray = this.attributes[ 'index' ].array;
var size = 3;
var attr = this.faces;
}
// TODO - do BufferGeometries support face normals?
if (colorarray) {
var normalarray = false;
vertexColors = [
new THREE.TypedColor(colorarray, indexarray[o] * 3),
new THREE.TypedColor(colorarray, indexarray[o+1] * 3),
new THREE.TypedColor(colorarray, indexarray[o+2] * 3),
]
if (this.attributes[ 'normal' ]) {
}
normalarray = this.attributes[ 'normal' ].array
;
var face = new THREE.TypedFace3( indexarray, i * 3, vertexNormals )
;
}
for ( var i = 0, l = indexarray.length / size; i < l; i ++ ) {
} else {
for ( var i = 0, l = positionarray.length / 3; i < l; i += 3 ) {
var o = i *
size
;
var o = i *
3
;
// Generate faceVertexNormals
var vertexNormals;
var v1 = i, v2 = i+1, v3 = i+2;
// Generate face.vertexNormals and face.vertexColors
// TODO - do BufferGeometries support face normals/face colors?
// Maybe they could be implemented using some sort of TypedMultiVector3 which would let us expose a single
// face.normal Vector3, and it would simultaneously update the three vertexNormals involved in this face with the same values
var vertexNormals = false,
vertexColors = false;
if (normalarray) {
vertexNormals = [
new THREE.
ProxyVector3( normalarray, indexarray[ o ] * 3
),
new THREE.
ProxyVector3( normalarray, indexarray[ o + 1 ] * 3
),
new THREE.
ProxyVector3( normalarray, indexarray[ o + 2 ] * 3 )
]
new THREE.
TypedVector3(normalarray, o
),
new THREE.
TypedVector3(normalarray, o+3
),
new THREE.
TypedVector3(normalarray, o+6),
]
;
}
// TODO - do BufferGeometries support face normals?
if (colorarray) {
var face = new THREE.ProxyFace3( indexarray, i * size, vertexNormals );
vertexColors = [
new THREE.TypedColor(colorarray, o),
new THREE.TypedColor(colorarray, o+3),
new THREE.TypedColor(colorarray, o+6),
];
attr.push( face );
}
}
var face = new THREE.Face3( v1, v2, v3, vertexNormals, vertexColors );
} else {
faces.push(face);
// TODO - should be able to generate Face data even for non-indexed geometries
}
}
...
...
@@ -10764,8 +10827,7 @@ THREE.Geometry99.prototype.createFaceProxies = function () {
return this.faces;
};
}
THREE.Geometry99.prototype.createUvProxies = function () {
// Replace the prototype getter with a local array property
...
...
@@ -10783,9 +10845,9 @@ THREE.Geometry99.prototype.createUvProxies = function () {
var f = faces[i];
this.faceVertexUvs[0][i] = [];
this.faceVertexUvs[0][i][0] = new THREE.
Proxy
Vector2(uvarray, f.a * 2);
this.faceVertexUvs[0][i][1] = new THREE.
Proxy
Vector2(uvarray, f.b * 2);
this.faceVertexUvs[0][i][2] = new THREE.
Proxy
Vector2(uvarray, f.c * 2);
this.faceVertexUvs[0][i][0] = new THREE.
Typed
Vector2(uvarray, f.a * 2);
this.faceVertexUvs[0][i][1] = new THREE.
Typed
Vector2(uvarray, f.b * 2);
this.faceVertexUvs[0][i][2] = new THREE.
Typed
Vector2(uvarray, f.c * 2);
}
...
...
@@ -10795,7 +10857,7 @@ THREE.Geometry99.prototype.createUvProxies = function () {
return this.faceVertexUvs;
}
;
}
THREE.Geometry99.prototype.populateProxyFromBuffer = function ( attr, buffername, proxytype, itemsize, offset, count ) {
...
...
@@ -10804,7 +10866,7 @@ THREE.Geometry99.prototype.populateProxyFromBuffer = function ( attr, buffername
var array = this.attributes[ buffername ].array;
var size = itemsize || this.attributes[ buffername ].itemSize;
var start = offset || 0;
count = count || ( array.length / size - start );
for ( var i = start, l = start + count; i < l; i ++ ) {
...
...
@@ -10815,38 +10877,20 @@ THREE.Geometry99.prototype.populateProxyFromBuffer = function ( attr, buffername
}
};
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.IndexedGeometry2 = function ( indices, vertices, normals, uvs ) {
THREE.BufferGeometry.call( this );
this.attributes[ 'index' ] = { array: indices, itemSize: 1 };
this.attributes[ 'position' ] = { array: vertices, itemSize: 3 };
this.attributes[ 'normal' ] = { array: normals, itemSize: 3 };
this.attributes[ 'uv' ] = { array: uvs, itemSize: 2 };
};
THREE.IndexedGeometry2.prototype = Object.create( THREE.Geometry99.prototype );
}
/**
* @author mrdoob / http://mrdoob.com/
*/
// Proxies
THREE.
Proxy
Vector2 = function ( array, offset ) {
THREE.
Typed
Vector2 = function ( array, offset ) {
this.array = array;
this.offset = offset;
};
THREE.
Proxy
Vector2.prototype = Object.create( THREE.Vector2.prototype );
THREE.
Typed
Vector2.prototype = Object.create( THREE.Vector2.prototype );
Object.defineProperties( THREE.
Proxy
Vector2.prototype, {
Object.defineProperties( THREE.
Typed
Vector2.prototype, {
'x': {
get: function () { return this.array[ this.offset ]; },
set: function ( v ) { this.array[ this.offset ] = v; }
...
...
@@ -10856,20 +10900,20 @@ Object.defineProperties( THREE.ProxyVector2.prototype, {
set: function ( v ) { this.array[ this.offset + 1 ] = v; }
}
} );
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.ProxyVector3 = function ( array, offset ) {
//
THREE.TypedVector3 = function ( array, offset ) {
this.array = array;
this.offset = offset;
};
THREE.
Proxy
Vector3.prototype = Object.create( THREE.Vector3.prototype );
THREE.
Typed
Vector3.prototype = Object.create( THREE.Vector3.prototype );
Object.defineProperties( THREE.
Proxy
Vector3.prototype, {
Object.defineProperties( THREE.
Typed
Vector3.prototype, {
'x': {
get: function () { return this.array[ this.offset ]; },
set: function ( v ) { this.array[ this.offset ] = v; }
...
...
@@ -10883,11 +10927,10 @@ Object.defineProperties( THREE.ProxyVector3.prototype, {
set: function ( v ) { this.array[ this.offset + 2 ] = v; }
}
} );
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.ProxyFace3 = function ( array, offset, vertexNormals ) {
//
THREE.TypedFace3 = function ( array, offset, vertexNormals ) {
this.array = array;
this.offset = offset;
...
...
@@ -10897,25 +10940,67 @@ THREE.ProxyFace3 = function ( array, offset, vertexNormals ) {
}
THREE.
Proxy
Face3.prototype = Object.create( THREE.Face3.prototype );
THREE.
Typed
Face3.prototype = Object.create( THREE.Face3.prototype );
Object.defineProperties( THREE.
Proxy
Face3.prototype, {
Object.defineProperties( THREE.
Typed
Face3.prototype, {
'a': {
enumerable: true,
enumerable: true,
get: function () { return this.array[ this.offset ]; },
set: function ( v ) { this.array[ this.offset ] = v; }
},
'b': {
enumerable: true,
enumerable: true,
get: function () { return this.array[ this.offset + 1 ]; },
set: function ( v ) { this.array[ this.offset + 1 ] = v; }
},
'c': {
enumerable: true,
enumerable: true,
get: function () { return this.array[ this.offset + 2 ]; },
set: function ( v ) { this.array[ this.offset + 2 ] = v; }
},
} );
THREE.TypedColor = function ( array, offset ) {
this.array = array;
this.offset = offset;
}
THREE.TypedColor.prototype = Object.create( THREE.Color.prototype );
Object.defineProperties( THREE.TypedColor.prototype, {
'r': {
enumerable: true,
get: function () { return this.array[ this.offset ]; },
set: function ( v ) { this.array[ this.offset ] = v; }
},
'g': {
enumerable: true,
get: function () { return this.array[ this.offset + 1 ]; },
set: function ( v ) { this.array[ this.offset + 1 ] = v; }
},
'b': {
enumerable: true,
get: function () { return this.array[ this.offset + 2 ]; },
set: function ( v ) { this.array[ this.offset + 2 ] = v; }
}
} );
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.IndexedGeometry2 = function ( indices, vertices, normals, uvs ) {
THREE.BufferGeometry.call( this );
this.attributes[ 'index' ] = { array: indices, itemSize: 1 };
this.attributes[ 'position' ] = { array: vertices, itemSize: 3 };
this.attributes[ 'normal' ] = { array: normals, itemSize: 3 };
this.attributes[ 'uv' ] = { array: uvs, itemSize: 2 };
};
THREE.IndexedGeometry2.prototype = Object.create( THREE.Geometry99.prototype );
/**
* @author mrdoob / http://mrdoob.com/
* @author mikael emtinger / http://gomo.se/
...
...
build/three.min.js
浏览文件 @
e7f97fa5
...
...
@@ -214,12 +214,17 @@ this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoin
c
[
f
]
=
c
[
a
[
d
]];
a
=
[];
f
=
0
;
for
(
g
=
this
.
faces
.
length
;
f
<
g
;
f
++
)
for
(
e
=
this
.
faces
[
f
],
e
.
a
=
c
[
e
.
a
],
e
.
b
=
c
[
e
.
b
],
e
.
c
=
c
[
e
.
c
],
e
=
[
e
.
a
,
e
.
b
,
e
.
c
],
d
=
0
;
3
>
d
;
d
++
)
if
(
e
[
d
]
==
e
[(
d
+
1
)
%
3
]){
a
.
push
(
f
);
break
}
for
(
f
=
a
.
length
-
1
;
0
<=
f
;
f
--
)
for
(
e
=
a
[
f
],
this
.
faces
.
splice
(
e
,
1
),
c
=
0
,
g
=
this
.
faceVertexUvs
.
length
;
c
<
g
;
c
++
)
this
.
faceVertexUvs
[
c
].
splice
(
e
,
1
);
f
=
this
.
vertices
.
length
-
b
.
length
;
this
.
vertices
=
b
;
return
f
},
makeGroups
:
function
(){
var
a
=
0
;
return
function
(
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
{},
k
=
this
.
morphTargets
.
length
,
l
=
this
.
morphNormals
.
length
;
this
.
geometryGroups
=
{};
d
=
0
;
for
(
e
=
this
.
faces
.
length
;
d
<
e
;
d
++
)
f
=
this
.
faces
[
d
],
f
=
b
?
f
.
materialIndex
:
0
,
f
in
h
||
(
h
[
f
]
=
{
hash
:
f
,
counter
:
0
}),
g
=
h
[
f
].
hash
+
"
_
"
+
h
[
f
].
counter
,
g
in
this
.
geometryGroups
||
(
this
.
geometryGroups
[
g
]
=
{
faces3
:[],
materialIndex
:
f
,
vertices
:
0
,
numMorphTargets
:
k
,
numMorphNormals
:
l
}),
this
.
geometryGroups
[
g
].
vertices
+
3
>
c
&&
(
h
[
f
].
counter
+=
1
,
g
=
h
[
f
].
hash
+
"
_
"
+
h
[
f
].
counter
,
g
in
this
.
geometryGroups
||
(
this
.
geometryGroups
[
g
]
=
{
faces3
:[],
materialIndex
:
f
,
vertices
:
0
,
numMorphTargets
:
k
,
numMorphNormals
:
l
})),
this
.
geometryGroups
[
g
].
faces3
.
push
(
d
),
this
.
geometryGroups
[
g
].
vertices
+=
3
;
this
.
geometryGroupsList
=
[];
for
(
var
n
in
this
.
geometryGroups
)
this
.
geometryGroups
[
n
].
id
=
a
++
,
this
.
geometryGroupsList
.
push
(
this
.
geometryGroups
[
n
])}}(),
clone
:
function
(){
for
(
var
a
=
new
THREE
.
Geometry
,
b
=
this
.
vertices
,
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
a
.
vertices
.
push
(
b
[
c
].
clone
());
b
=
this
.
faces
;
c
=
0
;
for
(
d
=
b
.
length
;
c
<
d
;
c
++
)
a
.
faces
.
push
(
b
[
c
].
clone
());
b
=
this
.
faceVertexUvs
[
0
];
c
=
0
;
for
(
d
=
b
.
length
;
c
<
d
;
c
++
){
for
(
var
e
=
b
[
c
],
f
=
[],
g
=
0
,
h
=
e
.
length
;
g
<
h
;
g
++
)
f
.
push
(
new
THREE
.
Vector2
(
e
[
g
].
x
,
e
[
g
].
y
));
a
.
faceVertexUvs
[
0
].
push
(
f
)}
return
a
},
dispose
:
function
(){
this
.
dispatchEvent
({
type
:
"
dispose
"
})}};
THREE
.
EventDispatcher
.
prototype
.
apply
(
THREE
.
Geometry
.
prototype
);
THREE
.
GeometryIdCount
=
0
;
THREE
.
Geometry2
=
function
(
a
,
b
,
c
){
THREE
.
BufferGeometry
.
call
(
this
);
this
.
attributes
.
position
=
{
array
:
a
,
itemSize
:
3
};
this
.
attributes
.
normal
=
{
array
:
b
,
itemSize
:
3
};
this
.
attributes
.
uv
=
{
array
:
c
,
itemSize
:
2
}};
THREE
.
Geometry2
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
THREE
.
Geometry99
=
function
(){
THREE
.
BufferGeometry
.
call
(
this
)};
THREE
.
Geometry99
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
Object
.
defineProperties
(
THREE
.
Geometry99
.
prototype
,{
vertices
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createVertexProxies
()}},
faces
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createFaceProxies
()}},
faceVertexUvs
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createUvProxies
()}}});
THREE
.
Geometry99
.
prototype
.
createVertexProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
vertices
"
,{
value
:[]});
this
.
populateProxyFromBuffer
(
this
.
vertices
,
"
position
"
,
THREE
.
ProxyVector3
,
3
);
return
this
.
vertices
};
THREE
.
Geometry99
.
prototype
.
createFaceProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
faces
"
,{
value
:[]});
if
(
this
.
attributes
.
index
){
var
a
=
this
.
attributes
.
index
.
array
,
b
=
this
.
faces
,
c
=!
1
;
this
.
attributes
.
normal
&&
(
c
=
this
.
attributes
.
normal
.
array
);
for
(
var
d
=
0
,
e
=
a
.
length
/
3
;
d
<
e
;
d
++
){
var
f
=
3
*
d
,
g
;
c
&&
(
g
=
[
new
THREE
.
ProxyVector3
(
c
,
3
*
a
[
f
]),
new
THREE
.
ProxyVector3
(
c
,
3
*
a
[
f
+
1
]),
new
THREE
.
ProxyVector3
(
c
,
3
*
a
[
f
+
2
])]);
f
=
new
THREE
.
ProxyFace3
(
a
,
3
*
d
,
g
);
b
.
push
(
f
)}}
return
this
.
faces
};
THREE
.
Geometry99
.
prototype
.
createUvProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
faceVertexUvs
"
,{
value
:[[]]});
if
(
this
.
attributes
.
uv
)
for
(
var
a
=
this
.
faces
,
b
=
this
.
attributes
.
uv
.
array
,
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
){
var
e
=
a
[
c
];
this
.
faceVertexUvs
[
0
][
c
]
=
[];
this
.
faceVertexUvs
[
0
][
c
][
0
]
=
new
THREE
.
ProxyVector2
(
b
,
2
*
e
.
a
);
this
.
faceVertexUvs
[
0
][
c
][
1
]
=
new
THREE
.
ProxyVector2
(
b
,
2
*
e
.
b
);
this
.
faceVertexUvs
[
0
][
c
][
2
]
=
new
THREE
.
ProxyVector2
(
b
,
2
*
e
.
c
)}
return
this
.
faceVertexUvs
};
THREE
.
Geometry99
.
prototype
.
populateProxyFromBuffer
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
if
(
this
.
attributes
[
b
]){
var
g
=
this
.
attributes
[
b
].
array
;
b
=
d
||
this
.
attributes
[
b
].
itemSize
;
d
=
e
||
0
;
f
=
f
||
g
.
length
/
b
-
d
;
e
=
d
;
for
(
f
=
d
+
f
;
e
<
f
;
e
++
)
a
.
push
(
new
c
(
g
,
e
*
b
))}};
THREE
.
IndexedGeometry2
=
function
(
a
,
b
,
c
,
d
){
THREE
.
BufferGeometry
.
call
(
this
);
this
.
attributes
.
index
=
{
array
:
a
,
itemSize
:
1
};
this
.
attributes
.
position
=
{
array
:
b
,
itemSize
:
3
};
this
.
attributes
.
normal
=
{
array
:
c
,
itemSize
:
3
};
this
.
attributes
.
uv
=
{
array
:
d
,
itemSize
:
2
}};
THREE
.
IndexedGeometry2
.
prototype
=
Object
.
create
(
THREE
.
Geometry99
.
prototype
);
THREE
.
ProxyVector2
=
function
(
a
,
b
){
this
.
array
=
a
;
this
.
offset
=
b
};
THREE
.
ProxyVector2
.
prototype
=
Object
.
create
(
THREE
.
Vector2
.
prototype
);
Object
.
defineProperties
(
THREE
.
ProxyVector2
.
prototype
,{
x
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
y
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}}});
THREE
.
ProxyVector3
=
function
(
a
,
b
){
this
.
array
=
a
;
this
.
offset
=
b
};
THREE
.
ProxyVector3
.
prototype
=
Object
.
create
(
THREE
.
Vector3
.
prototype
);
Object
.
defineProperties
(
THREE
.
ProxyVector3
.
prototype
,{
x
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
y
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}},
z
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
2
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
2
]
=
a
}}});
THREE
.
ProxyFace3
=
function
(
a
,
b
,
c
){
this
.
array
=
a
;
this
.
offset
=
b
;
this
.
vertexNormals
=
c
};
THREE
.
ProxyFace3
.
prototype
=
Object
.
create
(
THREE
.
Face3
.
prototype
);
Object
.
defineProperties
(
THREE
.
ProxyFace3
.
prototype
,{
a
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
b
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}},
c
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
2
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
2
]
=
a
}}});
THREE
.
Camera
=
function
(){
THREE
.
Object3D
.
call
(
this
);
this
.
matrixWorldInverse
=
new
THREE
.
Matrix4
;
this
.
projectionMatrix
=
new
THREE
.
Matrix4
};
THREE
.
Camera
.
prototype
=
Object
.
create
(
THREE
.
Object3D
.
prototype
);
THREE
.
Camera
.
prototype
.
lookAt
=
function
(){
var
a
=
new
THREE
.
Matrix4
;
return
function
(
b
){
a
.
lookAt
(
this
.
position
,
b
,
this
.
up
);
this
.
quaternion
.
setFromRotationMatrix
(
a
)}}();
dispose
:
function
(){
this
.
dispatchEvent
({
type
:
"
dispose
"
})}};
THREE
.
EventDispatcher
.
prototype
.
apply
(
THREE
.
Geometry
.
prototype
);
THREE
.
GeometryIdCount
=
0
;
THREE
.
Geometry2
=
function
(
a
,
b
,
c
){
THREE
.
BufferGeometry
.
call
(
this
);
this
.
attributes
.
position
=
{
array
:
a
,
itemSize
:
3
};
this
.
attributes
.
normal
=
{
array
:
b
,
itemSize
:
3
};
this
.
attributes
.
uv
=
{
array
:
c
,
itemSize
:
2
}};
THREE
.
Geometry2
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
THREE
.
Geometry99
=
function
(){
THREE
.
BufferGeometry
.
call
(
this
)};
THREE
.
Geometry99
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
Object
.
defineProperties
(
THREE
.
Geometry99
.
prototype
,{
vertices
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createVertexProxies
()}},
faces
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createFaceProxies
()}},
faceVertexUvs
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
createUvProxies
()}},
verticesNeedUpdate
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
attributes
.
position
.
needsUpdate
},
set
:
function
(
a
){
this
.
attributes
.
position
.
needsUpdate
=
a
}},
colorsNeedUpdate
:{
enumerable
:
!
0
,
get
:
function
(){
if
(
this
.
attributes
.
color
)
return
this
.
attributes
.
color
.
needsUpdate
},
set
:
function
(
a
){
this
.
attributes
.
color
&&
(
this
.
attributes
.
color
.
needsUpdate
=
a
)}},
normalsNeedUpdate
:{
enumerable
:
!
0
,
get
:
function
(){
if
(
this
.
attributes
.
normal
)
return
this
.
attributes
.
normal
.
needsUpdate
},
set
:
function
(
a
){
this
.
attributes
.
normal
&&
(
this
.
attributes
.
normal
.
needsUpdate
=
a
)}}});
THREE
.
Geometry99
.
prototype
.
createVertexProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
vertices
"
,{
value
:[]});
this
.
populateProxyFromBuffer
(
this
.
vertices
,
"
position
"
,
THREE
.
TypedVector3
,
3
);
return
this
.
vertices
};
THREE
.
Geometry99
.
prototype
.
createFaceProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
faces
"
,{
value
:[]});
var
a
=
this
.
faces
,
b
=!
1
,
c
=!
1
,
d
=!
1
,
e
=!
1
;
this
.
attributes
.
position
&&
(
c
=
this
.
attributes
.
position
.
array
);
this
.
attributes
.
index
&&
(
b
=
this
.
attributes
.
index
.
array
);
this
.
attributes
.
normal
&&
(
d
=
this
.
attributes
.
normal
.
array
);
this
.
attributes
.
color
&&
(
e
=
this
.
attributes
.
color
.
array
);
if
(
b
)
for
(
var
f
=
0
,
c
=
b
.
length
/
3
;
f
<
c
;
f
++
){
var
g
=
3
*
f
,
h
=!
1
,
k
=!
1
;
d
&&
(
h
=
[
new
THREE
.
TypedVector3
(
d
,
3
*
b
[
g
]),
new
THREE
.
TypedVector3
(
d
,
3
*
b
[
g
+
1
]),
new
THREE
.
TypedVector3
(
d
,
3
*
b
[
g
+
2
])]);
e
&&
(
new
THREE
.
TypedColor
(
e
,
3
*
b
[
g
]),
new
THREE
.
TypedColor
(
e
,
3
*
b
[
g
+
1
]),
new
THREE
.
TypedColor
(
e
,
3
*
b
[
g
+
2
]));
g
=
new
THREE
.
TypedFace3
(
b
,
3
*
f
,
h
)}
else
for
(
f
=
0
,
c
=
c
.
length
/
3
;
f
<
c
;
f
+=
3
){
var
g
=
3
*
f
,
b
=
f
,
l
=
f
+
1
,
n
=
f
+
2
,
k
=
h
=!
1
;
d
&&
(
h
=
[
new
THREE
.
TypedVector3
(
d
,
g
),
new
THREE
.
TypedVector3
(
d
,
g
+
3
),
new
THREE
.
TypedVector3
(
d
,
g
+
6
)]);
e
&&
(
k
=
[
new
THREE
.
TypedColor
(
e
,
g
),
new
THREE
.
TypedColor
(
e
,
g
+
3
),
new
THREE
.
TypedColor
(
e
,
g
+
6
)]);
g
=
new
THREE
.
Face3
(
b
,
l
,
n
,
h
,
k
);
a
.
push
(
g
)}
return
this
.
faces
};
THREE
.
Geometry99
.
prototype
.
createUvProxies
=
function
(){
Object
.
defineProperty
(
this
,
"
faceVertexUvs
"
,{
value
:[[]]});
if
(
this
.
attributes
.
uv
)
for
(
var
a
=
this
.
faces
,
b
=
this
.
attributes
.
uv
.
array
,
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
){
var
e
=
a
[
c
];
this
.
faceVertexUvs
[
0
][
c
]
=
[];
this
.
faceVertexUvs
[
0
][
c
][
0
]
=
new
THREE
.
TypedVector2
(
b
,
2
*
e
.
a
);
this
.
faceVertexUvs
[
0
][
c
][
1
]
=
new
THREE
.
TypedVector2
(
b
,
2
*
e
.
b
);
this
.
faceVertexUvs
[
0
][
c
][
2
]
=
new
THREE
.
TypedVector2
(
b
,
2
*
e
.
c
)}
return
this
.
faceVertexUvs
};
THREE
.
Geometry99
.
prototype
.
populateProxyFromBuffer
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
if
(
this
.
attributes
[
b
]){
var
g
=
this
.
attributes
[
b
].
array
;
b
=
d
||
this
.
attributes
[
b
].
itemSize
;
d
=
e
||
0
;
f
=
f
||
g
.
length
/
b
-
d
;
e
=
d
;
for
(
f
=
d
+
f
;
e
<
f
;
e
++
)
a
.
push
(
new
c
(
g
,
e
*
b
))}};
THREE
.
TypedVector2
=
function
(
a
,
b
){
this
.
array
=
a
;
this
.
offset
=
b
};
THREE
.
TypedVector2
.
prototype
=
Object
.
create
(
THREE
.
Vector2
.
prototype
);
Object
.
defineProperties
(
THREE
.
TypedVector2
.
prototype
,{
x
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
y
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}}});
THREE
.
TypedVector3
=
function
(
a
,
b
){
this
.
array
=
a
;
this
.
offset
=
b
};
THREE
.
TypedVector3
.
prototype
=
Object
.
create
(
THREE
.
Vector3
.
prototype
);
Object
.
defineProperties
(
THREE
.
TypedVector3
.
prototype
,{
x
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
y
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}},
z
:{
get
:
function
(){
return
this
.
array
[
this
.
offset
+
2
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
2
]
=
a
}}});
THREE
.
TypedFace3
=
function
(
a
,
b
,
c
){
this
.
array
=
a
;
this
.
offset
=
b
;
this
.
vertexNormals
=
c
};
THREE
.
TypedFace3
.
prototype
=
Object
.
create
(
THREE
.
Face3
.
prototype
);
Object
.
defineProperties
(
THREE
.
TypedFace3
.
prototype
,{
a
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
b
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}},
c
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
2
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
2
]
=
a
}}});
THREE
.
TypedColor
=
function
(
a
,
b
){
this
.
array
=
a
;
this
.
offset
=
b
};
THREE
.
TypedColor
.
prototype
=
Object
.
create
(
THREE
.
Color
.
prototype
);
Object
.
defineProperties
(
THREE
.
TypedColor
.
prototype
,{
r
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
]
=
a
}},
g
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
1
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
1
]
=
a
}},
b
:{
enumerable
:
!
0
,
get
:
function
(){
return
this
.
array
[
this
.
offset
+
2
]},
set
:
function
(
a
){
this
.
array
[
this
.
offset
+
2
]
=
a
}}});
THREE
.
IndexedGeometry2
=
function
(
a
,
b
,
c
,
d
){
THREE
.
BufferGeometry
.
call
(
this
);
this
.
attributes
.
index
=
{
array
:
a
,
itemSize
:
1
};
this
.
attributes
.
position
=
{
array
:
b
,
itemSize
:
3
};
this
.
attributes
.
normal
=
{
array
:
c
,
itemSize
:
3
};
this
.
attributes
.
uv
=
{
array
:
d
,
itemSize
:
2
}};
THREE
.
IndexedGeometry2
.
prototype
=
Object
.
create
(
THREE
.
Geometry99
.
prototype
);
THREE
.
Camera
=
function
(){
THREE
.
Object3D
.
call
(
this
);
this
.
matrixWorldInverse
=
new
THREE
.
Matrix4
;
this
.
projectionMatrix
=
new
THREE
.
Matrix4
};
THREE
.
Camera
.
prototype
=
Object
.
create
(
THREE
.
Object3D
.
prototype
);
THREE
.
Camera
.
prototype
.
lookAt
=
function
(){
var
a
=
new
THREE
.
Matrix4
;
return
function
(
b
){
a
.
lookAt
(
this
.
position
,
b
,
this
.
up
);
this
.
quaternion
.
setFromRotationMatrix
(
a
)}}();
THREE
.
Camera
.
prototype
.
clone
=
function
(
a
){
void
0
===
a
&&
(
a
=
new
THREE
.
Camera
);
THREE
.
Object3D
.
prototype
.
clone
.
call
(
this
,
a
);
a
.
matrixWorldInverse
.
copy
(
this
.
matrixWorldInverse
);
a
.
projectionMatrix
.
copy
(
this
.
projectionMatrix
);
return
a
};
THREE
.
OrthographicCamera
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
THREE
.
Camera
.
call
(
this
);
this
.
left
=
a
;
this
.
right
=
b
;
this
.
top
=
c
;
this
.
bottom
=
d
;
this
.
near
=
void
0
!==
e
?
e
:
0.1
;
this
.
far
=
void
0
!==
f
?
f
:
2
E3
;
this
.
updateProjectionMatrix
()};
THREE
.
OrthographicCamera
.
prototype
=
Object
.
create
(
THREE
.
Camera
.
prototype
);
THREE
.
OrthographicCamera
.
prototype
.
updateProjectionMatrix
=
function
(){
this
.
projectionMatrix
.
makeOrthographic
(
this
.
left
,
this
.
right
,
this
.
top
,
this
.
bottom
,
this
.
near
,
this
.
far
)};
THREE
.
OrthographicCamera
.
prototype
.
clone
=
function
(){
var
a
=
new
THREE
.
OrthographicCamera
;
THREE
.
Camera
.
prototype
.
clone
.
call
(
this
,
a
);
a
.
left
=
this
.
left
;
a
.
right
=
this
.
right
;
a
.
top
=
this
.
top
;
a
.
bottom
=
this
.
bottom
;
a
.
near
=
this
.
near
;
a
.
far
=
this
.
far
;
return
a
};
THREE
.
PerspectiveCamera
=
function
(
a
,
b
,
c
,
d
){
THREE
.
Camera
.
call
(
this
);
this
.
fov
=
void
0
!==
a
?
a
:
50
;
this
.
aspect
=
void
0
!==
b
?
b
:
1
;
this
.
near
=
void
0
!==
c
?
c
:
0.1
;
this
.
far
=
void
0
!==
d
?
d
:
2
E3
;
this
.
updateProjectionMatrix
()};
THREE
.
PerspectiveCamera
.
prototype
=
Object
.
create
(
THREE
.
Camera
.
prototype
);
THREE
.
PerspectiveCamera
.
prototype
.
setLens
=
function
(
a
,
b
){
void
0
===
b
&&
(
b
=
24
);
this
.
fov
=
2
*
THREE
.
Math
.
radToDeg
(
Math
.
atan
(
b
/
(
2
*
a
)));
this
.
updateProjectionMatrix
()};
THREE
.
PerspectiveCamera
.
prototype
.
setViewOffset
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
fullWidth
=
a
;
this
.
fullHeight
=
b
;
this
.
x
=
c
;
this
.
y
=
d
;
this
.
width
=
e
;
this
.
height
=
f
;
this
.
updateProjectionMatrix
()};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录