Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
e86c5653
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,发现更多精彩内容 >>
提交
e86c5653
编写于
8月 10, 2012
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed handling of doubleSided / flipSided in Loader and GeometryLoader.
上级
67079ebe
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
173 addition
and
155 deletion
+173
-155
build/Three.js
build/Three.js
+15
-15
build/custom/ThreeCanvas.js
build/custom/ThreeCanvas.js
+126
-126
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+10
-10
src/loaders/GeometryLoader.js
src/loaders/GeometryLoader.js
+18
-0
src/loaders/Loader.js
src/loaders/Loader.js
+4
-4
未找到文件。
build/Three.js
浏览文件 @
e86c5653
此差异已折叠。
点击以展开。
build/custom/ThreeCanvas.js
浏览文件 @
e86c5653
此差异已折叠。
点击以展开。
build/custom/ThreeWebGL.js
浏览文件 @
e86c5653
...
...
@@ -132,9 +132,9 @@ THREE.Loader.prototype={constructor:THREE.Loader,crossOrigin:"anonymous",addStat
a
.
total
).
toFixed
(
0
)
+
"
%
"
):
b
+
((
a
.
loaded
/
1
E3
).
toFixed
(
2
)
+
"
KB
"
);
this
.
statusDomElement
.
innerHTML
=
b
},
extractUrlBase
:
function
(
a
){
a
=
a
.
split
(
"
/
"
);
a
.
pop
();
return
(
a
.
length
<
1
?
"
.
"
:
a
.
join
(
"
/
"
))
+
"
/
"
},
initMaterials
:
function
(
a
,
b
,
c
){
a
.
materials
=
[];
for
(
var
d
=
0
;
d
<
b
.
length
;
++
d
)
a
.
materials
[
d
]
=
THREE
.
Loader
.
prototype
.
createMaterial
(
b
[
d
],
c
)},
hasNormals
:
function
(
a
){
var
b
,
c
,
d
=
a
.
materials
.
length
;
for
(
c
=
0
;
c
<
d
;
c
++
){
b
=
a
.
materials
[
c
];
if
(
b
instanceof
THREE
.
ShaderMaterial
)
return
true
}
return
false
},
createMaterial
:
function
(
a
,
b
){
function
c
(
a
){
a
=
Math
.
log
(
a
)
/
Math
.
LN2
;
return
Math
.
floor
(
a
)
==
a
}
function
d
(
a
){
a
=
Math
.
log
(
a
)
/
Math
.
LN2
;
return
Math
.
pow
(
2
,
Math
.
round
(
a
))}
function
e
(
a
,
b
){
var
f
=
new
Image
;
f
.
onload
=
function
(){
if
(
!
c
(
this
.
width
)
||!
c
(
this
.
height
)){
var
b
=
d
(
this
.
width
),
f
=
d
(
this
.
height
);
a
.
image
.
width
=
b
;
a
.
image
.
height
=
f
;
a
.
image
.
getContext
(
"
2d
"
).
drawImage
(
this
,
0
,
0
,
b
,
f
)}
else
a
.
image
=
this
;
a
.
needsUpdate
=
true
};
f
.
crossOrigin
=
j
.
crossOrigin
;
f
.
src
=
b
}
function
f
(
a
,
c
,
d
,
f
,
h
,
j
){
var
i
=
document
.
createElement
(
"
canvas
"
);
a
[
c
]
=
new
THREE
.
Texture
(
i
);
a
[
c
].
sourceFile
=
d
;
if
(
f
){
a
[
c
].
repeat
.
set
(
f
[
0
],
f
[
1
]);
if
(
f
[
0
]
!=
1
)
a
[
c
].
wrapS
=
THREE
.
RepeatWrapping
;
if
(
f
[
1
]
!=
1
)
a
[
c
].
wrapT
=
THREE
.
RepeatWrapping
}
h
&&
a
[
c
].
offset
.
set
(
h
[
0
],
h
[
1
]);
if
(
j
){
f
=
{
repeat
:
THREE
.
RepeatWrapping
,
mirror
:
THREE
.
MirroredRepeatWrapping
};
if
(
f
[
j
[
0
]]
!==
void
0
)
a
[
c
].
wrapS
=
f
[
j
[
0
]];
if
(
f
[
j
[
1
]]
!==
void
0
)
a
[
c
].
wrapT
=
f
[
j
[
1
]]}
e
(
a
[
c
],
b
+
"
/
"
+
d
)}
function
h
(
a
){
return
(
a
[
0
]
*
255
<<
16
)
+
(
a
[
1
]
*
255
<<
8
)
+
a
[
2
]
*
255
}
var
j
=
this
,
l
=
"
MeshLambertMaterial
"
,
k
=
{
color
:
15658734
,
opacity
:
1
,
map
:
null
,
lightMap
:
null
,
normalMap
:
null
,
wireframe
:
false
};
if
(
a
.
shading
){
var
i
=
a
.
shading
.
toLowerCase
();
i
===
"
phong
"
?
l
=
"
MeshPhongMaterial
"
:
i
===
"
basic
"
&&
(
l
=
"
MeshBasicMaterial
"
)}
if
(
a
.
blending
!==
void
0
&&
THREE
[
a
.
blending
]
!==
void
0
)
k
.
blending
=
THREE
[
a
.
blending
];
if
(
a
.
transparent
!==
void
0
||
a
.
opacity
<
1
)
k
.
transparent
=
a
.
transparent
;
if
(
a
.
depthTest
!==
void
0
)
k
.
depthTest
=
a
.
depthTest
;
if
(
a
.
depthWrite
!==
void
0
)
k
.
depthWrite
=
a
.
depthWrite
;
if
(
a
.
visible
!==
void
0
)
k
.
visible
=
a
.
visible
;
if
(
a
.
doubleSided
!==
void
0
)
k
.
doubleSided
=
a
.
doubleSided
;
if
(
a
.
flipSided
!==
void
0
)
k
.
flipSided
=
a
.
flipSided
;
if
(
a
.
wireframe
!=
=
void
0
)
k
.
wireframe
=
a
.
wireframe
;
if
(
a
.
vertexColors
!==
void
0
)
if
(
a
.
vertexColors
==
"
face
"
)
k
.
vertexColors
=
THREE
.
FaceColors
;
else
if
(
a
.
vertexColors
)
k
.
vertexColors
=
THREE
.
VertexColors
;
if
(
a
.
colorDiffuse
)
k
.
color
=
h
(
a
.
colorDiffuse
);
else
if
(
a
.
DbgColor
)
k
.
color
=
a
.
DbgColor
;
if
(
a
.
colorSpecular
)
k
.
specular
=
h
(
a
.
colorSpecular
);
if
(
a
.
colorAmbient
)
k
.
ambient
=
h
(
a
.
colorAmbient
);
if
(
a
.
transparency
)
k
.
opacity
=
a
.
transparency
;
if
(
a
.
specularCoef
)
k
.
shininess
=
a
.
specularCoef
;
a
.
mapDiffuse
&&
b
&&
f
(
k
,
"
map
"
,
a
.
mapDiffuse
,
a
.
mapDiffuseRepeat
,
a
.
mapDiffuseOffset
,
a
.
map
DiffuseWrap
);
a
.
map
Light
&&
b
&&
f
(
k
,
"
lightMap
"
,
a
.
mapLight
,
a
.
mapLightRepeat
,
a
.
mapLightOffset
,
a
.
mapLightWrap
);
a
.
mapNormal
&&
b
&&
f
(
k
,
"
normalMap
"
,
a
.
mapNormal
,
a
.
mapNormalRepeat
,
a
.
mapNormalOffset
,
a
.
mapNormalWrap
);
a
.
mapSpecular
&&
b
&&
f
(
k
,
"
specularMap
"
,
a
.
mapSpecular
,
a
.
mapSpecularRepeat
,
a
.
mapSpecularOffset
,
a
.
mapSpecularWrap
);
if
(
a
.
mapNormal
){
l
=
THREE
.
ShaderUtils
.
lib
.
normal
;
i
=
THREE
.
UniformsUtils
.
clone
(
l
.
uniforms
);
i
.
tNormal
.
texture
=
k
.
normalMap
;
if
(
a
.
mapNormalFactor
)
i
.
uNormalScale
.
value
=
a
.
mapNormalFactor
;
if
(
k
.
map
){
i
.
tDiffuse
.
texture
=
a
.
shading
.
toLowerCase
();
i
===
"
phong
"
?
l
=
"
MeshPhongMaterial
"
:
i
===
"
basic
"
&&
(
l
=
"
MeshBasicMaterial
"
)}
if
(
a
.
blending
!==
void
0
&&
THREE
[
a
.
blending
]
!==
void
0
)
k
.
blending
=
THREE
[
a
.
blending
];
if
(
a
.
transparent
!==
void
0
||
a
.
opacity
<
1
)
k
.
transparent
=
a
.
transparent
;
if
(
a
.
depthTest
!==
void
0
)
k
.
depthTest
=
a
.
depthTest
;
if
(
a
.
depthWrite
!==
void
0
)
k
.
depthWrite
=
a
.
depthWrite
;
if
(
a
.
visible
!==
void
0
)
k
.
visible
=
a
.
visible
;
if
(
a
.
flipSided
!==
void
0
)
k
.
side
=
THREE
.
BackSide
;
if
(
a
.
doubleSided
!==
void
0
)
k
.
side
=
THREE
.
DoubleSide
;
if
(
a
.
wireframe
!==
void
0
)
k
.
wireframe
=
a
.
wireframe
;
if
(
a
.
vertexColors
!==
void
0
)
if
(
a
.
vertexColors
==
"
face
"
)
k
.
vertexColors
=
THREE
.
FaceColors
;
else
if
(
a
.
vertexColors
)
k
.
vertexColors
=
THREE
.
VertexColors
;
if
(
a
.
colorDiffuse
)
k
.
color
=
h
(
a
.
colorDiffuse
);
else
if
(
a
.
DbgColor
)
k
.
color
=
a
.
DbgColor
;
if
(
a
.
colorSpecular
)
k
.
specular
=
h
(
a
.
colorSpecular
);
if
(
a
.
colorAmbient
)
k
.
ambient
=
h
(
a
.
colorAmbient
);
if
(
a
.
transparency
)
k
.
opacity
=
a
.
transparency
;
if
(
a
.
specularCoef
)
k
.
shininess
=
a
.
specularCoef
;
a
.
mapDiffuse
&&
b
&&
f
(
k
,
"
map
"
,
a
.
mapDiffuse
,
a
.
mapDiffuseRepeat
,
a
.
mapDiffuseOffset
,
a
.
mapDiffuseWrap
);
a
.
mapLight
&&
b
&&
f
(
k
,
"
lightMap
"
,
a
.
mapLight
,
a
.
mapLightRepeat
,
a
.
mapLightOffset
,
a
.
mapLightWrap
);
a
.
mapNormal
&&
b
&&
f
(
k
,
"
normalMap
"
,
a
.
mapNormal
,
a
.
mapNormalRepeat
,
a
.
mapNormalOffset
,
a
.
mapNormalWrap
);
a
.
mapSpecular
&&
b
&&
f
(
k
,
"
specularMap
"
,
a
.
mapSpecular
,
a
.
mapSpecularRepeat
,
a
.
mapSpecularOffset
,
a
.
mapSpecularWrap
);
if
(
a
.
mapNormal
){
l
=
THREE
.
ShaderUtils
.
lib
.
normal
;
i
=
THREE
.
UniformsUtils
.
clone
(
l
.
uniforms
);
i
.
tNormal
.
texture
=
k
.
normalMap
;
if
(
a
.
mapNormalFactor
)
i
.
uNormalScale
.
value
=
a
.
mapNormalFactor
;
if
(
k
.
map
){
i
.
tDiffuse
.
texture
=
k
.
map
;
i
.
enableDiffuse
.
value
=
true
}
if
(
k
.
specularMap
){
i
.
tSpecular
.
texture
=
k
.
specularMap
;
i
.
enableSpecular
.
value
=
true
}
if
(
k
.
lightMap
){
i
.
tAO
.
texture
=
k
.
lightMap
;
i
.
enableAO
.
value
=
true
}
i
.
uDiffuseColor
.
value
.
setHex
(
k
.
color
);
i
.
uSpecularColor
.
value
.
setHex
(
k
.
specular
);
i
.
uAmbientColor
.
value
.
setHex
(
k
.
ambient
);
i
.
uShininess
.
value
=
k
.
shininess
;
if
(
k
.
opacity
!==
void
0
)
i
.
uOpacity
.
value
=
k
.
opacity
;
k
=
new
THREE
.
ShaderMaterial
({
fragmentShader
:
l
.
fragmentShader
,
vertexShader
:
l
.
vertexShader
,
uniforms
:
i
,
lights
:
true
,
fog
:
true
})}
else
k
=
new
THREE
[
l
](
k
);
if
(
a
.
DbgName
!==
void
0
)
k
.
name
=
a
.
DbgName
;
return
k
}};
THREE
.
BinaryLoader
=
function
(
a
){
THREE
.
Loader
.
call
(
this
,
a
)};
THREE
.
BinaryLoader
.
prototype
=
Object
.
create
(
THREE
.
Loader
.
prototype
);
THREE
.
BinaryLoader
.
prototype
.
load
=
function
(
a
,
b
,
c
,
d
){
var
c
=
c
?
c
:
this
.
extractUrlBase
(
a
),
d
=
d
?
d
:
this
.
extractUrlBase
(
a
),
e
=
this
.
showProgress
?
THREE
.
Loader
.
prototype
.
updateProgress
:
null
;
this
.
onLoadStart
();
this
.
loadAjaxJSON
(
this
,
a
,
b
,
c
,
d
,
e
)};
THREE
.
BinaryLoader
.
prototype
.
loadAjaxJSON
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
var
h
=
new
XMLHttpRequest
;
h
.
onreadystatechange
=
function
(){
if
(
h
.
readyState
==
4
)
if
(
h
.
status
==
200
||
h
.
status
==
0
){
var
j
=
JSON
.
parse
(
h
.
responseText
);
a
.
loadAjaxBuffers
(
j
,
c
,
e
,
d
,
f
)}
else
console
.
error
(
"
THREE.BinaryLoader: Couldn't load [
"
+
b
+
"
] [
"
+
h
.
status
+
"
]
"
)};
h
.
open
(
"
GET
"
,
b
,
true
);
h
.
overrideMimeType
&&
h
.
overrideMimeType
(
"
text/plain; charset=x-user-defined
"
);
h
.
setRequestHeader
(
"
Content-Type
"
,
"
text/plain
"
);
h
.
send
(
null
)};
...
...
@@ -163,13 +163,13 @@ a,true);d.send(null);var e=new THREE.LoadingMonitor;e.addEventListener("load",fu
f
;
if
(
e
){
a
[
d
].
repeat
.
set
(
e
[
0
],
e
[
1
]);
if
(
e
[
0
]
!=
1
)
a
[
d
].
wrapS
=
THREE
.
RepeatWrapping
;
if
(
e
[
1
]
!=
1
)
a
[
d
].
wrapT
=
THREE
.
RepeatWrapping
}
h
&&
a
[
d
].
offset
.
set
(
h
[
0
],
h
[
1
]);
if
(
i
){
e
=
{
repeat
:
THREE
.
RepeatWrapping
,
mirror
:
THREE
.
MirroredRepeatWrapping
};
if
(
e
[
i
[
0
]]
!==
void
0
)
a
[
d
].
wrapS
=
e
[
i
[
0
]];
if
(
e
[
i
[
1
]]
!==
void
0
)
a
[
d
].
wrapT
=
e
[
i
[
1
]]}
var
k
=
a
[
d
],
a
=
new
THREE
.
ImageLoader
;
a
.
addEventListener
(
"
load
"
,
function
(
a
){
a
=
a
.
content
;
if
(
!
j
(
a
.
width
)
||!
j
(
a
.
height
)){
var
b
=
l
(
a
.
width
),
c
=
l
(
a
.
height
);
k
.
image
=
document
.
createElement
(
"
canvas
"
);
k
.
image
.
width
=
b
;
k
.
image
.
height
=
c
;
k
.
image
.
getContext
(
"
2d
"
).
drawImage
(
a
,
0
,
0
,
b
,
c
)}
else
k
.
image
=
a
;
k
.
needsUpdate
=
true
});
a
.
crossOrigin
=
c
.
crossOrigin
;
a
.
load
(
c
.
path
+
"
/
"
+
f
);
b
&&
b
.
add
(
a
)},
i
=
function
(
a
){
return
(
a
[
0
]
*
255
<<
16
)
+
(
a
[
1
]
*
255
<<
8
)
+
a
[
2
]
*
255
},
m
=
"
MeshLambertMaterial
"
,
n
=
{
color
:
15658734
,
opacity
:
1
,
map
:
null
,
lightMap
:
null
,
normalMap
:
null
,
wireframe
:
false
};
if
(
h
.
shading
){
var
q
=
h
.
shading
.
toLowerCase
();
q
===
"
phong
"
?
m
=
"
MeshPhongMaterial
"
:
q
===
"
basic
"
&&
(
m
=
"
MeshBasicMaterial
"
)}
if
(
h
.
blending
!==
void
0
&&
THREE
[
h
.
blending
]
!==
void
0
)
n
.
blending
=
THREE
[
h
.
blending
];
if
(
h
.
transparent
!==
void
0
||
h
.
opacity
<
1
)
n
.
transparent
=
h
.
transparent
;
if
(
h
.
depthTest
!==
void
0
)
n
.
depthTest
=
h
.
depthTest
;
if
(
h
.
depthWrite
!==
void
0
)
n
.
depthWrite
=
h
.
depthWrite
;
if
(
h
.
vertexColors
!==
void
0
)
if
(
h
.
vertexColors
==
"
face
"
)
n
.
vertexColors
=
THREE
.
FaceColors
;
else
if
(
h
.
vertexColors
)
n
.
vertexColors
=
THREE
.
VertexColors
;
if
(
h
.
colorDiffuse
)
n
.
color
=
i
(
h
.
colorDiffuse
);
else
if
(
h
.
DbgColor
)
n
.
color
=
h
.
DbgColor
;
if
(
h
.
colorSpecular
)
n
.
specular
=
i
(
h
.
colorSpecular
);
if
(
h
.
colorAmbient
)
n
.
ambient
=
i
(
h
.
colorAmbient
);
if
(
h
.
transparency
)
n
.
opacity
=
h
.
transparency
;
if
(
h
.
specularCoef
)
n
.
shininess
=
h
.
specularCoef
;
if
(
h
.
wireframe
!==
void
0
)
n
.
wireframe
=
h
.
wireframe
;
h
.
mapDiffuse
&&
k
(
n
,
"
map
"
,
h
.
mapDiffuse
,
h
.
mapDiffuseRepeat
,
h
.
mapDiffuseOffset
,
h
.
mapDiffuseWrap
);
h
.
mapLight
&&
k
(
n
,
"
lightMap
"
,
h
.
mapLight
,
h
.
mapLightRepeat
,
h
.
mapLightOffset
,
h
.
mapLightWrap
);
h
.
mapNormal
&&
k
(
n
,
"
normalMap
"
,
h
.
mapNormal
,
h
.
mapNormalRepeat
,
h
.
mapNormalOffset
,
h
.
mapNormalWrap
);
h
.
mapSpecular
&&
k
(
n
,
"
specularMap
"
,
h
.
mapSpecular
,
h
.
mapSpecularRepeat
,
h
.
mapSpecularOffset
,
h
.
mapSpecularWrap
);
if
(
h
.
mapNormal
){
k
=
THREE
.
ShaderUtils
.
lib
.
normal
;
i
=
THREE
.
UniformsUtils
.
clone
(
k
.
uniforms
);
i
.
tNormal
.
texture
=
n
.
normalMap
;
if
(
h
.
mapNormalFactor
)
i
.
uNormalScale
.
value
=
h
.
mapNormalFactor
;
if
(
n
.
map
){
i
.
tDiffuse
.
texture
=
n
.
map
;
i
.
enableDiffuse
.
value
=
true
}
if
(
n
.
specularMap
){
i
.
tSpecular
.
texture
=
n
.
specularMap
;
i
.
enableSpecular
.
value
=
true
}
if
(
n
.
lightMap
){
i
.
tAO
.
texture
=
n
.
lightMap
;
i
.
enableAO
.
value
=
true
}
i
.
uDiffuseColor
.
value
.
setHex
(
n
.
color
);
i
.
uSpecularColor
.
value
.
setHex
(
n
.
specular
);
i
.
uAmbientColor
.
value
.
setHex
(
n
.
ambient
);
i
.
uShininess
.
value
=
n
.
shininess
;
if
(
n
.
opacity
!==
void
0
)
i
.
uOpacity
.
value
=
n
.
opacity
;
n
=
new
THREE
.
ShaderMaterial
({
fragmentShader
:
k
.
fragmentShader
,
vertexShader
:
k
.
vertexShader
,
uniforms
:
i
,
lights
:
true
,
fog
:
true
})}
else
n
=
new
THREE
[
m
](
n
);
if
(
h
.
DbgName
!==
void
0
)
n
.
name
=
h
.
DbgName
;
d
.
materials
[
f
]
=
n
}}
var
h
=
a
.
faces
,
u
=
a
.
vertices
,
n
=
a
.
normals
,
k
=
a
.
colors
,
i
=
0
;
if
(
a
.
uvs
)
for
(
f
=
0
;
f
<
a
.
uvs
.
length
;
f
++
)
a
.
uvs
[
f
].
length
&&
i
++
;
for
(
f
=
0
;
f
<
i
;
f
++
){
d
.
faceUvs
[
f
]
=
[];
d
.
faceVertexUvs
[
f
]
=
[]}
m
=
0
;
for
(
q
=
u
.
length
;
m
<
q
;){
var
o
=
new
THREE
.
Vector3
;
o
.
x
=
u
[
m
++
]
*
e
;
o
.
y
=
u
[
m
++
]
*
e
;
o
.
z
=
u
[
m
++
]
*
e
;
d
.
vertices
.
push
(
o
)}
m
=
0
;
for
(
q
=
h
.
length
;
m
<
q
;){
var
r
=
h
[
m
++
],
p
=
r
&
2
,
f
=
r
&
4
,
x
=
r
&
8
,
w
=
r
&
16
,
u
=
r
&
32
,
H
=
r
&
64
,
o
=
r
&
128
;
if
(
r
&
1
){
r
=
new
THREE
.
Face4
;
r
.
a
=
h
[
m
++
];
r
.
b
=
h
[
m
++
];
r
.
c
=
h
[
m
++
];
r
.
d
=
h
[
m
++
];
var
v
=
4
}
else
{
r
=
new
THREE
.
Face3
;
r
.
a
=
h
[
m
++
];
r
.
b
=
h
[
m
++
];
r
.
c
=
h
[
m
++
];
v
=
3
}
if
(
p
){
p
=
h
[
m
++
];
r
.
materialIndex
=
p
}
var
E
=
d
.
faces
.
length
;
if
(
f
)
for
(
f
=
0
;
f
<
i
;
f
++
){
var
A
=
a
.
uvs
[
f
],
p
=
h
[
m
++
],
G
=
A
[
p
*
2
],
p
=
A
[
p
*
2
+
1
];
d
.
faceUvs
[
f
][
E
]
=
new
THREE
.
UV
(
G
,
p
)}
if
(
x
)
for
(
f
=
0
;
f
<
i
;
f
++
){
for
(
var
A
=
a
.
uvs
[
f
],
x
=
[],
C
=
0
;
C
<
v
;
C
++
){
p
=
h
[
m
++
];
G
=
A
[
p
*
2
];
p
=
A
[
p
*
2
+
1
];
x
[
C
]
=
new
THREE
.
UV
(
G
,
p
)}
d
.
faceVertexUvs
[
f
][
E
]
=
x
}
if
(
w
){
w
=
h
[
m
++
]
*
3
;
p
=
new
THREE
.
Vector3
;
p
.
x
=
n
[
w
++
];
p
.
y
=
n
[
w
++
];
p
.
z
=
n
[
w
];
r
.
normal
=
p
}
if
(
u
)
for
(
f
=
0
;
f
<
v
;
f
++
){
w
=
h
[
m
++
]
*
3
;
p
=
new
THREE
.
Vector3
;
p
.
x
=
n
[
w
++
];
p
.
y
=
n
[
w
++
];
p
.
z
=
n
[
w
];
r
.
vertexNormals
.
push
(
p
)}
if
(
H
){
u
=
h
[
m
++
];
r
.
color
=
new
THREE
.
Color
(
k
[
u
])}
if
(
o
)
for
(
f
=
0
;
f
<
v
;
f
++
){
u
=
h
[
m
++
];
r
.
vertexColors
.
push
(
new
THREE
.
Color
(
k
[
u
]))}
d
.
faces
.
push
(
r
)}
if
(
a
.
skinWeights
){
f
=
0
;
for
(
h
=
a
.
skinWeights
.
length
;
f
<
h
;
f
=
f
+
2
)
d
.
skinWeights
.
push
(
new
THREE
.
Vector4
(
a
.
skinWeights
[
f
],
a
.
skinWeights
[
f
+
1
],
0
,
0
))}
if
(
a
.
skinIndices
){
f
=
0
;
for
(
h
=
a
.
skinIndices
.
length
;
f
<
h
;
f
=
f
+
2
){
n
=
0
;
d
.
skinIndices
.
push
(
new
THREE
.
Vector4
(
a
.
skinIndices
[
f
],
a
.
skinIndices
[
f
+
1
],
n
,
0
))}}
d
.
bones
=
a
.
bones
;
d
.
animation
=
a
.
animation
;
if
(
a
.
morphTargets
){
f
=
0
;
for
(
h
=
a
.
morphTargets
.
length
;
f
<
h
;
f
++
){
d
.
morphTargets
[
f
]
=
{};
d
.
morphTargets
[
f
].
name
=
a
.
morphTargets
[
f
].
name
;
d
.
morphTargets
[
f
].
vertices
=
[];
n
=
d
.
morphTargets
[
f
].
vertices
;
k
=
a
.
morphTargets
[
f
].
vertices
;
p
=
0
;
for
(
i
=
k
.
length
;
p
<
i
;
p
=
p
+
3
){
o
=
new
THREE
.
Vector3
;
o
.
x
=
k
[
p
]
*
e
;
o
.
y
=
k
[
p
+
1
]
*
e
;
o
.
z
=
k
[
p
+
2
]
*
e
;
n
.
push
(
o
)}}}
if
(
a
.
morphColors
){
f
=
0
;
for
(
h
=
a
.
morphColors
.
length
;
f
<
h
;
f
++
){
d
.
morphColors
[
f
]
=
{};
d
.
morphColors
[
f
].
name
=
a
.
morphColors
[
f
].
name
;
d
.
morphColors
[
f
].
colors
=
[];
e
=
d
.
morphColors
[
f
].
colors
;
k
=
a
.
morphColors
[
f
].
colors
;
n
=
0
;
for
(
i
=
k
.
length
;
n
<
i
;
n
=
n
+
3
){
m
=
new
THREE
.
Color
(
16755200
);
m
.
setRGB
(
k
[
n
],
k
[
n
+
1
],
k
[
n
+
2
]);
e
.
push
(
m
)}}}
d
.
computeCentroids
();
d
.
computeFaceNormals
();
return
d
}};
if
(
h
.
transparency
)
n
.
opacity
=
h
.
transparency
;
if
(
h
.
specularCoef
)
n
.
shininess
=
h
.
specularCoef
;
if
(
h
.
visible
!==
void
0
)
n
.
visible
=
h
.
visible
;
if
(
h
.
flipSided
!==
void
0
)
n
.
side
=
THREE
.
BackSide
;
if
(
h
.
doubleSided
!==
void
0
)
n
.
side
=
THREE
.
DoubleSide
;
if
(
h
.
wireframe
!==
void
0
)
n
.
wireframe
=
h
.
wireframe
;
h
.
mapDiffuse
&&
k
(
n
,
"
map
"
,
h
.
mapDiffuse
,
h
.
mapDiffuseRepeat
,
h
.
mapDiffuseOffset
,
h
.
mapDiffuseWrap
);
h
.
mapLight
&&
k
(
n
,
"
lightMap
"
,
h
.
mapLight
,
h
.
mapLightRepeat
,
h
.
mapLightOffset
,
h
.
mapLightWrap
);
h
.
mapNormal
&&
k
(
n
,
"
normalMap
"
,
h
.
mapNormal
,
h
.
mapNormalRepeat
,
h
.
mapNormalOffset
,
h
.
mapNormalWrap
);
h
.
mapSpecular
&&
k
(
n
,
"
specularMap
"
,
h
.
mapSpecular
,
h
.
mapSpecularRepeat
,
h
.
mapSpecularOffset
,
h
.
mapSpecularWrap
);
if
(
h
.
mapNormal
){
k
=
THREE
.
ShaderUtils
.
lib
.
normal
;
i
=
THREE
.
UniformsUtils
.
clone
(
k
.
uniforms
);
i
.
tNormal
.
texture
=
n
.
normalMap
;
if
(
h
.
mapNormalFactor
)
i
.
uNormalScale
.
value
=
h
.
mapNormalFactor
;
if
(
n
.
map
){
i
.
tDiffuse
.
texture
=
n
.
map
;
i
.
enableDiffuse
.
value
=
true
}
if
(
n
.
specularMap
){
i
.
tSpecular
.
texture
=
n
.
specularMap
;
i
.
enableSpecular
.
value
=
true
}
if
(
n
.
lightMap
){
i
.
tAO
.
texture
=
n
.
lightMap
;
i
.
enableAO
.
value
=
true
}
i
.
uDiffuseColor
.
value
.
setHex
(
n
.
color
);
i
.
uSpecularColor
.
value
.
setHex
(
n
.
specular
);
i
.
uAmbientColor
.
value
.
setHex
(
n
.
ambient
);
i
.
uShininess
.
value
=
n
.
shininess
;
if
(
n
.
opacity
!==
void
0
)
i
.
uOpacity
.
value
=
n
.
opacity
;
n
=
new
THREE
.
ShaderMaterial
({
fragmentShader
:
k
.
fragmentShader
,
vertexShader
:
k
.
vertexShader
,
uniforms
:
i
,
lights
:
true
,
fog
:
true
})}
else
n
=
new
THREE
[
m
](
n
);
if
(
h
.
DbgName
!==
void
0
)
n
.
name
=
h
.
DbgName
;
d
.
materials
[
f
]
=
n
}}
var
h
=
a
.
faces
,
u
=
a
.
vertices
,
n
=
a
.
normals
,
k
=
a
.
colors
,
i
=
0
;
if
(
a
.
uvs
)
for
(
f
=
0
;
f
<
a
.
uvs
.
length
;
f
++
)
a
.
uvs
[
f
].
length
&&
i
++
;
for
(
f
=
0
;
f
<
i
;
f
++
){
d
.
faceUvs
[
f
]
=
[];
d
.
faceVertexUvs
[
f
]
=
[]}
m
=
0
;
for
(
q
=
u
.
length
;
m
<
q
;){
var
o
=
new
THREE
.
Vector3
;
o
.
x
=
u
[
m
++
]
*
e
;
o
.
y
=
u
[
m
++
]
*
e
;
o
.
z
=
u
[
m
++
]
*
e
;
d
.
vertices
.
push
(
o
)}
m
=
0
;
for
(
q
=
h
.
length
;
m
<
q
;){
var
r
=
h
[
m
++
],
p
=
r
&
2
,
f
=
r
&
4
,
x
=
r
&
8
,
w
=
r
&
16
,
u
=
r
&
32
,
H
=
r
&
64
,
o
=
r
&
128
;
if
(
r
&
1
){
r
=
new
THREE
.
Face4
;
r
.
a
=
h
[
m
++
];
r
.
b
=
h
[
m
++
];
r
.
c
=
h
[
m
++
];
r
.
d
=
h
[
m
++
];
var
v
=
4
}
else
{
r
=
new
THREE
.
Face3
;
r
.
a
=
h
[
m
++
];
r
.
b
=
h
[
m
++
];
r
.
c
=
h
[
m
++
];
v
=
3
}
if
(
p
){
p
=
h
[
m
++
];
r
.
materialIndex
=
p
}
var
E
=
d
.
faces
.
length
;
if
(
f
)
for
(
f
=
0
;
f
<
i
;
f
++
){
var
A
=
a
.
uvs
[
f
],
p
=
h
[
m
++
],
G
=
A
[
p
*
2
],
p
=
A
[
p
*
2
+
1
];
d
.
faceUvs
[
f
][
E
]
=
new
THREE
.
UV
(
G
,
p
)}
if
(
x
)
for
(
f
=
0
;
f
<
i
;
f
++
){
for
(
var
A
=
a
.
uvs
[
f
],
x
=
[],
C
=
0
;
C
<
v
;
C
++
){
p
=
h
[
m
++
];
G
=
A
[
p
*
2
];
p
=
A
[
p
*
2
+
1
];
x
[
C
]
=
new
THREE
.
UV
(
G
,
p
)}
d
.
faceVertexUvs
[
f
][
E
]
=
x
}
if
(
w
){
w
=
h
[
m
++
]
*
3
;
p
=
new
THREE
.
Vector3
;
p
.
x
=
n
[
w
++
];
p
.
y
=
n
[
w
++
];
p
.
z
=
n
[
w
];
r
.
normal
=
p
}
if
(
u
)
for
(
f
=
0
;
f
<
v
;
f
++
){
w
=
h
[
m
++
]
*
3
;
p
=
new
THREE
.
Vector3
;
p
.
x
=
n
[
w
++
];
p
.
y
=
n
[
w
++
];
p
.
z
=
n
[
w
];
r
.
vertexNormals
.
push
(
p
)}
if
(
H
){
u
=
h
[
m
++
];
r
.
color
=
new
THREE
.
Color
(
k
[
u
])}
if
(
o
)
for
(
f
=
0
;
f
<
v
;
f
++
){
u
=
h
[
m
++
];
r
.
vertexColors
.
push
(
new
THREE
.
Color
(
k
[
u
]))}
d
.
faces
.
push
(
r
)}
if
(
a
.
skinWeights
){
f
=
0
;
for
(
h
=
a
.
skinWeights
.
length
;
f
<
h
;
f
=
f
+
2
)
d
.
skinWeights
.
push
(
new
THREE
.
Vector4
(
a
.
skinWeights
[
f
],
a
.
skinWeights
[
f
+
1
],
0
,
0
))}
if
(
a
.
skinIndices
){
f
=
0
;
for
(
h
=
a
.
skinIndices
.
length
;
f
<
h
;
f
=
f
+
2
){
n
=
0
;
d
.
skinIndices
.
push
(
new
THREE
.
Vector4
(
a
.
skinIndices
[
f
],
a
.
skinIndices
[
f
+
1
],
n
,
0
))}}
d
.
bones
=
a
.
bones
;
d
.
animation
=
a
.
animation
;
if
(
a
.
morphTargets
){
f
=
0
;
for
(
h
=
a
.
morphTargets
.
length
;
f
<
h
;
f
++
){
d
.
morphTargets
[
f
]
=
{};
d
.
morphTargets
[
f
].
name
=
a
.
morphTargets
[
f
].
name
;
d
.
morphTargets
[
f
].
vertices
=
[];
n
=
d
.
morphTargets
[
f
].
vertices
;
k
=
a
.
morphTargets
[
f
].
vertices
;
p
=
0
;
for
(
i
=
k
.
length
;
p
<
i
;
p
=
p
+
3
){
o
=
new
THREE
.
Vector3
;
o
.
x
=
k
[
p
]
*
e
;
o
.
y
=
k
[
p
+
1
]
*
e
;
o
.
z
=
k
[
p
+
2
]
*
e
;
n
.
push
(
o
)}}}
if
(
a
.
morphColors
){
f
=
0
;
for
(
h
=
a
.
morphColors
.
length
;
f
<
h
;
f
++
){
d
.
morphColors
[
f
]
=
{};
d
.
morphColors
[
f
].
name
=
a
.
morphColors
[
f
].
name
;
d
.
morphColors
[
f
].
colors
=
[];
e
=
d
.
morphColors
[
f
].
colors
;
k
=
a
.
morphColors
[
f
].
colors
;
n
=
0
;
for
(
i
=
k
.
length
;
n
<
i
;
n
=
n
+
3
){
m
=
new
THREE
.
Color
(
16755200
);
m
.
setRGB
(
k
[
n
],
k
[
n
+
1
],
k
[
n
+
2
]);
e
.
push
(
m
)}}}
d
.
computeCentroids
();
d
.
computeFaceNormals
();
return
d
}};
THREE
.
SceneLoader
=
function
(){
this
.
onLoadStart
=
function
(){};
this
.
onLoadProgress
=
function
(){};
this
.
onLoadComplete
=
function
(){};
this
.
callbackSync
=
function
(){};
this
.
callbackProgress
=
function
(){}};
THREE
.
SceneLoader
.
prototype
.
constructor
=
THREE
.
SceneLoader
;
THREE
.
SceneLoader
.
prototype
.
load
=
function
(
a
,
b
){
var
c
=
this
,
d
=
new
XMLHttpRequest
;
d
.
onreadystatechange
=
function
(){
if
(
d
.
readyState
===
4
)
if
(
d
.
status
===
200
||
d
.
status
===
0
){
var
e
=
JSON
.
parse
(
d
.
responseText
);
c
.
createScene
(
e
,
b
,
a
)}
else
console
.
error
(
"
THREE.SceneLoader: Couldn't load [
"
+
a
+
"
] [
"
+
d
.
status
+
"
]
"
)};
d
.
open
(
"
GET
"
,
a
,
true
);
d
.
overrideMimeType
&&
d
.
overrideMimeType
(
"
text/plain; charset=x-user-defined
"
);
d
.
setRequestHeader
(
"
Content-Type
"
,
"
text/plain
"
);
d
.
send
(
null
)};
THREE
.
SceneLoader
.
prototype
.
createScene
=
function
(
a
,
b
,
c
){
function
d
(
a
,
b
){
return
b
==
"
relativeToHTML
"
?
a
:
k
+
"
/
"
+
a
}
function
e
(
a
,
b
){
var
c
;
for
(
n
in
b
)
if
(
N
.
objects
[
n
]
===
void
0
){
p
=
b
[
n
];
if
(
p
.
geometry
!==
void
0
){
if
(
I
=
N
.
geometries
[
p
.
geometry
]){
c
=
false
;
U
=
N
.
materials
[
p
.
materials
[
0
]];(
c
=
U
instanceof
THREE
.
ShaderMaterial
)
&&
I
.
computeTangents
();
v
=
p
.
position
;
E
=
p
.
rotation
;
A
=
p
.
quaternion
;
G
=
p
.
scale
;
x
=
p
.
matrix
;
A
=
0
;
p
.
materials
.
length
==
0
&&
(
U
=
new
THREE
.
MeshFaceMaterial
);
p
.
materials
.
length
>
1
&&
(
U
=
new
THREE
.
MeshFaceMaterial
);
c
=
...
...
src/loaders/GeometryLoader.js
浏览文件 @
e86c5653
...
...
@@ -268,6 +268,24 @@ THREE.GeometryLoader.prototype = {
}
if
(
m
.
visible
!==
undefined
)
{
mpars
.
visible
=
m
.
visible
;
}
if
(
m
.
flipSided
!==
undefined
)
{
mpars
.
side
=
THREE
.
BackSide
;
}
if
(
m
.
doubleSided
!==
undefined
)
{
mpars
.
side
=
THREE
.
DoubleSide
;
}
if
(
m
.
wireframe
!==
undefined
)
{
mpars
.
wireframe
=
m
.
wireframe
;
...
...
src/loaders/Loader.js
浏览文件 @
e86c5653
...
...
@@ -231,15 +231,15 @@ THREE.Loader.prototype = {
}
if
(
m
.
double
Sided
!==
undefined
)
{
if
(
m
.
flip
Sided
!==
undefined
)
{
mpars
.
doubleSided
=
m
.
doubleSided
;
mpars
.
side
=
THREE
.
BackSide
;
}
if
(
m
.
flip
Sided
!==
undefined
)
{
if
(
m
.
double
Sided
!==
undefined
)
{
mpars
.
flipSided
=
m
.
flipSided
;
mpars
.
side
=
THREE
.
DoubleSide
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录