Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
2dccc1fb
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 搜索 >>
未验证
提交
2dccc1fb
编写于
5月 03, 2021
作者:
Q
qeeqez
提交者:
GitHub
5月 03, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
USDZExporter: store geometries in different files (#21775)
上级
1ea001da
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
50 deletion
+38
-50
examples/js/exporters/USDZExporter.js
examples/js/exporters/USDZExporter.js
+18
-25
examples/jsm/exporters/USDZExporter.js
examples/jsm/exporters/USDZExporter.js
+20
-25
未找到文件。
examples/js/exporters/USDZExporter.js
浏览文件 @
2dccc1fb
...
...
@@ -5,10 +5,10 @@
async
parse
(
scene
)
{
const
files
=
{};
const
modelFileName
=
'
model.usda
'
;
const
geometryFileName
=
'
geometry.usd
'
;
const
modelFileName
=
'
model.usda
'
;
// model file should be first in USDZ archive so we init it here
files
[
modelFileName
]
=
null
;
let
output
=
buildHeader
();
const
geometries
=
{};
const
materials
=
{};
const
textures
=
{};
scene
.
traverse
(
object
=>
{
...
...
@@ -17,10 +17,12 @@
const
geometry
=
object
.
geometry
;
const
material
=
object
.
material
;
const
geometryFileName
=
'
geometries/Geometry_
'
+
geometry
.
id
+
'
.usd
'
;
if
(
!
(
geometry
.
uuid
in
geometri
es
)
)
{
if
(
!
(
geometry
FileName
in
fil
es
)
)
{
geometries
[
geometry
.
uuid
]
=
geometry
;
const
meshObject
=
buildMeshObject
(
geometry
);
files
[
geometryFileName
]
=
buildUSDFileAsString
(
meshObject
);
}
...
...
@@ -36,7 +38,7 @@
}
const
referencedMesh
=
`prepend references = @./
${
geometryFileName
}
@</Geometry
_
${
geometry
.
id
}
>`
;
const
referencedMesh
=
`prepend references = @./
${
geometryFileName
}
@</Geometry>`
;
const
referencedMaterial
=
`rel material:binding = </Materials/Material_
${
material
.
id
}
>`
;
output
+=
buildXform
(
object
,
referencedMesh
,
referencedMaterial
);
...
...
@@ -47,7 +49,6 @@
output
+=
buildTextures
(
textures
);
files
[
modelFileName
]
=
fflate
.
strToU8
(
output
);
output
=
null
;
files
[
geometryFileName
]
=
fflate
.
strToU8
(
buildMeshFileString
(
geometries
)
);
for
(
const
uuid
in
textures
)
{
...
...
@@ -124,6 +125,14 @@
`
;
}
function
buildUSDFileAsString
(
dataToInsert
)
{
let
output
=
buildHeader
();
output
+=
dataToInsert
;
return
fflate
.
strToU8
(
output
);
}
// Xform
...
...
@@ -160,27 +169,11 @@
}
// Mesh
function
buildMeshFileString
(
geometries
)
{
let
output
=
buildHeader
();
for
(
const
uuid
in
geometries
)
{
const
geometry
=
geometries
[
uuid
];
output
+=
buildMeshObject
(
geometry
);
}
return
output
;
}
function
buildMeshObject
(
geometry
)
{
const
name
=
'
Geometry_
'
+
geometry
.
id
;
const
mesh
=
buildMesh
(
geometry
);
return
`
def "
${
name
}
"
def "
Geometry
"
{
${
mesh
}
}
...
...
@@ -190,7 +183,7 @@ def "${name}"
function
buildMesh
(
geometry
)
{
const
name
=
'
Geometry
_
'
+
geometry
.
id
;
const
name
=
'
Geometry
'
;
const
attributes
=
geometry
.
attributes
;
const
count
=
attributes
.
position
.
count
;
...
...
examples/jsm/exporters/USDZExporter.js
浏览文件 @
2dccc1fb
...
...
@@ -6,11 +6,12 @@ class USDZExporter {
const
files
=
{};
const
modelFileName
=
'
model.usda
'
;
const
geometryFileName
=
'
geometry.usd
'
;
// model file should be first in USDZ archive so we init it here
files
[
modelFileName
]
=
null
;
let
output
=
buildHeader
();
const
geometries
=
{};
const
materials
=
{};
const
textures
=
{};
...
...
@@ -21,9 +22,12 @@ class USDZExporter {
const
geometry
=
object
.
geometry
;
const
material
=
object
.
material
;
if
(
!
(
geometry
.
uuid
in
geometries
)
)
{
const
geometryFileName
=
'
geometries/Geometry_
'
+
geometry
.
id
+
'
.usd
'
;
if
(
!
(
geometryFileName
in
files
)
)
{
geometries
[
geometry
.
uuid
]
=
geometry
;
const
meshObject
=
buildMeshObject
(
geometry
);
files
[
geometryFileName
]
=
buildUSDFileAsString
(
meshObject
);
}
...
...
@@ -39,7 +43,8 @@ class USDZExporter {
}
const
referencedMesh
=
`prepend references = @./
${
geometryFileName
}
@</Geometry_
${
geometry
.
id
}
>`
;
const
referencedMesh
=
`prepend references = @./
${
geometryFileName
}
@</Geometry>`
;
const
referencedMaterial
=
`rel material:binding = </Materials/Material_
${
material
.
id
}
>`
;
output
+=
buildXform
(
object
,
referencedMesh
,
referencedMaterial
);
...
...
@@ -53,8 +58,6 @@ class USDZExporter {
files
[
modelFileName
]
=
fflate
.
strToU8
(
output
);
output
=
null
;
files
[
geometryFileName
]
=
fflate
.
strToU8
(
buildMeshFileString
(
geometries
)
);
for
(
const
uuid
in
textures
)
{
const
texture
=
textures
[
uuid
];
...
...
@@ -137,6 +140,14 @@ function buildHeader() {
}
function
buildUSDFileAsString
(
dataToInsert
)
{
let
output
=
buildHeader
();
output
+=
dataToInsert
;
return
fflate
.
strToU8
(
output
);
}
// Xform
function
buildXform
(
object
,
referencedMesh
,
referencedMaterial
)
{
...
...
@@ -175,27 +186,11 @@ function buildMatrixRow( array, offset ) {
// Mesh
function
buildMeshFileString
(
geometries
)
{
let
output
=
buildHeader
();
for
(
const
uuid
in
geometries
)
{
const
geometry
=
geometries
[
uuid
];
output
+=
buildMeshObject
(
geometry
);
}
return
output
;
}
function
buildMeshObject
(
geometry
)
{
const
name
=
'
Geometry_
'
+
geometry
.
id
;
const
mesh
=
buildMesh
(
geometry
);
return
`
def "
${
name
}
"
def "
Geometry
"
{
${
mesh
}
}
...
...
@@ -205,7 +200,7 @@ def "${name}"
function
buildMesh
(
geometry
)
{
const
name
=
'
Geometry
_
'
+
geometry
.
id
;
const
name
=
'
Geometry
'
;
const
attributes
=
geometry
.
attributes
;
const
count
=
attributes
.
position
.
count
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录