Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
c745c3b5
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,发现更多精彩内容 >>
提交
c745c3b5
编写于
3月 21, 2016
作者:
M
Mugen87
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OBJExporter: Correct Tab Styles
上级
b481eec0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
141 addition
and
141 deletion
+141
-141
examples/js/exporters/OBJExporter.js
examples/js/exporters/OBJExporter.js
+141
-141
未找到文件。
examples/js/exporters/OBJExporter.js
浏览文件 @
c745c3b5
...
...
@@ -2,250 +2,250 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
OBJExporter
=
function
()
{};
THREE
.
OBJExporter
=
function
()
{};
THREE
.
OBJExporter
.
prototype
=
{
THREE
.
OBJExporter
.
prototype
=
{
constructor
:
THREE
.
OBJExporter
,
constructor
:
THREE
.
OBJExporter
,
parse
:
function
(
object
)
{
parse
:
function
(
object
)
{
var
output
=
''
;
var
output
=
''
;
var
indexVertex
=
0
;
var
indexVertexUvs
=
0
;
var
indexNormals
=
0
;
var
indexVertex
=
0
;
var
indexVertexUvs
=
0
;
var
indexNormals
=
0
;
var
vertex
=
new
THREE
.
Vector3
();
var
normal
=
new
THREE
.
Vector3
();
var
uv
=
new
THREE
.
Vector2
();
var
vertex
=
new
THREE
.
Vector3
();
var
normal
=
new
THREE
.
Vector3
();
var
uv
=
new
THREE
.
Vector2
();
var
i
,
j
,
m
,
face
=
[];
var
i
,
j
,
m
,
face
=
[];
var
parseMesh
=
function
(
mesh
)
{
var
parseMesh
=
function
(
mesh
)
{
var
nbVertex
=
0
;
var
nbNormals
=
0
;
var
nbVertexUvs
=
0
;
var
nbVertex
=
0
;
var
nbNormals
=
0
;
var
nbVertexUvs
=
0
;
var
geometry
=
mesh
.
geometry
;
var
geometry
=
mesh
.
geometry
;
var
normalMatrixWorld
=
new
THREE
.
Matrix3
();
var
normalMatrixWorld
=
new
THREE
.
Matrix3
();
if
(
geometry
instanceof
THREE
.
Geometry
)
{
if
(
geometry
instanceof
THREE
.
Geometry
)
{
geometry
=
new
THREE
.
BufferGeometry
().
setFromObject
(
mesh
);
geometry
=
new
THREE
.
BufferGeometry
().
setFromObject
(
mesh
);
}
}
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
// shortcuts
var
vertices
=
geometry
.
getAttribute
(
'
position
'
);
var
normals
=
geometry
.
getAttribute
(
'
normal
'
);
var
uvs
=
geometry
.
getAttribute
(
'
uv
'
);
var
indices
=
geometry
.
getIndex
();
// shortcuts
var
vertices
=
geometry
.
getAttribute
(
'
position
'
);
var
normals
=
geometry
.
getAttribute
(
'
normal
'
);
var
uvs
=
geometry
.
getAttribute
(
'
uv
'
);
var
indices
=
geometry
.
getIndex
();
// name of the mesh object
output
+=
'
o
'
+
mesh
.
name
+
'
\n
'
;
// name of the mesh object
output
+=
'
o
'
+
mesh
.
name
+
'
\n
'
;
// vertices
// vertices
if
(
vertices
!==
undefined
)
{
if
(
vertices
!==
undefined
)
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
++
,
nbVertex
++
)
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
++
,
nbVertex
++
)
{
vertex
.
x
=
vertices
.
getX
(
i
);
vertex
.
y
=
vertices
.
getY
(
i
);
vertex
.
z
=
vertices
.
getZ
(
i
);
vertex
.
x
=
vertices
.
getX
(
i
);
vertex
.
y
=
vertices
.
getY
(
i
);
vertex
.
z
=
vertices
.
getZ
(
i
);
// transfrom the vertex to world space
vertex
.
applyMatrix4
(
mesh
.
matrixWorld
);
// transfrom the vertex to world space
vertex
.
applyMatrix4
(
mesh
.
matrixWorld
);
// transform the vertex to export format
output
+=
'
v
'
+
vertex
.
x
+
'
'
+
vertex
.
y
+
'
'
+
vertex
.
z
+
'
\n
'
;
// transform the vertex to export format
output
+=
'
v
'
+
vertex
.
x
+
'
'
+
vertex
.
y
+
'
'
+
vertex
.
z
+
'
\n
'
;
}
}
}
}
// uvs
// uvs
if
(
uvs
!==
undefined
)
{
if
(
uvs
!==
undefined
)
{
for
(
i
=
0
;
i
<
uvs
.
count
;
i
++
,
nbVertexUvs
++
)
{
for
(
i
=
0
;
i
<
uvs
.
count
;
i
++
,
nbVertexUvs
++
)
{
uv
.
x
=
uvs
.
getX
(
i
);
uv
.
y
=
uvs
.
getY
(
i
);
uv
.
x
=
uvs
.
getX
(
i
);
uv
.
y
=
uvs
.
getY
(
i
);
// transform the uv to export format
output
+=
'
vt
'
+
uv
.
x
+
'
'
+
uv
.
y
+
'
\n
'
;
// transform the uv to export format
output
+=
'
vt
'
+
uv
.
x
+
'
'
+
uv
.
y
+
'
\n
'
;
}
}
}
}
// normals
// normals
if
(
normals
!==
undefined
)
{
if
(
normals
!==
undefined
)
{
normalMatrixWorld
.
getNormalMatrix
(
mesh
.
matrixWorld
);
normalMatrixWorld
.
getNormalMatrix
(
mesh
.
matrixWorld
);
for
(
i
=
0
;
i
<
normals
.
count
;
i
++
,
nbNormals
++
)
{
for
(
i
=
0
;
i
<
normals
.
count
;
i
++
,
nbNormals
++
)
{
normal
.
x
=
normals
.
getX
(
i
);
normal
.
y
=
normals
.
getY
(
i
);
normal
.
z
=
normals
.
getZ
(
i
);
normal
.
x
=
normals
.
getX
(
i
);
normal
.
y
=
normals
.
getY
(
i
);
normal
.
z
=
normals
.
getZ
(
i
);
// transfrom the normal to world space
normal
.
applyMatrix3
(
normalMatrixWorld
);
// transfrom the normal to world space
normal
.
applyMatrix3
(
normalMatrixWorld
);
// transform the normal to export format
output
+=
'
vn
'
+
normal
.
x
+
'
'
+
normal
.
y
+
'
'
+
normal
.
z
+
'
\n
'
;
// transform the normal to export format
output
+=
'
vn
'
+
normal
.
x
+
'
'
+
normal
.
y
+
'
'
+
normal
.
z
+
'
\n
'
;
}
}
}
}
// faces
// faces
if
(
indices
!==
null
)
{
if
(
indices
!==
null
)
{
for
(
i
=
0
;
i
<
indices
.
count
;
i
+=
3
)
{
for
(
i
=
0
;
i
<
indices
.
count
;
i
+=
3
)
{
for
(
m
=
0
;
m
<
3
;
m
++
){
for
(
m
=
0
;
m
<
3
;
m
++
){
j
=
indices
.
getX
(
i
+
m
)
+
1
;
j
=
indices
.
getX
(
i
+
m
)
+
1
;
face
[
m
]
=
(
indexVertex
+
j
)
+
'
/
'
+
(
uvs
?
(
indexVertexUvs
+
j
)
:
''
)
+
'
/
'
+
(
indexNormals
+
j
);
face
[
m
]
=
(
indexVertex
+
j
)
+
'
/
'
+
(
uvs
?
(
indexVertexUvs
+
j
)
:
''
)
+
'
/
'
+
(
indexNormals
+
j
);
}
}
// transform the face to export format
output
+=
'
f
'
+
face
.
join
(
'
'
)
+
"
\n
"
;
// transform the face to export format
output
+=
'
f
'
+
face
.
join
(
'
'
)
+
"
\n
"
;
}
}
}
else
{
}
else
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
+=
3
)
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
+=
3
)
{
for
(
m
=
0
;
m
<
3
;
m
++
){
for
(
m
=
0
;
m
<
3
;
m
++
){
j
=
i
+
m
+
1
;
j
=
i
+
m
+
1
;
face
[
m
]
=
(
indexVertex
+
j
)
+
'
/
'
+
(
uvs
?
(
indexVertexUvs
+
j
)
:
''
)
+
'
/
'
+
(
indexNormals
+
j
);
face
[
m
]
=
(
indexVertex
+
j
)
+
'
/
'
+
(
uvs
?
(
indexVertexUvs
+
j
)
:
''
)
+
'
/
'
+
(
indexNormals
+
j
);
}
}
// transform the face to export format
output
+=
'
f
'
+
face
.
join
(
'
'
)
+
"
\n
"
;
// transform the face to export format
output
+=
'
f
'
+
face
.
join
(
'
'
)
+
"
\n
"
;
}
}
}
}
}
else
{
}
else
{
console
.
warn
(
'
THREE.OBJExporter.parseMesh(): geometry type unsupported
'
,
geometry
);
console
.
warn
(
'
THREE.OBJExporter.parseMesh(): geometry type unsupported
'
,
geometry
);
}
}
// update index
indexVertex
+=
nbVertex
;
indexVertexUvs
+=
nbVertexUvs
;
indexNormals
+=
nbNormals
;
// update index
indexVertex
+=
nbVertex
;
indexVertexUvs
+=
nbVertexUvs
;
indexNormals
+=
nbNormals
;
};
};
var
parseLine
=
function
(
line
)
{
var
parseLine
=
function
(
line
)
{
var
geometry
=
line
.
geometry
;
var
type
=
line
.
type
;
var
geometry
=
line
.
geometry
;
var
type
=
line
.
type
;
if
(
geometry
instanceof
THREE
.
Geometry
)
{
if
(
geometry
instanceof
THREE
.
Geometry
)
{
geometry
=
new
THREE
.
BufferGeometry
().
setFromObject
(
line
);
geometry
=
new
THREE
.
BufferGeometry
().
setFromObject
(
line
);
}
}
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
// shortcuts
var
vertices
=
geometry
.
getAttribute
(
'
position
'
);
var
indices
=
geometry
.
getIndex
();
// shortcuts
var
vertices
=
geometry
.
getAttribute
(
'
position
'
);
var
indices
=
geometry
.
getIndex
();
// name of the line object
output
+=
'
o
'
+
line
.
name
+
'
\n
'
;
// name of the line object
output
+=
'
o
'
+
line
.
name
+
'
\n
'
;
if
(
vertices
!==
undefined
)
{
if
(
vertices
!==
undefined
)
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
++
)
{
for
(
i
=
0
;
i
<
vertices
.
count
;
i
++
)
{
vertex
.
x
=
vertices
.
getX
(
i
);
vertex
.
y
=
vertices
.
getY
(
i
);
vertex
.
z
=
vertices
.
getZ
(
i
);
vertex
.
x
=
vertices
.
getX
(
i
);
vertex
.
y
=
vertices
.
getY
(
i
);
vertex
.
z
=
vertices
.
getZ
(
i
);
// transfrom the vertex to world space
vertex
.
applyMatrix4
(
line
.
matrixWorld
);
// transfrom the vertex to world space
vertex
.
applyMatrix4
(
line
.
matrixWorld
);
// transform the vertex to export format
output
+=
'
v
'
+
vertex
.
x
+
'
'
+
vertex
.
y
+
'
'
+
vertex
.
z
+
'
\n
'
;
// transform the vertex to export format
output
+=
'
v
'
+
vertex
.
x
+
'
'
+
vertex
.
y
+
'
'
+
vertex
.
z
+
'
\n
'
;
}
}
}
}
if
(
type
===
'
Line
'
)
{
if
(
type
===
'
Line
'
)
{
output
+=
'
l
'
;
output
+=
'
l
'
;
for
(
j
=
1
;
j
<=
vertices
.
count
;
j
++
)
{
for
(
j
=
1
;
j
<=
vertices
.
count
;
j
++
)
{
output
+=
j
+
'
'
;
output
+=
j
+
'
'
;
}
}
output
+=
'
\n
'
;
output
+=
'
\n
'
;
}
}
if
(
type
===
'
LineSegments
'
)
{
if
(
type
===
'
LineSegments
'
)
{
for
(
j
=
1
,
k
=
j
+
1
;
j
<
vertices
.
count
;
j
+=
2
,
k
=
j
+
1
)
{
for
(
j
=
1
,
k
=
j
+
1
;
j
<
vertices
.
count
;
j
+=
2
,
k
=
j
+
1
)
{
output
+=
'
l
'
+
j
+
'
'
+
k
+
'
\n
'
;
output
+=
'
l
'
+
j
+
'
'
+
k
+
'
\n
'
;
}
}
}
}
}
else
{
}
else
{
console
.
warn
(
'
THREE.OBJExporter.parseLine(): geometry type unsupported
'
,
geometry
);
console
.
warn
(
'
THREE.OBJExporter.parseLine(): geometry type unsupported
'
,
geometry
);
}
}
};
};
object
.
traverse
(
function
(
child
)
{
object
.
traverse
(
function
(
child
)
{
if
(
child
instanceof
THREE
.
Mesh
)
{
if
(
child
instanceof
THREE
.
Mesh
)
{
parseMesh
(
child
);
parseMesh
(
child
);
}
}
if
(
child
instanceof
THREE
.
Line
)
{
if
(
child
instanceof
THREE
.
Line
)
{
parseLine
(
child
);
parseLine
(
child
);
}
}
}
);
}
);
return
output
;
return
output
;
}
}
};
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录