Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
a23f8309
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,发现更多精彩内容 >>
提交
a23f8309
编写于
3月 27, 2011
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'alteredq/master'
上级
ba7ad630
33e5a9bf
变更
8
展开全部
显示空白变更内容
内联
并排
Showing
8 changed file
with
538 addition
and
281 deletion
+538
-281
build/Three.js
build/Three.js
+190
-190
build/custom/ThreeCanvas.js
build/custom/ThreeCanvas.js
+1
-1
build/custom/ThreeDOM.js
build/custom/ThreeDOM.js
+1
-1
build/custom/ThreeExtras.js
build/custom/ThreeExtras.js
+73
-73
build/custom/ThreeSVG.js
build/custom/ThreeSVG.js
+1
-1
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+1
-1
src/extras/io/JSONLoader.js
src/extras/io/JSONLoader.js
+5
-4
utils/exporters/blender/2.56/scripts/op/io_mesh_threejs/import_threejs.py
...blender/2.56/scripts/op/io_mesh_threejs/import_threejs.py
+266
-10
未找到文件。
build/Three.js
浏览文件 @
a23f8309
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
build/custom/ThreeCanvas.js
浏览文件 @
a23f8309
...
...
@@ -48,7 +48,7 @@ b,c)}};THREE.Quaternion=function(a,b,c,e){this.set(a||0,b||0,c||0,e!==undefined?
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
e
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
e
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
e
=
a
.
y
*
b
,
d
=
a
.
z
*
b
;
a
=
Math
.
cos
(
e
);
e
=
Math
.
sin
(
e
);
b
=
Math
.
cos
(
-
d
);
d
=
Math
.
sin
(
-
d
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
j
=
e
*
d
;
this
.
w
=
g
*
f
-
j
*
c
;
this
.
x
=
g
*
c
+
j
*
f
;
this
.
y
=
e
*
b
*
f
+
a
*
d
*
c
;
this
.
z
=
a
*
d
*
f
-
e
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
e
=
this
.
z
,
d
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
j
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
d
*
f
+
c
*
j
-
e
*
g
;
this
.
y
=
c
*
a
+
d
*
g
+
e
*
f
-
b
*
j
;
this
.
z
=
e
*
a
+
d
*
j
+
b
*
g
-
c
*
f
;
this
.
w
=
d
*
a
-
b
*
f
-
c
*
g
-
e
*
j
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
e
=
a
.
y
,
d
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
j
=
this
.
z
,
h
=
this
.
w
,
i
=
h
*
c
+
g
*
d
-
j
*
e
,
l
=
h
*
e
+
j
*
c
-
f
*
d
,
m
=
h
*
d
+
f
*
e
-
g
*
c
;
c
=-
f
*
c
-
g
*
e
-
j
*
d
;
b
.
x
=
i
*
h
+
c
*-
f
+
l
*-
j
-
m
*-
g
;
b
.
y
=
l
*
h
+
c
*-
g
+
m
*-
f
-
i
*-
j
;
b
.
z
=
m
*
h
+
c
*-
j
+
i
*-
g
-
l
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
d
),
g
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
g
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
f
)
/
g
;
e
=
Math
.
sin
(
e
*
f
)
/
g
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
d
),
g
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
g
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
f
)
/
g
;
e
=
Math
.
sin
(
e
*
f
)
/
g
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
e
,
d
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
d
instanceof
THREE
.
Color
?
d
:
new
THREE
.
Color
;
this
.
vertexColors
=
d
instanceof
Array
?
d
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
e
,
d
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
e
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
colors
=
[];
this
.
faces
=
[];
this
.
faceUvs
=
[[]];
this
.
faceVertexUvs
=
[[]];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
build/custom/ThreeDOM.js
浏览文件 @
a23f8309
...
...
@@ -48,7 +48,7 @@ b,c)}};THREE.Quaternion=function(a,b,c,e){this.set(a||0,b||0,c||0,e!==undefined?
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
e
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
e
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
e
=
a
.
y
*
b
,
d
=
a
.
z
*
b
;
a
=
Math
.
cos
(
e
);
e
=
Math
.
sin
(
e
);
b
=
Math
.
cos
(
-
d
);
d
=
Math
.
sin
(
-
d
);
var
g
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
f
=
a
*
b
,
i
=
e
*
d
;
this
.
w
=
f
*
g
-
i
*
c
;
this
.
x
=
f
*
c
+
i
*
g
;
this
.
y
=
e
*
b
*
g
+
a
*
d
*
c
;
this
.
z
=
a
*
d
*
g
-
e
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
e
=
this
.
z
,
d
=
this
.
w
,
g
=
a
.
x
,
f
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
d
*
g
+
c
*
i
-
e
*
f
;
this
.
y
=
c
*
a
+
d
*
f
+
e
*
g
-
b
*
i
;
this
.
z
=
e
*
a
+
d
*
i
+
b
*
f
-
c
*
g
;
this
.
w
=
d
*
a
-
b
*
g
-
c
*
f
-
e
*
i
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
e
=
a
.
y
,
d
=
a
.
z
,
g
=
this
.
x
,
f
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
j
=
h
*
c
+
f
*
d
-
i
*
e
,
m
=
h
*
e
+
i
*
c
-
g
*
d
,
l
=
h
*
d
+
g
*
e
-
f
*
c
;
c
=-
g
*
c
-
f
*
e
-
i
*
d
;
b
.
x
=
j
*
h
+
c
*-
g
+
m
*-
i
-
l
*-
f
;
b
.
y
=
m
*
h
+
c
*-
f
+
l
*-
g
-
j
*-
i
;
b
.
z
=
l
*
h
+
c
*-
i
+
j
*-
f
-
m
*-
g
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
g
=
Math
.
acos
(
d
),
f
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
f
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
g
)
/
f
;
e
=
Math
.
sin
(
e
*
g
)
/
f
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
g
=
Math
.
acos
(
d
),
f
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
f
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
g
)
/
f
;
e
=
Math
.
sin
(
e
*
g
)
/
f
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
e
,
d
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
d
instanceof
THREE
.
Color
?
d
:
new
THREE
.
Color
;
this
.
vertexColors
=
d
instanceof
Array
?
d
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
e
,
d
,
g
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
e
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
g
instanceof
THREE
.
Color
?
g
:
new
THREE
.
Color
;
this
.
vertexColors
=
g
instanceof
Array
?
g
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
...
...
build/custom/ThreeExtras.js
浏览文件 @
a23f8309
此差异已折叠。
点击以展开。
build/custom/ThreeSVG.js
浏览文件 @
a23f8309
...
...
@@ -48,7 +48,7 @@ b,c)}};THREE.Quaternion=function(a,b,c,e){this.set(a||0,b||0,c||0,e!==undefined?
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
b
,
c
,
e
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
e
;
return
this
},
setFromEuler
:
function
(
a
){
var
b
=
0.5
*
Math
.
PI
/
360
,
c
=
a
.
x
*
b
,
e
=
a
.
y
*
b
,
d
=
a
.
z
*
b
;
a
=
Math
.
cos
(
e
);
e
=
Math
.
sin
(
e
);
b
=
Math
.
cos
(
-
d
);
d
=
Math
.
sin
(
-
d
);
var
f
=
Math
.
cos
(
c
);
c
=
Math
.
sin
(
c
);
var
g
=
a
*
b
,
i
=
e
*
d
;
this
.
w
=
g
*
f
-
i
*
c
;
this
.
x
=
g
*
c
+
i
*
f
;
this
.
y
=
e
*
b
*
f
+
a
*
d
*
c
;
this
.
z
=
a
*
d
*
f
-
e
*
b
*
c
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
e
=
this
.
z
,
d
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
b
*
a
+
d
*
f
+
c
*
i
-
e
*
g
;
this
.
y
=
c
*
a
+
d
*
g
+
e
*
f
-
b
*
i
;
this
.
z
=
e
*
a
+
d
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
d
*
a
-
b
*
f
-
c
*
g
-
e
*
i
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
e
=
a
.
y
,
d
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
h
=
this
.
w
,
j
=
h
*
c
+
g
*
d
-
i
*
e
,
m
=
h
*
e
+
i
*
c
-
f
*
d
,
l
=
h
*
d
+
f
*
e
-
g
*
c
;
c
=-
f
*
c
-
g
*
e
-
i
*
d
;
b
.
x
=
j
*
h
+
c
*-
f
+
m
*-
i
-
l
*-
g
;
b
.
y
=
m
*
h
+
c
*-
g
+
l
*-
f
-
j
*-
i
;
b
.
z
=
l
*
h
+
c
*-
i
+
j
*-
g
-
m
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
d
),
g
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
g
)
<
0.001
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
f
)
/
g
;
e
=
Math
.
sin
(
e
*
f
)
/
g
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
e
){
var
d
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
if
(
Math
.
abs
(
d
)
>=
1
){
c
.
w
=
a
.
w
;
c
.
x
=
a
.
x
;
c
.
y
=
a
.
y
;
c
.
z
=
a
.
z
;
return
c
}
var
f
=
Math
.
acos
(
d
),
g
=
Math
.
sqrt
(
1
-
d
*
d
);
if
(
Math
.
abs
(
g
)
<
0.001
0
){
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
);
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
);
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
);
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
);
return
c
}
d
=
Math
.
sin
((
1
-
e
)
*
f
)
/
g
;
e
=
Math
.
sin
(
e
*
f
)
/
g
;
c
.
w
=
a
.
w
*
d
+
b
.
w
*
e
;
c
.
x
=
a
.
x
*
d
+
b
.
x
*
e
;
c
.
y
=
a
.
y
*
d
+
b
.
y
*
e
;
c
.
z
=
a
.
z
*
d
+
b
.
z
*
e
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
e
,
d
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
d
instanceof
THREE
.
Color
?
d
:
new
THREE
.
Color
;
this
.
vertexColors
=
d
instanceof
Array
?
d
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
f
instanceof
Array
?
f
:[
f
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
e
,
d
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
e
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
g
instanceof
Array
?
g
:[
g
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
set
(
a
||
0
,
b
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
colors
=
[];
this
.
faces
=
[];
this
.
faceUvs
=
[[]];
this
.
faceVertexUvs
=
[[]];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
build/custom/ThreeWebGL.js
浏览文件 @
a23f8309
...
...
@@ -48,7 +48,7 @@ c,d)}};THREE.Quaternion=function(a,c,d,g){this.set(a||0,c||0,d||0,g!==undefined?
THREE
.
Quaternion
.
prototype
=
{
set
:
function
(
a
,
c
,
d
,
g
){
this
.
x
=
a
;
this
.
y
=
c
;
this
.
z
=
d
;
this
.
w
=
g
;
return
this
},
setFromEuler
:
function
(
a
){
var
c
=
0.5
*
Math
.
PI
/
360
,
d
=
a
.
x
*
c
,
g
=
a
.
y
*
c
,
f
=
a
.
z
*
c
;
a
=
Math
.
cos
(
g
);
g
=
Math
.
sin
(
g
);
c
=
Math
.
cos
(
-
f
);
f
=
Math
.
sin
(
-
f
);
var
h
=
Math
.
cos
(
d
);
d
=
Math
.
sin
(
d
);
var
i
=
a
*
c
,
m
=
g
*
f
;
this
.
w
=
i
*
h
-
m
*
d
;
this
.
x
=
i
*
d
+
m
*
h
;
this
.
y
=
g
*
c
*
h
+
a
*
f
*
d
;
this
.
z
=
a
*
f
*
h
-
g
*
c
*
d
;
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=
-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
if
(
a
==
0
)
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
;
else
{
a
=
1
/
a
;
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
}
return
this
},
multiplySelf
:
function
(
a
){
var
c
=
this
.
x
,
d
=
this
.
y
,
g
=
this
.
z
,
f
=
this
.
w
,
h
=
a
.
x
,
i
=
a
.
y
,
m
=
a
.
z
;
a
=
a
.
w
;
this
.
x
=
c
*
a
+
f
*
h
+
d
*
m
-
g
*
i
;
this
.
y
=
d
*
a
+
f
*
i
+
g
*
h
-
c
*
m
;
this
.
z
=
g
*
a
+
f
*
m
+
c
*
i
-
d
*
h
;
this
.
w
=
f
*
a
-
c
*
h
-
d
*
i
-
g
*
m
;
return
this
},
multiplyVector3
:
function
(
a
,
c
){
c
||
(
c
=
a
);
var
d
=
a
.
x
,
g
=
a
.
y
,
f
=
a
.
z
,
h
=
this
.
x
,
i
=
this
.
y
,
m
=
this
.
z
,
o
=
this
.
w
,
t
=
o
*
d
+
i
*
f
-
m
*
g
,
x
=
o
*
g
+
m
*
d
-
h
*
f
,
y
=
o
*
f
+
h
*
g
-
i
*
d
;
d
=-
h
*
d
-
i
*
g
-
m
*
f
;
c
.
x
=
t
*
o
+
d
*-
h
+
x
*-
m
-
y
*-
i
;
c
.
y
=
x
*
o
+
d
*-
i
+
y
*-
h
-
t
*-
m
;
c
.
z
=
y
*
o
+
d
*-
m
+
t
*-
i
-
x
*-
h
;
return
c
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
c
,
d
,
g
){
var
f
=
a
.
w
*
c
.
w
+
a
.
x
*
c
.
x
+
a
.
y
*
c
.
y
+
a
.
z
*
c
.
z
;
if
(
Math
.
abs
(
f
)
>=
1
){
d
.
w
=
a
.
w
;
d
.
x
=
a
.
x
;
d
.
y
=
a
.
y
;
d
.
z
=
a
.
z
;
return
d
}
var
h
=
Math
.
acos
(
f
),
i
=
Math
.
sqrt
(
1
-
f
*
f
);
if
(
Math
.
abs
(
i
)
<
0.001
){
d
.
w
=
0.5
*
(
a
.
w
+
c
.
w
);
d
.
x
=
0.5
*
(
a
.
x
+
c
.
x
);
d
.
y
=
0.5
*
(
a
.
y
+
c
.
y
);
d
.
z
=
0.5
*
(
a
.
z
+
c
.
z
);
return
d
}
f
=
Math
.
sin
((
1
-
g
)
*
h
)
/
i
;
g
=
Math
.
sin
(
g
*
h
)
/
i
;
d
.
w
=
a
.
w
*
f
+
c
.
w
*
g
;
d
.
x
=
a
.
x
*
f
+
c
.
x
*
g
;
d
.
y
=
a
.
y
*
f
+
c
.
y
*
g
;
d
.
z
=
a
.
z
*
f
+
c
.
z
*
g
;
return
d
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
c
,
d
,
g
){
var
f
=
a
.
w
*
c
.
w
+
a
.
x
*
c
.
x
+
a
.
y
*
c
.
y
+
a
.
z
*
c
.
z
;
if
(
Math
.
abs
(
f
)
>=
1
){
d
.
w
=
a
.
w
;
d
.
x
=
a
.
x
;
d
.
y
=
a
.
y
;
d
.
z
=
a
.
z
;
return
d
}
var
h
=
Math
.
acos
(
f
),
i
=
Math
.
sqrt
(
1
-
f
*
f
);
if
(
Math
.
abs
(
i
)
<
0.001
0
){
d
.
w
=
0.5
*
(
a
.
w
+
c
.
w
);
d
.
x
=
0.5
*
(
a
.
x
+
c
.
x
);
d
.
y
=
0.5
*
(
a
.
y
+
c
.
y
);
d
.
z
=
0.5
*
(
a
.
z
+
c
.
z
);
return
d
}
f
=
Math
.
sin
((
1
-
g
)
*
h
)
/
i
;
g
=
Math
.
sin
(
g
*
h
)
/
i
;
d
.
w
=
a
.
w
*
f
+
c
.
w
*
g
;
d
.
x
=
a
.
x
*
f
+
c
.
x
*
g
;
d
.
y
=
a
.
y
*
f
+
c
.
y
*
g
;
d
.
z
=
a
.
z
*
f
+
c
.
z
*
g
;
return
d
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
c
,
d
,
g
,
f
,
h
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
d
;
this
.
normal
=
g
instanceof
THREE
.
Vector3
?
g
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
g
instanceof
Array
?
g
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
h
instanceof
Array
?
h
:[
h
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
c
,
d
,
g
,
f
,
h
,
i
){
this
.
a
=
a
;
this
.
b
=
c
;
this
.
c
=
d
;
this
.
d
=
g
;
this
.
normal
=
f
instanceof
THREE
.
Vector3
?
f
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
f
instanceof
Array
?
f
:[];
this
.
color
=
h
instanceof
THREE
.
Color
?
h
:
new
THREE
.
Color
;
this
.
vertexColors
=
h
instanceof
Array
?
h
:[];
this
.
vertexTangents
=
[];
this
.
materials
=
i
instanceof
Array
?
i
:[
i
];
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
c
){
this
.
set
(
a
||
0
,
c
||
0
)};
THREE
.
UV
.
prototype
=
{
set
:
function
(
a
,
c
){
this
.
u
=
a
;
this
.
v
=
c
;
return
this
},
copy
:
function
(
a
){
this
.
set
(
a
.
u
,
a
.
v
);
return
this
}};
THREE
.
Geometry
=
function
(){
this
.
id
=
"
Geometry
"
+
THREE
.
GeometryIdCounter
++
;
this
.
vertices
=
[];
this
.
colors
=
[];
this
.
faces
=
[];
this
.
faceUvs
=
[[]];
this
.
faceVertexUvs
=
[[]];
this
.
morphTargets
=
[];
this
.
skinWeights
=
[];
this
.
skinIndices
=
[];
this
.
boundingSphere
=
this
.
boundingBox
=
null
;
this
.
hasTangents
=!
1
};
...
...
src/extras/io/JSONLoader.js
浏览文件 @
a23f8309
...
...
@@ -171,6 +171,10 @@ THREE.JSONLoader.prototype.createModel = function ( json, callback, texture_path
}
// to get face <=> uv index correspondence
fi
=
geometry
.
faces
.
length
;
if
(
hasFaceUv
)
{
for
(
i
=
0
;
i
<
nUvLayers
;
i
++
)
{
...
...
@@ -182,7 +186,7 @@ THREE.JSONLoader.prototype.createModel = function ( json, callback, texture_path
u
=
uvLayer
[
uvIndex
*
2
];
v
=
uvLayer
[
uvIndex
*
2
+
1
];
geometry
.
faceUvs
[
i
]
.
push
(
new
THREE
.
UV
(
u
,
v
)
);
geometry
.
faceUvs
[
i
]
[
fi
]
=
new
THREE
.
UV
(
u
,
v
);
}
...
...
@@ -207,9 +211,6 @@ THREE.JSONLoader.prototype.createModel = function ( json, callback, texture_path
}
// to get face <=> uv index correspondence
fi
=
geometry
.
faces
.
length
;
geometry
.
faceVertexUvs
[
i
][
fi
]
=
uvs
;
}
...
...
utils/exporters/blender/2.56/scripts/op/io_mesh_threejs/import_threejs.py
浏览文件 @
a23f8309
...
...
@@ -33,10 +33,254 @@ import mathutils
from
mathutils.geometry
import
tesselate_polygon
from
io_utils
import
load_image
,
unpack_list
,
unpack_face_list
# #####################################################
# Generators
# #####################################################
def
create_mesh_object
(
name
,
vertices
,
faces
):
# Create a new mesh
me
=
bpy
.
data
.
meshes
.
new
(
name
)
me
.
from_pydata
(
vertices
,
[],
faces
)
me
.
update
()
# update the mesh with the new data
# Create a new object
ob
=
bpy
.
data
.
objects
.
new
(
name
,
me
)
ob
.
data
=
me
# link the mesh data to the object
scene
=
bpy
.
context
.
scene
# get the current scene
scene
.
objects
.
link
(
ob
)
# link the object into the scene
ob
.
location
=
scene
.
cursor_location
# position object at 3d-cursor
# #####################################################
# Faces
# #####################################################
def
extract_faces
(
data
):
result
=
{
"faces"
:
[],
"materials"
:
[],
"faceUvs"
:
[],
"vertexUvs"
:
[],
"faceNormals"
:
[],
"vertexNormals"
:
[],
"faceColors"
:
[],
"vertexColors"
:
[]
}
faces
=
data
.
get
(
"faces"
,
[])
normals
=
data
.
get
(
"normals"
,
[])
colors
=
data
.
get
(
"colors"
,
[])
offset
=
0
zLength
=
len
(
faces
)
# disregard empty arrays
nUvLayers
=
0
for
layer
in
data
[
"uvs"
]:
if
len
(
layer
)
>
0
:
nUvLayers
+=
1
result
[
"faceUvs"
].
append
([])
result
[
"vertexUvs"
].
append
([])
while
(
offset
<
zLength
):
type
=
faces
[
offset
]
offset
+=
1
isQuad
=
isBitSet
(
type
,
0
)
hasMaterial
=
isBitSet
(
type
,
1
)
hasFaceUv
=
isBitSet
(
type
,
2
)
hasFaceVertexUv
=
isBitSet
(
type
,
3
)
hasFaceNormal
=
isBitSet
(
type
,
4
)
hasFaceVertexNormal
=
isBitSet
(
type
,
5
)
hasFaceColor
=
isBitSet
(
type
,
6
)
hasFaceVertexColor
=
isBitSet
(
type
,
7
)
#print("type", type, "bits", isQuad, hasMaterial, hasFaceUv, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor)
# vertices
if
isQuad
:
a
=
faces
[
offset
]
offset
+=
1
b
=
faces
[
offset
]
offset
+=
1
c
=
faces
[
offset
]
offset
+=
1
d
=
faces
[
offset
]
offset
+=
1
face
=
[
a
,
b
,
c
,
d
]
nVertices
=
4
else
:
a
=
faces
[
offset
]
offset
+=
1
b
=
faces
[
offset
]
offset
+=
1
c
=
faces
[
offset
]
offset
+=
1
face
=
[
a
,
b
,
c
]
nVertices
=
3
result
[
"faces"
].
append
(
face
)
# material
if
hasMaterial
:
materialIndex
=
faces
[
offset
]
offset
+=
1
else
:
materialIndex
=
-
1
result
[
"materials"
].
append
(
materialIndex
)
# uvs
for
i
in
range
(
nUvLayers
):
faceUv
=
None
if
hasFaceUv
:
uvLayer
=
data
[
"uvs"
][
i
]
uvIndex
=
faces
[
offset
]
offset
+=
1
u
=
uvLayer
[
uvIndex
*
2
]
v
=
uvLayer
[
uvIndex
*
2
+
1
]
faceUv
=
[
u
,
v
]
result
[
"faceUvs"
][
i
].
append
(
faceUv
)
if
hasFaceVertexUv
:
uvLayer
=
data
[
"uvs"
][
i
]
vertexUvs
=
[]
for
j
in
range
(
nVertices
):
uvIndex
=
faces
[
offset
]
offset
+=
1
u
=
uvLayer
[
uvIndex
*
2
]
v
=
uvLayer
[
uvIndex
*
2
+
1
]
vertexUvs
.
append
([
u
,
v
])
result
[
"vertexUvs"
][
i
].
append
(
vertexUvs
)
if
hasFaceNormal
:
normalIndex
=
faces
[
offset
]
*
3
offset
+=
1
x
=
normals
[
normalIndex
]
y
=
normals
[
normalIndex
+
1
]
z
=
normals
[
normalIndex
+
2
]
faceNormal
=
[
x
,
y
,
z
]
else
:
faceNormal
=
None
result
[
"faceNormals"
].
append
(
faceNormal
)
if
hasFaceVertexNormal
:
vertexNormals
=
[]
for
j
in
range
(
nVertices
):
normalIndex
=
faces
[
offset
]
*
3
offset
+=
1
x
=
normals
[
normalIndex
]
y
=
normals
[
normalIndex
+
1
]
z
=
normals
[
normalIndex
+
2
]
vertexNormals
.
append
(
[
x
,
y
,
z
]
)
else
:
vertexNormals
=
None
result
[
"vertexNormals"
].
append
(
vertexNormals
)
if
hasFaceColor
:
colorIndex
=
faces
[
offset
]
offset
+=
1
faceColor
=
colors
[
colorIndex
]
else
:
faceColor
=
None
result
[
"faceColors"
].
append
(
faceColor
)
if
hasFaceVertexColor
:
vertexColors
=
[]
for
j
in
range
(
nVertices
):
colorIndex
=
faces
[
offset
]
offset
+=
1
color
=
colors
[
colorIndex
]
vertexColors
.
append
(
color
)
else
:
vertexColors
=
None
result
[
"vertexColors"
].
append
(
vertexColors
)
return
result
# #####################################################
# Utils
# #####################################################
def
isBitSet
(
value
,
position
):
return
value
&
(
1
<<
position
)
def
splitArray
(
data
,
chunkSize
):
result
=
[]
chunk
=
[]
...
...
@@ -58,6 +302,9 @@ def extract_json_string(text):
end
=
text
.
rfind
(
"}"
,
start
,
end
)
return
text
[
start
:
end
+
1
].
strip
()
def
get_name
(
filepath
):
return
os
.
path
.
splitext
(
os
.
path
.
basename
(
filepath
))[
0
]
# #####################################################
# Parser
# #####################################################
...
...
@@ -68,8 +315,10 @@ def load(operator, context, filepath):
time_main
=
time
.
time
()
verts_loc
=
[]
verts_tex
=
[]
vertices
=
[]
uvs
=
[]
normals
=
[]
colors
=
[]
faces
=
[]
materials
=
[]
...
...
@@ -90,23 +339,30 @@ def load(operator, context, filepath):
time_sub
=
time_new
verts_loc
=
splitArray
(
data
[
"vertices"
],
3
)
verts_loc
[:]
=
[(
v
[
0
],
v
[
2
],
-
v
[
1
])
for
v
in
verts_loc
]
# flip YZ
vertices
=
splitArray
(
data
[
"vertices"
],
3
)
vertices
[:]
=
[(
v
[
0
],
v
[
2
],
v
[
1
])
for
v
in
vertices
]
if
data
[
"normals"
]:
normals
=
splitArray
(
data
[
"normals"
],
3
)
normals
[:]
=
[(
v
[
0
],
v
[
2
],
v
[
1
])
for
v
in
normals
]
# extract faces
face_data
=
extract_faces
(
data
)
# deselect all
bpy
.
ops
.
object
.
select_all
(
action
=
'DESELECT'
)
scene
=
context
.
scene
new_objects
=
[]
print
(
'
\t
building geometry...
\n\t
verts:%i faces:%i materials: %i ...'
%
(
len
(
verts_loc
),
len
(
face
s
),
len
(
materials
)
))
print
(
'
\t
building geometry...
\n\t
faces:%i, vertices:%i, normals: %i, uvs: %i, colors: %i, materials: %i ...'
%
(
len
(
faces
),
len
(
vertices
),
len
(
normals
),
len
(
uvs
),
len
(
color
s
),
len
(
materials
)
))
# Create new obj
for
obj
in
new_objects
:
base
=
scene
.
objects
.
link
(
obj
)
base
.
select
=
True
create_mesh_object
(
get_name
(
filepath
),
vertices
,
face_data
[
"faces"
])
scene
.
update
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录