Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
b944be1c
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,发现更多精彩内容 >>
提交
b944be1c
编写于
10月 31, 2013
作者:
D
Dale Stammen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
replaced use of xpath queries with querySelectorAll to fix missing xpath in IE11
上级
f396baf5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
55 addition
and
86 deletion
+55
-86
examples/js/loaders/ColladaLoader.js
examples/js/loaders/ColladaLoader.js
+55
-86
未找到文件。
examples/js/loaders/ColladaLoader.js
浏览文件 @
b944be1c
...
...
@@ -131,16 +131,16 @@ THREE.ColladaLoader = function () {
parseAsset
();
setUpConversion
();
images
=
parseLib
(
"
//dae:library_images/dae:
image
"
,
_Image
,
"
image
"
);
materials
=
parseLib
(
"
//dae:library_materials/dae:
material
"
,
Material
,
"
material
"
);
effects
=
parseLib
(
"
//dae:library_effects/dae:
effect
"
,
Effect
,
"
effect
"
);
geometries
=
parseLib
(
"
//dae:library_geometries/dae:
geometry
"
,
Geometry
,
"
geometry
"
);
cameras
=
parseLib
(
"
.//dae:library_cameras/dae:
camera
"
,
Camera
,
"
camera
"
);
lights
=
parseLib
(
"
.//dae:library_lights/dae:
light
"
,
Light
,
"
light
"
);
controllers
=
parseLib
(
"
//dae:library_controllers/dae:
controller
"
,
Controller
,
"
controller
"
);
animations
=
parseLib
(
"
//dae:library_animations/dae:
animation
"
,
Animation
,
"
animation
"
);
visualScenes
=
parseLib
(
"
.//dae:library_visual_scenes/dae:
visual_scene
"
,
VisualScene
,
"
visual_scene
"
);
images
=
parseLib
(
"
library_images
image
"
,
_Image
,
"
image
"
);
materials
=
parseLib
(
"
library_materials
material
"
,
Material
,
"
material
"
);
effects
=
parseLib
(
"
library_effects
effect
"
,
Effect
,
"
effect
"
);
geometries
=
parseLib
(
"
library_geometries
geometry
"
,
Geometry
,
"
geometry
"
);
cameras
=
parseLib
(
"
library_cameras
camera
"
,
Camera
,
"
camera
"
);
lights
=
parseLib
(
"
library_lights
light
"
,
Light
,
"
light
"
);
controllers
=
parseLib
(
"
library_controllers
controller
"
,
Controller
,
"
controller
"
);
animations
=
parseLib
(
"
library_animations
animation
"
,
Animation
,
"
animation
"
);
visualScenes
=
parseLib
(
"
library_visual_scenes
visual_scene
"
,
VisualScene
,
"
visual_scene
"
);
morphs
=
[];
skins
=
[];
...
...
@@ -197,15 +197,16 @@ THREE.ColladaLoader = function () {
function
parseAsset
()
{
var
elements
=
COLLADA
.
evaluate
(
'
//dae:asset
'
,
COLLADA
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
);
var
element
=
elements
.
iterateNext
();
if
(
element
&&
element
.
childNodes
)
{
var
elements
=
COLLADA
.
querySelectorAll
(
'
asset
'
);
var
elementsLength
=
elements
.
length
;
//cache loop length
for
(
var
i
=
0
;
i
<
elementsLength
;
i
++
){
var
element
=
elements
[
i
];
var
elementChildNodesLength
=
element
.
childNodes
.
length
;
for
(
var
j
=
0
;
j
<
elementChildNodesLength
;
j
++
)
{
for
(
var
i
=
0
;
i
<
element
.
childNodes
.
length
;
i
++
)
{
var
child
=
element
.
childNodes
[
i
];
var
child
=
element
.
childNodes
[
j
];
switch
(
child
.
nodeName
)
{
...
...
@@ -236,20 +237,20 @@ THREE.ColladaLoader = function () {
function
parseLib
(
q
,
classSpec
,
prefix
)
{
var
elements
=
COLLADA
.
evaluate
(
q
,
COLLADA
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
)
;
var
elements
=
COLLADA
.
querySelectorAll
(
q
);
var
lib
=
{};
var
lib
=
{};
var
element
=
elements
.
iterateNext
();
var
i
=
0
;
while
(
element
)
{
var
elementsLength
=
elements
.
length
;
for
(
var
j
=
0
;
j
<
elementsLength
;
j
++
){
var
element
=
elements
[
j
];
var
daeElement
=
(
new
classSpec
()
).
parse
(
element
);
var
daeElement
=
(
new
classSpec
()
).
parse
(
element
);
if
(
!
daeElement
.
id
||
daeElement
.
id
.
length
==
0
)
daeElement
.
id
=
prefix
+
(
i
++
);
lib
[
daeElement
.
id
]
=
daeElement
;
element
=
elements
.
iterateNext
();
}
return
lib
;
...
...
@@ -257,9 +258,9 @@ THREE.ColladaLoader = function () {
};
function
parseScene
()
{
var
sceneElement
=
COLLADA
.
evaluate
(
'
.//dae:scene/dae:instance_visual_scene
'
,
COLLADA
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
).
iterateNext
()
;
var
sceneElement
=
COLLADA
.
querySelectorAll
(
'
scene instance_visual_scene
'
)[
0
]
;
if
(
sceneElement
)
{
var
url
=
sceneElement
.
getAttribute
(
'
url
'
).
replace
(
/^#/
,
''
);
...
...
@@ -494,15 +495,15 @@ THREE.ColladaLoader = function () {
function
setupSkinningMatrices
(
bones
,
skin
)
{
// FIXME: this is dumb...
for
(
var
i
=
0
;
i
<
bones
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
bones
.
length
;
i
++
)
{
var
bone
=
bones
[
i
];
var
found
=
-
1
;
if
(
bone
.
type
!=
'
JOINT
'
)
continue
;
for
(
var
j
=
0
;
j
<
skin
.
joints
.
length
;
j
++
)
{
for
(
var
j
=
0
;
j
<
skin
.
joints
.
length
;
j
++
)
{
if
(
bone
.
sid
==
skin
.
joints
[
j
]
)
{
...
...
@@ -523,8 +524,8 @@ THREE.ColladaLoader = function () {
bone
.
weights
=
[];
for
(
var
j
=
0
;
j
<
skin
.
weights
.
length
;
j
++
)
{
for
(
var
j
=
0
;
j
<
skin
.
weights
.
length
;
j
++
)
{
for
(
var
k
=
0
;
k
<
skin
.
weights
[
j
].
length
;
k
++
)
{
var
w
=
skin
.
weights
[
j
][
k
];
...
...
@@ -923,8 +924,8 @@ THREE.ColladaLoader = function () {
};
function
getLibraryNode
(
id
)
{
return
COLLADA
.
evaluate
(
'
.//dae:library_nodes//dae:node[@id=
\'
'
+
id
+
'
\'
]
'
,
COLLADA
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
).
iterateNext
();
return
COLLADA
.
querySelectorAll
(
'
library_nodes node#
'
+
id
)[
0
];
//returns 'undefined' if nothing is matched
};
...
...
@@ -2200,21 +2201,17 @@ THREE.ColladaLoader = function () {
break
;
case
'
bind_material
'
:
var
instances
=
child
.
querySelectorAll
(
'
instance_material
'
);
for
(
var
j
=
0
;
j
<
instances
.
length
;
j
++
){
var
instances
=
COLLADA
.
evaluate
(
'
.//dae:instance_material
'
,
child
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
);
if
(
instances
)
{
var
instance
=
instances
.
iterateNext
();
while
(
instance
)
{
var
instance
=
instances
[
j
];
this
.
instance_material
.
push
(
(
new
InstanceMaterial
()).
parse
(
instance
)
);
instance
=
instances
.
iterateNext
();
this
.
instance_material
.
push
(
(
new
InstanceMaterial
()).
parse
(
instance
)
);
}
}
}
break
;
...
...
@@ -2265,19 +2262,11 @@ THREE.ColladaLoader = function () {
if
(
child
.
nodeName
==
'
bind_material
'
)
{
var
instances
=
COLLADA
.
evaluate
(
'
.//dae:instance_material
'
,
child
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
);
if
(
instances
)
{
var
instance
=
instances
.
iterateNext
();
while
(
instance
)
{
this
.
instance_material
.
push
(
(
new
InstanceMaterial
()).
parse
(
instance
)
);
instance
=
instances
.
iterateNext
();
}
var
instances
=
child
.
querySelectorAll
(
'
instance_material
'
);
for
(
var
j
=
0
;
j
<
instances
.
length
;
j
++
){
var
instance
=
instances
[
j
];
this
.
instance_material
.
push
(
(
new
InstanceMaterial
()).
parse
(
instance
)
);
}
break
;
...
...
@@ -2422,8 +2411,8 @@ THREE.ColladaLoader = function () {
var
source
,
numParams
;
var
vcIndex
=
0
,
vcount
=
3
,
maxOffset
=
0
;
var
texture_sets
=
[];
for
(
j
=
0
;
j
<
inputs
.
length
;
j
++
)
{
for
(
j
=
0
;
j
<
inputs
.
length
;
j
++
)
{
input
=
inputs
[
j
];
var
offset
=
input
.
offset
+
1
;
...
...
@@ -3135,7 +3124,7 @@ THREE.ColladaLoader = function () {
case
'
index_of_refraction
'
:
case
'
transparency
'
:
var
f
=
evaluateXPath
(
child
,
'
.//dae:float
'
);
var
f
=
child
.
querySelectorAll
(
'
float
'
);
if
(
f
.
length
>
0
)
this
[
child
.
nodeName
]
=
parseFloat
(
f
[
0
].
textContent
);
...
...
@@ -4399,34 +4388,14 @@ THREE.ColladaLoader = function () {
};
function
evaluateXPath
(
node
,
query
)
{
var
instances
=
COLLADA
.
evaluate
(
query
,
node
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
);
var
inst
=
instances
.
iterateNext
();
var
result
=
[];
while
(
inst
)
{
result
.
push
(
inst
);
inst
=
instances
.
iterateNext
();
}
return
result
;
};
function
extractDoubleSided
(
obj
,
element
)
{
obj
.
doubleSided
=
false
;
var
node
=
COLLADA
.
evaluate
(
'
.//dae:extra//dae:double_sided
'
,
element
,
_nsResolver
,
XPathResult
.
ORDERED_NODE_ITERATOR_TYPE
,
null
)
;
var
node
=
element
.
querySelectorAll
(
'
extra double_sided
'
)[
0
]
;
if
(
node
)
{
node
=
node
.
iterateNext
();
if
(
node
&&
parseInt
(
node
.
textContent
,
10
)
===
1
)
{
obj
.
doubleSided
=
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录