Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
ba769238
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
ba769238
编写于
10月 25, 2019
作者:
M
Mr.doob
提交者:
GitHub
10月 25, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17813 from Mugen87/dev34
3MFLoader: Fix relationship parsing.
上级
ad767947
bc67d5f0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
68 addition
and
34 deletion
+68
-34
examples/js/loaders/3MFLoader.js
examples/js/loaders/3MFLoader.js
+34
-17
examples/jsm/loaders/3MFLoader.js
examples/jsm/loaders/3MFLoader.js
+34
-17
未找到文件。
examples/js/loaders/3MFLoader.js
浏览文件 @
ba769238
...
...
@@ -100,7 +100,7 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto
printTicketPartNames
.
push
(
file
);
}
else
if
(
file
.
match
(
/^3D
\/
Texture
\/
.*/
)
)
{
}
else
if
(
file
.
match
(
/^3D
\/
Texture
s
?
\/
.*/
)
)
{
texturesPartNames
.
push
(
file
);
...
...
@@ -193,17 +193,27 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto
function
parseRelsXml
(
relsFileText
)
{
var
relationships
=
[];
var
relsXmlData
=
new
DOMParser
().
parseFromString
(
relsFileText
,
'
application/xml
'
);
var
relsNode
=
relsXmlData
.
querySelector
(
'
Relationship
'
);
var
target
=
relsNode
.
getAttribute
(
'
Target
'
);
var
id
=
relsNode
.
getAttribute
(
'
Id
'
);
var
type
=
relsNode
.
getAttribute
(
'
Type
'
);
return
{
target
:
target
,
id
:
id
,
type
:
type
};
var
relsNodes
=
relsXmlData
.
querySelectorAll
(
'
Relationship
'
);
for
(
var
i
=
0
;
i
<
relsNodes
.
length
;
i
++
)
{
var
relsNode
=
relsNodes
[
i
];
var
relationship
=
{
target
:
relsNode
.
getAttribute
(
'
Target
'
),
//required
id
:
relsNode
.
getAttribute
(
'
Id
'
),
//required
type
:
relsNode
.
getAttribute
(
'
Type
'
)
//required
};
relationships
.
push
(
relationship
);
}
return
relationships
;
}
...
...
@@ -1144,15 +1154,20 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto
var
modelsKeys
=
Object
.
keys
(
modelsData
);
var
textureData
=
{};
// evaluate model relationship
to a texture
// evaluate model relationship
s to textures
if
(
modelRels
)
{
var
textureKey
=
modelRels
.
target
.
substring
(
1
);
for
(
var
i
=
0
,
l
=
modelRels
.
length
;
i
<
l
;
i
++
)
{
var
modelRel
=
modelRels
[
i
];
var
textureKey
=
modelRel
.
target
.
substring
(
1
);
if
(
data3mf
.
texture
[
textureKey
]
)
{
if
(
data3mf
.
texture
[
textureKey
]
)
{
textureData
[
modelRels
.
target
]
=
data3mf
.
texture
[
textureKey
];
textureData
[
modelRel
.
target
]
=
data3mf
.
texture
[
textureKey
];
}
}
...
...
@@ -1181,10 +1196,12 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto
}
function
build
(
objects
,
refs
,
data3mf
)
{
function
build
(
objects
,
data3mf
)
{
var
group
=
new
THREE
.
Group
();
var
buildData
=
data3mf
.
model
[
refs
[
'
target
'
].
substring
(
1
)
][
'
build
'
];
var
relationship
=
data3mf
[
'
rels
'
][
0
];
var
buildData
=
data3mf
.
model
[
relationship
[
'
target
'
].
substring
(
1
)
][
'
build
'
];
for
(
var
i
=
0
;
i
<
buildData
.
length
;
i
++
)
{
...
...
@@ -1212,7 +1229,7 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto
var
data3mf
=
loadDocument
(
data
);
var
objects
=
buildObjects
(
data3mf
);
return
build
(
objects
,
data3mf
[
'
rels
'
],
data3mf
);
return
build
(
objects
,
data3mf
);
},
...
...
examples/jsm/loaders/3MFLoader.js
浏览文件 @
ba769238
...
...
@@ -121,7 +121,7 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
printTicketPartNames
.
push
(
file
);
}
else
if
(
file
.
match
(
/^3D
\/
Texture
\/
.*/
)
)
{
}
else
if
(
file
.
match
(
/^3D
\/
Texture
s
?
\/
.*/
)
)
{
texturesPartNames
.
push
(
file
);
...
...
@@ -214,17 +214,27 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
function
parseRelsXml
(
relsFileText
)
{
var
relationships
=
[];
var
relsXmlData
=
new
DOMParser
().
parseFromString
(
relsFileText
,
'
application/xml
'
);
var
relsNode
=
relsXmlData
.
querySelector
(
'
Relationship
'
);
var
target
=
relsNode
.
getAttribute
(
'
Target
'
);
var
id
=
relsNode
.
getAttribute
(
'
Id
'
);
var
type
=
relsNode
.
getAttribute
(
'
Type
'
);
return
{
target
:
target
,
id
:
id
,
type
:
type
};
var
relsNodes
=
relsXmlData
.
querySelectorAll
(
'
Relationship
'
);
for
(
var
i
=
0
;
i
<
relsNodes
.
length
;
i
++
)
{
var
relsNode
=
relsNodes
[
i
];
var
relationship
=
{
target
:
relsNode
.
getAttribute
(
'
Target
'
),
//required
id
:
relsNode
.
getAttribute
(
'
Id
'
),
//required
type
:
relsNode
.
getAttribute
(
'
Type
'
)
//required
};
relationships
.
push
(
relationship
);
}
return
relationships
;
}
...
...
@@ -1165,15 +1175,20 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
var
modelsKeys
=
Object
.
keys
(
modelsData
);
var
textureData
=
{};
// evaluate model relationship
to a texture
// evaluate model relationship
s to textures
if
(
modelRels
)
{
var
textureKey
=
modelRels
.
target
.
substring
(
1
);
for
(
var
i
=
0
,
l
=
modelRels
.
length
;
i
<
l
;
i
++
)
{
var
modelRel
=
modelRels
[
i
];
var
textureKey
=
modelRel
.
target
.
substring
(
1
);
if
(
data3mf
.
texture
[
textureKey
]
)
{
if
(
data3mf
.
texture
[
textureKey
]
)
{
textureData
[
modelRels
.
target
]
=
data3mf
.
texture
[
textureKey
];
textureData
[
modelRel
.
target
]
=
data3mf
.
texture
[
textureKey
];
}
}
...
...
@@ -1202,10 +1217,12 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
}
function
build
(
objects
,
refs
,
data3mf
)
{
function
build
(
objects
,
data3mf
)
{
var
group
=
new
Group
();
var
buildData
=
data3mf
.
model
[
refs
[
'
target
'
].
substring
(
1
)
][
'
build
'
];
var
relationship
=
data3mf
[
'
rels
'
][
0
];
var
buildData
=
data3mf
.
model
[
relationship
[
'
target
'
].
substring
(
1
)
][
'
build
'
];
for
(
var
i
=
0
;
i
<
buildData
.
length
;
i
++
)
{
...
...
@@ -1233,7 +1250,7 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
var
data3mf
=
loadDocument
(
data
);
var
objects
=
buildObjects
(
data3mf
);
return
build
(
objects
,
data3mf
[
'
rels
'
],
data3mf
);
return
build
(
objects
,
data3mf
);
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录