Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
686107cb
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,发现更多精彩内容 >>
提交
686107cb
编写于
10月 03, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ColladaLoader: Fix recursive library access. Support for lines.
上级
68073892
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
51 addition
and
19 deletion
+51
-19
examples/js/loaders/ColladaLoader2.js
examples/js/loaders/ColladaLoader2.js
+51
-19
未找到文件。
examples/js/loaders/ColladaLoader2.js
浏览文件 @
686107cb
...
...
@@ -84,9 +84,7 @@ THREE.ColladaLoader.prototype = {
// library
function
parseLibrary
(
xml
,
libraryName
,
nodeName
,
parser
)
{
var
data
=
{};
function
buildLibrary
(
data
,
libraryName
,
nodeName
,
parser
)
{
var
library
=
xml
.
getElementsByTagName
(
libraryName
)[
0
];
...
...
@@ -103,8 +101,6 @@ THREE.ColladaLoader.prototype = {
}
return
data
;
}
// image
...
...
@@ -121,6 +117,14 @@ THREE.ColladaLoader.prototype = {
}
// effect
function
parseEffect
(
xml
)
{
// console.log( xml );
}
// camera
function
parseCamera
(
xml
)
{
...
...
@@ -279,6 +283,8 @@ THREE.ColladaLoader.prototype = {
console
.
log
(
'
ColladaLoader: Unsupported primitive type:
'
,
child
.
nodeName
);
break
;
case
'
lines
'
:
case
'
linestrips
'
:
case
'
polylist
'
:
case
'
triangles
'
:
data
.
primitive
=
parseGeometryPrimitive
(
child
);
...
...
@@ -391,13 +397,28 @@ THREE.ColladaLoader.prototype = {
}
return
geometry
;
switch
(
data
.
primitive
.
type
)
{
case
'
lines
'
:
return
new
THREE
.
LineSegments
(
geometry
);
case
'
linestrips
'
:
return
new
THREE
.
Line
(
geometry
);
case
'
triangles
'
:
case
'
polylist
'
:
return
new
THREE
.
Mesh
(
geometry
);
}
return
;
}
function
parseGeometryPrimitive
(
xml
)
{
var
primitive
=
{
type
:
xml
.
nodeName
,
inputs
:
{},
stride
:
0
};
...
...
@@ -436,7 +457,6 @@ THREE.ColladaLoader.prototype = {
// nodes
var
material
=
new
THREE
.
MeshPhongMaterial
();
var
matrix
=
new
THREE
.
Matrix4
();
var
vector
=
new
THREE
.
Vector3
();
...
...
@@ -457,19 +477,19 @@ THREE.ColladaLoader.prototype = {
switch
(
child
.
nodeName
)
{
case
'
instance_camera
'
:
node
.
camera
=
camerasLibrary
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
node
.
camera
=
library
.
cameras
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
break
;
case
'
instance_light
'
:
node
.
light
=
li
ghtsLibrary
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
node
.
light
=
li
brary
.
lights
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
break
;
case
'
instance_geometry
'
:
node
.
geometry
=
geometriesLibrary
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
node
.
geometry
=
library
.
geometries
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
];
break
;
case
'
instance_node
'
:
node
.
children
.
push
(
nodesLibrary
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
]
);
node
.
children
.
push
(
library
.
nodes
[
parseId
(
child
.
getAttribute
(
'
url
'
)
)
]
);
break
;
case
'
matrix
'
:
...
...
@@ -523,7 +543,7 @@ THREE.ColladaLoader.prototype = {
}
else
if
(
node
.
geometry
!==
undefined
)
{
object
=
n
ew
THREE
.
Mesh
(
node
.
geometry
,
material
);
object
=
n
ode
.
geometry
.
clone
(
);
}
else
{
...
...
@@ -572,7 +592,7 @@ THREE.ColladaLoader.prototype = {
var
scene
=
xml
.
getElementsByTagName
(
'
scene
'
)[
0
];
var
instance
=
scene
.
getElementsByTagName
(
'
instance_visual_scene
'
)[
0
];
return
visualScenesLibrary
[
parseId
(
instance
.
getAttribute
(
'
url
'
)
)
];
return
library
.
visualScenes
[
parseId
(
instance
.
getAttribute
(
'
url
'
)
)
];
}
...
...
@@ -584,12 +604,24 @@ THREE.ColladaLoader.prototype = {
console
.
timeEnd
(
'
ColladaLoader: DOMParser
'
);
var
imagesLibrary
=
parseLibrary
(
xml
,
'
library_images
'
,
'
image
'
,
parseImage
);
var
camerasLibrary
=
parseLibrary
(
xml
,
'
library_cameras
'
,
'
camera
'
,
parseCamera
);
var
lightsLibrary
=
parseLibrary
(
xml
,
'
library_lights
'
,
'
light
'
,
parseLight
);
var
geometriesLibrary
=
parseLibrary
(
xml
,
'
library_geometries
'
,
'
geometry
'
,
parseGeometry
);
var
nodesLibrary
=
parseLibrary
(
xml
,
'
library_nodes
'
,
'
node
'
,
parseNode
);
var
visualScenesLibrary
=
parseLibrary
(
xml
,
'
library_visual_scenes
'
,
'
visual_scene
'
,
parseVisualScene
);
var
library
=
{
images
:
{},
effects
:
{},
cameras
:
{},
lights
:
{},
geometries
:
{},
nodes
:
{},
visualScenes
:
{}
};
buildLibrary
(
library
.
images
,
'
library_images
'
,
'
image
'
,
parseImage
);
buildLibrary
(
library
.
effects
,
'
library_effects
'
,
'
effect
'
,
parseEffect
);
buildLibrary
(
library
.
cameras
,
'
library_cameras
'
,
'
camera
'
,
parseCamera
);
buildLibrary
(
library
.
lights
,
'
library_lights
'
,
'
light
'
,
parseLight
);
buildLibrary
(
library
.
geometries
,
'
library_geometries
'
,
'
geometry
'
,
parseGeometry
);
buildLibrary
(
library
.
nodes
,
'
library_nodes
'
,
'
node
'
,
parseNode
);
buildLibrary
(
library
.
visualScenes
,
'
library_visual_scenes
'
,
'
visual_scene
'
,
parseVisualScene
);
var
scene
=
parseScene
(
xml
);
console
.
timeEnd
(
'
ColladaLoader
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录