Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
b93fe656
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,发现更多精彩内容 >>
提交
b93fe656
编写于
3月 30, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added WireframeGeometry.
上级
6935047d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
173 addition
and
161 deletion
+173
-161
src/extras/geometries/WireframeGeometry.js
src/extras/geometries/WireframeGeometry.js
+171
-0
src/extras/helpers/WireframeHelper.js
src/extras/helpers/WireframeHelper.js
+1
-161
utils/build/includes/extras.json
utils/build/includes/extras.json
+1
-0
未找到文件。
src/extras/geometries/WireframeGeometry.js
0 → 100644
浏览文件 @
b93fe656
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
WireframeGeometry
=
function
(
geometry
)
{
THREE
.
BufferGeometry
.
call
(
this
);
var
edge
=
[
0
,
0
],
hash
=
{};
var
sortFunction
=
function
(
a
,
b
)
{
return
a
-
b
};
var
keys
=
[
'
a
'
,
'
b
'
,
'
c
'
];
if
(
geometry
instanceof
THREE
.
Geometry
)
{
var
vertices
=
geometry
.
vertices
;
var
faces
=
geometry
.
faces
;
var
numEdges
=
0
;
// allocate maximal size
var
edges
=
new
Uint32Array
(
6
*
faces
.
length
);
for
(
var
i
=
0
,
l
=
faces
.
length
;
i
<
l
;
i
++
)
{
var
face
=
faces
[
i
];
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
face
[
keys
[
j
]
];
edge
[
1
]
=
face
[
keys
[
(
j
+
1
)
%
3
]
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
edges
[
2
*
numEdges
]
=
edge
[
0
];
edges
[
2
*
numEdges
+
1
]
=
edge
[
1
];
hash
[
key
]
=
true
;
numEdges
++
;
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numEdges
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
2
;
j
++
)
{
var
vertex
=
vertices
[
edges
[
2
*
i
+
j
]
];
var
index
=
6
*
i
+
3
*
j
;
coords
[
index
+
0
]
=
vertex
.
x
;
coords
[
index
+
1
]
=
vertex
.
y
;
coords
[
index
+
2
]
=
vertex
.
z
;
}
}
this
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
else
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
if
(
geometry
.
attributes
.
index
!==
undefined
)
{
// Indexed BufferGeometry
var
vertices
=
geometry
.
attributes
.
position
.
array
;
var
indices
=
geometry
.
attributes
.
index
.
array
;
var
drawcalls
=
geometry
.
drawcalls
;
var
numEdges
=
0
;
if
(
drawcalls
.
length
===
0
)
{
drawcalls
=
[
{
count
:
indices
.
length
,
index
:
0
,
start
:
0
}
];
}
// allocate maximal size
var
edges
=
new
Uint32Array
(
2
*
indices
.
length
);
for
(
var
o
=
0
,
ol
=
drawcalls
.
length
;
o
<
ol
;
++
o
)
{
var
start
=
drawcalls
[
o
].
start
;
var
count
=
drawcalls
[
o
].
count
;
var
index
=
drawcalls
[
o
].
index
;
for
(
var
i
=
start
,
il
=
start
+
count
;
i
<
il
;
i
+=
3
)
{
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
index
+
indices
[
i
+
j
];
edge
[
1
]
=
index
+
indices
[
i
+
(
j
+
1
)
%
3
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
edges
[
2
*
numEdges
]
=
edge
[
0
];
edges
[
2
*
numEdges
+
1
]
=
edge
[
1
];
hash
[
key
]
=
true
;
numEdges
++
;
}
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numEdges
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
2
;
j
++
)
{
var
index
=
6
*
i
+
3
*
j
;
var
index2
=
3
*
edges
[
2
*
i
+
j
];
coords
[
index
+
0
]
=
vertices
[
index2
];
coords
[
index
+
1
]
=
vertices
[
index2
+
1
];
coords
[
index
+
2
]
=
vertices
[
index2
+
2
];
}
}
this
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
else
{
// non-indexed BufferGeometry
var
vertices
=
geometry
.
attributes
.
position
.
array
;
var
numEdges
=
vertices
.
length
/
3
;
var
numTris
=
numEdges
/
3
;
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numTris
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
var
index
=
18
*
i
+
6
*
j
;
var
index1
=
9
*
i
+
3
*
j
;
coords
[
index
+
0
]
=
vertices
[
index1
];
coords
[
index
+
1
]
=
vertices
[
index1
+
1
];
coords
[
index
+
2
]
=
vertices
[
index1
+
2
];
var
index2
=
9
*
i
+
3
*
(
(
j
+
1
)
%
3
);
coords
[
index
+
3
]
=
vertices
[
index2
];
coords
[
index
+
4
]
=
vertices
[
index2
+
1
];
coords
[
index
+
5
]
=
vertices
[
index2
+
2
];
}
}
this
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
}
};
THREE
.
WireframeGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
THREE
.
WireframeGeometry
.
prototype
.
constructor
=
THREE
.
WireframeGeometry
;
src/extras/helpers/WireframeHelper.js
浏览文件 @
b93fe656
...
...
@@ -6,167 +6,7 @@ THREE.WireframeHelper = function ( object, hex ) {
var
color
=
(
hex
!==
undefined
)
?
hex
:
0xffffff
;
var
edge
=
[
0
,
0
],
hash
=
{};
var
sortFunction
=
function
(
a
,
b
)
{
return
a
-
b
};
var
keys
=
[
'
a
'
,
'
b
'
,
'
c
'
];
var
geometry
=
new
THREE
.
BufferGeometry
();
if
(
object
.
geometry
instanceof
THREE
.
Geometry
)
{
var
vertices
=
object
.
geometry
.
vertices
;
var
faces
=
object
.
geometry
.
faces
;
var
numEdges
=
0
;
// allocate maximal size
var
edges
=
new
Uint32Array
(
6
*
faces
.
length
);
for
(
var
i
=
0
,
l
=
faces
.
length
;
i
<
l
;
i
++
)
{
var
face
=
faces
[
i
];
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
face
[
keys
[
j
]
];
edge
[
1
]
=
face
[
keys
[
(
j
+
1
)
%
3
]
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
edges
[
2
*
numEdges
]
=
edge
[
0
];
edges
[
2
*
numEdges
+
1
]
=
edge
[
1
];
hash
[
key
]
=
true
;
numEdges
++
;
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numEdges
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
2
;
j
++
)
{
var
vertex
=
vertices
[
edges
[
2
*
i
+
j
]
];
var
index
=
6
*
i
+
3
*
j
;
coords
[
index
+
0
]
=
vertex
.
x
;
coords
[
index
+
1
]
=
vertex
.
y
;
coords
[
index
+
2
]
=
vertex
.
z
;
}
}
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
else
if
(
object
.
geometry
instanceof
THREE
.
BufferGeometry
)
{
if
(
object
.
geometry
.
attributes
.
index
!==
undefined
)
{
// Indexed BufferGeometry
var
vertices
=
object
.
geometry
.
attributes
.
position
.
array
;
var
indices
=
object
.
geometry
.
attributes
.
index
.
array
;
var
drawcalls
=
object
.
geometry
.
drawcalls
;
var
numEdges
=
0
;
if
(
drawcalls
.
length
===
0
)
{
drawcalls
=
[
{
count
:
indices
.
length
,
index
:
0
,
start
:
0
}
];
}
// allocate maximal size
var
edges
=
new
Uint32Array
(
2
*
indices
.
length
);
for
(
var
o
=
0
,
ol
=
drawcalls
.
length
;
o
<
ol
;
++
o
)
{
var
start
=
drawcalls
[
o
].
start
;
var
count
=
drawcalls
[
o
].
count
;
var
index
=
drawcalls
[
o
].
index
;
for
(
var
i
=
start
,
il
=
start
+
count
;
i
<
il
;
i
+=
3
)
{
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
index
+
indices
[
i
+
j
];
edge
[
1
]
=
index
+
indices
[
i
+
(
j
+
1
)
%
3
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
edges
[
2
*
numEdges
]
=
edge
[
0
];
edges
[
2
*
numEdges
+
1
]
=
edge
[
1
];
hash
[
key
]
=
true
;
numEdges
++
;
}
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numEdges
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
2
;
j
++
)
{
var
index
=
6
*
i
+
3
*
j
;
var
index2
=
3
*
edges
[
2
*
i
+
j
];
coords
[
index
+
0
]
=
vertices
[
index2
];
coords
[
index
+
1
]
=
vertices
[
index2
+
1
];
coords
[
index
+
2
]
=
vertices
[
index2
+
2
];
}
}
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
else
{
// non-indexed BufferGeometry
var
vertices
=
object
.
geometry
.
attributes
.
position
.
array
;
var
numEdges
=
vertices
.
length
/
3
;
var
numTris
=
numEdges
/
3
;
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
for
(
var
i
=
0
,
l
=
numTris
;
i
<
l
;
i
++
)
{
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
var
index
=
18
*
i
+
6
*
j
;
var
index1
=
9
*
i
+
3
*
j
;
coords
[
index
+
0
]
=
vertices
[
index1
];
coords
[
index
+
1
]
=
vertices
[
index1
+
1
];
coords
[
index
+
2
]
=
vertices
[
index1
+
2
];
var
index2
=
9
*
i
+
3
*
(
(
j
+
1
)
%
3
);
coords
[
index
+
3
]
=
vertices
[
index2
];
coords
[
index
+
4
]
=
vertices
[
index2
+
1
];
coords
[
index
+
5
]
=
vertices
[
index2
+
2
];
}
}
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
}
}
THREE
.
Line
.
call
(
this
,
geometry
,
new
THREE
.
LineBasicMaterial
(
{
color
:
color
}
),
THREE
.
LinePieces
);
THREE
.
Line
.
call
(
this
,
new
THREE
.
WireframeGeometry
(
object
.
geometry
),
new
THREE
.
LineBasicMaterial
(
{
color
:
color
}
),
THREE
.
LinePieces
);
this
.
matrix
=
object
.
matrixWorld
;
this
.
matrixAutoUpdate
=
false
;
...
...
utils/build/includes/extras.json
浏览文件 @
b93fe656
...
...
@@ -45,6 +45,7 @@
"src/extras/geometries/OctahedronGeometry.js"
,
"src/extras/geometries/TetrahedronGeometry.js"
,
"src/extras/geometries/ParametricGeometry.js"
,
"src/extras/geometries/WireframeGeometry.js"
,
"src/extras/helpers/AxisHelper.js"
,
"src/extras/helpers/ArrowHelper.js"
,
"src/extras/helpers/BoxHelper.js"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录