Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
18863f61
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,发现更多精彩内容 >>
提交
18863f61
编写于
7月 22, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added util for converting Geometry to BufferGeometry. Thx @spite.
上级
02b1361f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
175 addition
and
0 deletion
+175
-0
examples/js/BufferGeometryUtils.js
examples/js/BufferGeometryUtils.js
+175
-0
未找到文件。
examples/js/BufferGeometryUtils.js
0 → 100644
浏览文件 @
18863f61
/**
* @author spite / http://www.clicktorelease.com/
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
BufferGeometryUtils
=
{
fromGeometry
:
function
geometryToBufferGeometry
(
geometry
)
{
var
vertices
=
geometry
.
vertices
;
var
faces
=
geometry
.
faces
;
var
faceVertexUvs
=
geometry
.
faceVertexUvs
;
var
hasFaceVertexUv
=
faceVertexUvs
[
0
].
length
>
0
;
var
triangles
=
0
;
for
(
var
i
=
0
;
i
<
faces
.
length
;
i
++
)
{
triangles
+=
faces
[
i
]
instanceof
THREE
.
Face3
?
1
:
2
;
}
console
.
log
(
faces
.
length
,
triangles
);
var
bufferGeometry
=
new
THREE
.
BufferGeometry
();
bufferGeometry
.
attributes
=
{
position
:
{
itemSize
:
3
,
array
:
new
Float32Array
(
triangles
*
3
*
3
)
},
normal
:
{
itemSize
:
3
,
array
:
new
Float32Array
(
triangles
*
3
*
3
)
}
/*
color: {
itemSize: 3,
array: new Float32Array( triangles * 3 * 3 )
}*/
}
if
(
hasFaceVertexUv
===
true
)
{
bufferGeometry
.
attributes
.
uv
=
{
itemSize
:
2
,
array
:
new
Float32Array
(
triangles
*
3
*
2
)
};
var
uvs
=
bufferGeometry
.
attributes
.
uv
.
array
;
}
var
positions
=
bufferGeometry
.
attributes
.
position
.
array
;
var
normals
=
bufferGeometry
.
attributes
.
normal
.
array
;
// var colors = bufferGeometry.attributes.color.array;
var
i2
=
0
,
i3
=
0
;
for
(
var
i
=
0
;
i
<
faces
.
length
;
i
++
)
{
var
face
=
faces
[
i
];
var
a
=
vertices
[
face
.
a
];
var
b
=
vertices
[
face
.
b
];
var
c
=
vertices
[
face
.
c
];
positions
[
i3
]
=
a
.
x
;
positions
[
i3
+
1
]
=
a
.
y
;
positions
[
i3
+
2
]
=
a
.
z
;
positions
[
i3
+
3
]
=
b
.
x
;
positions
[
i3
+
4
]
=
b
.
y
;
positions
[
i3
+
5
]
=
b
.
z
;
positions
[
i3
+
6
]
=
c
.
x
;
positions
[
i3
+
7
]
=
c
.
y
;
positions
[
i3
+
8
]
=
c
.
z
;
var
na
=
face
.
vertexNormals
[
0
];
var
nb
=
face
.
vertexNormals
[
1
];
var
nc
=
face
.
vertexNormals
[
2
];
normals
[
i3
]
=
na
.
x
;
normals
[
i3
+
1
]
=
na
.
y
;
normals
[
i3
+
2
]
=
na
.
z
;
normals
[
i3
+
3
]
=
nb
.
x
;
normals
[
i3
+
4
]
=
nb
.
y
;
normals
[
i3
+
5
]
=
nb
.
z
;
normals
[
i3
+
6
]
=
nc
.
x
;
normals
[
i3
+
7
]
=
nc
.
y
;
normals
[
i3
+
8
]
=
nc
.
z
;
if
(
hasFaceVertexUv
===
true
)
{
var
uva
=
faceVertexUvs
[
0
][
i
][
0
];
var
uvb
=
faceVertexUvs
[
0
][
i
][
1
];
var
uvc
=
faceVertexUvs
[
0
][
i
][
2
];
uvs
[
i2
]
=
uva
.
x
;
uvs
[
i2
+
1
]
=
uva
.
y
;
uvs
[
i2
+
2
]
=
uvb
.
x
;
uvs
[
i2
+
3
]
=
uvb
.
y
;
uvs
[
i2
+
4
]
=
uvc
.
x
;
uvs
[
i2
+
5
]
=
uvc
.
y
;
}
i3
+=
9
;
i2
+=
6
;
if
(
face
instanceof
THREE
.
Face4
)
{
var
d
=
vertices
[
face
.
d
];
var
nd
=
face
.
vertexNormals
[
3
];
positions
[
i3
]
=
a
.
x
;
positions
[
i3
+
1
]
=
a
.
y
;
positions
[
i3
+
2
]
=
a
.
z
;
positions
[
i3
+
3
]
=
c
.
x
;
positions
[
i3
+
4
]
=
c
.
y
;
positions
[
i3
+
5
]
=
c
.
z
;
positions
[
i3
+
6
]
=
d
.
x
;
positions
[
i3
+
7
]
=
d
.
y
;
positions
[
i3
+
8
]
=
d
.
z
;
normals
[
i3
]
=
na
.
x
;
normals
[
i3
+
1
]
=
na
.
y
;
normals
[
i3
+
2
]
=
na
.
z
;
normals
[
i3
+
3
]
=
nc
.
x
;
normals
[
i3
+
4
]
=
nc
.
y
;
normals
[
i3
+
5
]
=
nc
.
z
;
normals
[
i3
+
6
]
=
nd
.
x
;
normals
[
i3
+
7
]
=
nd
.
y
;
normals
[
i3
+
8
]
=
nd
.
z
;
if
(
hasFaceVertexUv
===
true
)
{
var
uvd
=
faceVertexUvs
[
0
][
i
][
3
];
uvs
[
i2
]
=
uva
.
x
;
uvs
[
i2
+
1
]
=
uva
.
y
;
uvs
[
i2
+
2
]
=
uvc
.
x
;
uvs
[
i2
+
3
]
=
uvc
.
y
;
uvs
[
i2
+
4
]
=
uvd
.
x
;
uvs
[
i2
+
5
]
=
uvd
.
y
;
}
i3
+=
9
;
i2
+=
6
;
}
}
bufferGeometry
.
computeBoundingSphere
();
return
bufferGeometry
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录